<?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>226133</bug_id>
          
          <creation_ts>2021-05-21 20:04:43 -0700</creation_ts>
          <short_desc>Replace LockHolder with Locker in local variables</short_desc>
          <delta_ts>2021-05-22 09:49:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226139</see_also>
          <bug_file_loc>https://en.cppreference.com/w/cpp/language/class_template_argument_deduction</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226140</dependson>
          <blocked>226138</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762739</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 20:04:43 -0700</bug_when>
    <thetext>Replace LockHolder with Locker in local variables. It is shorter and it allows switching the lock type more easily since the compiler with deduce the lock type T for Locker&lt;T&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762742</commentid>
    <comment_count>1</comment_count>
      <attachid>429393</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 20:12:26 -0700</bug_when>
    <thetext>Created attachment 429393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762744</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-21 20:13:27 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762748</commentid>
    <comment_count>3</comment_count>
      <attachid>429396</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 20:20:14 -0700</bug_when>
    <thetext>Created attachment 429396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762749</commentid>
    <comment_count>4</comment_count>
      <attachid>429397</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 21:16:50 -0700</bug_when>
    <thetext>Created attachment 429397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762754</commentid>
    <comment_count>5</comment_count>
      <attachid>429398</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 21:38:11 -0700</bug_when>
    <thetext>Created attachment 429398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762771</commentid>
    <comment_count>6</comment_count>
      <attachid>429398</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 22:49:29 -0700</bug_when>
    <thetext>Comment on attachment 429398
Patch

Clearing flags on attachment: 429398

Committed r277913 (238046@main): &lt;https://commits.webkit.org/238046@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762772</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 22:49:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762773</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-21 22:50:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78343441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762796</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-22 04:13:40 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 226140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762804</commentid>
    <comment_count>10</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-05-22 04:34:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Committed r277913 (238046@main): &lt;https://commits.webkit.org/238046@main&gt;
This caused 50+ layout-test crashes in debug mode.
e.g.: https://build.webkit.org/results/Apple-BigSur-Debug-AppleSilicon-WK1-Tests/r277913%20(1673)/accessibility/accessibility-crash-focused-element-change-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762813</commentid>
    <comment_count>11</comment_count>
      <attachid>429412</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 08:30:15 -0700</bug_when>
    <thetext>Created attachment 429412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762817</commentid>
    <comment_count>12</comment_count>
      <attachid>429412</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 09:49:54 -0700</bug_when>
    <thetext>Comment on attachment 429412
Patch

Clearing flags on attachment: 429412

Committed r277920 (238053@main): &lt;https://commits.webkit.org/238053@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762818</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 09:49:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429393</attachid>
            <date>2021-05-21 20:12:26 -0700</date>
            <delta_ts>2021-05-21 20:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226133-20210521201225.patch</filename>
            <type>text/plain</type>
            <size>282770</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Y2E4NjY5NDdmY2Q4OGEwMmY0MWNiZjA0OTNlMjE1MzMwM2EwNzNlLi44MmMxOTY0MzY5NTM4NTkx
ZWI0MjE3NWQ5ZmUyZTc1NGNiNmQ5ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjIgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9y
dGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBl
YXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3Ig
TG9ja2VyPFQ+LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2
YXRlUHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChoYW5kZXJGb3JTdHJ1Y3RUYWcp
OgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmNwcDoKKyAgICAgICAgKHRlc3RDQVBJVmlh
Q3BwKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpy
dW4pOgorICAgICAgICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjNf
MS5jcHA6CisgICAgICAgIChydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToK
KyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbENvZGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoSlND
OjpEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTdXBlclNh
bXBsZXIpOgorICAgICAgICAoSlNDOjpyZXNldFN1cGVyU2FtcGxlclN0YXRlKToKKyAgICAgICAg
KEpTQzo6cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChKU0M6OmVuYWJsZVN1cGVy
U2FtcGxlcik6CisgICAgICAgIChKU0M6OmRpc2FibGVTdXBlclNhbXBsZXIpOgorICAgICAgICAq
IGRmZy9ERkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjp+Q29tbW9uRGF0YSk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpjb2RlQmxvY2tGb3JWTVRyYXBQQyk6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNsZWFuTXVzdEhhbmRs
ZVZhbHVlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6
OmlzQWN0aXZlRm9yVk0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFk
eSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFsbFJlYWR5UGxhbnNGb3JW
TSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0Zv
clZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6
CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZU5vbkNvbXBpbGluZ1BsYW5zRm9yVk0pOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpxdWV1ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6V29ya2xpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojpz
ZXROdW1iZXJPZlRocmVhZHMpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyk6Cisg
ICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9C
bG9ja0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjphZGRCbG9j
ayk6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAgICogaGVh
cC9Db25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3Rz
OjphZGQpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkJlZ2lu
UGhhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpub3Rp
ZnlJc1NhZmVUb0NvbGxlY3QpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZGlkUmVhY2hUZXJtaW5hdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2lu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRy
YWNraW5nQ29tcGxldGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZyk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c3RvcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2
YXRlUnVuTG9vcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRh
dGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxl
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29v
bik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0
ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
UHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlh
bGl6ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1Jl
bW90ZUluc3BlY3RvckdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENv
bm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0
aW5nc1Nvb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUpOgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OmZyb250ZW5kRGlkQ2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlz
dGVuaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVM
aXN0ZW5lcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpnZXRQb3J0IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJ
ZkVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwOgorICAgICAg
ICAoSlNDOjpDTG9vcFN0YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChK
U0M6OkNMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpkdW1wSklUTWVtb3J5KToKKyAgICAg
ICAgKiBqaXQvSUNTdGF0cy5jcHA6CisgICAgICAgIChKU0M6OklDU3RhdHM6OklDU3RhdHMpOgor
ICAgICAgICAoSlNDOjpJQ1N0YXRzOjp+SUNTdGF0cyk6CisgICAgICAgICogaml0L0pJVFRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpj
dGlTbG93UGF0aEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAg
ICAgIChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjppc0ZpbmlzaGVkQ29tcGlsaW5nKToKKyAgICAg
ICAgKEpTQzo6SklUV29ya2xpc3Q6OkpJVFdvcmtsaXN0KToKKyAgICAgICAgKEpTQzo6SklUV29y
a2xpc3Q6OmNvbXBsZXRlQWxsRm9yVk0pOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6cG9s
bCk6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIpOgorICAgICAgICAo
SlNDOjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAgICogcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldElEKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6RGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpE
YXRhYmFzZTo6bG9nRXZlbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFk
ZERhdGFiYXNlVG9BdEV4aXQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnJl
bW92ZURhdGFiYXNlRnJvbUF0RXhpdCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmls
ZXJVSUQuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZlcnJl
ZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29y
a1RpbWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcik6CisgICAgICAgICogcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6
dGltZXJMb29wKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6c2h1dGRvd24pOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChKU0M6OlNh
bXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCk6
CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUpTTG9ja0FjcXVpc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1FbnRyeSk6CisgICAg
ICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KToKKyAg
ICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnN0
YXJ0VGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6d2lsbERlc3Ryb3lWTSk6CisgICAg
ICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6
aXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dh
c21FbnRyeVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OlRocmVhZENv
dW50SG9sZGVyOjpUaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgIChKU0M6Oldhc206OkVudHJ5
UGxhbjo6VGhyZWFkQ291bnRIb2xkZXI6On5UaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgICog
d2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjphZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFu
ZENhbmNlbElmTGFzdCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcik6CisgICAg
ICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0
OjplbnF1ZXVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmNvbXBsZXRlUGxhblN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6c3RvcEFsbFBsYW5z
Rm9yQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorCiAyMDIxLTA1LTIxICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIHVubmVj
ZXNzYXJ5IHVzZSBvZiBDb21waWxlT3BTdHJpY3RFcVR5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQwNTNiMzg0YTBjZGZj
M2NhNmMwMDM2MDU4M2U3M2FiOWU0ZWE3N2YuLmVkZjkzOTFkYjJkMmVmMzk2M2E4NGZiNDUxOWM4
OGU4NjJlYmQ4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBM
b2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwg
dmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2Nr
CisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNl
IHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+LgorCisgICAgICAgICogYmVuY2htYXJrcy9M
b2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQXV0b21hdGljVGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdURjo6QXV0b21hdGljVGhyZWFkOjp+QXV0b21hdGljVGhyZWFkKToKKyAgICAgICAg
KFdURjo6QXV0b21hdGljVGhyZWFkOjpqb2luKToKKyAgICAgICAgKFdURjo6QXV0b21hdGljVGhy
ZWFkOjpzdGFydCk6CisgICAgICAgICogd3RmL0F1dG9tYXRpY1RocmVhZC5oOgorICAgICAgICAq
IHd0Zi9NZXRhQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKFdURjo6TWV0YUFsbG9jYXRvckhhbmRs
ZTo6c2hyaW5rKToKKyAgICAgICAgKFdURjo6TWV0YUFsbG9jYXRvcjo6YWRkRnJlc2hGcmVlU3Bh
Y2UpOgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9yOjpkZWJ1Z0ZyZWVTcGFjZVNpemUpOgor
ICAgICAgICAqIHd0Zi9QYXJhbGxlbEhlbHBlclBvb2wuY3BwOgorICAgICAgICAoV1RGOjpQYXJh
bGxlbEhlbHBlckNsaWVudDo6UGFyYWxsZWxIZWxwZXJDbGllbnQpOgorICAgICAgICAoV1RGOjpQ
YXJhbGxlbEhlbHBlckNsaWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJDbGllbnQ6OnNldFRhc2spOgorICAgICAgICAoV1RGOjpQYXJhbGxl
bEhlbHBlckNsaWVudDo6ZmluaXNoKToKKyAgICAgICAgKFdURjo6UGFyYWxsZWxIZWxwZXJDbGll
bnQ6OmRvU29tZUhlbHBpbmcpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVudDo6
cnVuVGFzayk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVs
cGVyUG9vbCk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyUG9vbDo6ZW5zdXJlVGhyZWFk
cyk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyUG9vbDo6ZG9Tb21lSGVscGluZyk6Cisg
ICAgICAgICogd3RmL1NlY29uZHMuY3BwOgorICAgICAgICAoV1RGOjpzbGVlcCk6CisgICAgICAg
ICogd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnNsZWVw
KToKKyAgICAgICAgKiB3dGYvV29ya2VyUG9vbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtlclBv
b2w6OldvcmtlclBvb2wpOgorICAgICAgICAoV1RGOjpXb3JrZXJQb29sOjp+V29ya2VyUG9vbCk6
CisgICAgICAgIChXVEY6OldvcmtlclBvb2w6OnBvc3RUYXNrKToKKyAgICAgICAgKiB3dGYvcG9z
aXgvVGhyZWFkaW5nUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnN1c3BlbmQpOgor
ICAgICAgICAoV1RGOjpUaHJlYWQ6OnJlc3VtZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Z2V0
UmVnaXN0ZXJzKToKKyAgICAgICAgKiB3dGYvd2luL0RiZ0hlbHBlcldpbi5jcHA6CisgICAgICAg
IChXVEY6OkRiZ0hlbHBlcjo6U3ltRnJvbUFkZHJlc3MpOgorICAgICAgICAqIHd0Zi93aW4vVGhy
ZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpyZXN1bWUpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmdldFJlZ2lzdGVy
cyk6CisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgQ2hlY2tlZENvbmRpdGlvbiBpbiBtb3JlIHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJi
MDVjYWIwMDY0ZjIzN2JlOGM1NGEwZDE2NWFhYjRjZjAyZTUwNDguLmJkZTBkNjY5MDY5M2JjMzI5
Mzg1ZGIyNTBmNWFlNWE4NGU0MjBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNjEgQEAKKzIw
MjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBhbGxv
d3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2UgdGhl
IGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+LgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6QXN5bmNBdWRpb0RlY29kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OnJ1bkxvb3ApOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OnBlcmZvcm1DbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6aW5Qcm9ncmVzc1Ry
YW5zYWN0aW9uQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpoYXNQZW5k
aW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnJ1blRyYW5zYWN0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmV0cnlDYW5Fc3RhYmxpc2hEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om1heGltdW1TaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpkb25lQ3JlYXRpbmdEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6cXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXRRdW90
YSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMQ2FsbGJhY2tXcmFwcGVyOjp1bndyYXApOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb246OmVucXVldWVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNh
Y3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMVHJhbnNhY3Rpb246OmdldE5leHRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFRyYW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Omdl
bmVyYXRlU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRl
U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Zm9jdXNlZE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWU6OnJvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpyZW1vdmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpy
ZW1vdmVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBl
bmRpbmdDaGFuZ2VzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZU1hYy5tbToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVNYWM6OnNjcm9sbGluZ05vZGVGb3JQb2lu
dCk6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTWFjOjpldmVudExpc3RlbmVyUmVnaW9uVHlwZXNG
b3JQb2ludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmZsdXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OnNldEN1cnJlbnRGcmFtZUJvdW5k
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmFkZFRvTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnJlbW92ZUZyb21N
YXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2Jz
ZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwcm9jZXNzTm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNv
bXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsb2FkTWV0
YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnBy
b2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVz
b3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRl
bGVnYXRlIHNldEV4cGVjdGVkQ29udGVudFNpemU6XSk6CisgICAgICAgICgtW1dlYkNvcmVTaGFy
ZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIHVwZGF0ZURhdGE6Y29tcGxldGU6XSk6Cisg
ICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIHJlc291
cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgcmVzb3Vy
Y2VMb2FkZXI6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6XSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXJzZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVjdGlvbkV2ZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0
YWdzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
Ojpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwOgorICAgICAgICAoVmlkZW9SZW5kZXJS
ZXF1ZXN0U2NoZWR1bGVyOjpzdGFydCk6CisgICAgICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hl
ZHVsZXI6OnN0b3ApOgorICAgICAgICAoVmlkZW9SZW5kZXJSZXF1ZXN0U2NoZWR1bGVyOjpkcmFp
bik6CisgICAgICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OnJlcXVlc3RSZW5kZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgICh0cmFuc2Zvcm1JblBs
YWNlKToKKyAgICAgICAgKHNpbmtFdmVudEhhbmRsZXIpOgorICAgICAgICAod2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcpOgorICAgICAgICAoc2V0Q29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcDoK
KyAgICAgICAgKE5pY29zaWE6OkJ1ZmZlcjo6YmVnaW5QYWludGluZyk6CisgICAgICAgIChOaWNv
c2lhOjpCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6QnVmZmVy
Ojp3YWl0VW50aWxQYWludGluZ0NvbXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChOaWNvc2lhOjpQbGF0
Zm9ybUxheWVyOjpzZXRTY2VuZUludGVncmF0aW9uKToKKyAgICAgICAgKE5pY29zaWE6OlBsYXRm
b3JtTGF5ZXI6OmNyZWF0ZVVwZGF0ZVNjb3BlKToKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0
aW9uTGF5ZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXI6OmZsdXNoU3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6Y29t
bWl0U3RhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6YWNjZXNzUGVu
ZGluZyk6CisgICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjphY2Nlc3NDb21taXR0
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmg6
CisgICAgICAgIChOaWNvc2lhOjpTY2VuZTo6YWNjZXNzU3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgorICAgICAg
ICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE5pY29z
aWE6OlNjZW5lSW50ZWdyYXRpb246OmludmFsaWRhdGUpOgorICAgICAgICAoTmljb3NpYTo6U2Nl
bmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNw
cDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpmbHVz
aFVwZGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bDo6dGFrZVVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjp+Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwpOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw6OmludmFsaWRhdGVDbGllbnQpOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKToKKyAgICAgICAgKE5pY29zaWE6OkNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4dHVy
ZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKToKKyAgICAgICAgKE5pY29zaWE6OkltYWdlQmFja2lu
Z1RleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpuYXR1cmFsU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmFkZExpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVtb3Zl
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpub3RpZnlEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6c2V0TmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpBc3luY0NhbGxiYWNrOjpJbnZva2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpB
c3luY0NhbGxiYWNrOjpvbk1lZGlhUGxheWVyRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpP
bkNsb2NrU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6T25DbG9ja1BhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tSZXN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6
OlByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkdldEN1cnJlbnRNZWRpYVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpD
dXN0b21WaWRlb1ByZXNlbnRlcjo6SW5pdFNlcnZpY2VQb2ludGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2Vu
dGVyOjpSZWxlYXNlU2VydmljZVBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVv
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkdldFZpZGVvV2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVz
ZW50ZXI6OlNldFZpZGVvUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6R2V0VmlkZW9Qb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpSZXBhaW50VmlkZW8pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6Omdl
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OlZpZGVvU2FtcGxlUG9vbDo6cmV0dXJuU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjphcmVT
YW1wbGVzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpWaWRlb1NjaGVkdWxlcjo6c3RvcFNjaGVkdWxlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpzY2hlZHVs
ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2FtcGxlc0luUXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NjaGVkdWxl
cjo6cHJvY2Vzc1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpzY2hlZHVsZXJUaHJlYWRQcm9jUHJpdmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkRpcmVjdDNEUHJlc2VudGVyOjpzZXRWaWRlb1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpzZXRE
ZXN0aW5hdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y3JlYXRlVmlkZW9TYW1wbGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0
M0RQcmVzZW50ZXI6OmNoZWNrRGV2aWNlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6cHJlc2VudFNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OkRpcmVjdDNEUHJlc2VudGVyOjpwYWludEN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVy
OjpjcmVhdGVEM0REZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxlSW1hZ2VE
ZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRp
b25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXRU
aWxlc09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRvTGF5b3V0
VGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXRDdXJyZW50U2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93KToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3dGb3JSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsTm9uVmlzaWJs
ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsVGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVGb3JlZ3JvdW5k
VGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXRDb250ZW50UmVw
bGFjZW1lbnRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbnRl
bnRSZXBsYWNlbWVudEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVD
YWNoZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlQ2FjaGU6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lUaWxlQ2FjaGU6OnVwZGF0ZVRpbGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpzZXRUaWxpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVD
YWNoZTo6ZG9QZW5kaW5nUmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNh
Y2hlOjpmbHVzaFNhdmVkRGlzcGxheVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRp
bGVDYWNoZTo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllclBvb2wubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5ZXJQb29sOjph
ZGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5ZXJQb29sOjp0YWtlTGF5
ZXJXaXRoU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5ZXJQb29sOjpzZXRD
YXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5ZXJQb29sOjpwcnVuZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5ZXJQb29sOjpkcmFpbik6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBz
ZXRFeHBvc2VkU2Nyb2xsVmlld1JlY3Q6XSk6CisgICAgICAgICgtW1dBS1dpbmRvdyBleHBvc2Vk
U2Nyb2xsVmlld1JlY3RdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW06CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDOjpwdWxs
QXVkaW9EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Blbk5leHRTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6Zm9ybUZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1DbG9zZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpzZXRSZXF1ZXN0UGF1c2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0OjpzZXRDYWxsYmFja1BhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
UmVxdWVzdDo6ZW5hYmxlRG93bmxvYWRUb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmdldERvd25sb2FkZWRGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU1NMSGFu
ZGxlOjphbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsU1NMSGFuZGxlOjpjYW5JZ25vcmVBbnlIVFRQU0NlcnRpZmljYXRlc0Zvckhvc3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFNTTEhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNh
dGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmdldFNTTENsaWVudENl
cnRpZmljYXRlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjptYXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OnBhZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
OjpmcmVlU3BhY2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp0b3Rh
bFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnJ1bkluY3JlbWVudGFs
VmFjdXVtQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6aW50ZXJy
dXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRBdXRob3JpemVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50OjpzdGVwKToKKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgaG9sZExvY2soKSBpbiBXZWJDb3Jl
IGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFkIHNhZmV0eSBhbmFseXNp
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAwOTc0MmFkYmQ4NDBhMDQxY2Y0YTk1YWUyZDIyZDM5YjYwOWUyNDRiLi45
NjQzMTU4ZmYyNTM1NDBhNWJjZWFkNTY0YjNiN2U3ZjNjMmJkMGZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDgxIEBACisyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcy4gSXQgaXMgc2hvcnRl
ciBhbmQgaXQgYWxsb3dzIHN3aXRjaGluZyB0aGUgbG9jaworICAgICAgICB0eXBlIG1vcmUgZWFz
aWx5IHNpbmNlIHRoZSBjb21waWxlciB3aXRoIGRlZHVjZSB0aGUgbG9jayB0eXBlIFQgZm9yIExv
Y2tlcjxUPi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2Nsb3NlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXI6OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNv
bW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6cHV0T3JBZGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0QWxsUmVjb3Jk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZXN0YWJsaXNo
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29u
bmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGF0
YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjph
Ym9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OnJlbW92ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNs
b3NlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVTaXplRmls
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFkU2l6ZUZpbGUp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNG
cm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpkZWxldGVO
b25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkROU0NhY2hlOjpsb29r
dXApOgorICAgICAgICAoV2ViS2l0OjpETlNDYWNoZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RE5TQ2FjaGU6OnJlbW92ZUV4cGlyZWRSZXNwb25zZXNGaXJlZCk6CisgICAgICAgIChXZWJL
aXQ6OkROU0NhY2hlOjpjbGVhcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OkNv
bXBvc2l0aW5nUnVuTG9vcDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdS
dW5Mb29wOjpzY2hlZHVsZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVu
TG9vcDo6c3RvcFVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6
OnVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6c2V0U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b21wb3NpdG9yOjpzZXRWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29t
cG9zaXRvcjo6c2NlbmVVcGRhdGVGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6cG9w
dWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
OjpjbGVhckxvYWRlZEljb25zVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRh
YmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKToKKyAgICAgICAgKFdlYktp
dDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJ
Y29uRGF0YWJhc2U6Omljb25VUkxGb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRh
dGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFz
ZTo6Y2xlYXIpOgorCiAyMDIxLTA1LTIxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gRXhwYW5kIHNhbmRib3ggd2l0aCBtaXNzaW5nIHN5c2N0
bC1yZWFkIGhhbmRsZXMgZm9yIGNvcmUgQ1BVIGFuZCBjYWNoZSBmZWF0dXJlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwppbmRleCA3MDM3OGYzNDczMjk3NzU5OGI1ZWQ2M2M2Mjk5YWRjN2E5ZWViM2RlLi45
MGQ4ZWM1NjgyMWVhYWExNjNkMGIyN2RhNDQzNjY2N2IwZDZmY2U1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxv
Y2FsIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2MTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcy4g
SXQgaXMgc2hvcnRlciBhbmQgaXQgYWxsb3dzIHN3aXRjaGluZyB0aGUgbG9jaworICAgICAgICB0
eXBlIG1vcmUgZWFzaWx5IHNpbmNlIHRoZSBjb21waWxlciB3aXRoIGRlZHVjZSB0aGUgbG9jayB0
eXBlIFQgZm9yIExvY2tlcjxUPi4KKworICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVy
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRG
aW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpy
ZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKEluUHJv
Y2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpwdXRPckFkZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoSW5Q
cm9jZXNzSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Q
cm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlm
aWVkU2luY2UpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMpOgorICAgICAgICAqIFN0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6Zmlu
aXNoZWRJbXBvcnRpbmdPcmlnaW5JZGVudGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0YWlscyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6
OnN5bmNEZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6Y2Fu
RGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OmNhbmNlbERl
bGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OmRpc2tVc2Fn
ZUZvck9yaWdpbik6CisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBTdG9yYWdlQXJlYVN5bmMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAxZjU1Mjc1MTVlOTBmMGIwYThmMDFlOTNmMzQzZjUy
OTAwOTVjMTI3Li4wMDAyZjg2YTJkZmJlYzFkYjViOGNiZDVlNzdhZWQyNzg3ODFjZDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDUtMjEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xk
ZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIg
aW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5n
IHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdp
dGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+LgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zeW5jaHJvbml6ZUN1c3RvbUZp
eGVkUG9zaXRpb25MYXlvdXRSZWN0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldEN1c3RvbUZp
eGVkUG9zaXRpb25MYXlvdXRSZWN0SW5XZWJUaHJlYWQ6c3luY2hyb25pemU6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0Ol0pOgorICAgICAg
ICAoLVtXZWJWaWV3IF9mZXRjaEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0Ol0pOgorCiAy
MDIxLTA1LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNPU10gQWRvcHQgUUxJdGVtIGluIFdLSW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRy
b2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA5MGY3M2M5MThjNTI3Njk5OWQ4
MDhiNjI3MjgwZmFlMDE1ODFmY2E4Li42M2EyNzU2ZDQ2NjM2ZGM2YTY4YjQ4YmQ0MTMzMzZjYzQ4
MzQxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBhbGxv
d3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2UgdGhl
IGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+LgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpyZWdpc3RlclBsdWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjp1bnJlZ2lzdGVy
UGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OmRp
c3BhdGNoQ2FsbHNGb3JQbHVnaW4pOgorCiAyMDIxLTA1LTIwICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUgW0ltcGxpY2l0
VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggM2QyODVm
M2QyMjU2MmVjMDYyOWNkMzY5YWE5MTA0YWYyMWVjYjkzMi4uYjM0MzNkZTBlMjIxZGNmMTNiNDVk
YWE5N2FlYjFlNDliM2VmZDhlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKQEAgLTk1LDIxICs5NSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAg
ICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgewotICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBlbXB0
eTsKICAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuYWRkKHByb3BlcnR5TmFtZS5pbXBsKCksIGVt
cHR5KS5pdGVyYXRvci0+dmFsdWUuc2V0KHZtLCBvd25lciwgdmFsdWUpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICB2b2lkIGRlbGV0ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgICAgICBtX3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiAgICAgICAgIHZvaWQg
dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wcm9wZXJ0eU1hcCkgewog
ICAgICAgICAgICAgICAgIGlmIChwYWlyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZChwYWlyLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpp
bmRleCBhYzA5ZjY1NDUwN2MzZGJkNDk2MGZkNjcxMzMyYmIzZjExZjkwNjI1Li4yMWY5MTkwNjcx
MWRmNjRhZjhjNzViMjkyMzZlNTc4ODkxNzI3NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCkBAIC0xMjA5LDcgKzEyMDksNyBAQCBzdGF0aWMgU3RydWN0SGFuZGxlcnMqIGNy
ZWF0ZVN0cnVjdEhhbmRsZXJNYXAoKQogc3RhdGljIFN0cnVjdFRhZ0hhbmRsZXIqIGhhbmRlckZv
clN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNvZGVkVHlwZSkKIHsKICAgICBzdGF0aWMgTG9jayBo
YW5kZXJGb3JTdHJ1Y3RUYWdMb2NrOwotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcigmaGFuZGVy
Rm9yU3RydWN0VGFnTG9jayk7CisgICAgTG9ja2VyIGxvY2tIb2xkZXIgeyBoYW5kZXJGb3JTdHJ1
Y3RUYWdMb2NrIH07CiAKICAgICBzdGF0aWMgU3RydWN0SGFuZGxlcnMqIHN0cnVjdEhhbmRsZXJz
ID0gY3JlYXRlU3RydWN0SGFuZGxlck1hcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLmNwcAppbmRleCA4YzE5ZjUzZDRiNjQ0OWIyNmIxNzkyMjZlMjQ1ZmU5
Zjc2M2Q4MDc2Li41ZDc1MzM1MDA1NDI2ODgyYTY2N2ZlNTE3ZTRlMjY0MWYxMzNlZWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKQEAgLTc2NSw3ICs3
NjUsNyBAQCBpbnQgdGVzdENBUElWaWFDcHAoY29uc3QgY2hhciogZmlsdGVyKQogICAgICAgICAg
ICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChUZXN0QVBJJik+PiB0YXNrOwogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICAgICAgdGFzayA9IHRhc2tzLnRha2VGaXJzdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCBiMWIyNjgzZWJi
MTM2NGJkZTljNzZkZmI0ODljYzBlN2ViZGFkNDExLi4xOTFkMTgyOTM1YWMxYTZlNmYwYjUwYjdh
MzEzYmQ5ODg3YWRhNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcApAQCAtMjcyNCw3ICsyNzI0LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmls
dGVyKQogICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxv
Y2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhc2sgPSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL3Rlc3RhaXIuY3BwCmluZGV4IGU1Yzg2MjJkNDUyNGEyZjhhMjVjZTFkNDVlYzJlNWM4NmU3
Yzg2MDMuLmJlNGRiZjkzODg0N2U1ODEwOTU2ZDZlZmUxMzgxYzAxNDE0ZWRjNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgbG9hZENvbnN0YW50SW1wbChCYXNpY0Jsb2NrKiBibG9jaywgVCB2YWx1ZSwgQjM6OkFpcjo6
T3Bjb2RlIG1vdmUsIFRtcCB0bXAsCiAgICAgc3RhdGljIExvY2sgbG9jazsKICAgICBzdGF0aWMg
U3RkTWFwPFQsIFQqPiogbWFwOyAvLyBJJ20gbm90IG1lc3Npbmcgd2l0aCBIYXNoTWFwJ3MgcHJv
YmxlbXMgd2l0aCBpbnRlZ2Vycy4KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgaWYgKCFtYXApCiAgICAgICAgIG1hcCA9IG5l
dyBTdGRNYXA8VCwgVCo+KCk7CiAKQEAgLTI0NjksNyArMjQ2OSw3IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4gdGFzazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiM18xLmNwcAppbmRleCBlNTJlNmRhYmMzMzQzZGJhMTQxNjI0NTRlOGZjYTg2
NzQ2ZjNjMDc0Li4yYmU4ODMyODYxZmQwZDVhNjUwMzMyOWQzYTNlN2I5Y2RmM2I3YjAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKQEAgLTg2Nyw3ICs4NjcsNyBAQCB2b2lk
IHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+IHRhc2s7
CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFz
a3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayA9IHRhc2tzLnRha2VGaXJzdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2Fj
aGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2Fj
aGUuY3BwCmluZGV4IDk0Y2JjMjNhNjY5MDFkNTFhODljODdkY2Q0ZjBjZDEzZGM5YmU1ZGQuLjBh
ODhhNmM4YTUwZWJjOTgwOWZlNjcyODJjNWI3MDIwZDdhYjBlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKQEAg
LTM1LDIwICszNSwyMCBAQCB2b2lkIERpcmVjdEV2YWxDb2RlQ2FjaGU6OnNldFNsb3coSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgYwogICAgIGlmICghZXZhbEV4
ZWN1dGFibGUtPmFsbG93RGlyZWN0RXZhbENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIG1fY2FjaGVNYXAuc2V0KENhY2hlS2V5KGV2YWxTb3VyY2UsIGNhbGxTaXRlSW5kZXgp
LCBXcml0ZUJhcnJpZXI8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KGdsb2JhbE9iamVjdC0+dm0oKSwg
b3duZXIsIGV2YWxFeGVjdXRhYmxlKSk7CiB9CiAKIHZvaWQgRGlyZWN0RXZhbENvZGVDYWNoZTo6
Y2xlYXIoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgIG1fY2FjaGVNYXAuY2xlYXIoKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgRGlyZWN0RXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdh
dGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgRXZhbENhY2hlTWFwOjppdGVy
YXRvciBlbmQgPSBtX2NhY2hlTWFwLmVuZCgpOwogICAgIGZvciAoRXZhbENhY2hlTWFwOjppdGVy
YXRvciBwdHIgPSBtX2NhY2hlTWFwLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAgICAg
ICB2aXNpdG9yLmFwcGVuZChwdHItPnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAKaW5kZXggYzNhNWM0MmFkMjFmNjk0OTE3YTRiNTAz
M2Y1MzY2NjhhMjNmOWI5ZC4uYTQyNjQwZjI4NjMyNjk3Mjc5ZGM0OWEzY2U1MWVmYzM5ZWMxYTM5
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCkKICAgICAg
ICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICBmb3IgKGludCBtcyA9IDA7IG1zIDwg
cHJpbnRpbmdQZXJpb2Q7IG1zICs9IHNsZWVwUXVhbnR1bSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoZ19zdXBlclNhbXBsZXJFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBsb2NrIH07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ19zdXBlclNhbXBs
ZXJDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbisrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIGluaXRpYWxpemVTdXBlclNh
bXBsZXIoKQogCiB2b2lkIHJlc2V0U3VwZXJTYW1wbGVyU3RhdGUoKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKGxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgaW4gPSAw
OwogICAgIG91dCA9IDA7CiB9CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgcHJpbnRTdXBlclNhbXBs
ZXJTdGF0ZSgpCiAgICAgaWYgKCFPcHRpb25zOjp1c2VTdXBlclNhbXBsZXIoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGxvY2sgfTsKICAgICBkb3VibGUgcGVyY2VudGFnZSA9IDEwMC4wICogaW4gLyAoaW4gKyBv
dXQpOwogICAgIGlmIChwZXJjZW50YWdlICE9IHBlcmNlbnRhZ2UpCiAgICAgICAgIHBlcmNlbnRh
Z2UgPSAwLjA7CkBAIC04OSwxMyArODksMTMgQEAgdm9pZCBwcmludFN1cGVyU2FtcGxlclN0YXRl
KCkKIAogdm9pZCBlbmFibGVTdXBlclNhbXBsZXIoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgZ19zdXBlclNhbXBsZXJF
bmFibGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBkaXNhYmxlU3VwZXJTYW1wbGVyKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAg
IGdfc3VwZXJTYW1wbGVyRW5hYmxlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAppbmRleCBmZmIwODM1ZTYxMzQ3ZDg0MzRhZDM0M2Vj
YzlkYzU1OTE4NmE0YTI3Li4yN2VkZjFjODFhNTM4MzhmMWI4YjZjZTkwMDNlYzQ2ZDczNDliNTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgYm9vbCBDb21tb25EYXRhOjppbnZhbGlkYXRlKCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKFVOTElLRUxZKGhhc1ZNVHJhcHNCcmVha3BvaW50c0luc3RhbGxl
ZCkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocGNDb2RlQmxvY2tNYXBMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IHBjQ29kZUJsb2NrTWFwTG9jayB9OwogICAgICAgICBhdXRv
JiBtYXAgPSBwY0NvZGVCbG9ja01hcChsb2NrZXIpOwogICAgICAgICBmb3IgKGF1dG8mIGp1bXBS
ZXBsYWNlbWVudCA6IG1fanVtcFJlcGxhY2VtZW50cykKICAgICAgICAgICAgIG1hcC5yZW1vdmUo
anVtcFJlcGxhY2VtZW50LmRhdGFMb2NhdGlvbigpKTsKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBD
b21tb25EYXRhOjppbnZhbGlkYXRlKCkKIENvbW1vbkRhdGE6On5Db21tb25EYXRhKCkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoaGFzVk1UcmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkKSkgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgcGNDb2RlQmxvY2tNYXBMb2NrIH07CiAgICAgICAgIGF1dG8mIG1hcCA9IHBjQ29k
ZUJsb2NrTWFwKGxvY2tlcik7CiAgICAgICAgIGZvciAoYXV0byYganVtcFJlcGxhY2VtZW50IDog
bV9qdW1wUmVwbGFjZW1lbnRzKQogICAgICAgICAgICAgbWFwLnJlbW92ZShqdW1wUmVwbGFjZW1l
bnQuZGF0YUxvY2F0aW9uKCkpOwpAQCAtODYsNyArODYsNyBAQCBDb21tb25EYXRhOjp+Q29tbW9u
RGF0YSgpCiAKIHZvaWQgQ29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKENvZGVC
bG9jayogb3duZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIocGNDb2RlQmxvY2tNYXBMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcGNDb2RlQmxvY2tNYXBMb2NrIH07CiAgICAgaWYgKCFp
c1N0aWxsVmFsaWQgfHwgaGFzVk1UcmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkKQogICAgICAgICBy
ZXR1cm47CiAgICAgaGFzVk1UcmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkID0gdHJ1ZTsKQEAgLTEx
Miw3ICsxMTIsNyBAQCB2b2lkIENvbW1vbkRhdGE6Omluc3RhbGxWTVRyYXBCcmVha3BvaW50cyhD
b2RlQmxvY2sqIG93bmVyKQogQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JWTVRyYXBQQyh2b2lkKiBw
YykKIHsKICAgICBBU1NFUlQoaXNKSVRQQyhwYykpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKHBj
Q29kZUJsb2NrTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHBjQ29kZUJsb2NrTWFwTG9j
ayB9OwogICAgIGF1dG8mIG1hcCA9IHBjQ29kZUJsb2NrTWFwKGxvY2tlcik7CiAgICAgYXV0byBy
ZXN1bHQgPSBtYXAuZmluZChwYyk7CiAgICAgaWYgKHJlc3VsdCA9PSBtYXAuZW5kKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCAzODZmNWZiOGZkNDgyNzZhZTY1OWRi
NmE4YzJjNmQyNjQwMDE2NzU4Li43OWFhNmM2YmU4MjhjZmNiMjk4NjBhZmFjNmExOGU4MzJhNjA0
NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTc2NCw3ICs3NjQs
NyBAQCB2b2lkIFBsYW46OmNhbmNlbCgpCiAKIHZvaWQgUGxhbjo6Y2xlYW5NdXN0SGFuZGxlVmFs
dWVzSWZOZWNlc3NhcnkoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXVzdEhhbmRsZVZh
bHVlQ2xlYW5pbmdMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXN0SGFuZGxlVmFsdWVD
bGVhbmluZ0xvY2sgfTsKIAogICAgIGlmICghbV9tdXN0SGFuZGxlVmFsdWVzTWF5SW5jbHVkZUdh
cmJhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3Jr
bGlzdC5jcHAKaW5kZXggYTk5NmM1NWNkZGMyNWNjYzE2YjJhYmE0NTZiYmM3NDc2M2E3MDI4OS4u
NGQyMjhjZmU4N2FkOTgxOTM2YzA3YzA5ZDQxYjcyNzUxNTU5NGE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIH5Xb3JrU2NvcGUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWQubV93b3JrbGlzdC5tX2xvY2spOworICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZC5tX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAg
ICAgICAgbV90aHJlYWQubV9wbGFuID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fdGhyZWFkLm1f
d29ya2xpc3QubV9udW1iZXJPZkFjdGl2ZVRocmVhZHMtLTsKICAgICAgICAgfQpAQCAtOTcsOSAr
OTcsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgV29ya1Njb3BlIHdvcmtTY29wZSgqdGhp
cyk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhLm1fcmlnaHRUb1J1bik7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGEubV9yaWdodFRvUnVuIH07CiAgICAgICAgIHsK
LSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3dvcmtsaXN0Lm1fbG9jayk7CisgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fd29ya2xpc3QubV9sb2NrIH07CiAgICAgICAgICAg
ICBpZiAobV9wbGFuLT5zdGFnZSgpID09IFBsYW46OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7CiAgICAgICAgICAgICBtX3BsYW4tPm5vdGlm
eUNvbXBpbGluZygpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3dvcmts
aXN0Lm1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fd29ya2xpc3QubV9s
b2NrIH07CiAgICAgICAgICAgICBpZiAobV9wbGFuLT5zdGFnZSgpID09IFBsYW46OkNhbmNlbGxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7CiAgICAgICAg
ICAgICAKQEAgLTE4OCw3ICsxODgsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoQ1N0cmluZyYmIHRp
ZXJOYW1lKQogV29ya2xpc3Q6On5Xb3JrbGlzdCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV90aHJlYWRzLnNpemUoKTsgaS0tOykKICAgICAg
ICAgICAgIG1fcXVldWUuYXBwZW5kKG51bGxwdHIpOyAvLyBVc2UgbnVsbCBwbGFuIHRvIGluZGlj
YXRlIHRoYXQgd2Ugd2FudCB0aGUgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KICAgICAgICAgbV9wbGFu
RW5xdWV1ZWQtPm5vdGlmeUFsbChsb2NrZXIpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIFdvcmtsaXN0
Ojp+V29ya2xpc3QoKQogdm9pZCBXb3JrbGlzdDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVt
YmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChudW1iZXJPZlRocmVhZHMpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVy
T2ZUaHJlYWRzOyBpLS07KSB7CiAgICAgICAgIGNyZWF0ZU5ld1RocmVhZChsb2NrZXIsIHJlbGF0
aXZlUHJpb3JpdHkpOwogICAgIH0KQEAgLTIyMyw3ICsyMjMsNyBAQCBSZWY8V29ya2xpc3Q+IFdv
cmtsaXN0OjpjcmVhdGUoQ1N0cmluZyYmIHRpZXJOYW1lLCB1bnNpZ25lZCBudW1iZXJPZlRocmVh
ZHMsIGludAogCiBib29sIFdvcmtsaXN0Ojppc0FjdGl2ZUZvclZNKFZNJiB2bSkgY29uc3QKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1f
bG9jayB9OwogICAgIFBsYW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGxhbnMuZW5kKCk7
CiAgICAgZm9yIChQbGFuTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9wbGFucy5iZWdpbigp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIGlmIChpdGVyLT52YWx1ZS0+dm0oKSA9
PSAmdm0pCkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBXb3JrbGlzdDo6aXNBY3RpdmVGb3JWTShW
TSYgdm0pIGNvbnN0CiAKIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+JiYgcGxhbikK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
Km1fbG9jayB9OwogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKSB7
CiAgICAgICAgIGR1bXAobG9ja2VyLCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICBkYXRhTG9n
KCI6IEVucXVldWVpbmcgcGxhbiB0byBvcHRpbWl6ZSAiLCBwbGFuLT5rZXkoKSwgIlxuIik7CkBA
IC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4mJiBwbGFu
KQogCiBXb3JrbGlzdDo6U3RhdGUgV29ya2xpc3Q6OmNvbXBpbGF0aW9uU3RhdGUoQ29tcGlsYXRp
b25LZXkga2V5KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgUGxhbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcGxh
bnMuZmluZChrZXkpOwogICAgIGlmIChpdGVyID09IG1fcGxhbnMuZW5kKCkpCiAgICAgICAgIHJl
dHVybiBOb3RLbm93bjsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFdvcmtsaXN0Ojp3YWl0VW50
aWxBbGxQbGFuc0ZvclZNQXJlUmVhZHkoVk0mIHZtKQogICAgIC8vIEFmdGVyIHdlIHJlbGVhc2Ug
dGhpcyBsb2NrLCB3ZSBrbm93IHRoYXQgYWx0aG91Z2ggb3RoZXIgVk1zIG1heSBzdGlsbAogICAg
IC8vIGJlIGFkZGluZyBwbGFucywgb3VyIFZNIHdpbGwgbm90IGJlLgogICAgIAotICAgIExvY2tI
b2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAg
ICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAg
ICAgZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7CkBAIC0yOTksNyArMjk5LDcgQEAgdm9p
ZCBXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFyZVJlYWR5KFZNJiB2bSkKIHZvaWQg
V29ya2xpc3Q6OnJlbW92ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYgdm0sIFZlY3RvcjxSZWZQdHI8
UGxhbj4sIDg+JiBteVJlYWR5UGxhbnMpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAq
bV9sb2NrIH07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlYWR5UGxhbnMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBtX3JlYWR5UGxhbnNbaV07CiAg
ICAgICAgIGlmIChwbGFuLT52bSgpICE9ICZ2bSkKQEAgLTM0Myw3ICszNDMsNyBAQCBXb3JrbGlz
dDo6U3RhdGUgV29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKFZNJiB2bSwgQ29t
cGlsYXRpb25LZXkgcmVxdQogICAgIH0KICAgICAKICAgICBpZiAoISFyZXF1ZXN0ZWRLZXkgJiYg
cmVzdWx0aW5nU3RhdGUgPT0gTm90S25vd24pIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Km1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIGlm
IChtX3BsYW5zLmNvbnRhaW5zKHJlcXVlc3RlZEtleSkpCiAgICAgICAgICAgICByZXN1bHRpbmdT
dGF0ZSA9IENvbXBpbGluZzsKICAgICB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBXb3JrbGlz
dDo6dmlzaXRXZWFrUmVmZXJlbmNlcyhWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFZNKiB2bSA9
ICZ2aXNpdG9yLmhlYXAoKS0+dm0oKTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBm
b3IgKFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9w
bGFucy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFs
dWUuZ2V0KCk7CiAgICAgICAgICAgICBpZiAocGxhbi0+dm0oKSAhPSB2bSkKQEAgLTQwMyw3ICs0
MDMsNyBAQCB0ZW1wbGF0ZSB2b2lkIFdvcmtsaXN0Ojp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RW
aXNpdG9yJik7CiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQogewogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIEhhc2hTZXQ8Q29tcGlsYXRpb25LZXk+IGRlYWRQ
bGFuS2V5czsKICAgICAgICAgZm9yIChQbGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9wbGFucy5i
ZWdpbigpOyBpdGVyICE9IG1fcGxhbnMuZW5kKCk7ICsraXRlcikgewogICAgICAgICAgICAgUGxh
biogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgV29y
a2xpc3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0pCiAKIHZvaWQgV29ya2xpc3Q6OnJlbW92ZU5v
bkNvbXBpbGluZ1BsYW5zRm9yVk0oVk0mIHZtKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCpt
X2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgSGFzaFNldDxDb21w
aWxhdGlvbktleT4gZGVhZFBsYW5LZXlzOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhbj4+IGRlYWRQ
bGFuczsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9wbGFucykgewpAQCAtNDgzLDEzICs0ODMs
MTMgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlTm9uQ29tcGlsaW5nUGxhbnNGb3JWTShWTSYgdm0p
CiAKIHNpemVfdCBXb3JrbGlzdDo6cXVldWVMZW5ndGgoKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgcmV0dXJu
IG1fcXVldWUuc2l6ZSgpOwogfQogCiB2b2lkIFdvcmtsaXN0OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBkdW1wKGxvY2tlciwgb3V0KTsKIH0KIApAQCAtNTAz
LDExICs1MDMsMTEgQEAgdm9pZCBXb3JrbGlzdDo6ZHVtcChjb25zdCBBYnN0cmFjdExvY2tlciYs
IFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAKIHVuc2lnbmVkIFdvcmtsaXN0OjpzZXROdW1iZXJP
ZlRocmVhZHModW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N1c3BlbnNpb25Mb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OwogICAgIGF1dG8gY3VycmVudE51bWJlck9mVGhy
ZWFkcyA9IG1fdGhyZWFkcy5zaXplKCk7CiAgICAgaWYgKG51bWJlck9mVGhyZWFkcyA8IGN1cnJl
bnROdW1iZXJPZlRocmVhZHMpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9Owog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudE51bWJlck9mVGhyZWFkczsgaS0t
ID4gbnVtYmVyT2ZUaHJlYWRzOykgewogICAgICAgICAgICAgICAgIGlmIChtX3RocmVhZHNbaV0t
Pm1fdGhyZWFkLT5oYXNVbmRlcmx5aW5nVGhyZWFkKGxvY2tlcikpIHsKICAgICAgICAgICAgICAg
ICAgICAgbV9xdWV1ZS5hcHBlbmQobnVsbHB0cik7CkBAIC01MTgsNyArNTE4LDcgQEAgdW5zaWdu
ZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMs
IGludCByZWxhdGl2ZVByaW8KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudE51bWJl
ck9mVGhyZWFkczsgaS0tID4gbnVtYmVyT2ZUaHJlYWRzOykgewogICAgICAgICAgICAgYm9vbCBp
c1N0b3BwZWQgPSBmYWxzZTsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1f
bG9jayB9OwogICAgICAgICAgICAgICAgIGlzU3RvcHBlZCA9IG1fdGhyZWFkc1tpXS0+bV90aHJl
YWQtPnRyeVN0b3AobG9ja2VyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaXNT
dG9wcGVkKQpAQCAtNTI4LDcgKzUyOCw3IEBAIHVuc2lnbmVkIFdvcmtsaXN0OjpzZXROdW1iZXJP
ZlRocmVhZHModW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvCiAgICAg
ICAgIG1fdGhyZWFkcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBBU1NFUlQobV9udW1iZXJPZkFj
dGl2ZVRocmVhZHMgPD0gbnVtYmVyT2ZUaHJlYWRzKTsKICAgICB9IGVsc2UgaWYgKG51bWJlck9m
VGhyZWFkcyA+IGN1cnJlbnROdW1iZXJPZlRocmVhZHMpIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJlbnROdW1iZXJPZlRocmVhZHM7IGkgPCBudW1iZXJP
ZlRocmVhZHM7IGkrKykKICAgICAgICAgICAgIGNyZWF0ZU5ld1RocmVhZChsb2NrZXIsIHJlbGF0
aXZlUHJpb3JpdHkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dv
cmtsaXN0SW5saW5lcy5oCmluZGV4IGU1ZjkwYjQzOGM3Yjk1OGJkZTJmYmIwYWJlNjc1MGRmYmFm
Y2EwOTIuLmNjMjY2ZjZmMzY1NjFhYzZlYzY0MjUyNTFhZGE4ZDZmNDJmMjAwYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3RJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMuaApAQCAtNDQsNyAr
NDQsNyBAQCB2b2lkIGl0ZXJhdGVDb2RlQmxvY2tzRm9yR0MoVmlzaXRvciYgdmlzaXRvciwgVk0m
IHZtLCBjb25zdCBGdW5jJiBmdW5jKQogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYywgdHlwZW5hbWUg
VmlzaXRvcj4KIHZvaWQgV29ya2xpc3Q6Oml0ZXJhdGVDb2RlQmxvY2tzRm9yR0MoVmlzaXRvciYg
dmlzaXRvciwgVk0mIHZtLCBjb25zdCBGdW5jJiBmdW5jKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgZm9yIChQ
bGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9wbGFucy5iZWdpbigpOyBpdGVyICE9IG1fcGxhbnMu
ZW5kKCk7ICsraXRlcikgewogICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUuZ2V0KCk7
CiAgICAgICAgIGlmIChwbGFuLT52bSgpICE9ICZ2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAppbmRleCBmNGYxYzM3Y2MzN2Fh
NmI1MTc5NWJiZTQ5MmE5NTY0NGRlYTNkZTlmLi41NWMwNWM4MTIyOWYzNTkzNmZmMTM0N2NkZGY0
NTRmM2FmYjZhYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9EaXNhc3NlbWJsZXIuY3BwCkBAIC03NywxNCArNzcsMTQgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgZW5xdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrKQog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2sp
KTsKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5QWxsKCk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgd2FpdFVudGlsRW1wdHkoKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICB3aGlsZSAo
IW1fcXVldWUuaXNFbXB0eSgpIHx8IG1fd29ya2luZykKICAgICAgICAgICAgIG1fY29uZGl0aW9u
LndhaXQobV9sb2NrKTsKICAgICB9CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGZvciAoOzspIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+
IHRhc2s7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgICAgICAgICAgbV93b3JraW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9jb25kaXRp
b24ubm90aWZ5QWxsKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKG1fcXVldWUuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCmluZGV4
IDFlZjQ5NmQwMjNlOTVjNTVlNzljNDJiMjM4YTg4ZTI1NDg4YjUwZjMuLmIzZTJmZjZhMWY0MWYy
NzIzMzNlNzdkMjQ5NDlmMmNkMzhkOWFlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEJsb2NrRGly
ZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKICAgICAgICAgICAg
IEFTU0VSVChtX2JpdHMubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAgIEFT
U0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2JpdHZlY3RvckxvY2spOworICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fYml0dmVjdG9yTG9jayB9OwogICAgICAgICAgICAgc3Vic3Bh
Y2UoKS0+ZGlkUmVzaXplQml0cyhtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgICAgIG1f
Yml0cy5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAppbmRleCA3YjUxMWVm
NTAyMTg2ZjRlM2EwZDlkYjY1NmM1MTI1ZDQ1NDgyYjRjLi5jZmM5MDc3NDJhZDcyNDc3MDJmODlk
ZGM2MjkyYTFkOWZlODQ3YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0SW5saW5lcy5oCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ29kZUJsb2NrU2V0
OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJl
bnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKCZtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBmb3Ig
KENvZGVCbG9jayogY29kZUJsb2NrIDogbV9jdXJyZW50bHlFeGVjdXRpbmcpCiAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bnNlcnZhdGl2ZVJvb3RzLmNwcAppbmRleCA0ZjA5YTYzZWUwNThkNGExOGJhM2M2MTE1ZWFiYzYw
M2U2ZjEyZTI2Li41MTgzODcwZjQ2ZDI0ODIzZDU3OTk3M2Y4M2MxZTljZjVhZmUwNjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCkBA
IC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0ZToKIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6OmFkZCgK
ICAgICB2b2lkKiBiZWdpbiwgdm9pZCogZW5kLCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJv
dXRpbmVzLCBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja3MpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIoY29kZUJsb2Nrcy5nZXRMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBjb2RlQmxvY2tz
LmdldExvY2soKSB9OwogICAgIENvbXBvc2l0ZU1hcmtIb29rIG1hcmtIb29rKGppdFN0dWJSb3V0
aW5lcywgY29kZUJsb2NrcywgbG9ja2VyKTsKICAgICBnZW5lcmljQWRkU3BhbihiZWdpbiwgZW5k
LCBtYXJrSG9vayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDRmMTNm
NjM3MzE0MWE2NjdmMTk1MzQ5NDVmMWY1YzRkNTRjMzEwNWYuLjM5Y2JiNDI1MGY1YjM0NjM2NDVh
ZGE3NTZiZTMxODA2MWE4NDk5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBA
IC0zMzUsNyArMzM1LDcgQEAgSGVhcDo6SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIHNpemVfdCBtZW1vcnlBYm92ZUNyaXRpY2FsVGhyZXNob2xkID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdGF0aWNfY2FzdDxkb3VibGU+KG1fcmFtU2l6ZSkgKiAoMS4wIC0gT3B0aW9uczo6Y3Jp
dGljYWxHQ01lbW9yeVRocmVzaG9sZCgpKSk7CiAgICAgbV9tYXhFZGVuU2l6ZVdoZW5Dcml0aWNh
bCA9IG1lbW9yeUFib3ZlQ3JpdGljYWxUaHJlc2hvbGQgLyA0OwogCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sg
fTsKICAgICBtX3RocmVhZCA9IGFkb3B0UmVmKG5ldyBIZWFwVGhyZWFkKGxvY2tlciwgKnRoaXMp
KTsKIH0KIApAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxp
emUoKQogICAgIAogICAgIGlmIChtX2NvbGxlY3RDb250aW51b3VzbHlUaHJlYWQpIHsKICAgICAg
ICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jb2xsZWN0Q29udGludW91c2x5
TG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xsZWN0Q29udGludW91c2x5
TG9jayB9OwogICAgICAgICAgICAgbV9zaG91bGRTdG9wQ29sbGVjdGluZ0NvbnRpbnVvdXNseSA9
IHRydWU7CiAgICAgICAgICAgICBtX2NvbGxlY3RDb250aW51b3VzbHlDb25kaXRpb24ubm90aWZ5
T25lKCk7CiAgICAgICAgIH0KQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIEhlYXA6Omxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCkKICAgICAvLyBDYXJlZnVsbHkgYnJpbmcgdGhlIHRocmVhZCBkb3duLgog
ICAgIGJvb2wgc3RvcHBlZCA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fdGhyZWFkTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2Nr
IH07CiAgICAgICAgIHN0b3BwZWQgPSBtX3RocmVhZC0+dHJ5U3RvcChsb2NrZXIpOwogICAgICAg
ICBtX3RocmVhZFNob3VsZFN0b3AgPSB0cnVlOwogICAgICAgICBpZiAoIXN0b3BwZWQpCkBAIC0x
MTExLDcgKzExMTEsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgcmVxdWVz
dCkKIAogICAgIGJvb2wgYWxyZWFkeVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV90aHJlYWRMb2NrIH07CiAgICAgICAgIGZvciAoY29uc3QgR0NSZXF1ZXN0JiBwcmV2aW91
c1JlcXVlc3QgOiBtX3JlcXVlc3RzKSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC5zdWJzdW1l
ZEJ5KHByZXZpb3VzUmVxdWVzdCkpIHsKICAgICAgICAgICAgICAgICBhbHJlYWR5UmVxdWVzdGVk
ID0gdHJ1ZTsKQEAgLTEyNTAsNyArMTI1MCw3IEBAIE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1
bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICBtX2N1cnJlbnRHQ1N0YXJ0VGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRM
b2NrIH07CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CiAg
ICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CiAgICAgfQpAQCAt
MTMwMSw3ICsxMzAxLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShH
Q0NvbmR1Y3RvciBjb25uKQogICAgICAgICBbdGhpc10gKCkgewogICAgICAgICAgICAgU2xvdFZp
c2l0b3IqIHZpc2l0b3I7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9wYXJhbGxlbFNsb3RWaXNpdG9yTG9jayk7CisgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcGFyYWxsZWxTbG90VmlzaXRvckxvY2sgfTsKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fYXZhaWxhYmxlUGFyYWxsZWxTbG90Vmlz
aXRvcnMuaXNFbXB0eSgpLCAiUGFyYWxsZWwgU2xvdFZpc2l0b3JzIGFyZSBhbGxvY2F0ZWQgYXBy
aW9yaSIpOwogICAgICAgICAgICAgICAgIHZpc2l0b3IgPSBtX2F2YWlsYWJsZVBhcmFsbGVsU2xv
dFZpc2l0b3JzLnRha2VMYXN0KCk7CiAgICAgICAgICAgICB9CkBAIC0xMzE0LDcgKzEzMTQsNyBA
QCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5CZWdpblBoYXNlKEdDQ29uZHVjdG9yIGNvbm4p
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3BhcmFsbGVsU2xvdFZpc2l0b3JMb2NrKTsKKyAgICAgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wYXJhbGxlbFNsb3RWaXNpdG9yTG9jayB9OwogICAgICAgICAgICAg
ICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMuYXBwZW5kKHZpc2l0b3IpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTE4NzIsNyArMTg3Miw3IEBAIHZvaWQgSGVhcDo6
d2FpdEZvckNvbGxlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQogICAgIGZvciAoOzspIHsKICAgICAg
ICAgYm9vbCBkb25lOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV90aHJlYWRMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2Nr
IH07CiAgICAgICAgICAgICBkb25lID0gZnVuYyhsb2NrZXIpOwogICAgICAgICAgICAgaWYgKCFk
b25lKSB7CiAgICAgICAgICAgICAgICAgc2V0TXV0YXRvcldhaXRpbmcoKTsKQEAgLTIxMjgsNyAr
MjEyOCw3IEBAIEhlYXA6OlRpY2tldCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3Qg
cmVxdWVzdCkKICAgICBBU1NFUlQodm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6
Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV90aHJlYWRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9Owog
ICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0IG9ubHkgd29ya3Mg
aWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCiAgICAgLy8gcmlnaHQg
bm93LiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0aGF0IHByZXZlbnRzIHRoZSBjb2xsZWN0b3Ig
dGhyZWFkIGZyb20gZXZlciBzdGFydGluZyBpbiBtb3N0CiAgICAgLy8gY2FzZXMuCkBAIC0yOTY4
LDkgKzI5NjgsOSBAQCB2b2lkIEhlYXA6Om5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpCiAgICAgICAg
ICAgICAgICAgTW9ub3RvbmljVGltZSBpbml0aWFsVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogICAgICAgICAgICAgICAgIFNlY29uZHMgcGVyaW9kID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vj
b25kcyhPcHRpb25zOjpjb2xsZWN0Q29udGludW91c2x5UGVyaW9kTVMoKSk7CiAgICAgICAgICAg
ICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9jb2xsZWN0Q29udGludW91c2x5TG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrIH07CiAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVh
ZExvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVh
ZExvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdHMuYXBwZW5kKFdURjo6
bnVsbG9wdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0R3JhbnRlZFRpY2tl
dCsrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCmluZGV4IGU5
MjkxMDRlYjU2YjMwMGRjMGVjZTZhNjI2NDYyOGY0YTg5ODdjZTAuLjNhOWUzMTA1ZDcwYmE4YmM5
NmE1ZTIwNTk2YTRiNzY3YTFhMzNiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCBzaXplX3QgU2xvdFZpc2l0b3I6OnBl
cmZvcm1JbmNyZW1lbnRPZkRyYWluaW5nKHNpemVfdCBieXRlc1JlcXVlc3RlZCkKIAogYm9vbCBT
bG90VmlzaXRvcjo6ZGlkUmVhY2hUZXJtaW5hdGlvbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9oZWFwLm1fbWFya2luZ011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9oZWFwLm1f
bWFya2luZ011dGV4IH07CiAgICAgcmV0dXJuIGRpZFJlYWNoVGVybWluYXRpb24obG9ja2VyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCA3
ZWI1MWFmMzBmZGE4MDJjYTgxYThiMTBlY2Q3ZTZlYmVlMjIxMTdjLi5iMmQ5OWZiYTg5MjI2ZDRj
MjQwY2RhYjhmNWIwNTc1NzgxYmU4ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdGFydFRyYWNraW5nKE9wdGlv
bgogICAgICAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LmRlYnVnZ2VyKCkudm0oKTsKICAgICAg
ICAgU2FtcGxpbmdQcm9maWxlciYgc2FtcGxpbmdQcm9maWxlciA9IHZtLmVuc3VyZVNhbXBsaW5n
UHJvZmlsZXIoc3RvcHdhdGNoKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihzYW1wbGlu
Z1Byb2ZpbGVyLmdldExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzYW1wbGluZ1By
b2ZpbGVyLmdldExvY2soKSB9OwogICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLnNldFN0b3BXYXRj
aChsb2NrZXIsIHN0b3B3YXRjaCk7CiAgICAgICAgIHNhbXBsaW5nUHJvZmlsZXIubm90aWNlQ3Vy
cmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiAgICAgICAgIHNhbXBsaW5n
UHJvZmlsZXIuc3RhcnQobG9ja2VyKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEluc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRyYWNraW5nQ29tcGxldGUoKQogICAgICAgICBTYW1wbGlu
Z1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0uc2FtcGxpbmdQcm9maWxlcigpOwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzYW1wbGluZ1Byb2ZpbGVyKTsKIAotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihzYW1wbGluZ1Byb2ZpbGVyLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgc2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygpIH07CiAgICAgICAgIHNhbXBsaW5n
UHJvZmlsZXItPnBhdXNlKGxvY2tlcik7CiAgICAgICAgIFZlY3RvcjxTYW1wbGluZ1Byb2ZpbGVy
OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlcyA9IHNhbXBsaW5nUHJvZmlsZXItPnJlbGVhc2VTdGFj
a1RyYWNlcyhsb2NrZXIpOwogICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKQEAgLTI0NCw3
ICsyNDQsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnN0b3BTYW1wbGlu
Z1doZW5EaXNjb25uZWN0aW5nKCkKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgU2Ft
cGxpbmdQcm9maWxlciogc2FtcGxpbmdQcm9maWxlciA9IHZtLnNhbXBsaW5nUHJvZmlsZXIoKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChzYW1wbGluZ1Byb2ZpbGVyKTsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzYW1wbGluZ1Byb2ZpbGVyLT5nZXRMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBz
YW1wbGluZ1Byb2ZpbGVyLT5nZXRMb2NrKCkgfTsKICAgICBzYW1wbGluZ1Byb2ZpbGVyLT5wYXVz
ZShsb2NrZXIpOwogICAgIHNhbXBsaW5nUHJvZmlsZXItPmNsZWFyRGF0YShsb2NrZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAppbmRleCA4OTk5ZjMwNzdiNzMyMDUx
ODVjMTA0YTBiNmIzMmI0ZjI5MDg3Y2IwLi5lMDZmYmQ5OTk1YmFlYTZkNTg3MGEzY2JiYjUyNjg3
M2VhOTZjNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp+UmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0KCkKIAogYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNB
dXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2FsbHlQYXVzZSkKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0
TXV0ZXggfTsKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdl
VG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
ayhtX3RhcmdldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXgg
fTsKICAgICAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
dGFyZ2V0ID0gbV90YXJnZXQ7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHZv
aWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCiB7CiAgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKICAgICAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0OjpjbG9zZSgpCiAKIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRD
bG9zZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5jcHAKaW5kZXggM2YxOWYwYjllOGE1OTQzZWQ5OWY4NDk0NjRlYmE3
YTRmNjAwMzQ1MC4uZDFkOTUyYzk0NDU5NjdhYThhMTFmMTI0MzgyYWJhMmEyYjllNzM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpyZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKIHsKICAg
ICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgYXV0byB0YXJnZXRJ
ZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKTsKICAgICB0YXJnZXQt
PnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmllcik7CkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZp
ZXIoKTsKICAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQq
IHRhcmdldCkKIHsKICAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKIAotICAgIExvY2tI
b2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAg
ICAgaWYgKCF1cGRhdGVUYXJnZXRNYXAodGFyZ2V0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ2
LDcgKzE0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVDbGllbnRDYXBhYmlsaXRp
ZXMoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICgh
bV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50Q2FwYWJpbGl0aWVzID0gV1RGOjpudWxsb3B0OwpA
QCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQoUmVtb3Rl
SW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKICAgICBBU1NFUlQoKG1fY2xpZW50ICYmICFjbGll
bnQpIHx8ICghbV9jbGllbnQgJiYgY2xpZW50KSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAg
ICAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiAgICAgfQogCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xp
ZW50KQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQoVGFyZ2V0SUQgdGFyZ2V0
SWRlbnRpZmllcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5yZW1vdmUo
dGFyZ2V0SWRlbnRpZmllcik7CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXBGYWlsZWQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwQ29tcGxldGVkKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211
dGV4IH07CiAKICAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rp
b25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKQogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rp
b25QYXVzZWQgPSBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6Y2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnN0b3AoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OwogCiAgICAgc3RvcEludGVybmFsKFN0b3BTb3VyY2U6OkFQSSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
CmluZGV4IGQwMGNmYmM4OGEwNmUyODQ0YmQ1YjEyNDdiZTg5MDU3MzIxOTMwMzYuLjhiMmE3ZmEz
OGFhMDY4ZTQ1MzQzZjM0YTQ3MmNmMWFlMDUwYWUwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dENvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC01NCw3ICs1NCw3IEBAIHN0
YXRpYyB2b2lkIFJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZUdsb2JhbCh2b2lkKikKIAogICAg
IFJlbW90ZVRhcmdldFF1ZXVlIHF1ZXVlQ29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9jayhyd2lRdWV1ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJ3aVF1ZXVlTXV0
ZXggfTsKICAgICAgICAgc3RkOjpzd2FwKHF1ZXVlQ29weSwgKnJ3aVF1ZXVlKTsKICAgICB9CiAK
QEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9i
YWxRdWV1ZShGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIEFTU0VSVChyd2lRdWV1
ZSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhyd2lRdWV1ZU11dGV4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IHJ3aVF1ZXVlTXV0ZXggfTsKICAgICAgICAgcndpUXVldWUt
PmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCkBAIC05OSw3ICs5OSw3IEBAIHN0
YXRpYyB2b2lkIFJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKHZvaWQqIGluZm8p
CiAKICAgICBSZW1vdGVUYXJnZXRRdWV1ZSBxdWV1ZUNvcHk7CiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2soY29ubmVjdGlvblRvVGFyZ2V0LT5xdWV1ZU11dGV4KCkpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgY29ubmVjdGlvblRvVGFyZ2V0LT5xdWV1ZU11dGV4KCkgfTsKICAgICAg
ICAgcXVldWVDb3B5ID0gY29ubmVjdGlvblRvVGFyZ2V0LT50YWtlUXVldWUoKTsKICAgICB9CiAK
QEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6ZGlzcGF0
Y2hBc3luY09uVGFyZ2V0KEZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhYwogCiBib29sIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJv
b2wgYXV0b21hdGljYWxseVBhdXNlKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogCiAgICAgaWYgKCFt
X3RhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wg
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biwgYm9vbCBhdXRvbWF0aWNhCiAgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gdGhpcy0+dGFy
Z2V0SWRlbnRpZmllcigpLnZhbHVlT3IoMCk7CiAKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQo
W3RoaXMsIHRhcmdldElkZW50aWZpZXIsIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYXV0b21hdGlj
YWxseVBhdXNlLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Rh
cmdldE11dGV4IH07CiAKICAgICAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90
ZUNvbnRyb2xBbGxvd2VkKCkpIHsKICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xl
dG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmllcik7CkBAIC0xOTEsNyArMTkxLDcgQEAg
Ym9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uLCBib29sIGF1dG9tYXRpY2EKIAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6
OnRhcmdldENsb3NlZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAKICAgICBtX3RhcmdldCA9IG51
bGxwdHI7CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OmNsb3NlKCkKICAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3RhcmdldCA/IG1fdGFy
Z2V0LT50YXJnZXRJZGVudGlmaWVyKCkgOiAwOwogICAgIAogICAgIGRpc3BhdGNoQXN5bmNPblRh
cmdldChbdGhpcywgdGFyZ2V0SWRlbnRpZmllciwgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSgpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgICAgICBpZiAobV90YXJnZXQpIHsK
ICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3RlZCkKICAgICAgICAgICAgICAgICBtX3RhcmdldC0+
ZGlzY29ubmVjdCgqdGhpcyk7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoTlNTdHJpbmcgKm1lc3NhZ2UpCiAgICAg
ZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlzLCBzdHJvbmdNZXNzYWdlID0gcmV0YWluUHRyKG1l
c3NhZ2UpLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewogICAgICAgICBSZW1vdGVD
b250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9IG51bGxwdHI7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRhcmdldCA9IG1fdGFyZ2V0OwpAQCAt
Mjc0LDcgKzI3NCw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpxdWV1ZVRhc2tP
blByaXZhdGVSdW5Mb29wKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuCiAgICAgQVNTRVJUKG1fcnVu
TG9vcCk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9jayB7IG1fcXVldWVNdXRleCB9OwogICAgICAgICBtX3F1ZXVlLmFw
cGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUlu
c3BlY3RvckNvY29hLm1tCmluZGV4IGQxYmY3MTNjYmM5NmM0NmNmOWIwNjdjM2M5ZmZlOWU1M2Y4
MWI2ZGQuLjc1ZjM5NDM3YmU1YjlmYzkwNWIwZDJhYzZmMDZkNDMwZjhiYjY1OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUlu
c3BlY3RvckNvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVt
b3RlSW5zcGVjdGlvblRhcmdldCoKIHsKICAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgICAgICBpZiAoIXVwZGF0ZVRhcmdldE1hcCh0YXJn
ZXQpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3Bl
Y3Rpb25UYXJnZXQqCiAgICAgICAgIC8vIEluIGNhc2UgZGVidWdnZXJzIGZhaWwgdG8gcmVzcG9u
ZCwgb3Igd2UgY2Fubm90IGNvbm5lY3QgdG8gd2ViaW5zcGVjdG9yZCwgYXV0b21hdGljYWxseSBj
b250aW51ZSBhZnRlciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLgogICAgICAgICBpbnQ2NF90IGRl
YnVnZ2VyVGltZW91dERlbGF5ID0gMTA7CiAgICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNo
X3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlYnVnZ2VyVGltZW91dERlbGF5ICogTlNFQ19QRVJf
U0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9E
RUZBVUxULCAwKSwgXnsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBpZiAobV9h
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllciA9PSB0YXJnZXRJZGVu
dGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJTa2lwcGluZyBBdXRvbWF0
aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUpIGJlY2F1c2Ugd2UgZmFpbGVk
IHRvIHJlY2VpdmUgYSByZXNwb25zZSBpbiB0aW1lLiIsIG1fYXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZVRhcmdldElkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIG1fYXV0b21hdGljSW5z
cGVjdGlvblBhdXNlZCA9IGZhbHNlOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQqCiAgICAgdGFyZ2V0LT5wYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9u
KCk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgICAgICBBU1NFUlQobV9hdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIG1fYXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPSAwOwpAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZU1lc3NhZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShU
YXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07
CiAKICAgICBpZiAoIW1fcmVsYXlDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUoVGFy
Z2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnN0YXJ0KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmIChtX2VuYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcEludGVybmFs
KFN0b3BTb3VyY2Ugc291cmNlKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25u
ZWN0aW9uSWZOZWVkZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQog
ICAgICAgICByZXR1cm47CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
dFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIFJldGFpblB0cjxDRkRhdGFSZWY+
IGF1ZGl0RGF0YSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmIChtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVy
IHx8IG1fcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwLDcg
KzMxMCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRp
b24ocGlkX3QgcGlkLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Ojp4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24qLCBOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJQZXJtaXNzaW9u
RGVuaWVkXSkgewogICAgICAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6WFBDTWVzc2FnZSk7
CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25S
ZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbioKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiogcmVsYXlDb25uZWN0aW9uKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgQVNTRVJUKHJlbGF5Q29ubmVj
dGlvbiA9PSBtX3JlbGF5Q29ubmVjdGlvbik7CiAgICAgaWYgKHJlbGF5Q29ubmVjdGlvbiAhPSBt
X3JlbGF5Q29ubmVjdGlvbikKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cHVzaExpc3RpbmdzU29vbigpCiAKICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwogICAg
IGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMiAqIE5T
RUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fcHVzaFNj
aGVkdWxlZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAgIH0pOwpAQCAtNjE1
LDcgKzYxNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEluZGljYXRlTWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogICAgIGRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWRX
aXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKF57CiAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
IAogICAgICAgICAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV90YXJnZXRNYXAuZmluZCh0YXJnZXRJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIGlmIChmaW5kUmVzdWx0ID09IG1fdGFyZ2V0TWFwLmVu
ZCgpKQpAQCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZFBy
b3h5QXBwbGljYXRpb25TZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICopCiAgICAgICAgIC8vIFdh
aXQgYSBiaXQgZm9yIHRoZSBpbmZvcm1hdGlvbiwgYnV0IGdpdmUgdXAgYWZ0ZXIgYSBzZWNvbmQu
CiAgICAgICAgIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbiA9IHRydWU7CiAg
ICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDEg
KiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAg
ICAgIGlmIChtX3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24pCiAgICAgICAgICAg
ICAgICAgc3RvcEludGVybmFsKFN0b3BTb3VyY2U6OlhQQ01lc3NhZ2UpOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmlu
ZGV4IGI1MDJlMjkzNWYwZjg1NmFhMWYyMmJlNTA0MjRhYzNhNzg1NzIxMjkuLjQzZGYyNzBhYzgy
MmY0YmY5Y2Q2NWQ5ZDUwMGY4NzNlMmFiMWFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtNzEsNyArNzEsNyBAQCBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2UoKQogewotICAgIExvY2tI
b2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAg
IGNsb3NlRnJvbU1lc3NhZ2UoKTsKIH0KIApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UoKQogICAgIG1fY2xpZW50ID0g
bnVsbHB0cjsKIAogICAgIGRpc3BhdGNoX2FzeW5jKG1fcXVldWUuZ2V0KCksIF57Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NP
Tk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAg
ICBjbG9zZU9uUXVldWUoKTsKICAgICB9KTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBOU0RpY3Rpb25h
cnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNf
b2JqZWN0X3Qgb2JqZQogCiAgICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2Vy
aWFsaXplZE1lc3NhZ2VLZXkpOwogICAgIGlmICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0X3R5
cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0
aW9uVW5oYW5kbGVkTWVzc2FnZSh0aGlzLCBvYmplY3QpOwogICAgICAgICByZXR1cm4gbmlsOwpA
QCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6aGFu
ZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKIHsKICAgICBpZiAoeHBjX2dldF90eXBlKG9i
amVjdCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+
eHBjQ29ubmVjdGlvbkZhaWxlZCh0aGlzKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVj
dCkKICAgICAgICAgYXVkaXRfdG9rZW5fdCB0b2tlbjsKICAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
Z2V0X2F1ZGl0X3Rva2VuKG1fY29ubmVjdGlvbi5nZXQoKSwgJnRva2VuKTsKICAgICAgICAgaWYg
KCFXVEY6Omhhc0VudGl0bGVtZW50KHRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVj
dG9yLndlYmluc3BlY3RvcmQiKSkgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAg
IC8vIFRoaXMgd2lsbCB0cmlnZ2VyIG9uZSBsYXN0IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFM
SUQgZXZlbnQgb24gdGhlIHF1ZXVlIGFuZCBkZXJlZiB1cy4KICAgICAgICAgICAgIGNsb3NlT25R
dWV1ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVj
dCkKICAgICBpZiAodXNlckluZm8gJiYgIVt1c2VySW5mbyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rp
b25hcnkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1f
bXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSh0aGlzLCBt
ZXNzYWdlLCB1c2VySW5mbyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNw
cAppbmRleCAwNGFiZjU1NTRjNDJiMzk1MGJhYjQxYmEyNTQ3NDcyYWEzYTBiZTEyLi44YmJjZmUx
YmZmNjFlYjMxY2JlMmY1YjU5YWUxNGM4YTgyMzIwYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3Rl
SW5zcGVjdG9yR2xpYi5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUmVtb3RlSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3IoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyYgUmVtb3RlSW5zcGVjdG9y
OjptZXNzYWdlSGFuZGxlcnMoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb25uZWN0
aW9uKFJlZjxTb2NrZXRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBB
U1NFUlQoIW1fc29ja2V0Q29ubmVjdGlvbik7CiAgICAgbV9zb2NrZXRDb25uZWN0aW9uID0gV1RG
TW92ZShjb25uZWN0aW9uKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cHVzaExpc3RpbmdzU29vbigpCiAgICAgbV9wdXNoU2NoZWR1bGVkID0gdHJ1ZTsKIAogICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAg
ICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCiAgICAgICAgICAgICBwdXNoTGlzdGluZ3NOb3coKTsK
ICAgICB9KTsKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1
dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGlmICghbV9zb2NrZXRDb25uZWN0aW9uKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2Fn
ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CiAgICAgcHVzaExpc3RpbmdzTm93KCk7CiB9CiAKQEAgLTI1MSw3ICsyNTEs
NyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZShUYXJnZXRJRCB0
YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKgogewogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ+IGNvbm5lY3Rpb25Ub1RhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAg
ICAgICAgY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLmdldCh0YXJn
ZXRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFjb25uZWN0aW9uVG9UYXJnZXQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkQ2xvc2VNZXNzYWdlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgUmVm
UHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRvVGFyZ2V0OwogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9
IG1fdGFyZ2V0TWFwLmdldCh0YXJnZXRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnNldHVwKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIHRh
cmdldCA9IG1fdGFyZ2V0TWFwLmdldCh0YXJnZXRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCF0
YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdl
dElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAKICAgICB1cGRhdGVI
YXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAppbmRleCA1YTFkOTI0NTdhNTNhYTg3ZDRj
YWM5YjRiMTExY2MzNDE4MzE2OTU0Li41ZTM4Nzk4ZWEwYjE4NTU0OTBiZTVjNmY5YzM4MWE1YzVh
NGUyYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNv
bm5lY3Rpb25DbGllbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dCYsCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9wYXJzZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFyc2Vyc0xvY2sgfTsK
ICAgICBhdXRvIHJlc3VsdCA9IG1fcGFyc2Vycy5lbnN1cmUoY2xpZW50SUQsIFt0aGlzLCBjbGll
bnRJRF0gewogICAgICAgICByZXR1cm4gTWVzc2FnZVBhcnNlcihbdGhpcywgY2xpZW50SURdKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGV2ZW50ID0gUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZXh0cmFjdEV2ZW50KGNsaWVudElELCBXVEZN
b3ZlKGRhdGEpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNw
cAppbmRleCA3Mzk2NzNlZjg3NzRmNjBlZDg3ODE5NTM1NTNkNzBmZTM3MGIzY2Q1Li5lMzA1OGY1
MDFkYzcwOWZiMjhlNjg2NWI2OTUzM2E2YjU5Yzg2NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6ZGlkQ2xvc2UoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0
aW9uSUQpCiAgICAgbV9jbGllbnRDb25uZWN0aW9uID0gV1RGOjpudWxsb3B0OwogCiAgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFs9XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayht
X211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgc3Rv
cEludGVybmFsKFN0b3BTb3VyY2U6OkFQSSk7CiAgICAgfSk7CiB9CkBAIC04Niw3ICs4Niw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoY29uc3QgU3RyaW5n
JiBldmVudCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAg
IGlmIChtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29vbigpCiAgICAgbV9wdXNoU2NoZWR1bGVk
ID0gdHJ1ZTsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbPV0gewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211
dGV4IH07CiAgICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCiAgICAgICAgICAgICBwdXNoTGlz
dGluZ3NOb3coKTsKICAgICB9KTsKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXAoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZW1vdGVDb250
cm9sbGFibGVUYXJnZXQqIHRhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayht
X211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgdGFy
Z2V0ID0gbV90YXJnZXRNYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRh
cmdldCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2V0dXAoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0
SWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKIAogICAgIHVwZGF0ZUhh
c0FjdGl2ZURlYnVnU2Vzc2lvbigpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpzZXR1cEluc3BlY3RvckNsaWVudChjb25zdCBFdmVudCYpCiAKICAgICBtX3JlYWR5
VG9QdXNoTGlzdGluZ3MgPSB0cnVlOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgcHVzaExpc3RpbmdzTm93KCk7CiB9
CiAKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6ZnJvbnRlbmREaWRD
bG9zZShjb25zdCBFdmVudCYgZXZlbnQpCiAKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAg
IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRNYXAuZ2V0KGV2ZW50
LnRhcmdldElELnZhbHVlKCkpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3Nh
Z2VUb0JhY2tlbmQoY29uc3QgRXZlbnQmIGV2ZW50KQogCiAgICAgUmVmUHRyPFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRvVGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZ2V0KGV2
ZW50LnRhcmdldElELnZhbHVlKCkpOwogICAgICAgICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAKICAgICBt
X3JlYWR5VG9QdXNoTGlzdGluZ3MgPSB0cnVlOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgcHVzaExpc3RpbmdzTm93
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQuY3BwCmluZGV4IGFlNWU2ZDhhMWFlYWIxYTA0NTU2NmIzN2EzZTRjZDBlYmQ2MWY0
ZmMuLjNjOTc3MDFjNjQ0MWUyMTc1MmY0MTRhZDgyNDZjMWRkNjI5MjUxN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAt
ODksNyArODksNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50Ojpjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZQogCiBPcHRpb25hbDxDb25uZWN0
aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KGNvbnN0IGNo
YXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQsIExpc3RlbmVyJiBsaXN0ZW5lcikKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGF1dG8gaWQgPSBnZW5lcmF0ZUNvbm5lY3Rpb25JRCgp
OwogICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8TGlzdGVuZXJDb25uZWN0aW9uPihp
ZCwgbGlzdGVuZXIsIGFkZHJlc3MsIHBvcnQpOwogICAgIGlmICghY29ubmVjdGlvbi0+aXNMaXN0
ZW5pbmcoKSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KGNvbnN0IGNoYXIqIGFkZAogCiBi
b29sIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojppc0xpc3RlbmluZyhDb25uZWN0aW9u
SUQgaWQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBpZiAobV9saXN0ZW5lcnMu
Y29udGFpbnMoaWQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6d29y
a2VyVGhyZWFkKCkKICAgICAgICAgVmVjdG9yPFBvbGxpbmdEZXNjcmlwdG9yPiBwb2xsZmRzOwog
ICAgICAgICBWZWN0b3I8Q29ubmVjdGlvbklEPiBpZHM7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgY29ubmVjdGlvbiA6IG1fY2xpZW50cykgewogICAgICAgICAgICAgICAgIHBvbGxmZHMuYXBw
ZW5kKGNvbm5lY3Rpb24udmFsdWUtPnBvbGwpOwogICAgICAgICAgICAgICAgIGlkcy5hcHBlbmQo
Y29ubmVjdGlvbi5rZXkpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25J
RD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNv
Y2tlCiB7CiAgICAgQVNTRVJUKFNvY2tldDo6aXNWYWxpZChzb2NrZXQpKTsKIAotICAgIExvY2tI
b2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29u
bmVjdGlvbnNMb2NrIH07CiAgICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAg
ICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxDbGllbnRDb25uZWN0aW9uPihpZCwgc29j
a2V0LCBjbGllbnQpOwogICAgIGlmICghU29ja2V0Ojppc1ZhbGlkKGNvbm5lY3Rpb24tPnNvY2tl
dCkpCkBAIC0yMTcsNyArMjE3LDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAogdm9pZCBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdChDb25uZWN0aW9uSUQgaWQp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKIAogICAgIGlmIChjb25zdCBhdXRvJiBjb25u
ZWN0aW9uID0gbV9saXN0ZW5lcnMuZ2V0KGlkKSkgewogICAgICAgICBtX2xpc3RlbmVycy5yZW1v
dmUoaWQpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OmRpc2Nvbm5lY3QoQ29ubmVjdGlvbklEIGlkKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KENsaWVudCYgY2xpZW50KQogewotICAg
IExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgbV9jbGllbnRzLnJlbW92ZUlmKFsmY2xpZW50XShh
dXRvJiBrZXlWYWx1ZSkgewogICAgICAgICBjb25zdCBhdXRvJiBjb25uZWN0aW9uID0ga2V5VmFs
dWUudmFsdWU7CiAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KENsaWVudCYgY2xpZW50KQogCiB2b2lkIFJlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlTGlzdGVuZXIoTGlzdGVuZXImIGxp
c3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgbV9saXN0ZW5lcnMucmVt
b3ZlSWYoWyZsaXN0ZW5lcl0oYXV0byYga2V5VmFsdWUpIHsKICAgICAgICAgY29uc3QgYXV0byYg
Y29ubmVjdGlvbiA9IGtleVZhbHVlLnZhbHVlOwogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6aW52YWxpZGF0ZUxpc3RlbmVyKExpc3RlbmVy
JiBsaXN0ZW5lcikKIAogT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rp
b25zTG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9saXN0ZW5lcnMu
Z2V0KGlkKSkKICAgICAgICAgcmV0dXJuIFNvY2tldDo6Z2V0UG9ydChjb25uZWN0aW9uLT5zb2Nr
ZXQpOwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkp
CkBAIC0yNzYsNyArMjc2LDcgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVj
dGlvbiA9IG1fY2xpZW50cy5nZXQoaWQpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZWN2
QnVmZmVyKFNvY2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgICAgIGlmIChhdXRvIHJlYWRTaXplID0g
U29ja2V0OjpyZWFkKGNvbm5lY3Rpb24tPnNvY2tldCwgcmVjdkJ1ZmZlci5kYXRhKCksIHJlY3ZC
dWZmZXIuc2l6ZSgpKSkgewpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogCiB2b2lkIFJl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kSWZFbmFibGVkKENvbm5lY3Rpb25JRCBp
ZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25u
ZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpIHsKICAgICAgICAgU29ja2V0OjpjbGVhcldhaXRp
bmdXcml0YWJsZShjb25uZWN0aW9uLT5wb2xsKTsKIApAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVjdGlvbklE
IGlkKQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKENvbm5lY3Rp
b25JRCBpZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uc0xvY2sgfTsKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fY2xpZW50
cy5nZXQoaWQpKSB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgICAgICBpZiAoY29u
bmVjdGlvbi0+c2VuZEJ1ZmZlci5pc0VtcHR5KCkpIHsKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjphY2NlcHRJbmV0U29ja2V0SWZFbmFibGVk
KENvbm5lY3Rpb25JRCBpZCkKIHsKICAgICBBU1NFUlQoaXNMaXN0ZW5pbmcoaWQpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBt
X2xpc3RlbmVycy5nZXQoaWQpKSB7CiAgICAgICAgIGlmIChhdXRvIHNvY2tldCA9IFNvY2tldDo6
YWNjZXB0KGNvbm5lY3Rpb24tPnNvY2tldCkpIHsKICAgICAgICAgICAgIC8vIE5lZWQgdG8gdW5s
b2NrIGJlZm9yZSBjYWxsaW5nIGNyZWF0ZUNsaWVudCBhcyBpdCBhbHNvIGF0dGVtcHRzIHRvIGxv
Y2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ0xvb3BT
dGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ0xvb3BTdGFjay5j
cHAKaW5kZXggM2M5M2FiOGViZTVhYjJjOTZlMzRjMDE5YTJiN2YyMDQxM2Y4MDhhMS4uODE5ZDNl
M2VjNDEzZTljODI4YTEyMzdjZGE0ZGM3OGZhNDcxNzljNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBA
IHZvaWQgQ0xvb3BTdGFjazo6cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCkKIAogdm9pZCBDTG9vcFN0
YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nIGJ5dGVDb3VudCkKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IHN0YWNrU3RhdGlzdGljc011dGV4IH07CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGxvbmc+KGNv
bW1pdHRlZEJ5dGVzQ291bnQpICsgYnl0ZUNvdW50ID4gLTEpOwogICAgIGNvbW1pdHRlZEJ5dGVz
Q291bnQgKz0gYnl0ZUNvdW50OwogfQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQ0xvb3BTdGFj
azo6aXNTYWZlVG9SZWN1cnNlKCkgY29uc3QKIAogc2l6ZV90IENMb29wU3RhY2s6OmNvbW1pdHRl
ZEJ5dGVDb3VudCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNzTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBzdGFja1N0YXRpc3RpY3NNdXRleCB9OwogICAgIHJl
dHVybiBjb21taXR0ZWRCeXRlc0NvdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCA3YzA5NzE1YWVlYWY5ZDkzMGY1
NmE5ZDkxMzI0OGZiMDc1NjdiZmQ1Li5mY2YzZmJmYzY0YjA5NDRlMmE0YzQ3ZDYxN2Y5ODY2N2I2
YjFkMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgZHVtcEpJVE1lbW9yeShjb25z
dCB2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IHNpemUpCiAgICAgICAgIGJ1ZmZl
ciA9IGJpdHdpc2VfY2FzdDx1aW50OF90Kj4obWFsbG9jKGJ1ZmZlclNpemUpKTsKICAgICAgICAg
Zmx1c2hRdWV1ZS5jb25zdHJ1Y3QoV29ya1F1ZXVlOjpjcmVhdGUoImpzYy5kdW1wSklUTWVtb3J5
LnF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3Jv
dW5kKSk7CiAgICAgICAgIHN0ZDo6YXRleGl0KFtdIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKGR1bXBKSVRNZW1vcnlMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBk
dW1wSklUTWVtb3J5TG9jayB9OwogICAgICAgICAgICAgZmx1c2gobG9ja2VyKTsKICAgICAgICAg
ICAgIGNsb3NlKGZkKTsKICAgICAgICAgICAgIGZkID0gLTE7CkBAIC0xMDcxLDcgKzEwNzEsNyBA
QCB2b2lkIGR1bXBKSVRNZW1vcnkoY29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNp
emVfdCBzaXplKQogCiAgICAgICAgIG5lZWRzVG9GbHVzaCA9IHRydWU7CiAgICAgICAgIGZsdXNo
UXVldWUuZ2V0KCktPmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyhPcHRpb25zOjpkdW1wSklUTWVtb3J5
Rmx1c2hJbnRlcnZhbCgpKSwgW10gewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZHVt
cEpJVE1lbW9yeUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGR1bXBKSVRNZW1v
cnlMb2NrIH07CiAgICAgICAgICAgICBpZiAoIW5lZWRzVG9GbHVzaCkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBmbHVzaChsb2NrZXIpOwpAQCAtMTA4Niw3ICsxMDg2LDcg
QEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qgdm9pZCogc3JjLCBz
aXplX3Qgc2l6ZSkKICAgICAgICAgZW5xdWV1ZUZsdXNoKGxvY2tlcik7CiAgICAgfTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKGR1bXBKSVRNZW1vcnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgZHVtcEpJVE1lbW9yeUxvY2sgfTsKICAgICB1aW50NjRfdCB0aW1lID0gbWFjaF9hYnNvbHV0
ZV90aW1lKCk7CiAgICAgdWludDY0X3QgZHN0NjQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihk
c3QpOwogICAgIHVpbnQ2NF90IHNpemU2NCA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9J
Q1N0YXRzLmNwcAppbmRleCA4MTM1YjRmZGVlNjJmNzhlOWRjNmI0NjJkNmNlZWNhNGZkMWM2MDY2
Li43ZDFhNzQ0ZGY3NmNlNWVmNTkwNTI2ZDUwYzUwNDJlODViMTFmY2I4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSUNTdGF0czo6SUNTdGF0
cygpCiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgIkpTQyBJQ1N0YXRz
IiwKICAgICAgICAgW3RoaXNdICgpIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAg
ICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdEZvcigKICAgICAg
ICAgICAgICAgICAgICAgbV9sb2NrLCBTZWNvbmRzKDEpLCBbdGhpc10gKCkgLT4gYm9vbCB7IHJl
dHVybiBtX3Nob3VsZFN0b3A7IH0pOwpAQCAtODQsNyArODQsNyBAQCBJQ1N0YXRzOjpJQ1N0YXRz
KCkKIElDU3RhdHM6On5JQ1N0YXRzKCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAg
bV9zaG91bGRTdG9wID0gdHJ1ZTsKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5QWxsKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDMyNTUzNGVi
OTZmY2ZhYjEyODRkYWE4NTQ4N2QzODNjZThiODJiNTkuLjMxOWI1MGQ5NDJkNWE5NGQ5ZTliZDBm
ZjQyZTUzZGNhNzMxMmJlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJU
YWc+IEpJVFRodW5rczo6Y3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0s
IFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBDVElTdHViTWFwOjpBZGRS
ZXN1bHQgZW50cnkgPSBtX2N0aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPigpKTsKICAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkgewog
ICAgICAgICAvLyBDb21waWxhdGlvbiB0aHJlYWQgY2FuIG9ubHkgcmV0cmlldmUgZXhpc3Rpbmcg
ZW50cmllcy4KQEAgLTE0Myw3ICsxNDMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9yCiAKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpleGlzdGluZ0NU
SVN0dWIoVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHJldHVybiBleGlz
dGluZ0NUSVN0dWIoZ2VuZXJhdG9yLCBOb0xvY2tpbmdOZWNlc3NhcnkpOwogfQogCkBAIC0xNTks
NyArMTU5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVu
a3M6OmV4aXN0aW5nQ1RJU3R1YihUaHVua0dlbmVyYXRvcgogCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0m
IHZtLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rpb24pCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0
byBrZXkgPSBiaXR3aXNlX2Nhc3Q8VGh1bmtHZW5lcmF0b3I+KHNsb3dQYXRoRnVuY3Rpb24pOwog
ICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoa2V5LCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+KCkpOwogICAgIGlmIChlbnRyeS5p
c05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdv
cmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwCmlu
ZGV4IDUzOWI2ZmE5Y2FhODMyOTE1NDRjOGFkMzc5ZDIyNjAyODQ3NGI1OTQuLmE3MDUyZTc5ZjBh
NzQzNjdmZTNmZGM1YTNjZjZkNTM4ZTY5MzIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUV29ya2xpc3QuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG1faml0LmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKICAgICAgICAgCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9pc0ZpbmlzaGVkQ29t
cGlsaW5nID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBib29sIGlzRmluaXNoZWRDb21waWxpbmcoKQogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgICAgICByZXR1cm4gbV9pc0ZpbmlzaGVkQ29tcGlsaW5nOwogICAgIH0KICAgICAKQEAgLTEz
OCwxMyArMTM4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoZSBtYWluIHRocmVhZCByZWFsaXplcyB0aGF0IHdlIGp1c3QgY29tcGls
ZWQgc29tZXRoaW5nLiBOb3RpZnlpbmcKICAgICAgICAgICAgIC8vIGEgY29uZGl0aW9uIGlzIGJh
c2ljYWxseSBmcmVlIGlmIG5vYm9keSBpcyB3YWl0aW5nLgotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV93b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIG1fd29ya2xpc3QubV9jb25kaXRp
b24tPm5vdGlmeUFsbChsb2NrZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX215
UGxhbnMuY2xlYXIoKTsKICAgICAgICAgCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3dv
cmtsaXN0Lm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV93b3JrbGlzdC5tX2xv
Y2sgfTsKICAgICAgICAgbV93b3JrbGlzdC5tX251bUF2YWlsYWJsZVRocmVhZHMrKzsKICAgICAg
ICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KQEAgLTE2OCw3ICsxNjgsNyBA
QCBKSVRXb3JrbGlzdDo6SklUV29ya2xpc3QoKQogICAgIDogbV9sb2NrKEJveDxMb2NrPjo6Y3Jl
YXRlKCkpCiAgICAgLCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0
ZSgpKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyAqbV9sb2NrIH07CiAgICAgbV90aHJlYWQgPSBuZXcgVGhyZWFkKGxvY2tlciwgKnRoaXMp
OwogfQogCkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBKSVRXb3JrbGlzdDo6Y29tcGxldGVBbGxG
b3JWTShWTSYgdm0pCiAgICAgZm9yICg7OykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPFBsYW4+
LCAzMj4gbXlQbGFuczsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Km1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAg
ICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgIGJvb2wgZGlkRmluZFVuZmluaXNoZWRQ
bGFuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9wbGFucy5yZW1vdmVBbGxNYXRjaGluZygK
QEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEpJVFdvcmtsaXN0Ojpwb2xsKFZNJiB2bSkKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgUGxhbnMgbXlQbGFuczsKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
Km1fbG9jayB9OwogICAgICAgICBtX3BsYW5zLnJlbW92ZUFsbE1hdGNoaW5nKAogICAgICAgICAg
ICAgWyZdIChSZWZQdHI8UGxhbj4mIHBsYW4pIHsKICAgICAgICAgICAgICAgICBpZiAoJnBsYW4t
PnZtKCkgIT0gJnZtKQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmNvbXBp
bGVMYXRlcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBsb29wT1NSRW50cnlC
CiAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAg
ICAgICAKICAgICAgICAgaWYgKG1fcGxhbm5lZC5jb250YWlucyhjb2RlQmxvY2spKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmZpbmFs
aXplUGxhbnMoUGxhbnMmIG15UGxhbnMpCiAgICAgZm9yIChSZWZQdHI8UGxhbj4mIHBsYW4gOiBt
eVBsYW5zKSB7CiAgICAgICAgIHBsYW4tPmZpbmFsaXplKHRydWUpOwogICAgICAgICAKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAq
bV9sb2NrIH07CiAgICAgICAgIG1fcGxhbm5lZC5yZW1vdmUocGxhbi0+Y29kZUJsb2NrKCkpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5jcHAKaW5kZXggMDNlNTVlZTNkMWZmMjAyNTg2YWYyYmVhOGQ3OTFkNTE1M2ExODdiMC4uNjA2
ZTVmMTc0NGFmMGY2MTBkZGNjZTc2MWJjOTNlMzIyM2I5NTNkYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
c3RhdGljIExvY2sgcHJvdmlkZXJJZExvY2s7CiAKIHZvaWQgU291cmNlUHJvdmlkZXI6OmdldElE
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2soJnByb3ZpZGVySWRMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgcHJvdmlkZXJJZExvY2sgfTsKICAgICBpZiAoIW1faWQpIHsKICAgICAgICAgc3Rh
dGljIGludHB0cl90IG5leHRQcm92aWRlcklEID0gMDsKICAgICAgICAgbV9pZCA9ICsrbmV4dFBy
b3ZpZGVySUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJEYXRhYmFzZS5jcHAKaW5kZXggNzUyMWExZDdhYmEzODdiNGExZGM4YmU2ZjYyMjFjMTRiMmYx
YmZiMC4uMmQyNmVlMWEwZDc2MzYyYTk3YWNhYmVmYzIzY2RhYmI1ODdmOTk1OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBEYXRhYmFzZTo6fkRhdGFiYXNlKCkKIAogQnl0ZWNvZGVzKiBEYXRh
YmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgIHJldHVybiBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2VyLCBjb2RlQmxvY2spOwogfQogCkBA
IC04MCw3ICs4MCw3IEBAIEJ5dGVjb2RlcyogRGF0YWJhc2U6OmVuc3VyZUJ5dGVjb2Rlc0Zvcihj
b25zdCBBYnN0cmFjdExvY2tlciYsIENvZGVCbG9jayogY29kZUJsCiAKIHZvaWQgRGF0YWJhc2U6
Om5vdGlmeURlc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIAog
ICAgIG1fYnl0ZWNvZGVzTWFwLnJlbW92ZShjb2RlQmxvY2spOwogICAgIG1fY29tcGlsYXRpb25N
YXAucmVtb3ZlKGNvZGVCbG9jayk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGF0YWJhc2U6Om5v
dGlmeURlc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogCiB2b2lkIERhdGFiYXNlOjph
ZGRDb21waWxhdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVmPENvbXBpbGF0aW9uPiYmIGNv
bXBpbGF0aW9uKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
IAogICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChjb21waWxhdGlvbi5jb3B5UmVmKCkpOwpAQCAt
MTc0LDcgKzE3NCw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlZ2lzdGVyVG9TYXZlQXRFeGl0KGNvbnN0
IGNoYXIqIGZpbGVuYW1lKQogCiB2b2lkIERhdGFiYXNlOjpsb2dFdmVudChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgQ1N0cmluZyYgZGV0YWlsKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgIAogICAgIEJ5dGVjb2RlcyogYnl0ZWNvZGVzID0gZW5zdXJlQnl0ZWNvZGVzRm9y
KGxvY2tlciwgY29kZUJsb2NrKTsKICAgICBDb21waWxhdGlvbiogY29tcGlsYXRpb24gPSBtX2Nv
bXBpbGF0aW9uTWFwLmdldChjb2RlQmxvY2spOwpAQCAtMTg2LDE0ICsxODYsMTQgQEAgdm9pZCBE
YXRhYmFzZTo6YWRkRGF0YWJhc2VUb0F0RXhpdCgpCiAgICAgaWYgKCsrZGlkUmVnaXN0ZXJBdEV4
aXQgPT0gMSkKICAgICAgICAgYXRleGl0KGF0RXhpdENhbGxiYWNrKTsKICAgICAKLSAgICBMb2Nr
SG9sZGVyIGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcmVn
aXN0cmF0aW9uTG9jayB9OwogICAgIG1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZSA9IGZpcnN0RGF0
YWJhc2U7CiAgICAgZmlyc3REYXRhYmFzZSA9IHRoaXM7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OnJl
bW92ZURhdGFiYXNlRnJvbUF0RXhpdCgpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIocmVnaXN0
cmF0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHJlZ2lzdHJhdGlvbkxvY2sgfTsKICAg
ICBmb3IgKERhdGFiYXNlKiogY3VycmVudCA9ICZmaXJzdERhdGFiYXNlOyAqY3VycmVudDsgY3Vy
cmVudCA9ICYoKmN1cnJlbnQpLT5tX25leHRSZWdpc3RlcmVkRGF0YWJhc2UpIHsKICAgICAgICAg
aWYgKCpjdXJyZW50ICE9IHRoaXMpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIxMiw3ICsy
MTIsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3JtQXRFeGl0U2F2ZSgpIGNvbnN0CiAKIERhdGFi
YXNlKiBEYXRhYmFzZTo6cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSgpCiB7Ci0gICAgTG9ja0hv
bGRlciBob2xkZXIocmVnaXN0cmF0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHJlZ2lz
dHJhdGlvbkxvY2sgfTsKICAgICBEYXRhYmFzZSogcmVzdWx0ID0gZmlyc3REYXRhYmFzZTsKICAg
ICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGZpcnN0RGF0YWJhc2UgPSByZXN1bHQtPm1fbmV4dFJl
Z2lzdGVyZWREYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlclVJRC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJVSUQuY3BwCmluZGV4IDg3Yzk3Y2ZkOGI1MDRmYzc2ZjkxYzA0NzZmZGI3MWM3Yzg4ZmFl
MjAuLmYwMDBjOTg4ODNmNjBkNDk1M2FhZjMyNDgzNWU5NzVkZmRkMTJlNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcApAQCAtMzcsNyArMzcs
NyBAQCBVSUQgVUlEOjpjcmVhdGUoKQogICAgIHN0YXRpYyBMb2NrIGxvY2s7CiAgICAgc3RhdGlj
IHVpbnQ2NF90IGNvdW50ZXI7CiAgICAgCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICBVSUQgcmVzdWx0OwogICAgIHJlc3VsdC5t
X3VpZCA9ICsrY291bnRlcjsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCmluZGV4IDZmODgyNWFk
MjY3NGViZGJhMDBhYzVhYmIwNTdlYmQ1NmI4MjQ5YTMuLjJlYjhlZGMxYTM3Mjk1YzkzODY1ZWNi
OTdmNGY5NGU3ZWRkM2JhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIERlZmVy
cmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQgdGlja2V0LCBK
U0NlbGwqIGRlcGVuZAogCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29u
KFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dGFza0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgbV90YXNr
cy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92ZSh0YXNrKSkpOwogICAgIGlm
ICghaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJyZW50bHlSdW5uaW5nVGFzaykKICAgICAgICAgc2V0
VGltZVVudGlsRmlyZSgwX3MpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgRGVmZXJyZWRXb3Jr
VGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCiB2b2lkIERlZmVycmVkV29y
a1RpbWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcigpCiB7CiAgICAgQVNTRVJUKCFt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghaXNTY2hlZHVs
ZWQoKSAmJiBtX3Rhc2tzLnNpemUoKSkKICAgICAgICAgc2V0VGltZVVudGlsRmlyZSgwX3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcAppbmRleCA1YzNkNDUyM2RiZDZkMTk4NTg4MDk4ZGRjZDMwNTViMjcxMDNmNmI0Li4yNmQx
YTBlY2Y0NWQyYWI4NDZhM2Q3ZGQxNDU1NGI1Mzc3ZWI4MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtMzI0LDcgKzMy
NCw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGltZXJMb29wKCkKICAgICB3aGlsZSAodHJ1
ZSkgewogICAgICAgICBTZWNvbmRzIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSA9IDBfczsKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSht
X2lzU2h1dERvd24pKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjcxLDEzICs2NzEs
MTMgQEAgdGVtcGxhdGUgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp2aXNpdChTbG90VmlzaXRvciYp
OwogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnNodXRkb3duKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX2lz
U2h1dERvd24gPSB0cnVlOwogfQogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnN0YXJ0KCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICBzdGFydChsb2NrZXIpOwogfQogCkBAIC03MDMsMTkgKzcwMywxOSBAQCB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVh
ZChjb25zdCBBYnN0cmFjdExvYwogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJl
bnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbm90aWNlQ3VycmVu
dFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiB9CiAKIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6bm90aWNlSlNMb2NrQWNxdWlzaXRpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG5vdGljZUN1
cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZChsb2NrZXIpOwogfQogCiB2b2lkIFNhbXBs
aW5nUHJvZmlsZXI6Om5vdGljZVZNRW50cnkoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VSVChtX3ZtLmVu
dHJ5U2NvcGUpOwogICAgIG5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZChs
b2NrZXIpOwogICAgIG1fbGFzdFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKQEAg
LTk5MSw3ICs5OTEsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0
QXRFeGl0KCkKICAgICBzdGF0aWMgTG9jayByZWdpc3RyYXRpb25Mb2NrOwogICAgIHN0YXRpYyBI
YXNoU2V0PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4qIHByb2ZpbGVzVG9SZXBvcnQ7CiAKLSAg
ICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgcmVnaXN0cmF0aW9uTG9jayB9OwogCiAgICAgaWYgKCFwcm9maWxlc1RvUmVwb3J0KSB7CiAg
ICAgICAgIHByb2ZpbGVzVG9SZXBvcnQgPSBuZXcgSGFzaFNldDxSZWZQdHI8U2FtcGxpbmdQcm9m
aWxlcj4+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRj
aGRvZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAKaW5k
ZXggNGY1ZDVjNGU0NTFiYTE2MTE3YTI3YTFmNzc5NDgxNzJlNTk2MzRhZi4uNGRhYzVlMTk4ODAy
NmM3ZWVhOWJkMjQ4NDE0NDc0ZWE1MzRhMmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dhdGNoZG9nLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2F0Y2hkb2c6OnN0
YXJ0VGltZXIoU2Vjb25kcyB0aW1lTGltaXQpCiAgICAgLy8gdmlhIHdpbGxEZXN0cm95Vk0oKSBi
ZWZvcmUgaXQgZ29lcyBhd2F5LgogICAgIFJlZlB0cjxXYXRjaGRvZz4gcHJvdGVjdGVkVGhpcyA9
IHRoaXM7CiAgICAgbV90aW1lclF1ZXVlLT5kaXNwYXRjaEFmdGVyKHRpbWVMaW1pdCwgW3RoaXMs
IHByb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV92bSkKICAgICAg
ICAgICAgIG1fdm0tPm5vdGlmeU5lZWRXYXRjaGRvZ0NoZWNrKCk7CiAgICAgfSk7CkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RvcFRpbWVyKCkKIAogdm9pZCBXYXRjaGRvZzo6
d2lsbERlc3Ryb3lWTShWTSogdm0pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUX1VOVVNFRCh2bSwgbV92
bSA9PSB2bSk7CiAgICAgbV92bSA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAppbmRleCBiYmJjMjM2ZDIxN2ExNTBkNWE4NmVkZjgwNGY1
YjdmMzk2MjA4ZDllLi4wNDU3NWRiYTZmYWViOGFhNDJmMTBiODg0ODBiMjhiODhkZWY2ZDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTEyNyw3
ICsxMjcsNyBAQCBhdXRvIFZNSW5zcGVjdG9yOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25z
dCBWTUluc3BlY3Rvcjo6TG9ja2VyJiwgdm9pZCogbWFjaAogICAgICAgICAgICAgcmV0dXJuIEZ1
bmN0b3JTdGF0dXM6OkNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgVk0uCiAgICAgICAgIH0KIAotICAg
ICAgICBMb2NrSG9sZGVyIGV4ZWN1dGFibGVBbGxvY2F0b3JMb2NrZXIobG9jayk7CisgICAgICAg
IExvY2tlciBleGVjdXRhYmxlQWxsb2NhdG9yTG9ja2VyIHsgbG9jayB9OwogICAgICAgICBpZiAo
YWxsb2NhdG9yLmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGV4ZWN1dGFibGVBbGxvY2F0b3JMb2Nr
ZXIsIG1hY2hpbmVQQykpIHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAg
IHJldHVybiBGdW5jdG9yU3RhdHVzOjpEb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uY3BwCmluZGV4IGUzOTM4MmVkODg2NjNkOTUwZGYyYTQ1OGZjNDFjN2EyZTQ2
Y2M1ZTYuLjcyNjQ3MWVkZDFmMmMxMWM3ZWI1YTQ0MzMzNWVmMmE2NGU0NTA0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTEyNSw3ICsxMjUsNyBA
QCB2b2lkIEJCUVBsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAv
LyBhbHdheXMgY2FsbCB0aGUgZmFzdGVzdCBjb2RlLiBBbnkgZnVuY3Rpb24gbGlua2VkIGFmdGVy
IHVzIHdpbGwgc2VlIG91ciBuZXcgY29kZSBhbmQgdGhlIG5ldyBjYWxsc2l0ZXMsIHdoaWNoIHRo
ZXkKICAgICAgICAgLy8gd2lsbCB1cGRhdGUuIEl0J3MgYWxzbyBvayBpZiB0aGV5IHB1Ymxpc2gg
dGhlaXIgY29kZSBiZWZvcmUgd2UgcmVzZXQgdGhlIGluc3RydWN0aW9uIGNhY2hlcyBiZWNhdXNl
IGFmdGVyIHdlIHJlbGVhc2UKICAgICAgICAgLy8gdGhlIGxvY2sgb3VyIGNvZGUgaXMgcmVhZHkg
dG8gYmUgcHVibGlzaGVkIHRvby4KLSAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NvZGVCbG9jay0+bV9sb2Nr
IH07CiAKICAgICAgICAgbV9jb2RlQmxvY2stPm1fYmJxQ2FsbGVlc1ttX2Z1bmN0aW9uSW5kZXhd
ID0gY2FsbGVlLmNvcHlSZWYoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RW50cnlQbGFuLmNwcAppbmRleCBhYWQ3ZTYwYTE3ZGRiZTk3NjdlOTRiZDkxYzljYzIwOTFmZGYy
NTM0Li44YTRjMzFkZmY1MmQ4MDM5MzIzMGNhNzlmZjhmOGM1MTRiZDE3ODMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTY0LDEzICsxNjQs
MTMgQEAgcHVibGljOgogICAgIFRocmVhZENvdW50SG9sZGVyKEVudHJ5UGxhbiYgcGxhbikKICAg
ICAgICAgOiBtX3BsYW4ocGxhbikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
cGxhbi5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFuLm1fbG9jayB9Owog
ICAgICAgICBtX3BsYW4ubV9udW1iZXJPZkFjdGl2ZVRocmVhZHMrKzsKICAgICB9CiAKICAgICB+
VGhyZWFkQ291bnRIb2xkZXIoKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9w
bGFuLm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYW4ubV9sb2NrIH07CiAg
ICAgICAgIG1fcGxhbi5tX251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogCiAgICAgICAgIGlmICgh
bV9wbGFuLm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzICYmICFtX3BsYW4uaGFzV29yaygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDViMDlhMDBkOTI0
NGE4ZDcxMjQ3ZDkzNzA2NDRhNGNjNDBiNTNjMjIuLjFmZWVlN2QxZDRiNTczY2Y4ZWM0YTBlMzE0
NGQ3NmNiZTkwMmEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxh
bi5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCiAgICAgICAgIC8vIGFsd2F5cyBjYWxsIHRoZSBmYXN0ZXN0IGNvZGUuIEFueSBmdW5j
dGlvbiBsaW5rZWQgYWZ0ZXIgdXMgd2lsbCBzZWUgb3VyIG5ldyBjb2RlIGFuZCB0aGUgbmV3IGNh
bGxzaXRlcywgd2hpY2ggdGhleQogICAgICAgICAvLyB3aWxsIHVwZGF0ZS4gSXQncyBhbHNvIG9r
IGlmIHRoZXkgcHVibGlzaCB0aGVpciBjb2RlIGJlZm9yZSB3ZSByZXNldCB0aGUgaW5zdHJ1Y3Rp
b24gY2FjaGVzIGJlY2F1c2UgYWZ0ZXIgd2UgcmVsZWFzZQogICAgICAgICAvLyB0aGUgbG9jayBv
dXIgY29kZSBpcyByZWFkeSB0byBiZSBwdWJsaXNoZWQgdG9vLgotICAgICAgICBMb2NrSG9sZGVy
IGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y29kZUJsb2NrLT5tX2xvY2sgfTsKIAogICAgICAgICBtX2NvZGVCbG9jay0+bV9vbWdDYWxsZWVz
W21fZnVuY3Rpb25JbmRleF0gPSBjYWxsZWUuY29weVJlZigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggYzZhOTA0ZDY4NDQxMWQyMDZlYTBmYTk0ZDM5OGZl
MDcxMjE3ZTZiZi4uZjczNWI0MDkyZGNmNzhmNzg2NjM2M2I4MGUyYzJkNjViMjg5MDYxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2
b2lkIFBsYW46OnJ1bkNvbXBsZXRpb25UYXNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCiAKIHZv
aWQgUGxhbjo6YWRkQ29tcGxldGlvblRhc2soQ29udGV4dCogY29udGV4dCwgQ29tcGxldGlvblRh
c2smJiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgIGlmICghaXNDb21wbGV0ZSgpKQogICAgICAgICBtX2Nv
bXBsZXRpb25UYXNrcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29udGV4dCwgV1RGTW92ZSh0YXNr
KSkpOwogICAgIGVsc2UKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBQbGFuOjphZGRDb21wbGV0aW9u
VGFzayhDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAKIHZvaWQgUGxh
bjo6d2FpdEZvckNvbXBsZXRpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGlmICghaXNDb21wbGV0ZSgpKSB7
CiAgICAgICAgIG1fY29tcGxldGVkLndhaXQobV9sb2NrKTsKICAgICB9CkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgUGxhbjo6d2FpdEZvckNvbXBsZXRpb24oKQogCiBib29sIFBsYW46OnRyeVJlbW92
ZUNvbnRleHRBbmRDYW5jZWxJZkxhc3QoQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAg
IGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAvLyBXZSBhbGxvdyB0aGUgZmlyc3QgY29t
cGxldGlvbiB0YXNrIHRvIG5vdCBoYXZlIGEgQ29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKaW5kZXggNjI0NWEzMWQwMGMxZTAxZTc0NzgwZTcw
YjEwOWEwZTc1ZDZkZDYyNy4uNmIyMGQwODk0NTQyMDY3OWU3NjI3ZWUwYzhkYzE5YmRjOTg2N2I4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBzdHJ1Y3QgUGFyYW1ldGVyVHlwZXMgewogUmVmUHRyPFNpZ25hdHVy
ZT4gU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcihjb25zdCBWZWN0b3I8VHlwZSwg
MT4mIHJlc3VsdHMsIGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJncykKIHsKICAgICBTaWduYXR1cmVJ
bmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZv
Lm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07CiAKICAgICBhdXRv
IGFkZFJlc3VsdCA9IGluZm8ubV9zaWduYXR1cmVTZXQudGVtcGxhdGUgYWRkPFBhcmFtZXRlclR5
cGVzPihQYXJhbWV0ZXJUeXBlcyB7IHJlc3VsdHMsIGFyZ3MgfSk7CiAgICAgcmV0dXJuIG1ha2VS
ZWYoKmFkZFJlc3VsdC5pdGVyYXRvci0+a2V5KTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBSZWZQdHI8
U2lnbmF0dXJlPiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZlY3Rv
cjxUeXBlLCAxPiYgcmVzdQogdm9pZCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCgp
CiB7CiAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKLSAgICBM
b2NrSG9sZGVyIGxvY2soaW5mby5tX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBpbmZvLm1f
bG9jayB9OwogCiAgICAgaW5mby5tX3NpZ25hdHVyZVNldC5yZW1vdmVJZihbJl0gKGF1dG8mIGhh
c2gpIHsKICAgICAgICAgY29uc3QgYXV0byYgc2lnbmF0dXJlID0gaGFzaC5rZXk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCAxOTA0Mzc5Mzc1OWQ0
NTgzNGJlYTg1OTI3NTIyNTE0YmNjZDQ4NWJkLi4xOWRjZDIyN2RmNjkzN2RhZjk4N2E0Y2RjNTc4
YWU1YTk5ZmM2ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
V29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlz
dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIEFTU0VSVCghcGxh
bi0+aGFzV29yaygpIHx8IHBsYW4tPm11bHRpVGhyZWFkZWQoKSk7CiAgICAgICAgIGlmIChwbGFu
LT5oYXNXb3JrKCkgJiYgIXdhc011bHRpVGhyZWFkZWQgJiYgcGxhbi0+bXVsdGlUaHJlYWRlZCgp
KSB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqd29ya2xpc3QubV9sb2NrKTsKKyAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqd29ya2xpc3QubV9sb2NrIH07CiAgICAgICAgICAg
ICBlbGVtZW50LnNldFRvTmV4dFByaW9yaXR5KCk7CiAgICAgICAgICAgICB3b3JrbGlzdC5tX3F1
ZXVlLmVucXVldWUoV1RGTW92ZShlbGVtZW50KSk7CiAgICAgICAgICAgICB3b3JrbGlzdC5tX3Bs
YW5FbnF1ZXVlZC0+bm90aWZ5QWxsKGxvY2tlcik7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBX
b3JrbGlzdDo6UXVldWVFbGVtZW50OjpzZXRUb05leHRQcmlvcml0eSgpCiAKIHZvaWQgV29ya2xp
c3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKIAogICAgIGlmIChBU1NFUlRf
RU5BQkxFRCkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3F1ZXVlKQpA
QCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4p
CiB2b2lkIFdvcmtsaXN0Ojpjb21wbGV0ZVBsYW5TeW5jaHJvbm91c2x5KFBsYW4mIHBsYW4pCiB7
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9xdWV1ZS5kZWNyZWFzZUtleShbJl0g
KFF1ZXVlRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQucGxhbiA9
PSAmcGxhbikgewogICAgICAgICAgICAgICAgIGVsZW1lbnQucHJpb3JpdHkgPSBQcmlvcml0eTo6
U3luY2hyb25vdXM7CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBXb3JrbGlzdDo6Y29tcGxldGVQ
bGFuU3luY2hyb25vdXNseShQbGFuJiBwbGFuKQogCiB2b2lkIFdvcmtsaXN0OjpzdG9wQWxsUGxh
bnNGb3JDb250ZXh0KENvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
Km1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBWZWN0b3I8UXVl
dWVFbGVtZW50PiBlbGVtZW50czsKICAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIFF1ZXVlRWxlbWVudCBlbGVtZW50ID0gbV9xdWV1ZS5kZXF1ZXVlKCk7CkBAIC0yMTgs
NyArMjE4LDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKIHsKICAgICB1bnNpZ25lZCBudW1iZXJP
ZkNvbXBpbGF0aW9uVGhyZWFkcyA9IE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRKSVQoKSA/IGtlcm5U
Q1NNQXdhcmVOdW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgOiAxOwogICAgIG1fdGhyZWFkcy5yZXNl
cnZlQ2FwYWNpdHkobnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHMpOwotICAgIExvY2tIb2xkZXIg
bG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKyspCiAg
ICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxXb3JrbGlzdDo6VGhy
ZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgV29ya2xpc3Q6Oldv
cmtsaXN0KCkKIFdvcmtsaXN0Ojp+V29ya2xpc3QoKQogewogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07
CiAgICAgICAgIG1fcXVldWUuZW5xdWV1ZSh7IFByaW9yaXR5OjpTaHV0ZG93biwgbmV4dFRpY2tl
dCgpLCBudWxscHRyIH0pOwogICAgICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5QWxsKGxvY2tl
cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRl
c3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCmluZGV4IGIy
MGRkN2U3MTM2MTIwZjFlMDlkNTE2ZTVmMjM0MmFjMzFjZTQxMTYuLjAxNDQwMjAyOTE1M2VkZjE2
YTljM2U1MTI2MmQyZWE1ODI2MTcyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJr
cy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVk
VGVzdC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlOdW1J
dGVyYXRpb25zKys7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihudW1JdGVyYXRpb25zTG9jayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbnVtSXRlcmF0aW9uc0xvY2sgfTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bUl0ZXJhdGlvbnMgKz0gbXlOdW1JdGVyYXRpb25zOwogICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJl
YWQuY3BwCmluZGV4IDg3YjkxZjEwNWM3MmQwNDYwZDYxN2UzODU1NzNjZWNlY2IyN2NhNTQuLmY0
ZWE3OGQxM2UxY2RkYjYxOWI4MjI4NjhkMzNjNzI3YzlmMmY5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21h
dGljVGhyZWFkLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIEF1dG9tYXRpY1RocmVhZDo6fkF1dG9t
YXRpY1RocmVhZCgpCiB7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coUmF3UG9p
bnRlcih0aGlzKSwgIjogRGVsZXRpbmcgQXV0b21hdGljVGhyZWFkLlxuIik7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAg
ICAKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UncmUgaW4gYSB3YWl0aW5nIHN0YXRlIHdp
dGggdGhlIHRocmVhZCBzaHV0IGRvd24uIFRoaXMgaXMgYSBnb29meSB3YXkgdG8KICAgICAvLyBk
aWUsIGJ1dCBpdCBjb3VsZCBoYXBwZW4uCkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBBdXRvbWF0
aWNUaHJlYWQ6Om5vdGlmeShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogCiB2b2lkIEF1
dG9tYXRpY1RocmVhZDo6am9pbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICB3aGlsZSAobV9pc1J1bm5pbmcp
CiAgICAgICAgIG1faXNSdW5uaW5nQ29uZGl0aW9uLndhaXQoKm1fbG9jayk7CiB9CkBAIC0xNzgs
NyArMTc4LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9j
a2VyJikKICAgICAgICAgICAgIHRocmVhZC0+dGhyZWFkRGlkU3RhcnQoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7Ci0gICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
ICptX2xvY2sgfTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9jb25kaXRpb24tPmNvbnRhaW5z
KGxvY2tlciwgdGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xOTksNyAr
MTk5LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9ja2Vy
JikKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxSZXN1bHQgcmVz
dWx0ID0gcG9sbChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBQb2xsUmVzdWx0OjpXb3JrKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgQXV0b21hdGljVGhy
ZWFkOjpzdGFydChjb25zdCBBYnN0cmFjdExvY2tlciYpCiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgV29ya1Jlc3VsdCByZXN1bHQgPSB3b3JrKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBXb3JrUmVzdWx0OjpTdG9wKSB7Ci0gICAgICAgICAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgKm1fbG9jayB9OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcFBlcm1hbmVu
dGx5KGxvY2tlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdCA9PSBXb3JrUmVzdWx0OjpDb250aW51ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1Ro
cmVhZC5oCmluZGV4IDZkNTU3YmMzYjZjZDk0YzMxNGMyZjA5NDA5ZGY5NzIwYzZkOWI4ZDguLjhk
N2MyYjUxNjgwYTNlYTY3MjhlNTE3NGZjODE4MDY4ZGVlOTVjODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRp
Y1RocmVhZC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogLy8KIC8vICAgICBm
b3IgKDs7KSB7CiAvLyAgICAgICAgIHsKLS8vICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisvLyAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAvLyAg
ICAgICAgICAgICBmb3IgKDs7KSB7CiAvLyAgWzFdICAgICAgICAgICAgc3R1ZmYgdGhhdCBjb3Vs
ZCBicmVhaywgcmV0dXJuLCBvciBmYWxsIHRocm91Z2g7CiAvLyAgICAgICAgICAgICAgICAgbV9j
b25kaXRpb24ud2FpdChtX2xvY2spOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyB7CiAgICAgLy8gICAgIGZvciAoOzspIHsKICAgICAvLyAgICAgICAgIHsKLSAgICAvLyAg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIC8vICAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAvLyAgICAgICAgICAgICBmb3IgKDs7KSB7
CiAgICAgLy8gICAgICAgICAgICAgICAgIFBvbGxSZXN1bHQgcmVzdWx0ID0gcG9sbCgpOwogICAg
IC8vICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFBvbGxSZXN1bHQ6OldvcmspCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwCmluZGV4IGQ3YzhlZGVjZWI5YzExMmFiNTAzODQwZGI0ZmY1NmJm
NzdhNTJhMzIuLmVlZjg5Yjc3ZTdiZGRmY2Q2NzY1ZDY3M2FhNTY1YTA2NzdjZDcwYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01ldGFBbGxvY2F0b3IuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgTWV0YUFsbG9jYXRv
ckhhbmRsZTo6c2hyaW5rKHNpemVfdCBuZXdTaXplSW5CeXRlcykKICAgICBBU1NFUlQobmV3U2l6
ZUluQnl0ZXMgPD0gc2l6ZUluQnl0ZXMpOwogCiAgICAgTWV0YUFsbG9jYXRvciYgYWxsb2NhdG9y
ID0gdGhpcy0+YWxsb2NhdG9yKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJmFsbG9jYXRvci5t
X2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxvY2F0b3IubV9sb2NrIH07CiAKICAgICBu
ZXdTaXplSW5CeXRlcyA9IGFsbG9jYXRvci5yb3VuZFVwKG5ld1NpemVJbkJ5dGVzKTsKICAgICAK
QEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZWVTcGFjZUZyb21S
ZWxlYXNlZEhhbmRsZShGcmVlU3BhY2VQdHIgc3RhcnQsIHNpemVfdCBzaQogdm9pZCBNZXRhQWxs
b2NhdG9yOjphZGRGcmVzaEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVz
KQogewogICAgIENvbmZpZzo6QXNzZXJ0Tm90RnJvemVuU2NvcGUgYXNzZXJ0Tm90RnJvemVuU2Nv
cGU7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgIG1fYnl0ZXNSZXNlcnZlZCArPSBzaXplSW5CeXRlczsKICAgICBhZGRG
cmVlU3BhY2UoRnJlZVNwYWNlUHRyOjptYWtlRnJvbVJhd1BvaW50ZXIoc3RhcnQpLCBzaXplSW5C
eXRlcyk7CiB9CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9yOjphZGRGcmVz
aEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVzKQogc2l6ZV90IE1ldGFB
bGxvY2F0b3I6OmRlYnVnRnJlZVNwYWNlU2l6ZSgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
ICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKEZyZWVTcGFjZU5vZGUqIG5vZGUgPSBt
X2ZyZWVTcGFjZVNpemVNYXAuZmlyc3QoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnN1Y2Nlc3Nvcigp
KQogICAgICAgICByZXN1bHQgKz0gbm9kZS0+c2l6ZUluQnl0ZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJh
bGxlbEhlbHBlclBvb2wuY3BwCmluZGV4IDdjMDU2YmExNTEyMDBmNzY5ZGM2YmM5MjQ0MTljYzM2
OGM3MjE4NjUuLjQ0M2Q3MzEzZTZiYWQwMjg0MzQ5ZTYxMDdmMjAzOTdmOTNmNDNhOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvUGFyYWxsZWxIZWxwZXJQb29sLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVz
cGFjZSBXVEYgewogUGFyYWxsZWxIZWxwZXJDbGllbnQ6OlBhcmFsbGVsSGVscGVyQ2xpZW50KFJl
ZlB0cjxQYXJhbGxlbEhlbHBlclBvb2w+JiYgcG9vbCkKICAgICA6IG1fcG9vbChXVEZNb3ZlKHBv
b2wpKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7ICptX3Bvb2wtPm1fbG9jayB9OwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Bv
b2wtPm1faXNEeWluZyk7CiAgICAgbV9wb29sLT5tX2NsaWVudHMuYXBwZW5kKHRoaXMpOwogfQog
CiBQYXJhbGxlbEhlbHBlckNsaWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAq
bV9wb29sLT5tX2xvY2sgfTsKICAgICBmaW5pc2gobG9ja2VyKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9wb29sLT5tX2NsaWVudHMuc2l6ZSgpOyArK2kpIHsKQEAgLTU0LDcgKzU0
LDcgQEAgUGFyYWxsZWxIZWxwZXJDbGllbnQ6On5QYXJhbGxlbEhlbHBlckNsaWVudCgpCiAKIHZv
aWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OnNldFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAo
KT4+JiYgdGFzaykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyAqbV9wb29sLT5tX2xvY2sgfTsKICAgICBSRUxFQVNFX0FTU0VS
VCghbV90YXNrKTsKICAgICBtX3Rhc2sgPSBXVEZNb3ZlKHRhc2spOwogICAgIG1fcG9vbC0+ZGlk
TWFrZVdvcmtBdmFpbGFibGUobG9ja2VyKTsKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBQYXJhbGxl
bEhlbHBlckNsaWVudDo6c2V0VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4mJiB0YXNr
KQogCiB2b2lkIFBhcmFsbGVsSGVscGVyQ2xpZW50OjpmaW5pc2goKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wt
Pm1fbG9jayB9OwogICAgIGZpbmlzaChsb2NrZXIpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIHZv
aWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OmRvU29tZUhlbHBpbmcoKQogewogICAgIFJlZlB0cjxT
aGFyZWRUYXNrPHZvaWQgKCk+PiB0YXNrOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wtPm1f
bG9jayB9OwogICAgICAgICB0YXNrID0gY2xhaW1UYXNrKGxvY2tlcik7CiAgICAgICAgIGlmICgh
dGFzaykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFBhcmFs
bGVsSGVscGVyQ2xpZW50OjpydW5UYXNrKGNvbnN0IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+
PiYgdGFzaykKICAgICB0YXNrLT5ydW4oKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wt
Pm1fbG9jayB9OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX251bUFjdGl2ZSk7CiAgICAgICAg
IC8vIE5vIG5ldyB0YXNrIGNvdWxkIGhhdmUgYmVlbiBpbnN0YWxsZWQsIHNpbmNlIHdlIHdlcmUg
c3RpbGwgYWN0aXZlLgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV90YXNrIHx8IG1fdGFzayA9
PSB0YXNrKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBQYXJhbGxlbEhlbHBlclBvb2w6On5QYXJhbGxl
bEhlbHBlclBvb2woKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY2xpZW50cy5pc0VtcHR5KCkpOwog
ICAgIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIG1faXNEeWluZyA9IHRydWU7CiAg
ICAgICAgIG1fd29ya0F2YWlsYWJsZUNvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7CiAgICAg
fQpAQCAtMTQ0LDcgKzE0NCw3IEBAIFBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVscGVy
UG9vbCgpCiAKIHZvaWQgUGFyYWxsZWxIZWxwZXJQb29sOjplbnN1cmVUaHJlYWRzKHVuc2lnbmVk
IG51bVRocmVhZHMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBpZiAobnVtVGhyZWFkcyA8IG1fbnVtVGhyZWFk
cykKICAgICAgICAgcmV0dXJuOwogICAgIG1fbnVtVGhyZWFkcyA9IG51bVRocmVhZHM7CkBAIC0x
NTcsNyArMTU3LDcgQEAgdm9pZCBQYXJhbGxlbEhlbHBlclBvb2w6OmRvU29tZUhlbHBpbmcoKQog
ICAgIFBhcmFsbGVsSGVscGVyQ2xpZW50KiBjbGllbnQ7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZCAoKT4+IHRhc2s7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgY2xpZW50ID0g
Z2V0Q2xpZW50V2l0aFRhc2sobG9ja2VyKTsKICAgICAgICAgaWYgKCFjbGllbnQpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCmluZGV4IDVhODFmMDlkOWI3ZGU0ZGQ4ZjMwZTg5NGI5
MmY1OTIyMzE2ZGZiOTQuLmQ2MDdjOTcyOWFmMTY3ZmZiN2FkMmE2NjZhMTY0NzBiN2RmYjQ5MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1NlY29uZHMuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgc2xlZXAoU2Vjb25kcyB2YWx1
ZSkKIAogICAgIExvY2sgZmFrZUxvY2s7CiAgICAgQ29uZGl0aW9uIGZha2VDb25kaXRpb247Ci0g
ICAgTG9ja0hvbGRlciBmYWtlTG9ja2VyKGZha2VMb2NrKTsKKyAgICBMb2NrZXIgZmFrZUxvY2tl
ciB7IGZha2VMb2NrIH07CiAgICAgZmFrZUNvbmRpdGlvbi53YWl0Rm9yKGZha2VMb2NrLCB2YWx1
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCmlu
ZGV4IGM3YjllZDJlNjJlMDY3NGU3Y2E1M2I4NWIxMzI5MWNiMDM4ZDE5NGUuLjJiNTBkZTFhMzFh
NWNkOTMxMWM4MjI0MmI0NzVlMTQ2ZGZmNDY3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgc2xlZXAoY29u
c3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiB0aW1lKQogewogICAgIExvY2sgZmFrZUxvY2s7
CiAgICAgQ29uZGl0aW9uIGZha2VDb25kaXRpb247Ci0gICAgTG9ja0hvbGRlciBmYWtlTG9ja2Vy
KGZha2VMb2NrKTsKKyAgICBMb2NrZXIgZmFrZUxvY2tlciB7IGZha2VMb2NrIH07CiAgICAgZmFr
ZUNvbmRpdGlvbi53YWl0VW50aWwoZmFrZUxvY2ssIHRpbWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wu
Y3BwCmluZGV4IDQyYzllMTM1YWE5ZWI5MWM4YzBiZjRkNDgyMzM0ZTU5ZGRmZWM2MjMuLjhhOWMx
ZmRhNzRhNzNiMmM1YWI1Y2RhMmQ4ZTQ2MDlhYmU4MGEzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1dvcmtlclBvb2wuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBvb2wuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQoKSBm
aW5hbAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC5tX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC5tX2xvY2sgfTsKICAgICAgICAgbV9wb29s
Lm1fbnVtYmVyT2ZBY3RpdmVXb3JrZXJzKys7CiAgICAgfQogCkBAIC04Nyw3ICs4Nyw3IEBAIFdv
cmtlclBvb2w6OldvcmtlclBvb2woQVNDSUlMaXRlcmFsIG5hbWUsIHVuc2lnbmVkIG51bWJlck9m
V29ya2VycywgU2Vjb25kcyB0aW1lCiAgICAgLCBtX3RpbWVvdXQodGltZW91dCkKICAgICAsIG1f
bmFtZShuYW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mV29ya2VyczsgKytpKQogICAgICAgICBtX3dvcmtlcnMuYXBwZW5kKGFkb3B0UmVmKCpuZXcg
V29ya2VyKGxvY2tlciwgKnRoaXMsIG1fbG9jaywgbV9jb25kaXRpb24uY29weVJlZigpLCB0aW1l
b3V0KSkpOwogfQpAQCAtOTUsNyArOTUsNyBAQCBXb3JrZXJQb29sOjpXb3JrZXJQb29sKEFTQ0lJ
TGl0ZXJhbCBuYW1lLCB1bnNpZ25lZCBudW1iZXJPZldvcmtlcnMsIFNlY29uZHMgdGltZQogV29y
a2VyUG9vbDo6fldvcmtlclBvb2woKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fd29ya2Vycy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBt
X3Rhc2tzLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgdGFzayB0byBpbmRpY2F0ZSB0aGF0
IHdlIHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCiAgICAgICAgIG1fY29uZGl0aW9uLT5u
b3RpZnlBbGwobG9ja2VyKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBib29sIFdvcmtlclBvb2w6OnNo
b3VsZFNsZWVwKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIAogdm9pZCBXb3JrZXJQb29sOjpwb3N0
VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIG1fdGFza3MuYXBw
ZW5kKFdURk1vdmUodGFzaykpOwogICAgIG1fY29uZGl0aW9uLT5ub3RpZnlPbmUobG9ja2VyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCAzNDgxMjdkYjY4
NGJiYmFiMzQ0MmE5MTdhMDhiMzE2ZWU5N2UxNjA3Li41OTE3YjM3OWYxMmFmZjVmZjQyZDEzNDdm
YmRjYjFmMjA4YTA3MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRp
bmdQT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3Bw
CkBAIC0zODMsNyArMzgzLDcgQEAgYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2
b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KICAgICAvLyBZb3VyIGlzc3VpbmcgdGhyZWFkIChB
KSBhdHRlbXB0cyB0byBzdXNwZW5kIHRoZSB0YXJnZXQgdGhyZWFkIChCKS4gVGhlbiwgeW91IHdp
bGwgc3VzcGVuZCB0aGUgdGhyZWFkIChDKSBhZGRpdGlvbmFsbHkuCiAgICAgLy8gVGhpcyBjYXNl
IGZyZXF1ZW50bHkgaGFwcGVucyBpZiB5b3Ugc3RvcCB0aHJlYWRzIHRvIHBlcmZvcm0gc3RhY2sg
c2Nhbm5pbmcuIEJ1dCB0aHJlYWQgKEIpIG1heSBob2xkIHRoZSBsb2NrIG9mIHRocmVhZCAoQyku
CiAgICAgLy8gSW4gdGhhdCBjYXNlLCBkZWFkIGxvY2sgaGFwcGVucy4gVXNpbmcgZ2xvYmFsIGxv
Y2sgaGVyZSBhdm9pZHMgdGhpcyBkZWFkIGxvY2suCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xv
YmFsU3VzcGVuZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdXNwZW5kTG9jayB9
OwogI2lmIE9TKERBUldJTikKICAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRocmVhZF9zdXNw
ZW5kKG1fcGxhdGZvcm1UaHJlYWQpOwogICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQpA
QCAtNDE0LDcgKzQxNCw3IEBAIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9p
ZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+CiB2b2lkIFRocmVhZDo6cmVzdW1lKCkKIHsKICAgICAv
LyBEdXJpbmcgcmVzdW1lLCBzdXNwZW5kIG9yIHJlc3VtZSBzaG91bGQgbm90IGJlIGV4ZWN1dGVk
IGZyb20gdGhlIG90aGVyIHRocmVhZHMuCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3Vz
cGVuZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdXNwZW5kTG9jayB9OwogI2lm
IE9TKERBUldJTikKICAgICB0aHJlYWRfcmVzdW1lKG1fcGxhdGZvcm1UaHJlYWQpOwogI2Vsc2UK
QEAgLTQ3Miw3ICs0NzIsNyBAQCBzdGF0aWMgVGhyZWFkU3RhdGVNZXRhZGF0YSB0aHJlYWRTdGF0
ZU1ldGFkYXRhKCkKIAogc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0
ZXJzJiByZWdpc3RlcnMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdXNwZW5kTG9jayB9OwogI2lmIE9TKERB
UldJTikKICAgICBhdXRvIG1ldGFkYXRhID0gdGhyZWFkU3RhdGVNZXRhZGF0YSgpOwogICAgIGtl
cm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dldF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFkLCBt
ZXRhZGF0YS5mbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVnaXN0ZXJzLCAmbWV0YWRhdGEudXNl
ckNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9EYmdIZWxwZXJXaW4uY3Bw
IGIvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAKaW5kZXggNTU5ZGFhYjJhNGFi
NDg1NWIzYzY0YjhmZDJkNmUwZTdmMGViMzAzZi4uNWExYWI0Y2JkYzdiMzQxZTg0NGY2NWZkNzNj
OTVkN2QxYzdlMjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldp
bi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN5bWJvbHMoSEFORExFIGhQcm9jKQogCiBi
b29sIFN5bUZyb21BZGRyZXNzKEhBTkRMRSBoUHJvYywgRFdPUkQ2NCBhZGRyZXNzLCBEV09SRDY0
KiBkaXNwbGFjZW1lbnQsIFNZTUJPTF9JTkZPKiBzeW1ib2xJbmZvKQogewotICAgIExvY2tIb2xk
ZXIgbG9jayhjYWxsTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBjYWxsTXV0ZXggfTsKICAg
ICBpbml0aWFsaXplU3ltYm9scyhoUHJvYyk7CiAKICAgICBib29sIHN1Y2Nlc3MgPSA6OlN5bUZy
b21BZGRyKGhQcm9jLCBhZGRyZXNzLCBkaXNwbGFjZW1lbnQsIHN5bWJvbEluZm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi93aW4vVGhyZWFkaW5nV2luLmNwcAppbmRleCA2Njc4YWViZWY3MDlmYzQwYjNhZTUxM2NmZGU3
NjQxYzAyZWFlODRkLi40YjM3MjQ3Zjk5MDcyM2UzMjhlN2RjOTJkZTI1YjVjMzA4NmFlOTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQg
VGhyZWFkOjpkZXRhY2goKQogYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lk
LCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UodGhpcyAhPSAmVGhyZWFkOjpjdXJyZW50KCksICJXZSBkbyBub3Qgc3VwcG9ydCBzdXNwZW5k
aW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
Z2xvYmFsU3VzcGVuZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdXNwZW5kTG9j
ayB9OwogICAgIERXT1JEIHJlc3VsdCA9IFN1c3BlbmRUaHJlYWQobV9oYW5kbGUpOwogICAgIGlm
IChyZXN1bHQgIT0gKERXT1JEKS0xKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjI0LDEzICsy
MjQsMTMgQEAgYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9y
bVN1c3BlbmRFcnJvcj4KIC8vIER1cmluZyByZXN1bWUsIHN1c3BlbmQgb3IgcmVzdW1lIHNob3Vs
ZCBub3QgYmUgZXhlY3V0ZWQgZnJvbSB0aGUgb3RoZXIgdGhyZWFkcy4KIHZvaWQgVGhyZWFkOjpy
ZXN1bWUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3VzcGVuZExvY2sgfTsKICAgICBSZXN1bWVUaHJlYWQo
bV9oYW5kbGUpOwogfQogCiBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ2lzdGVycykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5k
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAgICAgcmVn
aXN0ZXJzLkNvbnRleHRGbGFncyA9IENPTlRFWFRfSU5URUdFUiB8IENPTlRFWFRfQ09OVFJPTDsK
ICAgICBHZXRUaHJlYWRDb250ZXh0KG1faGFuZGxlLCAmcmVnaXN0ZXJzKTsKICAgICByZXR1cm4g
c2l6ZW9mKENPTlRFWFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCBmYWQ1YzlkNmI0YjE3MmQ3MjJiNmE5YjM3
ZDJlMGU4M2RjNTczMmVjLi45NzVjZmMzZWNkNTcyMzJhYmU3NzNiOWQxYmM0ZDA0NGIzYzVlZTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3lu
Y0F1ZGlvRGVjb2Rlcjo6QXN5bmNBdWRpb0RlY29kZXIoKQogewogICAgIC8vIFN0YXJ0IHdvcmtl
ciB0aHJlYWQuCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9OwogICAgIG1fdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIkF1ZGlvIERlY29kZXIiLCBbdGhpc10gewogICAgICAgICBydW5M
b29wKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6QXVkaW8pOwpAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IEFzeW5jQXVkaW9EZWNvZGVyOjpydW5Mb29wKCkKIAogICAgIHsKICAgICAgICAgLy8gV2FpdCBm
b3IgdW50aWwgd2UgaGF2ZSBtX3RocmVhZCBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhl
IHJ1biBsb29wLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9OwogICAg
IH0KIAogICAgIC8vIEtlZXAgcnVubmluZyBkZWNvZGluZyB0YXNrcyB1bnRpbCB3ZSdyZSBraWxs
ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CmluZGV4IDNhNGNkODVlNWVjMTAwYzg3MTMyODc2Mzg0NDk5NTUyOTBjZGMzZDQuLjZiYjgwODg5
NmQ3YWNmMTRjOWRhYjQwYmI1MTUzYTY2ZDcwMDQyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9p
ZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAgICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQoKS5n
ZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXggfTsKIAogICAgICAgICAv
LyBDbGVhbiB1cCB0cmFuc2FjdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHNjaGVkdWxlZCB5ZXQ6
CiAgICAgICAgIC8vIFRyYW5zYWN0aW9uIHBoYXNlIDEgY2xlYW51cC4gU2VlIGNvbW1lbnQgb24g
IldoYXQgaGFwcGVucyBpZiBhCkBAIC01NDQsMTQgKzU0NCwxNCBAQCB2b2lkIERhdGFiYXNlOjpz
Y2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAKIHZv
aWQgRGF0YWJhc2U6OmluUHJvZ3Jlc3NUcmFuc2FjdGlvbkNvbXBsZXRlZCgpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXggfTsKICAgICBtX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKIH0KIAog
Ym9vbCBEYXRhYmFzZTo6aGFzUGVuZGluZ1RyYW5zYWN0aW9uKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAt
NjgxLDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERh
dGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBj
YWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRy
YW5zYWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmFuc2FjdGlvbklu
UHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzTXV0ZXggfTsKICAgICBpZiAoIW1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCkgewogICAg
ICAgICBpZiAoZXJyb3JDYWxsYmFjaykgewogICAgICAgICAgICAgbV9kb2N1bWVudC0+ZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFtlcnJvckNhbGxiYWNrID0g
bWFrZVJlZigqZXJyb3JDYWxsYmFjayldKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCBmY2ZmMTA0YzUyZTJj
Nzg0Mzk1MzU5MzQyODEyNjk3ZGZjN2E3YzczLi5lNmQ3ZDY2YTA4ZDhhYzc1ODM4NjdjMDcwYjEz
YzQzYjE2Njk5ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtNTgsNyArNTgsNyBAQCBEYXRhYmFzZVRocmVh
ZDo6fkRhdGFiYXNlVGhyZWFkKCkKIAogdm9pZCBEYXRhYmFzZVRocmVhZDo6c3RhcnQoKQogewot
ICAgIExvY2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3RocmVhZENyZWF0aW9uTXV0ZXggfTsKIAogICAgIGlmIChtX3RocmVhZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRh
YmFzZVRocmVhZCgpCiB7CiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciBEYXRhYmFzZVRocmVh
ZDo6c3RhcnQoKSB0byBjb21wbGV0ZS4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGhyZWFk
Q3JlYXRpb25NdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RocmVhZENyZWF0aW9u
TXV0ZXggfTsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTdGFydGVkIERhdGFiYXNlVGhyZWFk
ICVwIiwgdGhpcyk7CiAgICAgfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBEYXRhYmFzZVRo
cmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3Rh
dGUuCiAgICAgRGF0YWJhc2VTZXQgb3BlblNldENvcHk7CiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZVNl
dC5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAvLyBBcyB0aGUgY2FsbCB0byBjbG9zZSB3aWxs
IG1vZGlmeSB0aGUgb3JpZ2luYWwgc2V0LCB3ZSBtdXN0IHRha2UgYSBjb3B5IHRvIGl0ZXJhdGUg
b3Zlci4KICAgICAgICAgICAgIG9wZW5TZXRDb3B5LnN3YXAobV9vcGVuRGF0YWJhc2VTZXQpOwpA
QCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkK
IAogdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKIAogICAgIEFTU0VS
VChtX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9vcGVuRGF0
YWJhc2VTZXQuY29udGFpbnMoJmRhdGFiYXNlKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBE
YXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBkYXRhYmFzZSkKIAog
dm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UmIGRhdGFi
YXNlKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9OwogCiAgICAgQVNTRVJU
KG1fdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fcXVldWUua2ls
bGVkKCkgfHwgbV9vcGVuRGF0YWJhc2VTZXQuY29udGFpbnMoJmRhdGFiYXNlKSk7CkBAIC0xNzIs
NyArMTcyLDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6dW5zY2hlZHVsZURhdGFiYXNlVGFza3Mo
RGF0YWJhc2UmIGRhdGFiYXNlKQogCiBib29sIERhdGFiYXNlVGhyZWFkOjpoYXNQZW5kaW5nRGF0
YWJhc2VBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fb3BlbkRhdGFi
YXNlU2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4
IH07CiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fb3BlbkRhdGFiYXNlU2V0KSB7CiAgICAg
ICAgIGlmIChkYXRhYmFzZS0+aGFzUGVuZGluZ0NyZWF0aW9uRXZlbnQoKSB8fCBkYXRhYmFzZS0+
aGFzUGVuZGluZ1RyYW5zYWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmNwcAppbmRleCBhMDM4MjM0Yjc1NTZiY2I1ZWJlMzcxYjNjNTgyYTY4NTU4YWJiNTk4Li44MzRh
YzgyN2MyYjFlNWY3ZTIwM2QxNTMwYjM1YzY4ZDFmNGEwOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0x
NTksNyArMTU5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpoYXNBZGVx
dWF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2kKIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgZXN0aW1hdGVkU2l6ZSkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tl
ciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAKICAgICAvLyBGSVhN
RTogV2hhdCBndWFyYW50ZWVzIHRoaXMgY29udGV4dC5zZWN1cml0eU9yaWdpbigpIGlzIG5vbi1u
dWxsPwogICAgIGF1dG8gb3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwpAQCAtMjA3
LDcgKzIwNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJs
aXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjb250ZXh0CiAvLyBoZW5jZSBzaG91bGQgbm90
IGJlIGEgcGVyZm9ybWFuY2UgY3JpdGljYWwgcGF0aCBhbnl3YXkuIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRGF0YWJhc2VUcmFja2VyOjpyZXRyeUNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXpl
KQogewotICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAg
TG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIC8v
IEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgY29udGV4dC5zZWN1cml0eU9yaWdpbigpIGlzIG5vbi1u
dWxsPwogICAgIGF1dG8gb3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwpAQCAtMjcx
LDcgKzI3MSw3IEBAIHVpbnQ2NF90IERhdGFiYXNlVHJhY2tlcjo6bWF4aW11bVNpemUoRGF0YWJh
c2UmIGRhdGFiYXNlKQogewogICAgIC8vIFRoZSBtYXhpbXVtIHNpemUgZm9yIGEgZGF0YWJhc2Ug
aXMgdGhlIGZ1bGwgcXVvdGEgZm9yIGl0cyBvcmlnaW4sIG1pbnVzIHRoZSBjdXJyZW50IHVzYWdl
IHdpdGhpbiB0aGUgb3JpZ2luLAogICAgIC8vIHBsdXMgdGhlIGN1cnJlbnQgdXNhZ2Ugb2YgdGhl
IGdpdmVuIGRhdGFiYXNlCi0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1
YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9
OwogICAgIGF1dG8gb3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKIAogICAgIGF1
dG8gcXVvdGEgPSBxdW90YU5vTG9jayhvcmlnaW4pOwpAQCAtMzYwLDEzICszNjAsMTMgQEAgU3Ry
aW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWcKIAogU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhG
b3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIGNyZWF0ZUlmTm90RXhpc3RzKQogewotICAgIExvY2tIb2xkZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICByZXR1cm4gZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9j
ayhvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmTm90RXhpc3RzKS5pc29sYXRlZENvcHkoKTsKIH0KIAog
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tl
ciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAKICAgICBvcGVuVHJh
Y2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQpAQCAtNDIxLDcgKzQyMSw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNl
VHJhY2tlcjo6ZGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikK
IHsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBsb2NrRGF0YWJh
c2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgICAgIG5hbWVzID0gZGF0YWJhc2VO
YW1lc05vTG9jayhvcmlnaW4pOwogICAgIH0KICAgICByZXR1cm4gaXNvbGF0ZWRDb3B5KG5hbWVz
KTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2VyOjpk
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgIGludDY0
X3QgZXhwZWN0ZWRVc2FnZTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRD
cmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkK
QEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRh
aWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAogICAgIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIGludDY0
X3QgZ3VpZCA9IDA7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3Vh
cmQpOworICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07
CiAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBp
ZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbiwgY29uc3QKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNl
KERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2Rh
dGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1h
cEd1YXJkIH07CiAgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJhc2Uuc2VjdXJpdHlPcmln
aW4oKSwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpKTsKIH0KIApAQCAt
NTI3LDcgKzUyNyw3IEBAIFZlY3RvcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZVRyYWNrZXI6Om9w
ZW5EYXRhYmFzZXMoKQogewogICAgIFZlY3RvcjxSZWY8RGF0YWJhc2U+PiBvcGVuRGF0YWJhc2Vz
OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgICAgICBpZiAobV9vcGVuRGF0YWJhc2VNYXAp
IHsKICAgICAgICAgICAgIGZvciAoYXV0byYgbmFtZU1hcCA6IG1fb3BlbkRhdGFiYXNlTWFwLT52
YWx1ZXMoKSkgewpAQCAtNTQzLDcgKzU0Myw3IEBAIFZlY3RvcjxSZWY8RGF0YWJhc2U+PiBEYXRh
YmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZXMoKQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRk
T3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBMb2NrSG9sZGVyIG9wZW5E
YXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgTG9ja2VyIG9wZW5E
YXRhYmFzZU1hcExvY2sgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAKICAgICBpZiAoIW1f
b3BlbkRhdGFiYXNlTWFwKQogICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlxdWU8
RGF0YWJhc2VPcmlnaW5NYXA+KCk7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OmFkZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAg
IExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsK
KyAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQg
fTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIFJlZlB0cjxPcmlnaW5Mb2NrPiBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsK
KyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogICAg
IFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7
CiAKICAgICAvLyBUaGUgb3JpZ2luTG9ja01hcCBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIERh
dGFiYXNlVGhyZWFkcyBzaW5jZQpAQCAtNjg4LDEzICs2ODgsMTMgQEAgdWludDY0X3QgRGF0YWJh
c2VUcmFja2VyOjpxdW90YU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikK
IAogdWludDY0X3QgRGF0YWJhc2VUcmFja2VyOjpxdW90YShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3Vh
cmQpOworICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07
CiAgICAgcmV0dXJuIHF1b3RhTm9Mb2NrKG9yaWdpbik7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpzZXRRdW90YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgdWludDY0X3Qg
cXVvdGEpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsK
KyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAg
ICAgaWYgKHF1b3RhTm9Mb2NrKG9yaWdpbikgPT0gcXVvdGEpCiAgICAgICAgIHJldHVybjsKQEAg
LTgyNCw3ICs4MjQsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBEZWxldGlvbk1vZAogewogICAgIFZlY3RvcjxT
dHJpbmc+IGRhdGFiYXNlTmFtZXM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRh
YmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9v
cGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRD
cmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg3Niw3ICs4NzYsNyBAQCBib29sIERhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
LCBEZWxldGlvbk1vZAogICAgIH0KIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0
YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0Zvcihvcmln
aW4pOwogICAgICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIApAQCAtMTA2Myw3ICsx
MDYzLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ09yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVE
YXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFz
ZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFw
R3VhcmQgfTsKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90
RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDc4LDEyICsxMDc4LDEyIEBAIGJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3Qg
U3RyCiAgICAgLy8gV2UgZHJvcCB0aGUgbG9jayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBk
dXJpbmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRlYWRsb2NrLgogICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1l
LCBmYWxzZSkpICYmICFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lLCBEZWxldGlvbk1v
ZGU6OkRlZmF1bHQpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxl
IGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdp
bi5kYXRhYmFzZUlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRh
YmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgZG9uZURlbGV0aW5nRGF0
YWJhc2Uob3JpZ2luLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxv
Y2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJERUxFVEUgRlJPTSBEYXRhYmFzZXMg
V0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyJfcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKQEAg
LTExMjEsNyArMTEyMSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZp
bGUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3Vh
cmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFy
ZCB9OwogICAgICAgICBBU1NFUlQoaXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3Iob3JpZ2lu
LCBuYW1lKSk7CiAgICAgfQogI2VuZGlmCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBib29sIERhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luLCBjb25zdAogICAgIC8vIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSwg
c2luY2UgdGhhdCBjYW4gY2F1c2UgYSBkZWFkbG9jawogICAgIC8vIGR1cmluZyB0aGUgc3luY2hy
b25vdXMgRGF0YWJhc2VUaHJlYWQgY2FsbCBpdCB0cmlnZ2Vycy4KICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAg
ICAgICAgTG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJk
IH07CiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgaWYgKGF1
dG8qIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbikpIHsKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogZGF0YWJhc2VTZXQgPSBuYW1lTWFwLT5nZXQobmFtZSkpIHsKQEAg
LTExNzQsNyArMTE3NCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3Bl
bmVkRGF0YWJhc2VzKCkKICAgICAKICAgICB7CiAgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2sg
YmVmb3JlIGNhbGxpbmcgb3BlblRyYWNrZXJEYXRhYmFzZS4KLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFz
ZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFz
ZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIH0KIApAQCAtMTE4OSw3ICsxMTg5LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQog
ICAgIC8vIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSwgc2luY2UgdGhhdCBjYW4g
Y2F1c2UgYSBkZWFkbG9jawogICAgIC8vIGR1cmluZyB0aGUgc3luY2hyb25vdXMgRGF0YWJhc2VU
aHJlYWQgY2FsbCBpdCB0cmlnZ2Vycy4KICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgb3BlbkRh
dGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAgICAgICAgTG9ja2VyIG9w
ZW5EYXRhYmFzZU1hcExvY2sgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgICAgIGlm
IChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBvcGVuRGF0YWJh
c2UgOiAqbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgICAgICAgICBhdXRvJiBvcmlnaW4g
PSBvcGVuRGF0YWJhc2Uua2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggZDBkMTI4MDk2YmFiMGE2YTBm
N2MyZGJmMTAzYzIyZDQwODM5ZmYwYS4uMjcyMTQ0MTM3NTI1OTNlZDA4YTI2NjI5NDBmY2E4N2E5
MjQzNmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0cjsKICAg
ICAgICAgVCogY2FsbGJhY2s7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAg
ICAgICAgICAgIGlmICghbV9jYWxsYmFjaykgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04Myw3
ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxUPiB1bndyYXAoKQogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAgICAgICAgIEFTU0VSVCghbV9jYWxsYmFjayB8fCBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9jYWxsYmFjayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uY3BwCmluZGV4IGVkZGNlODFiZGQwZWE4ZjY0ZTljMjI4NTNiN2YxOGEzYWNkMzdiNjEuLmU3
NDIxYzc3YzUzMjcwMTFmNThiZjEyNjE2ZjllMDRkYjUxYjY2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2FsbEVycm9yQ2FsbGJhY2tEdWVU
b0ludGVycnVwdGlvbigpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246OmVucXVldWVTdGF0ZW1lbnQo
c3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50KQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRl
bWVudE11dGV4IH07CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5hcHBlbmQoV1RGTW92ZShzdGF0ZW1l
bnQpKTsKIH0KIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNoZWNr
QW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgIC8vIElmIHRoZSBkYXRhYmFzZSB3YXMgc3Rv
cHBlZCwgZG9uJ3QgZG8gYW55dGhpbmcgYW5kIGNhbmNlbCBxdWV1ZWQgd29yawogICAgIExPRyhT
dG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50ZXJydXB0ZWQgLSBjYW5jZWxs
aW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc3RhdGVtZW50TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4
IH07CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSBudWxs
cHRyOwogCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4dFN0
YXRlbWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3N0YXRlbWVudE11dGV4IH07CiAgICAgaWYgKCFtX3N0YXRlbWVudFF1ZXVlLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbV9zdGF0ZW1lbnRRdWV1ZS50YWtlRmlyc3Qo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCBkMDBlYzFkOTQyNDhiZjlhZDUxNTQ5
MTkwY2JmY2Q5YzVmMDBkZTExLi5hMDQzZjdjYTMyNmJlOGMwZTliYzk4M2JjMzdiYmY0NTE4ZTkw
NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCgpCiAKICAgICBtX2Zyb250ZW5kLnJlbGVh
c2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZnJvbnRl
bmQubV9zdGF0ZW1lbnRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZnJvbnRlbmQubV9z
dGF0ZW1lbnRNdXRleCB9OwogICAgIG1fZnJvbnRlbmQubV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigp
OwogCiAgICAgaWYgKG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwCmluZGV4IDNmODNlOGU2NzA2YmE0NTc0MzRjMmEzMWZkMjQ4OTZhNzlkOTYy
YTEuLjlmYzM4N2U0NWNhMjU4NTgyZTM5OTIxZjU2Y2NlOWU3ZDAxMDRhNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6Y2xl
YXIoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9heE9iamVjdENhY2hlID0g
bnVsbHB0cjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1N1YnRy
ZWVSZW1vdmFscy5hcHBlbmQobV9yb290Tm9kZS0+b2JqZWN0SUQoKSk7CiAgICAgbV9yb290Tm9k
ZSA9IG51bGxwdHI7CiAgICAgbV9ub2RlTWFwLmNsZWFyKCk7CkBAIC0xODgsNyArMTg4LDcgQEAg
dm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmpl
Y3QsIEFYQ29yZU9iamVjdCogYXhQYXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBvYmpl
Y3QgPSBjcmVhdGVTdWJ0cmVlKGF4T2JqZWN0LCBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJ
RCgpIDogSW52YWxpZEFYSUQsIGF0dGFjaFdyYXBwZXIpOwotICAgIExvY2tIb2xkZXIgbG9ja2Vy
IHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9j
ayB9OwogICAgIGlmICghYXhQYXJlbnQpCiAgICAgICAgIHNldFJvb3ROb2RlKG9iamVjdC5wdHIo
KSk7CiAgICAgZWxzZSBpZiAoYXhQYXJlbnQtPm9iamVjdElEKCkgIT0gSW52YWxpZEFYSUQpIC8v
IE5lZWQgdG8gY2hlY2sgZm9yIHRoZSBvYmplY3RJRCBvZiBheFBhcmVudCBhZ2FpbiBiZWNhdXNl
IGl0IG1heSBoYXZlIGJlZW4gZGV0YWNoZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZS4KQEAg
LTIyNCw3ICsyMjQsNyBAQCBSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OmNy
ZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRAogICAgIH0KIAogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgICAgICBtX3BlbmRpbmdBcHBl
bmRzLmFwcGVuZChXVEZNb3ZlKG5vZGVDaGFuZ2UpKTsKICAgICAgICAgdXBkYXRlQ2hpbGRyZW5J
RHMob2JqZWN0LT5vYmplY3RJRCgpLCBXVEZNb3ZlKGNoaWxkcmVuSURzKSk7CiAgICAgfQpAQCAt
MjQ1LDcgKzI0NSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUoQVhDb3JlT2Jq
ZWN0JiBheE9iamVjdCkKICAgICBhdXRvIG5ld09iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNy
ZWF0ZShheE9iamVjdCwgdGhpcywgcGFyZW50SUQpOwogICAgIG5ld09iamVjdC0+bV9jaGlsZHJl
bklEcyA9IGF4T2JqZWN0LmNoaWxkcmVuSURzKCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sg
fTsKICAgICAvLyBSZW1vdmUgdGhlIG9sZCBvYmplY3QgYW5kIHNldCB0aGUgbmV3IG9uZSB0byBi
ZSB1cGRhdGVkIG9uIHRoZSBBWCB0aHJlYWQuCiAgICAgbV9wZW5kaW5nTm9kZVJlbW92YWxzLmFw
cGVuZChheElEKTsKICAgICBtX3BlbmRpbmdBcHBlbmRzLmFwcGVuZCh7IG5ld09iamVjdCwgYXhP
YmplY3Qud3JhcHBlcigpIH0pOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eShjb25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWFBy
b3BlcnR5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sg
fTsKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhPYmplY3Qub2JqZWN0
SUQoKSwgcHJvcGVydHlNYXAgfSk7CiB9CiAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogCiAgICAg
aWYgKHVwZGF0ZWRDaGlsZCB8fCByZW1vdmFscy5zaXplKCkpIHsKICAgICAgICAgLy8gTWFrZSB0
aGUgY2hpbGRyZW4gSURzIG9mIHRoZSBpc29sYXRlZCBvYmplY3QgdG8gYmUgdGhlIHNhbWUgYXMg
dGhlIEFYT2JqZWN0J3MuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dM
b2NrIH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICAg
ICAgdXBkYXRlQ2hpbGRyZW5JRHMoYXhBbmNlc3Rvci0+b2JqZWN0SUQoKSwgV1RGTW92ZShheENo
aWxkcmVuSURzKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90aGluZyB3YXMgdXBkYXRl
ZC4gQXMgYSBsYXN0IHJlc29ydCwgdXBkYXRlIHRoZSBzdWJ0cmVlLgpAQCAtMzYyLDcgKzM2Miw3
IEBAIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Zm9jdXNlZE5vZGUo
KQogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSIpOwogICAgIC8vIEFw
cGx5IHBlbmRpbmcgY2hhbmdlcyBpbiBjYXNlIGZvY3VzIGhhcyBjaGFuZ2VkIGFuZCBoYXNuJ3Qg
YmVlbiB1cGRhdGVkLgogICAgIGFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5n
ZUxvZ0xvY2sgfTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJmb2N1c2VkTm9kZUlEICIsIG1fZm9j
dXNlZE5vZGVJRCkpOwogICAgIEFYTE9HKCJmb2N1c2VkIG5vZGU6Iik7CiAgICAgQVhMT0cobm9k
ZUZvcklEKG1fZm9jdXNlZE5vZGVJRCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Zm9jdXNlZE5vZGUoKQogUmVmUHRyPEFYSXNv
bGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpyb290Tm9kZSgpCiB7CiAgICAgQVhUUkFDRSgi
QVhJc29sYXRlZFRyZWU6OnJvb3ROb2RlIik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2No
YW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAg
ICAgcmV0dXJuIG1fcm9vdE5vZGU7CiB9CiAKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkKICAgICBBWExPRyhtYWtlU3Ry
aW5nKCJheElEICIsIGF4SUQpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
TG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCA9IGF4SUQ7
CiAKICAgICBBWFByb3BlcnR5TWFwIHByb3BlcnR5TWFwOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUoQVhJRCBheElEKQogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBtX25vZGVNYXAucmVtb3ZlKGF4SUQpOwotICAgIExvY2tIb2xk
ZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hh
bmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ05vZGVSZW1vdmFscy5hcHBlbmQoYXhJRCk7CiB9
CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVl
KEFYSUQgYXhJRCkKICAgICAgICAgfQogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsg
bV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9
OwogICAgIG1fcGVuZGluZ1N1YnRyZWVSZW1vdmFscy5hcHBlbmQoYXhJRCk7CiB9CiAKQEAgLTQ0
Myw3ICs0NDMsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkK
ICAgICBpZiAobV91c2VkT25BWFRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAKICAgICBpZiAobV9wZW5kaW5nRm9j
dXNlZE5vZGVJRCAhPSBtX2ZvY3VzZWROb2RlSUQpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmlu
ZygiZm9jdXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2RlSUQsICIgcGVuZGluZ0ZvY3VzZWROb2Rl
SUQgIiwgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQppbmRleCBiYjA1N2VmNmEw
MDYyNjFiZDRlNmE2MTVjYWYxZTAxODE5NWViNDFmLi4wMTY0ZDUzMjQ2MjQxY2JhZjE4NzVhZWU3
OTk2YjFlNTMyOTU4MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIFJlZlB0cjxT
Y3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU1hYzo6c2Nyb2xsaW5nTm9kZUZvclBvaW50
KEZsb2F0UG9pbnQgcG9pCiAgICAgaWYgKCFyb290U2Nyb2xsaW5nTm9kZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sYXllckhpdFRlc3RN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJIaXRUZXN0TXV0ZXggfTsKIAogICAg
IGF1dG8gcm9vdENvbnRlbnRzTGF5ZXIgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjKj4ocm9vdFNjcm9sbGluZ05vZGUpLT5yb290Q29udGVudHNMYXllcigp
OwogICAgIEZsb2F0UG9pbnQgc2Nyb2xsT3JpZ2luID0gcm9vdFNjcm9sbGluZ05vZGUtPnNjcm9s
bE9yaWdpbigpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIE9wdGlvblNldDxFdmVudExpc3RlbmVyUmVn
aW9uVHlwZT4gU2Nyb2xsaW5nVHJlZU1hYzo6ZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yCiAg
ICAgaWYgKCFyb290U2Nyb2xsaW5nTm9kZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX2xheWVySGl0VGVzdE11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sYXllckhpdFRlc3RNdXRleCB9OwogCiAgICAgYXV0byByb290Q29udGVudHNMYXll
ciA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMqPihyb290
U2Nyb2xsaW5nTm9kZSktPnJvb3RDb250ZW50c0xheWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKaW5kZXggNzRjN2UwZTg1MzJlMTRlMzc5ZDJj
Zjk2MjJjNTIxYzlmODc4M2RlZC4uODI2OTlkZTYwZjA1NjUxZDZjNzA4MTYxYThhMzhhYzcxOTI5
YTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1
ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgK
QEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4
KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBt
X2Fib3J0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGNhbmNlbEFsbFRhc2tzKCk7CiAgICAgICAg
IH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgQVNTRVJUKG1fYWJv
cnRpbmcpOwogICAgICAgICBtX2Fib3J0aW5nID0gZmFsc2U7CiAgICAgfQpAQCAtMTIzLDcgKzEy
Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTE0MywxNCArMTQzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRG9u
J3QgZGVhZGxvY2sgdGhlIG1haW4gdGhyZWFkIHdpdGggaXRzZWxmLgogICAgICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGlmIChtX2Fi
b3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxSPiByZXNwb25zZSA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgcG9zdFRhc2soW3RoaXMs
ICZyZXNwb25zZSwgJm1haW5UaHJlYWRUYXNrSGFuZGxlcl0oKSB7CiAgICAgICAgICAgICBSIHJl
c3BvbnNlVmFsdWUgPSBtYWluVGhyZWFkVGFza0hhbmRsZXIoKTsKLSAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAgICAgICAgICAgICBpZiAoIW1fYWJvcnRpbmcpCiAgICAgICAgICAgICAgICAg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlVmFsdWUpOwogICAgICAgICAgICAgbV9hYm9ydGVk
T3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgaWYgKGlzQ2FuY2VsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXNrUXVldWUtPm1fbXV0ZXgpOworICAg
ICAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3Rhc2tRdWV1ZS0+bV9tdXRleCB9OwogICAgICAgICAg
ICAgQVNTRVJUKHRoaXMgPT0gbV90YXNrUXVldWUtPm1fY2hhbm5lbC5maXJzdCgpLnB0cigpKTsK
ICAgICAgICAgICAgIG1fdGFza1F1ZXVlLT5tX2NoYW5uZWwucmVtb3ZlRmlyc3QoKTsKICAgICAg
ICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDUyNjZiNWZjYTVjNTUyMjhk
MDQwNTI3Njk4NzBhMjJhMWY3NDI4ZGEuLmE1ODFjZjY1NTZmOTk3NTY4N2NjNTA1MWRhZWY5M2Uy
YzMyYjg5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQ0FSaW5nQnVmZmVyLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgQ0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVDb3VudCwgY29uc3QgQ0FBdWRpb1N0
cmVhbURlCiAKIHZvaWQgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2goKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91bmRzTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY3VycmVudEZyYW1lQm91bmRzTG9jayB9OwogICAgIGZvciAoYXV0byYgdGlt
ZUJvdW5kcyA6IG1fdGltZUJvdW5kc1F1ZXVlKSB7CiAgICAgICAgIHRpbWVCb3VuZHMubV9zdGFy
dEZyYW1lID0gMDsKICAgICAgICAgdGltZUJvdW5kcy5tX2VuZEZyYW1lID0gMDsKQEAgLTMwNSw3
ICszMDUsNyBAQCB2b2lkIENBUmluZ0J1ZmZlcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2
NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKIAogdm9pZCBDQVJpbmdCdWZmZXJTdG9y
YWdlVmVjdG9yOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50
NjRfdCBlbmRUaW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VycmVudEZyYW1lQm91
bmRzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY3VycmVudEZyYW1lQm91bmRzTG9jayB9
OwogICAgIHVpbnQzMl90IG5leHRQdHIgPSBtX3RpbWVCb3VuZHNRdWV1ZVB0ci5sb2FkKCkgKyAx
OwogICAgIHVpbnQzMl90IGluZGV4ID0gbmV4dFB0ciAmIGtHZW5lcmFsUmluZ1RpbWVCb3VuZHNR
dWV1ZU1hc2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDhjZDVjMjg3NDI3ZGNmZTYwOWJkOThm
NjZmOWFhYTA5NGNmOWM1ODkuLjQzNjk2ODhlMTlhNDI3ZWM4YWU0ZjYxZDUwMjdhZTczYjJlNGZh
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTQzMCw3ICsxNDMwLDcgQEAgSGFzaE1hcDx1aW50
cHRyX3QsIEFWRldyYXBwZXIqPiYgQVZGV3JhcHBlcjo6bWFwKCkKIAogdm9pZCBBVkZXcmFwcGVy
OjphZGRUb01hcCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgCiAgICAgLy8gSGFzaE1hcCBkb2Vzbid0
IGxpa2UgYSBrZXkgb2YgMCwgYW5kIGFsc28gbWFrZSBzdXJlIHdlIGFyZW4ndAogICAgIC8vIHVz
aW5nIGFuIG9iamVjdCBJRCB0aGF0J3MgYWxyZWFkeSBpbiB1c2UuCkBAIC0xNDQ2LDcgKzE0NDYs
NyBAQCB2b2lkIEFWRldyYXBwZXI6OnJlbW92ZUZyb21NYXAoKSBjb25zdAogewogICAgIExPRyhN
ZWRpYSwgIkFWRldyYXBwZXI6OnJlbW92ZUZyb21NYXAoJXAgJWQpIiwgdGhpcywgbV9vYmplY3RJ
RCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtYXBMb2NrKCkgfTsKICAgICBtYXAoKS5yZW1vdmUobV9vYmplY3RJRCk7CiB9CiAKQEAg
LTE2NTAsNyArMTY1MCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAK
IHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVy
UmVmLCBDTVRpbWUgY21UaW1lLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFW
RldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwog
ICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwZXJpb2Rp
Y1RpbWVPYnNlcnZlckNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIs
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNjgyLDcgKzE2ODIs
NyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24odm9pZCogY29udGV4dCkK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+IG5vdGlmaWNh
dGlvbkRhdGEgeyBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb25DYWxsYmFja0RhdGEqPihjb250ZXh0
KSB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JD
YWxsYmFja0NvbnRleHQobm90aWZpY2F0aW9uRGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNl
bGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc05vdGlmaWNhdGlv
biBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgdm9pZCBBVkZXcmFwcGVy
Ojpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2Jz
ZXJ2ZXIsIEMKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJh
Y2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldy
YXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAg
IGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkUGxheWFi
bGVDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3NjQsNyArMTc2NCw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgpCiAKIHZvaWQgQVZGV3JhcHBl
cjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29u
dGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBs
b2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZv
ckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9H
KE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrIGludm9r
ZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pihjb250ZXh0KSk7CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmJlZ2lu
TG9hZGluZ01ldGFkYXRhKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJh
Y2soQVZDRlBsYXllckl0ZW1SZWYsIEJvb2xlYW4gZmluaXNoZWQsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFj
a0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFW
RldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAt
MTgyOCw3ICsxODI4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNvbnRl
eHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnaWJsZU91dHB1dERhdGE+IGxlZ2libGVPdXRw
dXREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TGVnaWJsZU91dHB1dERhdGEqPihjb250ZXh0KSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBt
YXBMb2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNr
Q29udGV4dChsZWdpYmxlT3V0cHV0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsK
ICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSBpbnZva2VkIGZvciBk
ZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4
dCkpOwpAQCAtMTg0NCw3ICsxODQ0LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZv
aWQqIGNvbnRleHQpCiB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lk
KiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgbGVnaWJsZU91dHB1dCwg
Q0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5ncywgQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVCdWZm
ZXJzLCBDTVRpbWUgaXRlbVRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFw
TG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0Nv
bnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFW
RldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldy
YXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTg4
Myw3ICsxODgzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlc291cmNlKHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9hZFJl
cXVlc3REYXRhPiBsb2FkUmVxdWVzdERhdGEocmVpbnRlcnByZXRfY2FzdDxMb2FkUmVxdWVzdERh
dGEqPihjb250ZXh0KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAg
IExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZm
V3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChsb2FkUmVxdWVzdERhdGEtPm1fY29udGV4dCk7CiAg
ICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NT
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFw
cGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE5Mzgs
NyArMTkzOCw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiBCb29sZWFuIEFWRldyYXBwZXI6
OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKEFW
Q0ZBc3NldFJlc291cmNlTG9hZGVyUmVmIHJlc291cmNlTG9hZGVyLCBBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UmVmIGxvYWRpbmdSZXF1ZXN0LCB2b2lkICpjb250ZXh0KQogewogICAg
IEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJyZW50
X3F1ZXVlKCkpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVy
Rm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBM
T0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXF1ZXN0ZWRSZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggZTk3ZDAwNGNjOTQ3ZDZkYzFmNzUx
MDFjMGU3M2IyNzUzMDNhZjQ4Ni4uNTJmOTE4ZjFlYWJiYjA3M2ViNDkyODVhMWYyNmI2MmRlYzE4
NzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CkBAIC05Nyw3ICs5Nyw3IEBAIC0gKE5TRGF0YSopZGF0YQogCiAtICh2b2lkKXNldEV4cGVjdGVk
Q29udGVudFNpemU6KGxvbmcgbG9uZylleHBlY3RlZENvbnRlbnRTaXplCiB7Ci0gICAgTG9ja0hv
bGRlciBob2xkZXIgeyBfZGF0YUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgX2RhdGFMb2Nr
IH07CiAgICAgX2V4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogCiAg
ICAgW3NlbGYgZnVsZmlsbFBlbmRpbmdSZXF1ZXN0c107CkBAIC0xMDUsNyArMTA1LDcgQEAgLSAo
dm9pZClzZXRFeHBlY3RlZENvbnRlbnRTaXplOihsb25nIGxvbmcpZXhwZWN0ZWRDb250ZW50U2l6
ZQogCiAtICh2b2lkKXVwZGF0ZURhdGE6KE5TRGF0YSAqKWRhdGEgY29tcGxldGU6KEJPT0wpY29t
cGxldGUKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IF9kYXRhTG9jayB9OworICAgIExvY2tl
ciBsb2NrZXIgeyBfZGF0YUxvY2sgfTsKICAgICBfZGF0YSA9IGRhdGE7CiAgICAgX2NvbXBsZXRl
ID0gY29tcGxldGU7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCAtICh2b2lkKWZ1bGZpbGxSZXF1ZXN0
OihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKXJlcXVlc3QKIAogLSAoQk9PTClyZXNv
dXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0CiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIgeyBfZGF0
YUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgX2RhdGFMb2NrIH07CiAKICAgICBVTlVTRURf
UEFSQU0ocmVzb3VyY2VMb2FkZXIpOwogCkBAIC0yMDYsNyArMjA2LDcgQEAgLSAoQk9PTClyZXNv
dXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxk
V2FpdEZvckxvYWQKIAogLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9h
ZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6KEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3QKIHsKLSAgICBMb2NrSG9sZGVyIGhv
bGRlciB7IF9kYXRhTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBfZGF0YUxvY2sgfTsKIAog
ICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZUxvYWRlcik7CiAgICAgX3JlcXVlc3RzLnJlbW92ZUFs
bChsb2FkaW5nUmVxdWVzdCk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBJbWFnZURlY29kZXJB
VkZPYmpDOjpzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogICAgICAgICByZXR1cm47CiAg
ICAgbV90cmFjayA9IHRyYWNrOwogCi0gICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdl
bmVyYXRvckxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2Nr
IH07CiAgICAgbV9zYW1wbGVEYXRhLmNsZWFyKCk7CiAgICAgbV9zaXplLnJlc2V0KCk7CiAgICAg
bV9jdXJzb3IgPSBtX3NhbXBsZURhdGEuZGVjb2RlT3JkZXIoKS5lbmQoKTsKQEAgLTU2MSw3ICs1
NjEsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogCiBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKLSAgICBMb2NrSG9sZGVy
IGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBt
X3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIAogICAgIGF1dG8qIHNhbXBsZURhdGEgPSBzYW1wbGVB
dEluZGV4KGluZGV4KTsKICAgICBpZiAoIXNhbXBsZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDM1MDM4YWY1OTgzYzFkMjNjYWM3YzQwZDcxMDdhYWEz
MDBiMjAwMTYuLjY0MTBjMjlkMjBhNTY5NGZiYThhYjlhYjNjNjNiY2E0OTFkZjIwZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAg
dW5zaWduZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwKIAogUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRl
ciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBs
ZUdlbmVyYXRvckxvY2sgfTsKIAogICAgIGF1dG8qIHNhbXBsZURhdGEgPSBzYW1wbGVBdEluZGV4
KGluZGV4KTsKICAgICBpZiAoIXNhbXBsZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYThlZWY1MmExM2E3N2VlZDc3
Y2YxNGU5ODczNjc4MGFiOTlmZTA0Ni4uZWE4ZTEwNzJhOTcxZjcxMjE3MTcwYjYxM2U3YWU3Njhi
YWVkZmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6OmRpc2Nvbm5lY3QoKQogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKIHsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5hcHBl
bmQoc2FtcGxlKTsKICAgICB9CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEluYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUoKQogewogICAgIFZlY3Rv
cjxHUmVmUHRyPEdzdFNhbXBsZT4gPiBzYW1wbGVzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVN
dXRleCB9OwogICAgICAgICBtX3BlbmRpbmdTYW1wbGVzLnN3YXAoc2FtcGxlcyk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWFpblRocmVhZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKaW5kZXggYTg4NTkyODljODU1MzJkOWU2NjNk
ZTQ3MGI2MTMxYmM5ZGIwOGZhNy4uOGQ5NDI0MGJiMDZlYzQxYjdkNzc1YzJmNDAzNTNhY2NjNTI0
NjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01haW5UaHJlYWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaApAQCAtODYsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTm90aWZpY2F0aW9ucyh1bnNpZ25lZCBtYXNr
ID0gMCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzVmFsaWQubG9hZCgpKTsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2sgfTsKICAgICAgICAgaWYg
KG1hc2spCiAgICAgICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zICY9IH5tYXNrOwogICAg
ICAgICBlbHNlCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYWRkUGVu
ZGluZ05vdGlmaWNhdGlvbihUIG5vdGlmaWNhdGlvblR5cGUpCiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayB9OwogICAgICAgICBpZiAobm90
aWZpY2F0aW9uVHlwZSAmIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMgfD0gbm90aWZpY2F0aW9u
VHlwZTsKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZW1vdmVQZW5k
aW5nTm90aWZpY2F0aW9uKFQgbm90aWZpY2F0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fcGVuZGluZ05vdGlmaWNhdGlvbnNMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcGVuZGluZ05vdGlmaWNhdGlvbnNMb2NrIH07CiAgICAgICAgIGlmIChub3Rp
ZmljYXRpb25UeXBlICYgbV9wZW5kaW5nTm90aWZpY2F0aW9ucykgewogICAgICAgICAgICAgbV9w
ZW5kaW5nTm90aWZpY2F0aW9ucyAmPSB+bm90aWZpY2F0aW9uVHlwZTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBhZjUxMjk5MGI2YjQwYWMxZTgwNDRhOWI3MDllNjM5ZWZkMTE3MjMyLi43NWEy
MWMxYjRkZDg1MDRmZTAyN2NmMjkzODIwZDJmODdlMDQ4ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzU1MSw3ICszNTUxLDcgQEAg
SW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJzZUluaXREYXRhRnJvbVBy
b3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKIAogICAgIEluaXREYXRhIGluaXREYXRhOwogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcHJvdGVjdGlvbk11dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvdGVjdGlvbk11dGV4IH07CiAgICAgICAgIFByb3RlY3Rpb25TeXN0
ZW1FdmVudHMgcHJvdGVjdGlvblN5c3RlbUV2ZW50cyhtZXNzYWdlKTsKICAgICAgICAgR1NUX1RS
QUNFX09CSkVDVChwaXBlbGluZSgpLCAiZm91bmQgJXp1IHByb3RlY3Rpb24gZXZlbnRzLCAlenUg
ZGVjcnlwdG9ycyBhdmFpbGFibGUiLCBwcm90ZWN0aW9uU3lzdGVtRXZlbnRzLmV2ZW50cygpLnNp
emUoKSwgcHJvdGVjdGlvblN5c3RlbUV2ZW50cy5hdmFpbGFibGVTeXN0ZW1zKCkuc2l6ZSgpKTsK
IApAQCAtMzY2Niw3ICszNjY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKIHsK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3Byb3RlY3Rpb25NdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3RlY3Rpb25NdXRleCB9OwogICAgICAgICBpZiAobV9o
YW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5jb250YWlucyhHU1RfRVZFTlRfU0VRTlVNKGV2ZW50KSkp
IHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImV2ZW50ICV1IGFs
cmVhZHkgaGFuZGxlZCIsIEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQpKTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRl
eCBkNjBjYWU4MDgxY2QzYTkwNWU2OTZhYjMzNWM3OWM3ODg2NGNkNDk0Li40N2ExNmI4OGM4ZTBk
MmRiNDlkNDMyYmFkZTdmOTFjY2U3ZjE4ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBUcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCgpCiAKICAgICBHU1RfREVCVUcoIkluc3BlY3Rp
bmcgdHJhY2sgYXQgaW5kZXggJWQgd2l0aCB0YWdzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgbV9pbmRl
eCwgdGFncy5nZXQoKSk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YWdNdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhZ011dGV4bk11dGV4IH07CiAgICAgICAg
IG1fdGFncy5zd2FwKHRhZ3MpOwogICAgIH0KIApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCkKIAogICAg
IEdSZWZQdHI8R3N0VGFnTGlzdD4gdGFnczsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
ayhtX3RhZ011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFnTXV0ZXhuTXV0ZXgg
fTsKICAgICAgICAgdGFncy5zd2FwKG1fdGFncyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwCmluZGV4IGY0MTM5Yjc2YTdmYmUyZGUwZjdmNmU2NGNjNTMyNjBkZjAy
ZGQyYTUuLjExYmVhMTJiNjZkYzU0NjI1YTgyOWY5MDc0YTkyYzAzNzRjZTI4OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC03MSwyNiArNzEsMjYgQEAgY2xhc3MgVmlk
ZW9SZW5kZXJSZXF1ZXN0U2NoZWR1bGVyIHsKIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCkKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgICAgICBtX3VubG9ja2VkID0gZmFs
c2U7CiAgICAgfQogCiAgICAgdm9pZCBzdG9wKCkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVN
dXRleCB9OwogICAgICAgICBtX3NhbXBsZSA9IG51bGxwdHI7CiAgICAgICAgIG1fdW5sb2NrZWQg
PSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQgZHJhaW4oKQogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Nh
bXBsZU11dGV4IH07CiAgICAgICAgIG1fc2FtcGxlID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBi
b29sIHJlcXVlc3RSZW5kZXIoV2ViS2l0VmlkZW9TaW5rKiBzaW5rLCBHc3RCdWZmZXIqIGJ1ZmZl
cikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2FtcGxlTXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgICAgICBpZiAobV91bmxv
Y2tlZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRp
b25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVy
LmNwcAppbmRleCAxODBlMjYwZjk4ZWMwNjA2ZGM4NDljNDRhYTMyYjU5NzY4OWI2YTA2Li4zMjAx
NzRkNWJmZTg3NmRiOGMxNDIzNTlhOGUxYTAxYWE4NmMwZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdT
dHJlYW1lci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB0cmFu
c2Zvcm1JblBsYWNlKEdzdEJhc2VUcmFuc2Zvcm0qIGJhc2UsIEdzdEJ1ZmZlciogYnVmZmVyKQog
ICAgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIocHJpdi0+bXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogCiAg
ICAgaWYgKHByaXYtPmlzRmx1c2hpbmcpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxm
LCAiRGVjcnlwdGlvbiBhYm9ydGVkIGJlY2F1c2Ugb2YgZmx1c2giKTsKQEAgLTI4OSw3ICsyODks
NyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB0cmFuc2Zvcm1JblBsYWNlKEdzdEJhc2VUcmFuc2Zv
cm0qIGJhc2UsIEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc2VsZiwg
ImRlY3J5cHRpbmciKTsKIAogICAgIC8vIFRlbXBvcmFyaWx5IHJlbGVhc2UgdGhlIGxvY2sgd2hp
bGUgd2UgZG9uJ3QgbmVlZCB0byBhY2Nlc3MgcHJpdi4gVGhlIGxvd2VyIGxldmVsIEFQSSBpcyB1
c2VkCi0gICAgLy8gaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgc2V2ZXJhbCBzY29wZXMgd2l0
aCBkaWZmZXJlbnQgTG9ja0hvbGRlciBpbnN0YW5jZXMgaW4gZWFjaCBvbmUuCisgICAgLy8gaW4g
b3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgc2V2ZXJhbCBzY29wZXMgd2l0aCBkaWZmZXJlbnQgTG9j
a2VyIGluc3RhbmNlcyBpbiBlYWNoIG9uZS4KICAgICBwcml2LT5tdXRleC51bmxvY2soKTsKIAog
ICAgIGJvb2wgZGlkRGVjcnlwdGlvblN1Y2NlZWQgPSBrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1
ZmZlciwga2V5SURCdWZmZXIsIGJ1ZmZlciwgc3ViU2FtcGxlQ291bnQsIHN1YlNhbXBsZXNCdWZm
ZXIpOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzaW5rRXZlbnRIYW5kbGVy
KEdzdEJhc2VUcmFuc2Zvcm0qIHRyYW5zLCBHc3RFdmVudCogZXZlbnQpCiAgICAgY2FzZSBHU1Rf
RVZFTlRfRkxVU0hfU1RBUlQ6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIkZsdXNo
LXN0YXJ0Iik7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYt
Pm11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAg
ICAgICAgICAgYm9vbCBpc0NkbVByb3h5QXR0YWNoZWQgPSBwcml2LT5jZG1Qcm94eTsKICAgICAg
ICAgICAgIHByaXYtPmlzRmx1c2hpbmcgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGlzQ2RtUHJv
eHlBdHRhY2hlZCkgewpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzaW5rRXZl
bnRIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qIHRyYW5zLCBHc3RFdmVudCogZXZlbnQpCiAgICAg
Y2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxm
LCAiRmx1c2gtc3RvcCIpOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihwcml2LT5tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXgg
fTsKICAgICAgICAgICAgIHByaXYtPmlzRmx1c2hpbmcgPSBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKQEAgLTQyMCw3ICs0MjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2lua0V2ZW50
SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2ZW50KQogYm9vbCB3
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNGbHVzaGluZyhXZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmKQogewogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5j
cnlwdGlvbkRlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9H
RVRfUFJJVkFURShzZWxmKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPm11dGV4IH07CiAgICAgcmV0dXJuIHByaXYtPmlzRmx1
c2hpbmc7CiB9CiAKQEAgLTQ1OSw3ICs0NTksNyBAQCBzdGF0aWMgdm9pZCBzZXRDb250ZXh0KEdz
dEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQpCiAKICAgICBpZiAoZ3N0X2Nv
bnRleHRfaGFzX2NvbnRleHRfdHlwZShjb250ZXh0LCAiZHJtLWNkbS1wcm94eSIpKSB7CiAgICAg
ICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShnc3RfY29u
dGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQpLCAiY2RtLXByb3h5Iik7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByaXYt
Pm11dGV4IH07CiAgICAgICAgIHByaXYtPmNkbVByb3h5ID0gdmFsdWUgPyByZWludGVycHJldF9j
YXN0PENETVByb3h5Kj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpIDogbnVsbHB0cjsKICAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2ZWQgbmV3IENETUluc3RhbmNlICVw
IiwgcHJpdi0+Y2RtUHJveHkuZ2V0KCkpOwogICAgICAgICBrbGFzcy0+Y2RtUHJveHlBdHRhY2hl
ZChzZWxmLCBwcml2LT5jZG1Qcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcAppbmRleCA5NDliY2Zh
ODc0NTUwNDVjMWU1M2FlZDI0M2YwNzhjZWE4ZWZjNWZiLi5jNzkxNWZiNTVkZTMzZjY2Y2JmYWE5
MjEzNjBiMTk5NTY0MmQ5Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAKQEAgLTUwLDE0ICs1MCwx
NCBAQCBCdWZmZXI6On5CdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQnVmZmVyOjpiZWdpblBh
aW50aW5nKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BhaW50aW5nLmxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3BhaW50aW5nLmxvY2sgfTsKICAgICBBU1NFUlQobV9wYWludGlu
Zy5zdGF0ZSA9PSBQYWludGluZ1N0YXRlOjpDb21wbGV0ZSk7CiAgICAgbV9wYWludGluZy5zdGF0
ZSA9IFBhaW50aW5nU3RhdGU6OkluUHJvZ3Jlc3M7CiB9CiAKIHZvaWQgQnVmZmVyOjpjb21wbGV0
ZVBhaW50aW5nKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BhaW50aW5nLmxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BhaW50aW5nLmxvY2sgfTsKICAgICBBU1NFUlQobV9wYWlu
dGluZy5zdGF0ZSA9PSBQYWludGluZ1N0YXRlOjpJblByb2dyZXNzKTsKICAgICBtX3BhaW50aW5n
LnN0YXRlID0gUGFpbnRpbmdTdGF0ZTo6Q29tcGxldGU7CiAgICAgbV9wYWludGluZy5jb25kaXRp
b24ubm90aWZ5T25lKCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQnVmZmVyOjpjb21wbGV0ZVBh
aW50aW5nKCkKIAogdm9pZCBCdWZmZXI6OndhaXRVbnRpbFBhaW50aW5nQ29tcGxldGUoKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fcGFpbnRpbmcubG9jayB9OwogICAgIG1fcGFpbnRpbmcuY29uZGl0aW9uLndhaXQobV9w
YWludGluZy5sb2NrLAogICAgICAgICBbdGhpc10geyByZXR1cm4gbV9wYWludGluZy5zdGF0ZSA9
PSBQYWludGluZ1N0YXRlOjpDb21wbGV0ZTsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxh
eWVyLmgKaW5kZXggNjQwYTA0MjFiY2ViNjFhOTg4YjYxZmZmOGY5YWI0YzZkOTUxYWQzMy4uOWI2
YWMwZGJiZDk1OWViNDFmOGE2NjJmZTlmN2Y0ZGEwNDUzYmVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBs
YXRmb3JtTGF5ZXIuaApAQCAtNTgsMTMgKzU4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
U2NlbmVJbnRlZ3JhdGlvbihSZWZQdHI8U2NlbmVJbnRlZ3JhdGlvbj4mJiBzY2VuZUludGVncmF0
aW9uKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgICAgICBtX3N0YXRlLnNj
ZW5lSW50ZWdyYXRpb24gPSBXVEZNb3ZlKHNjZW5lSW50ZWdyYXRpb24pOwogICAgIH0KIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gY3JlYXRlVXBk
YXRlU2NvcGUoKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgICAgICBpZiAo
bV9zdGF0ZS5zY2VuZUludGVncmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RhdGUuc2Nl
bmVJbnRlZ3JhdGlvbi0+Y3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDgsMTQgKzIwOCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAg
IGZ1bmN0b3IobV9zdGF0ZS5wZW5kaW5nKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIHZvaWQgZmx1c2hTdGF0ZShjb25zdCBUJiBmdW5jdG9yKQogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9OwogICAgICAg
ICBhdXRvJiBwZW5kaW5nID0gbV9zdGF0ZS5wZW5kaW5nOwogICAgICAgICBhdXRvJiBzdGFnaW5n
ID0gbV9zdGF0ZS5zdGFnaW5nOwogCkBAIC0yOTMsNyArMjkzLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBjb21taXRTdGF0ZShjb25zdCBUJiBmdW5jdG9y
KQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0
ZS5sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUu
bG9jayB9OwogICAgICAgICBtX3N0YXRlLmNvbW1pdHRlZCA9IG1fc3RhdGUuc3RhZ2luZzsKICAg
ICAgICAgbV9zdGF0ZS5zdGFnaW5nLmRlbHRhID0geyB9OwogCkBAIC0zMDMsMTQgKzMwMywxNCBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFjY2Vzc1BlbmRp
bmcoY29uc3QgVCYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKFBs
YXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0
Zm9ybUxheWVyOjptX3N0YXRlLmxvY2sgfTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRlLnBlbmRp
bmcpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhY2Nlc3ND
b21taXR0ZWQoY29uc3QgVCYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2sgfTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRl
LmNvbW1pdHRlZCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaAppbmRleCA2ZjI4MWRjYjNjOWE0OWYw
YjQ0ZTQ4ZDdhNjM0Y2RlMzE3NjdlMjU4Li42MzFjODQ3MzhkZjAxMmQxMmFkOTIyY2Q4YzBiN2I4
ODIyMThlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEY+CiAgICAgdm9pZCBhY2Nlc3NTdGF0ZShjb25zdCBGJiBmdW5j
dG9yKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY2VuZS5sb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2NlbmUubG9jayB9OwogICAgICAgICBmdW5jdG9yKG1f
c2NlbmUuc3RhdGUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9u
LmNwcAppbmRleCAzNzQzYWI0MDRlOTU0NjRkMzQwMmFmN2UwMzMzZGU5NzQ0MzE5OWVkLi5kZTNm
ZDI3MWQwMmRkYzA4NzVmM2E0NzhlM2M5YTYxNWViNjg4N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFTY2VuZUludGVncmF0aW9uLmNwcApAQCAtNDcsMjAgKzQ3LDIwIEBAIFNjZW5lSW50ZWdyYXRp
b246On5TY2VuZUludGVncmF0aW9uKCkKIAogdm9pZCBTY2VuZUludGVncmF0aW9uOjpzZXRDbGll
bnQoQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQubG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKICAgICBtX2NsaWVudC5v
YmplY3QgPSAmY2xpZW50OwogfQogCiB2b2lkIFNjZW5lSW50ZWdyYXRpb246OmludmFsaWRhdGUo
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgbV9jbGllbnQuc2NlbmUgPSBudWxscHRyOwog
ICAgIG1fY2xpZW50Lm9iamVjdCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU2NlbmVJbnRlZ3JhdGlv
bjo6cmVxdWVzdFVwZGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQubG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKICAgICBpZiAobV9jbGll
bnQub2JqZWN0KQogICAgICAgICBtX2NsaWVudC5vYmplY3QtPnJlcXVlc3RVcGRhdGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGI5YzcwZGFhMTU0MjMxY2Q1Mjg3YzFkOWI1MWNi
YjlmZmIzOTNkZGIuLjg3ZjkxNWFjNGQ0Y2NmZTdhY2UxZmFjNmNlMzk1MWE0ZmM2MzgyNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9y
ZVRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQmFja2luZ1N0
b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKCkKIAogICAgIC8vIEluY3JlbWVudGFs
bHkgc3RvcmUgdXBkYXRlcyBhcyB0aGV5IGFyZSBiZWluZyBmbHVzaGVkIGZyb20gdGhlIGxheWVy
LXNpZGUuCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdXBkYXRlLmxvY2sgfTsKICAgICAgICAgbV91cGRh
dGUucGVuZGluZy50aWxlc1RvQ3JlYXRlLmFwcGVuZFZlY3RvcihtX2xheWVyU3RhdGUudXBkYXRl
LnRpbGVzVG9DcmVhdGUpOwogICAgICAgICBtX3VwZGF0ZS5wZW5kaW5nLnRpbGVzVG9VcGRhdGUu
YXBwZW5kVmVjdG9yKG1fbGF5ZXJTdGF0ZS51cGRhdGUudGlsZXNUb1VwZGF0ZSk7CiAgICAgICAg
IG1fdXBkYXRlLnBlbmRpbmcudGlsZXNUb1JlbW92ZS5hcHBlbmRWZWN0b3IobV9sYXllclN0YXRl
LnVwZGF0ZS50aWxlc1RvUmVtb3ZlKTsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiAKIGF1dG8gQmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGw6OnRha2VVcGRhdGUoKSAtPiBUaWxlVXBkYXRlCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV91cGRhdGUubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdXBk
YXRlLmxvY2sgfTsKICAgICByZXR1cm4gV1RGTW92ZShtX3VwZGF0ZS5wZW5kaW5nKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggZjgxZTQ4Yzc1NTczNzhiNGEwYmQ4M2NlMzFiNGM4
ZTdhMWQyODdlOS4uZjYyM2U2MzQyNTQ1YTg4OWQyZTA0YWRiOThlYTFjZGFkN2U5NjBlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC01MiwyNiArNTIsMjYgQEAgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsKENsaWVudCYgY2xp
ZW50KQogQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbCgpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQubG9jayB9Owog
ICAgIEFTU0VSVCghbV9jbGllbnQuY2xpZW50KTsKICNlbmRpZgogfQogCiB2b2lkIENvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjppbnZhbGlkYXRlQ2xpZW50KCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQu
bG9jayB9OwogICAgIG1fY2xpZW50LmNsaWVudCA9IG51bGxwdHI7CiB9CiAKIGJvb2wgQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQubG9j
ayB9OwogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fY2xpZW50LnBlbmRpbmdVcGRhdGUsIGZh
bHNlKTsKIH0KIAogdm9pZCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQubG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKICAgICBpZiAobV9jbGllbnQuY2xp
ZW50KQogICAgICAgICBtX2NsaWVudC5jbGllbnQtPnN3YXBCdWZmZXJzSWZOZWVkZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5n
VGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDFhOGU2OTgzNDQ4ZDYyMTJlMjllYjIwNjA2MDBk
NGEzYjZjOTQ0ZTYuLjk4M2YzMWZkYTdmZTFjYzY4MDIyZDZiY2NmNzJlZDUxOTUxYTY2MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2lu
Z1RleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBJbWFnZUJhY2tpbmdUZXh0
dXJlTWFwcGVySW1wbDo6fkltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsKCkgPSBkZWZhdWx0
OwogCiB2b2lkIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV91cGRhdGUubG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdXBkYXRlLmxvY2sgfTsKIAogICAgIC8vIElmIHRoZSB1cGRhdGUgaGFwcGVucyBmb3Ig
dGhlIHNhbWUgaW1hZ2UgYW5kIHRoZXJlJ3Mgbm8gYnVmZmVyLCBrZWVwIHRoZSBjdXJyZW50IG9u
ZQogICAgIC8vIHNvIGl0IGNhbiBiZSByZWNlaXZlZCBieSB0aGUgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLiBJbiB0aGF0IGNhc2Ugd2Ugb25seSBuZWVkIHRvIHVwZGF0ZQpAQCAtNjEsNyArNjEs
NyBAQCB2b2lkIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiAK
IGF1dG8gSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OnRha2VVcGRhdGUoKSAtPiBVcGRh
dGUKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogICAgIHJldHVybiBXVEZNb3ZlKG1fdXBkYXRlLnVw
ZGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXll
ci5jcHAKaW5kZXggODU5YTA0NWI3MGMyMmY2ODM2YTNlMzcxMzU2MjI3MjY2NmMxYTQyNS4uZjhi
MTI1YjUyNDhiOTA2YzUzYWE4YTUyODk4MDlkOWEyOWNmNDhmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQog
ICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDApOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlciht
X3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkgfTsKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJv
eHktPnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3Ms
IG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggZjY3OWY2NGVmMDEw
ZjAxODA1NDkyYWM0ODQ4YmYxNzVkNzNlYzkwNy4uYTQ1OTc1M2YxNzNlMWI2YjUwZDkzMmM4NGVi
YWY2YmMyMTU1YmViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKGNvbnN0CiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bG9hZChjb25zdCBTdHJpbmcm
IHVybCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2FjaGVkTmF0dXJh
bFNpemVMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2FjaGVkTmF0dXJhbFNpemVM
b2NrIH07CiAgICAgICAgIG1fY2FjaGVkTmF0dXJhbFNpemUgPSBGbG9hdFNpemUoKTsKICAgICB9
CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbjo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIAogRmxvYXRTaXplIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bmF0dXJhbFNpemUoKSBjb25zdAogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fY2FjaGVkTmF0dXJhbFNpemVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jYWNoZWROYXR1cmFsU2l6ZUxvY2sgfTsKICAgICByZXR1cm4gbV9jYWNoZWROYXR1cmFs
U2l6ZTsKIH0KIApAQCAtNjQ1LDIxICs2NDUsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OmludmFsaWRhdGVGcmFtZVZpZXcoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YWRkTGlzdGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciog
bGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleExpc3RlbmVycyk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXhMaXN0ZW5lcnMgfTsKIAogICAgIG1fbGlzdGVuZXJz
LmFkZChsaXN0ZW5lcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpyZW1vdmVMaXN0ZW5lcihNZWRpYVBsYXllckxpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4TGlzdGVuZXJzKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleExpc3RlbmVycyB9OwogCiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVy
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURl
bGV0ZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4TGlzdGVuZXJzIH07CiAKICAgICBmb3IgKEhhc2hTZXQ8
TWVkaWFQbGF5ZXJMaXN0ZW5lcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbGlzdGVuZXJzLmJl
Z2luKCk7IGl0ICE9IG1fbGlzdGVuZXJzLmVuZCgpOyArK2l0KQogICAgICAgICAoKml0KS0+b25N
ZWRpYVBsYXllckRlbGV0ZWQoKTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVsZXRlZCgpCiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzZXROYXR1cmFsU2l6ZShjb25zdCBGbG9hdFNpemUm
IHNpemUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NhY2hlZE5hdHVyYWxTaXplTG9jayB9OwogICAgIG1f
Y2FjaGVkTmF0dXJhbFNpemUgPSBzaXplOwogfQogCkBAIC05MTAsNyArOTEwLDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFz
eW5jQ2FsbGJhY2s6OkdldFAKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Okludm9rZShfX1JQQ19faW5f
b3B0IElNRkFzeW5jUmVzdWx0ICpwQXN5bmNSZXN1bHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICgh
bV9tZWRpYVBsYXllcikKICAgICAgICAgcmV0dXJuIFNfT0s7CkBAIC05MjUsNyArOTI1LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OkFzeW5jQ2FsbGJhY2s6Okludm8KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Om9uTWVkaWFQbGF5ZXJEZWxldGVkKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9
OwogCiAgICAgbV9tZWRpYVBsYXllciA9IG51bGxwdHI7CiB9CkBAIC05OTksNyArOTk5LDcgQEAg
VUxPTkcgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6UmVsZWFzZSgpCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0YXJ0KE1GVElNRSBobnNTeXN0ZW1U
aW1lLCBMT05HTE9ORyBsbENsb2NrU3RhcnRPZmZzZXQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAvLyBBZnRl
ciBzaHV0ZG93biwgd2UgY2Fubm90IHN0YXJ0LgogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRk
b3duKCk7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydChNRgogCiBI
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVz
ZW50ZXI6Ok9uQ2xvY2tTdG9wKE1GVElNRSBobnNTeXN0ZW1UaW1lKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAg
SFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTEw
MzgsNyArMTAzOCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0b3AoTUZUCiAKIEhSRVNVTFQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9j
a1BhdXNlKE1GVElNRSBobnNTeXN0ZW1UaW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgLy8gQWZ0ZXIgc2h1
dGRvd24sIHdlIGNhbm5vdCBwYXVzZS4KICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigp
OwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2UoTUYKIAogSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpPbkNsb2NrUmVzdGFydChNRlRJTUUgaG5zU3lzdGVtVGltZSkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIEhS
RVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CiAgICAgaWYgKEZBSUxFRChocikpCkBAIC0xMDY5
LDcgKzEwNjksNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tSZXN0YXJ0KAogCiBIUkVTVUxUIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tT
ZXRSYXRlKE1GVElNRSBobnNTeXN0ZW1UaW1lLCBmbG9hdCByYXRlKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAg
SFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTEw
ODQsNyArMTA4NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1NldFJhdGUoCiAKIEhSRVNVTFQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vz
c01lc3NhZ2UoTUZWUF9NRVNTQUdFX1RZUEUgZU1lc3NhZ2UsIFVMT05HX1BUUiB1bFBhcmFtKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKQEAgLTExMjcsNyArMTEyNyw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2UoCiAK
IEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6R2V0Q3VycmVudE1lZGlhVHlwZShfT3V0cHRyXyAgSU1GVmlkZW9NZWRpYVR5cGUg
KipwcE1lZGlhVHlwZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghcHBNZWRpYVR5cGUpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBIUkVTVUxUIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkluaXRTZXJ2
aWNlUG9pbgogCiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmIChpc0Fj
dGl2ZSgpKQogICAgICAgICByZXR1cm4gTUZfRV9JTlZBTElEUkVRVUVTVDsKQEAgLTExOTQsNyAr
MTE5NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0
b21WaWRlb1ByZXNlbnRlcjo6SW5pdFNlcnZpY2VQb2luCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UmVsZWFzZVNlcnZp
Y2VQb2ludGVycygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBtX3JlbmRlclN0YXRlID0gUmVuZGVyU3RhdGVT
aHV0ZG93bjsKIApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpTaHV0ZG93bk9iamVjdCgK
IAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpTZXRWaWRlb1dpbmRvdyhIV05EIGh3bmRWaWRlbykKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAg
IGlmICghSXNXaW5kb3coaHduZFZpZGVvKSkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsK
QEAgLTEyNzEsNyArMTI3MSw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3coCiAKIEhSRVNVTFQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6
R2V0VmlkZW9XaW5kb3coSFdORCogcGh3bmRWaWRlbykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghcGh3
bmRWaWRlbykKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTEyOTcsNyArMTI5Nyw3IEBA
IHN0YXRpYyBIUkVTVUxUIHNldE1peGVyU291cmNlUmVjdChJTUZUcmFuc2Zvcm0qIG1peGVyLCBj
b25zdCBNRlZpZGVvTm9ybWFsaXplZFJlCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3NpdGlvbihjb25z
dCBNRlZpZGVvTm9ybWFsaXplZFJlY3QqIHBucmNTb3VyY2UsIGNvbnN0IExQUkVDVCBwcmNEZXN0
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCiAgICAgLy8gRmlyc3QsIGNoZWNrIHRoYXQgdGhlIHBhcmFtZXRlcnMgYXJl
IHZhbGlkLgogCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVvUG9zaXRpbwog
CiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9Q
cmVzZW50ZXI6OkdldFZpZGVvUG9zaXRpb24oTUZWaWRlb05vcm1hbGl6ZWRSZWN0KiBwbnJjU291
cmNlLCBMUFJFQ1QgcHJjRGVzdCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghcG5yY1NvdXJjZSB8fCAh
cHJjRGVzdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTEzNzksNyArMTM3OSw3IEBA
IEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6R2V0VmlkZW9Qb3NpdGlvCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UmVwYWludFZpZGVvKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKIAogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CiAgICAgaWYgKEZBSUxFRCho
cikpCkBAIC0yMTk1LDcgKzIxOTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Om5vdGlmeUV2ZW50KGxvbmcgRQogCiBIUkVT
VUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpn
ZXRTYW1wbGUoQ09NUHRyPElNRlNhbXBsZT4mIHNhbXBsZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICgh
bV9pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIE1GX0VfTk9UX0lOSVRJQUxJWkVEOwpAQCAt
MjIxNSw3ICsyMjE1LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OlZpZGVvU2FtcGxlUG9vbDo6cmV0dXJuU2FtcGxlKElNRlNhbXAKICAgICBpZiAoIXNhbXBs
ZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX2luaXRp
YWxpemVkKQogICAgICAgICByZXR1cm4gTUZfRV9OT1RfSU5JVElBTElaRUQ7CkBAIC0yMjI3LDcg
KzIyMjcsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Vmlk
ZW9TYW1wbGVQb29sOjpyZXR1cm5TYW1wbGUoSU1GU2FtcAogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjphcmVTYW1wbGVzUGVuZGluZygp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBGQUxT
RTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKCkKIAogSFJFU1VMVCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6aW5pdGlh
bGl6ZShWaWRlb1NhbXBsZUxpc3QmIHNhbXBsZXMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAobV9pbml0
aWFsaXplZCkKICAgICAgICAgcmV0dXJuIE1GX0VfSU5WQUxJRFJFUVVFU1Q7CkBAIC0yMjU0LDcg
KzIyNTQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Vmlk
ZW9TYW1wbGVQb29sOjppbml0aWFsaXplKFZpZGVvU2FtcAogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpjbGVhcigpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAK
ICAgICBtX3ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKICAgICBtX2luaXRpYWxpemVkID0gZmFs
c2U7CkBAIC0yMzMzLDcgKzIzMzMsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnN0b3BTY2hlZHVsZXIoKQogICAgIC8vIFdhaXQg
Zm9yIHRoZSBzY2hlZHVsZXIgdGhyZWFkIHRvIGZpbmlzaC4KICAgICA6OldhaXRGb3JTaW5nbGVP
YmplY3QobV9zY2hlZHVsZXJUaHJlYWQuZ2V0KCksIElORklOSVRFKTsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAg
bV9zY2hlZHVsZWRTYW1wbGVzLmNsZWFyKCk7CiAgICAgbV9zY2hlZHVsZXJUaHJlYWQuY2xlYXIo
KTsKQEAgLTIzODQsNyArMjM4NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpWaWRlb1NjaGVkdWxlcjo6c2NoZWR1bGVTYW1wbGUoSU1GU2FtCiAgICAgICAg
IG1fcHJlc2VudGVyLT5wcmVzZW50U2FtcGxlKHNhbXBsZSwgMCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIC8vIFN1Ym1pdCB0aGUgc2FtcGxlIGZvciBzY2hlZHVsaW5nLgotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIG1fc2NoZWR1bGVkU2FtcGxlcy5hcHBlbmQoc2FtcGxlKTsKIAogICAgICAgICA6OlBv
c3RUaHJlYWRNZXNzYWdlKG1fdGhyZWFkSUQsIEV2ZW50U2NoZWR1bGUsIDAsIDApOwpAQCAtMjQw
NCw3ICsyNDA0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2FtcGxlc0luUXVldWUKICAgICAgICAgQ09NUHRyPElN
RlNhbXBsZT4gc2FtcGxlOwogCiAgICAgICAgIGlmICh0cnVlKSB7Ci0gICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICAgICAgaWYgKG1fc2NoZWR1bGVkU2FtcGxlcy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzYW1wbGUgPSBtX3NjaGVkdWxlZFNhbXBs
ZXMudGFrZUZpcnN0KCk7CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnByb2Nlc3NTYW1wbGUoSU1G
U2FtcAogICAgICAgICBociA9IG1fcHJlc2VudGVyLT5wcmVzZW50U2FtcGxlKHNhbXBsZSwgcHJl
c2VudGF0aW9uVGltZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFJldHVybiB0aGUgc2FtcGxl
IHRvIHRoZSBxdWV1ZSwgc2luY2UgaXQgaXMgbm90IHJlYWR5LgotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgIG1fc2NoZWR1bGVkU2FtcGxlcy5wcmVwZW5kKHNhbXBsZSk7CiAgICAgfQogCkBAIC0yNTQw
LDcgKzI1NDAsNyBAQCBEV09SRCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZp
ZGVvU2NoZWR1bGVyOjpzY2hlZHVsZXJUaHJlYWRQcm9jUHJpdgogCiAgICAgICAgICAgICBjYXNl
IEV2ZW50Rmx1c2g6CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICAgICAgICAgICAgICBtX3NjaGVkdWxlZFNhbXBsZXMuY2xlYXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgd2FpdCA9IElORklOSVRFOwpA
QCAtMjY0OCw3ICsyNjQ4LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpzZXRWaWRlb1dpbmRvdyhIV04KICAgICBBU1NFUlQo
aHduZCAhPSBtX2h3bmQpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIG1faHduZCA9
IGh3bmQ7CiAgICAgfQogCkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldERlc3RpbmF0aW9u
UmVjdAogICAgIGlmIChFcXVhbFJlY3QoJnJjRGVzdCwgJm1fZGVzdFJlY3QpKQogICAgICAgICBy
ZXR1cm4gU19PSzsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgbV9kZXN0UmVjdCA9IHJjRGVzdDsKIApAQCAtMjY4
Miw3ICsyNjgyLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkRpcmVjdDNEUHJlc2VudGVyOjpjcmVhdGVWaWRlb1NhbXBsZXMKICAgICAgICAgcmV0dXJuIE1G
X0VfVU5FWFBFQ1RFRDsKIAogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAKQEAg
LTI3MjMsNyArMjcyMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpEaXJlY3QzRFByZXNlbnRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKIEhSRVNVTFQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y2hlY2tEZXZp
Y2VTdGF0ZShEZXZpY2VTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0g
bV9kZXZpY2UtPkNoZWNrRGV2aWNlU3RhdGUobV9od25kKTsKIApAQCAtMjc2NCw3ICsyNzY0LDcg
QEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJl
c2VudGVyOjpwcmVzZW50U2FtcGxlKElNRlMKIHsKICAgICBIUkVTVUxUIGhyID0gU19PSzsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogCiAgICAgQ09NUHRyPElEaXJlY3QzRFN1cmZhY2U5PiBzdXJmYWNlOwogCkBAIC0yODIy
LDcgKzI4MjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGly
ZWN0M0RQcmVzZW50ZXI6OnBhaW50Q3VycmVudEZyYW1lKFdlYgogICAgIGlmICghd2lkdGggfHwg
IWhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIW1fbWVtU3VyZmFj
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg4Nyw3ICsyODg3LDcgQEAgSFJFU1VMVCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpjcmVhdGVEM0RE
ZXZpY2UoKQogICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgIFVJTlQgYWRhcHRlcklEID0gRDNE
QURBUFRFUl9ERUZBVUxUOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIW1fZGlyZWN0M0Q5IHx8ICFtX2Rl
dmljZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBNRl9FX05PVF9JTklUSUFMSVpFRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMWMxYzI3ODY5ZTM3ZWI5ZTI4ODliYWM0Yzhh
NzU2YjBmZDI3YjUxLi5mMmNlYjAwMGFkNDA3YzRlYjYyMzU3Y2NhMGMwMjJhNWI3MWE1OTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgUmVmUHRy
PFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWwKIAogYm9vbCBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
SG9sZGVyKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgaWYg
KGluZGV4ID49IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1l
SXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogCiBib29sIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBTY2FsYWJsZUlt
YWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogCiB1
bnNpZ25lZCBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRl
cihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gMDsKICAgICAv
LyBGSVhNRTogVXNlIHRoZSBkaW1lbnNpb24gb2YgdGhlIHJlcXVlc3RlZCBmcmFtZS4KQEAgLTIw
MSw3ICsyMDEsNyBAQCB1bnNpZ25lZCBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogCiBTZWNvbmRzIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkp
CiAgICAgICAgIHJldHVybiAwX3M7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBTZWNvbmRzIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
CiAKIFBsYXRmb3JtSW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNh
dXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRp
bWVuc2lvbiwganVzdCBiYWlsLgogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGE2MTU3ZWYzYTg3
NGZjY2YzMjAwZTlhZjc0MDZlZTQ4Nzk4OGNhZjMuLmZjZjBhNjExNWRkODZjMTQ3NTliMmIyMWE3
YzcxYzc4ZTlmNGNmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzIsNyArNzIs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAg
ICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9y
KQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBmMTExN2ZmMjQ3MGNmYzI3ZjQ1OTEzYTc0ODI2MjVl
MDllNzNlZWNmLi45MmRlMWRjNWY2MDU2ZDYxYTliMzJmMjYyOTdkYjdkYWVhZjQzODU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2V0VGlsZXNPcGFxdWUoYm9vbCBv
cGFxdWUpCiAgICAgaWYgKG1fdGlsZXNPcGFxdWUgPT0gb3BhcXVlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAKICAgICBtX3RpbGVzT3BhcXVlID0gb3BhcXVlOwogICAgIG1f
em9vbWVkT3V0VGlsZUdyaWQtPnVwZGF0ZVRpbGVPcGFjaXR5KCk7CkBAIC0xNDQsNyArMTQ0LDcg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRvTGF5b3V0VGlsZXMoKQogICAgIGlmIChpc1RpbGVD
cmVhdGlvblN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAg
ICAgTGVnYWN5VGlsZUdyaWQqIGFjdGl2ZUdyaWQgPSBhY3RpdmVUaWxlR3JpZCgpOwogICAgIC8v
IEV2ZW4gdGhvdWdoIHdlIGFyZW4ndCBhY3R1YWxseSBjcmVhdGluZyB0aWxlcyBpbiB0aGUgaW5h
Y3RpdmUgZ3JpZCwgd2UKICAgICAvLyBzdGlsbCBuZWVkIHRvIGRyb3AgaW52YWxpZCB0aWxlcyBp
biByZXNwb25zZSB0byBhIGxheW91dC4KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIExlZ2FjeVRp
bGVDYWNoZTo6c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlmICgha2VlcHNab29t
ZWRPdXRUaWxlcygpICYmICFpc1RpbGVJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSkgewogICAgICAg
ICAvLyBUaWxlIGludmFsaWRhdGlvbiBpcyBub3JtYWxseSBzdXNwZW5kZWQgZHVyaW5nIHpvb21p
bmcgYnkgVUlLaXQgYnV0IHNvbWUgYXBwbGljYXRpb25zCiAgICAgICAgIC8vIHVzaW5nIGN1c3Rv
bSBzY3JvbGx2aWV3cyBtYXkgem9vbSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGNhbGxiYWNrcy4g
SW52YWxpZGF0ZSB0aGUgdGlsZXMgZXhwbGljaXRseS4KLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV90aWxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsK
ICAgICAgICAgYWN0aXZlVGlsZUdyaWQoKS0+ZHJvcEFsbFRpbGVzKCk7CiAgICAgICAgIGFjdGl2
ZVRpbGVHcmlkKCktPmNyZWF0ZVRpbGVzKENvdmVyVmlzaWJsZU9ubHkpOwogICAgIH0KQEAgLTIw
OSw3ICsyMDksNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQog
ICAgIEFTU0VSVChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSB8fCBtX3BlbmRpbmdTY2FsZSk7CiAg
ICAgQVNTRVJUKG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCk7CiAgICAgCi0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9
OwogCiAgICAgaWYgKG1fcGVuZGluZ1pvb21lZE91dFNjYWxlKSB7CiAgICAgICAgIG1fem9vbWVk
T3V0VGlsZUdyaWQtPnNldFNjYWxlKG1fcGVuZGluZ1pvb21lZE91dFNjYWxlKTsKQEAgLTI5OCw3
ICsyOTgsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3coKQogICAgIGlm
IChtX3RpbGluZ01vZGUgPT0gWm9vbWluZykKICAgICAgICAgbV90aWxpbmdNb2RlID0gTWluaW1h
bDsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBMZWdhY3lUaWxlR3JpZCogYWN0aXZlR3JpZCA9IGFj
dGl2ZVRpbGVHcmlkKCk7CiAgICAgaWYgKGFjdGl2ZUdyaWQtPmNoZWNrRG9TaW5nbGVUaWxlTGF5
b3V0KCkpIHsKICAgICAgICAgbV90aWxpbmdNb2RlID0gc2F2ZWRUaWxpbmdNb2RlOwpAQCAtMzEx
LDE0ICszMTEsMTQgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93KCkKIHZv
aWQgTGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vd0ZvclJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90
aWxlTXV0ZXggfTsKIAogICAgIGFjdGl2ZVRpbGVHcmlkKCktPmFkZFRpbGVzQ292ZXJpbmdSZWN0
KHJlY3QpOwogfQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRp
bGVzKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAgICAgcmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzSW50
ZXJuYWwoKTsKIH0KIApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpy
ZW1vdmVBbGxOb25WaXNpYmxlVGlsZXNJbnRlcm5hbCgpCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hl
OjpyZW1vdmVBbGxUaWxlcygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgIG1fem9vbWVkT3V0VGls
ZUdyaWQtPmRyb3BBbGxUaWxlcygpOwogICAgIGlmIChtX3pvb21lZEluVGlsZUdyaWQpCiAgICAg
ICAgIG1fem9vbWVkSW5UaWxlR3JpZC0+ZHJvcEFsbFRpbGVzKCk7CkBAIC0zNDgsNyArMzQ4LDcg
QEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVzKCkKIAogdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAg
IGlmICgha2VlcHNab29tZWRPdXRUaWxlcygpKQogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlk
LT5kcm9wQWxsVGlsZXMoKTsKICAgICBpZiAobV96b29tZWRJblRpbGVHcmlkKQpAQCAtMzU3LDEz
ICszNTcsMTMgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcygp
CiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRDb250ZW50UmVwbGFjZW1lbnRJbWFnZShSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudFJlcGxhY2VtZW50SW1hZ2UpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4IH07CiAgICAgbV9jb250ZW50
UmVwbGFjZW1lbnRJbWFnZSA9IGNvbnRlbnRSZXBsYWNlbWVudEltYWdlOwogfQogCiBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gTGVnYWN5VGlsZUNhY2hlOjpjb250ZW50UmVwbGFjZW1lbnRJbWFnZSgp
IGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jb250ZW50UmVwbGFjZW1lbnRJbWFn
ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11
dGV4IH07CiAgICAgcmV0dXJuIG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2U7CiB9CiAKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJl
ZCgpCiB7CiAgICAgaWYgKGlzVGlsZUNyZWF0aW9uU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAgICAgY3JlYXRlVGlsZXNJbkFjdGl2ZUdyaWQoQ292ZXJTcGVj
dWxhdGl2ZSk7CiB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JQZW5kaW5nUmVwYWludCgpCiAKIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2F2ZWREaXNwbGF5UmVjdE11dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zYXZlZERpc3BsYXlSZWN0TXV0ZXggfTsKICAgICBib29sIGFk
ZGVkRmlyc3RSZWN0ID0gbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCk7CiAgICAgbV9zYXZl
ZERpc3BsYXlSZWN0cy5hcHBlbmQoZGlydHlSZWN0KTsKICAgICBpZiAoIWFkZGVkRmlyc3RSZWN0
KQpAQCAtNjgzLDcgKzY4Myw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjp1cGRhdGVUaWxpbmdN
b2RlKCkKICAgICAgICAgaWYgKG1fdGlsaW5nTW9kZSA9PSBEaXNhYmxlZCkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgICAgICBjcmVhdGVUaWxlc0lu
QWN0aXZlR3JpZChDb3ZlclZpc2libGVPbmx5KTsKIAogICAgICAgICBpZiAoIW1fc2F2ZWREaXNw
bGF5UmVjdHMuaXNFbXB0eSgpKQpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNh
Y2hlOjpzZXRUaWxpbmdNb2RlKFRpbGluZ01vZGUgdGlsaW5nTW9kZSkKICAgICBpZiAoKG1fcGVu
ZGluZ1pvb21lZE91dFNjYWxlIHx8IG1fcGVuZGluZ1NjYWxlKSAmJiBtX3RpbGluZ01vZGUgIT0g
RGlzYWJsZWQpCiAgICAgICAgIGNvbW1pdFNjYWxlQ2hhbmdlKCk7CiAgICAgZWxzZSBpZiAod2Fz
Wm9vbWluZykgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgICAgICBicmluZ0FjdGl2ZVRp
bGVHcmlkVG9Gcm9udCgpOwogICAgIH0KIApAQCAtNzQ0LDcgKzc0NCw3IEBAIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpkb1BlbmRpbmdSZXBhaW50cygpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
aXNUaWxlSW52YWxpZGF0aW9uU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11
dGV4IH07CiAgICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogfQogCkBAIC03NTUsNyArNzU1
LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5UmVjdHMoKQogCiAg
ICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zYXZlZERpc3BsYXlSZWN0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9z
YXZlZERpc3BsYXlSZWN0TXV0ZXggfTsKICAgICAgICAgbV9zYXZlZERpc3BsYXlSZWN0cy5zd2Fw
KHJlY3RzKTsKICAgICB9CiAgICAgc2l6ZV90IHNpemUgPSByZWN0cy5zaXplKCk7CkBAIC03Nzgs
NyArNzc4LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnByZXBhcmVUb0RyYXcoKQogICAgIFtb
bV93aW5kb3cgY29udGVudFZpZXddIHZpZXdXaWxsRHJhd107CiAKICAgICBpZiAoIW1fc2F2ZWRE
aXNwbGF5UmVjdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGls
ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAgICAgICAg
IGZsdXNoU2F2ZWREaXNwbGF5UmVjdHMoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCmluZGV4IGFjOGM2NDhkNmIz
ZjE2MzQ2MTQxZGU2YTRkZjE5Njk5YjY1ZWZkZTcuLjJmNDUyNTZmNDgwMzkwMmJjODFkMmU5OWM3
Y2Q4NGE3MjhkM2EyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlTGF5ZXJQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlTGF5ZXJQb29sLm1tCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTGVnYWN5VGlsZUxh
eWVyUG9vbDo6YWRkTGF5ZXIoY29uc3QgUmV0YWluUHRyPExlZ2FjeVRpbGVMYXllcj4mIGxheWVy
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sYXll
clBvb2xNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKICAg
ICBsaXN0T2ZMYXllcnNXaXRoU2l6ZShsYXllclNpemUpLnByZXBlbmQobGF5ZXIpOwogICAgIG1f
dG90YWxCeXRlcyArPSBieXRlc0JhY2tpbmdMYXllcldpdGhQaXhlbFNpemUobGF5ZXJTaXplKTsK
IApAQCAtOTQsNyArOTQsNyBAQCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiBMZWdhY3lUaWxl
TGF5ZXJQb29sOjp0YWtlTGF5ZXJXaXRoU2l6ZShjb25zdCBJbnRTaXplJgogewogICAgIGlmICgh
Y2FuUmV1c2VMYXllcldpdGhTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xheWVyUG9vbE11dGV4IH07CiAgICAgTGF5ZXJMaXN0JiByZXVzZUxpc3QgPSBsaXN0T2ZMYXll
cnNXaXRoU2l6ZShzaXplLCBNYXJrQXNVc2VkKTsKICAgICBpZiAocmV1c2VMaXN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZXRhaW5QdHI8TGVn
YWN5VGlsZUxheWVyPiBMZWdhY3lUaWxlTGF5ZXJQb29sOjp0YWtlTGF5ZXJXaXRoU2l6ZShjb25z
dCBJbnRTaXplJgogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnNldENhcGFjaXR5KHVuc2ln
bmVkIGNhcGFjaXR5KQogewotICAgIExvY2tIb2xkZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xN
dXRleCk7CisgICAgTG9ja2VyIHJldXNlTG9ja2VyIHsgbV9sYXllclBvb2xNdXRleCB9OwogICAg
IGlmIChjYXBhY2l0eSA8IG1fY2FwYWNpdHkpCiAgICAgICAgIHNjaGVkdWxlUHJ1bmUoKTsKICAg
ICBtX2NhcGFjaXR5ID0gY2FwYWNpdHk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBMZWdhY3lU
aWxlTGF5ZXJQb29sOjpzY2hlZHVsZVBydW5lKCkKIAogdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29s
OjpwcnVuZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKICAgICBBU1NFUlQobV9uZWVk
c1BydW5lKTsKICAgICBtX25lZWRzUHJ1bmUgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBzaHJpbmtU
byA9IGRlY2F5ZWRDYXBhY2l0eSgpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgTGVnYWN5VGls
ZUxheWVyUG9vbDo6cHJ1bmUoKQogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OmRyYWluKCkK
IHsKLSAgICBMb2NrSG9sZGVyIHJldXNlTG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIExv
Y2tlciByZXVzZUxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKICAgICBtX3JldXNlTGlzdHMu
Y2xlYXIoKTsKICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmNsZWFyKCk7CiAgICAgbV90b3RhbEJ5
dGVzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FL
V2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0K
aW5kZXggNmNhZTA4YmEzYjk2M2QyNTk3MWRmYTNjNDNhYWRkMTExYzE1NTVkMS4uNmU1ZDgzMzMw
MzEwODQzYjNmMmQwOTE0ZmY5NDczMmI1ODRlOGUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KQEAgLTM4NCwxNCArMzg0LDE0IEBAIC0gKHZvaWQp
c2VuZE1vdXNlTW92ZUV2ZW50OihXZWJFdmVudCAqKWV2ZW50IGNvbnRlbnRDaGFuZ2U6KFdLQ29u
dGVudENoYW5nZSAqKWFDCiAKIC0gKHZvaWQpc2V0RXhwb3NlZFNjcm9sbFZpZXdSZWN0OihDR1Jl
Y3QpZXhwb3NlZFNjcm9sbFZpZXdSZWN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJl9leHBv
c2VkU2Nyb2xsVmlld1JlY3RMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgX2V4cG9zZWRTY3Jv
bGxWaWV3UmVjdExvY2sgfTsKICAgICBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0ID0gZXhwb3NlZFNj
cm9sbFZpZXdSZWN0OwogfQogCiAtIChDR1JlY3QpZXhwb3NlZFNjcm9sbFZpZXdSZWN0CiB7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmX2V4cG9zZWRTY3JvbGxWaWV3UmVjdExv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgX2V4cG9zZWRTY3JvbGxWaWV3UmVjdExvY2sg
fTsKICAgICAgICAgaWYgKCFDR1JlY3RJc051bGwoX2V4cG9zZWRTY3JvbGxWaWV3UmVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gX2V4cG9zZWRTY3JvbGxWaWV3UmVjdDsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggMTlm
ZmRlZWI1MWQ2Zjg3MWVkN2E2Y2U5YzU1Y2Q5NDRkNmIyNDExZi4uMDAyNjY0ZTNlMTY2OWZmMzI4
ZGI5Yjk1MjkxYTg4YjUwNDE3OWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNjY4LDcgKzY2OCw3IEBAIHN0YXRpYyB2b2lk
KiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgcGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJs
ZWQgPSBfQ0ZSdW5Mb29wU2V0UGVyQ2FsbG91dEF1dG9yZWxlYXNlcG9vbEVuYWJsZWQoWUVTKTsK
IAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoc3RhcnR1cExvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgc3RhcnR1cExvY2sgfTsKICAgICAgICAgc3RhcnR1cENvbmRpdGlv
bi5ub3RpZnlPbmUoKTsKICAgICB9CiAKQEAgLTcyMiw3ICs3MjIsNyBAQCBzdGF0aWMgdm9pZCBT
dGFydFdlYlRocmVhZCgpCiAKICAgICAvLyBXYWl0IGZvciB0aGUgd2ViIHRocmVhZCB0byBzdGFy
dHVwIGNvbXBsZXRlbHkgYmVmb3JlIHdlIGNvbnRpbnVlLgogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIoc3RhcnR1cExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc3RhcnR1
cExvY2sgfTsKIAogICAgICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRv
IHdvcmtlcnMgJiB0aGUgd2ViIHRocmVhZC4KICAgICAgICAgRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50OjpzaW5nbGV0b24oKS5zYXZlTWFpblRocmVhZEVudmlyb25tZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJS
VEMuY3BwCmluZGV4IDVjMjYyYjQyNmZjNWY0Mzg5ZWE0NmZiNmU5MThhNTcyYWFiN2U0MDUuLjNi
OTA5NTg1OGY1ZmVhNGY4ZWQ2ZDRkMmZhMjBhMmViNWIxYTgwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGli
V2ViUlRDOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lCiAgICAgfQogCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2FkYXB0ZXJNdXRleCk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OwogICAgICAgICBjb25zdCBhdXRvJiBz
YW1wbGUgPSBkYXRhLmdldFNhbXBsZSgpOwogICAgICAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKICAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaCht
X2FkYXB0ZXIuZ2V0KCksIGdzdF9idWZmZXJfcmVmKGJ1ZmZlcikpOwpAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDOjpwdWxsQXVkaW9E
YXRhKCkKICAgICBzaXplX3Qgb3V0Q2h1bmtTYW1wbGVDb3VudCA9IExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpjaHVua1NhbXBsZUNvdW50OwogICAgIHNpemVfdCBvdXRCdWZmZXJTaXplID0gb3V0Q2h1
bmtTYW1wbGVDb3VudCAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uYnBmOwogCi0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9hZGFwdGVyTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Fk
YXB0ZXJNdXRleCB9OwogICAgIHNpemVfdCBpbkNodW5rU2FtcGxlQ291bnQgPSBnc3RfYXVkaW9f
Y29udmVydGVyX2dldF9pbl9mcmFtZXMobV9zYW1wbGVDb252ZXJ0ZXIuZ2V0KCksIG91dENodW5r
U2FtcGxlQ291bnQpOwogICAgIHNpemVfdCBpbkJ1ZmZlclNpemUgPSBpbkNodW5rU2FtcGxlQ291
bnQgKiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uYnBmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApp
bmRleCBjY2Q2YWM1NjIyMzFmZjhjMjk4ZmQ2YzQ1MzQxNjA5OWUxZDE4ZDM2Li5hNmYyYjczYzE3
ZGZjZjg2Mjg0YzhjNWRlNTYyMDZhOWE1MDg3NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAg
LTE4OSw3ICsxODksNyBAQCBzdGF0aWMgYm9vbCBvcGVuTmV4dFN0cmVhbShGb3JtU3RyZWFtRmll
bGRzKiBmb3JtKQogewogICAgIC8vIENGUmVhZFN0cmVhbU9wZW4oKSBjYW4gY2F1c2UgdGhpcyBm
dW5jdGlvbiB0byBiZSByZS1lbnRlcmVkIGZyb20gYW5vdGhlciB0aHJlYWQgYmVmb3JlIGl0IHJl
dHVybnMuCiAgICAgLy8gT25lIGV4YW1wbGUgd2hlbiB0aGlzIGNhbiBvY2N1ciBpcyB3aGVuIHRo
ZSBzdHJlYW0gYmVpbmcgb3BlbmVkIGhhcyBubyBkYXRhLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzIz
NTUwMjY5Pi4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVk
T3JDbG9zZWRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZm9ybS0+c3RyZWFtSXNCZWluZ09w
ZW5lZE9yQ2xvc2VkTG9jayB9OwogCiAgICAgLy8gU2tpcCBvdmVyIGFueSBzdHJlYW1zIHdlIGNh
bid0IG9wZW4uCiAgICAgaWYgKCFhZHZhbmNlQ3VycmVudFN0cmVhbShmb3JtKSkKQEAgLTIyOSw3
ICsyMjksNyBAQCBzdGF0aWMgdm9pZCBmb3JtRmluYWxpemUoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVh
bSwgdm9pZCogY29udGV4dCkKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Zvcm1dIHsKICAgICAg
ICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZm9ybS0+c3RyZWFtSXNCZWluZ09w
ZW5lZE9yQ2xvc2VkTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZm9ybS0+c3Ry
ZWFtSXNCZWluZ09wZW5lZE9yQ2xvc2VkTG9jayB9OwogICAgICAgICAgICAgY2xvc2VDdXJyZW50
U3RyZWFtKGZvcm0pOwogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBmb3JtOwpAQCAtMjk5LDcg
KzI5OSw3IEBAIHN0YXRpYyBCb29sZWFuIGZvcm1DYW5SZWFkKENGUmVhZFN0cmVhbVJlZiBzdHJl
YW0sIHZvaWQqIGNvbnRleHQpCiBzdGF0aWMgdm9pZCBmb3JtQ2xvc2UoQ0ZSZWFkU3RyZWFtUmVm
LCB2b2lkKiBjb250ZXh0KQogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNf
Y2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
Zm9ybS0+c3RyZWFtSXNCZWluZ09wZW5lZE9yQ2xvc2VkTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2sgfTsKIAogICAgIGNsb3Nl
Q3VycmVudFN0cmVhbShmb3JtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQ5YTMxOTRhYWRiNmNmNzllMTA4
Mzg4MTcyODJiN2FjMjRiZmQxZWEuLjE3NzI2MGNmNDEyZjJkYjc5YTlkMGQ1YWQ4YzE5NmZkYWI3
MTJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNv
bXBsZXRlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHZvaWQgQ3VybFJlcXVlc3Q6OnNldFJlcXVlc3RQ
YXVzZWQoYm9vbCBwYXVzZWQpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9w
YXVzZVN0YXRlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXVzZVN0YXRlTXV0
ZXggfTsKIAogICAgICAgICBhdXRvIHNhdmVkU3RhdGUgPSBzaG91bGRCZVBhdXNlZCgpOwogICAg
ICAgICBtX3Nob3VsZFN1c3BlbmQgPSBtX2lzUGF1c2VkT2ZSZXF1ZXN0ID0gcGF1c2VkOwpAQCAt
NjU3LDcgKzY1Nyw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldFJlcXVlc3RQYXVzZWQoYm9vbCBw
YXVzZWQpCiB2b2lkIEN1cmxSZXF1ZXN0OjpzZXRDYWxsYmFja1BhdXNlZChib29sIHBhdXNlZCkK
IHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3BhdXNlU3RhdGVNdXRleCk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OwogCiAgICAgICAgIGF1
dG8gc2F2ZWRTdGF0ZSA9IHNob3VsZEJlUGF1c2VkKCk7CiAgICAgICAgIG1faXNQYXVzZWRPZkNh
bGxiYWNrID0gcGF1c2VkOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnBh
dXNlZFN0YXR1c0NoYW5nZWQoKQogCiAgICAgICAgIGJvb2wgbmVlZENhbmNlbCB7IGZhbHNlIH07
CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3BhdXNlU3RhdGVNdXRl
eCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXVzZVN0YXRlTXV0ZXggfTsKICAg
ICAgICAgICAgIGJvb2wgcGF1c2VkID0gc2hvdWxkQmVQYXVzZWQoKTsKIAogICAgICAgICAgICAg
aWYgKGlzSGFuZGxlUGF1c2VkKCkgPT0gcGF1c2VkKQpAQCAtNzQyLDIwICs3NDIsMjAgQEAgTmV0
d29ya0xvYWRNZXRyaWNzIEN1cmxSZXF1ZXN0OjpuZXR3b3JrTG9hZE1ldHJpY3MoKQogCiB2b2lk
IEN1cmxSZXF1ZXN0OjplbmFibGVEb3dubG9hZFRvRmlsZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9kb3dubG9hZE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11
dGV4IH07CiAgICAgbV9pc0VuYWJsZWREb3dubG9hZFRvRmlsZSA9IHRydWU7CiB9CiAKIGNvbnN0
IFN0cmluZyYgQ3VybFJlcXVlc3Q6OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9kb3dubG9hZE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9k
b3dubG9hZE11dGV4IH07CiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAogdm9p
ZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2Rvd25sb2FkTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4
IH07CiAKICAgICAgICAgaWYgKCFtX2lzRW5hYmxlZERvd25sb2FkVG9GaWxlKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogCiB2
b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9kb3dubG9hZE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11
dGV4IH07CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgxLDcgKzc4MSw3
IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKIAogdm9pZCBDdXJsUmVx
dWVzdDo6Y2xlYW51cERvd25sb2FkRmlsZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9k
b3dubG9hZE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07CiAK
ICAgICBpZiAoIW1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCmluZGV4IDJj
ZjljODc3MWRkZDhmNTJiMmUwMDI5YzRmOTNhN2RhMTFlM2ZkMDUuLmFlODZkMmIxMmRiMmVkZTU0
NTJkOGIyYmE1YWIyMjdjYmZkOTA1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKQEAgLTYzLDI4ICs2MywyOCBA
QCB2b2lkIEN1cmxTU0xIYW5kbGU6OmNsZWFyQ0FDZXJ0SW5mbygpCiAKIHZvaWQgQ3VybFNTTEhh
bmRsZTo6YWxsb3dBbnlIVFRQU0NlcnRpZmljYXRlc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
KQogewotICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2VkSG9zdHNMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9hbGxvd2VkSG9zdHNMb2NrIH07CiAKICAgICBtX2FsbG93ZWRIb3N0cy5h
ZGRWb2lkKGhvc3QpOwogfQogCiBib29sIEN1cmxTU0xIYW5kbGU6OmNhbklnbm9yZUFueUhUVFBT
Q2VydGlmaWNhdGVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0CiB7Ci0gICAgTG9j
a0hvbGRlciBtdXRleChtX2FsbG93ZWRIb3N0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2FsbG93ZWRIb3N0c0xvY2sgfTsKIAogICAgIHJldHVybiBtX2FsbG93ZWRIb3N0cy5jb250YWlu
cyhob3N0KTsKIH0KIAogdm9pZCBDdXJsU1NMSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUlu
Zm8oY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgY29uc3QgU3RyaW5nJiBjZXJ0aWZpY2F0ZSwgY29u
c3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgTG9ja0hvbGRlciBtdXRleChtX2FsbG93ZWRDbGllbnRI
b3N0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2FsbG93ZWRDbGllbnRIb3N0c0xvY2sg
fTsKIAogICAgIG1fYWxsb3dlZENsaWVudEhvc3RzLnNldChob3N0TmFtZSwgQ2xpZW50Q2VydGlm
aWNhdGUgeyBjZXJ0aWZpY2F0ZSwga2V5IH0pOwogfQogCiBPcHRpb25hbDxDdXJsU1NMSGFuZGxl
OjpDbGllbnRDZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNh
dGUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIG11dGV4
KG1fYWxsb3dlZENsaWVudEhvc3RzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWxsb3dl
ZENsaWVudEhvc3RzTG9jayB9OwogCiAgICAgYXV0byBpdCA9IG1fYWxsb3dlZENsaWVudEhvc3Rz
LmZpbmQoaG9zdE5hbWUpOwogICAgIGlmIChpdCA9PSBtX2FsbG93ZWRDbGllbnRIb3N0cy5lbmQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmlu
ZGV4IGVhNDUzMTEwYTE4Mzk3MzdkOTc1ZmIzNWUxZTgyMDljOGVhMjAyOWYuLjE1NzdhYTYxYjJm
NTY5YjJkMTY3MmNiMjcxNzNjMmE4NmRlNGUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU1FM
aXRlRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgLy8gQVNTRVJUKG1fb3BlbmluZ1RocmVhZCA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBzcWxpdGUzKiBkYiA9IG1fZGI7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0
ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgg
fTsKICAgICAgICAgICAgIG1fZGIgPSAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3VzZVdB
TCkgewpAQCAtMjczLDcgKzI3Myw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6Om1heGltdW1T
aXplKCkKICAgICBpbnQ2NF90IG1heFBhZ2VDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9hdXRob3JpemVyTG9jayB9OwogICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsK
ICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgbWF4X3Bh
Z2VfY291bnQiX3MpOwogICAgICAgICBtYXhQYWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0ZW1l
bnQtPmNvbHVtbkludDY0KDApIDogMDsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFNRTGl0ZURh
dGFiYXNlOjpzZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpCiAgICAgQVNTRVJUKGN1cnJlbnRQ
YWdlU2l6ZSB8fCAhbV9kYik7CiAgICAgaW50NjRfdCBuZXdNYXhQYWdlQ291bnQgPSBjdXJyZW50
UGFnZVNpemUgPyBzaXplIC8gY3VycmVudFBhZ2VTaXplIDogMDsKICAgICAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdXRo
b3JpemVyTG9jayB9OwogICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogCiAgICAgYXV0byBz
dGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgbWF4X3Bh
Z2VfY291bnQgPSAiLCBuZXdNYXhQYWdlQ291bnQpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBpbnQg
U1FMaXRlRGF0YWJhc2U6OnBhZ2VTaXplKCkKICAgICAvLyBTaW5jZSB0aGUgcGFnZSBzaXplIG9m
IGEgZGF0YWJhc2UgaXMgbG9ja2VkIGluIGF0IGNyZWF0aW9uIGFuZCB0aGVyZWZvcmUgY2Fubm90
IGJlIGR5bmFtaWMsIAogICAgIC8vIHdlIGNhbiBjYWNoZSB0aGUgdmFsdWUgZm9yIGZ1dHVyZSB1
c2UKICAgICBpZiAobV9wYWdlU2l6ZSA9PSAtMSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYXV0aG9yaXpl
ckxvY2sgfTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcihmYWxzZSk7CiAgICAgICAgIAogICAg
ICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBwYWdlX3NpemUi
X3MpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFj
ZVNpemUoKQogICAgIGludDY0X3QgZnJlZWxpc3RDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9hdXRob3JpemVyTG9jayB9OwogICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNl
KTsKICAgICAgICAgLy8gTm90ZTogZnJlZWxpc3RfY291bnQgd2FzIGFkZGVkIGluIFNRTGl0ZSAz
LjQuMS4KICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEg
ZnJlZWxpc3RfY291bnQiX3MpOwpAQCAtMzQyLDcgKzM0Miw3IEBAIGludDY0X3QgU1FMaXRlRGF0
YWJhc2U6OnRvdGFsU2l6ZSgpCiAgICAgaW50NjRfdCBwYWdlQ291bnQgPSAwOwogCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sgfTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXpl
cihmYWxzZSk7CiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiUFJB
R01BIHBhZ2VfY291bnQiX3MpOwogICAgICAgICBwYWdlQ291bnQgPSBzdGF0ZW1lbnQgPyBzdGF0
ZW1lbnQtPmNvbHVtbkludDY0KDApIDogMDsKQEAgLTQyMyw3ICs0MjMsNyBAQCBpbnQgU1FMaXRl
RGF0YWJhc2U6OnJ1blZhY3V1bUNvbW1hbmQoKQogCiBpbnQgU1FMaXRlRGF0YWJhc2U6OnJ1bklu
Y3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRo
b3JpemVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sgfTsKICAg
ICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKIAogICAgIGlmICghZXhlY3V0ZUNvbW1hbmQoIlBS
QUdNQSBpbmNyZW1lbnRhbF92YWN1dW0iX3MpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIGludCBTUUxp
dGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKIAogdm9pZCBTUUxpdGVE
YXRhYmFzZTo6aW50ZXJydXB0KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNl
Q2xvc2luZ011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRl
eCB9OwogICAgIGlmIChtX2RiKQogICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKIH0K
QEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRBdXRob3JpemVyKERh
dGFiYXNlQXV0aG9yaXplciYgYXV0aG9yaXplcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAKICAgICBtX2F1dGhvcml6ZXIgPSAmYXV0aG9yaXpl
cjsKICAgICAKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpyZWxlYXNl
TWVtb3J5KCkKIAogc3RhdGljIEV4cGVjdGVkPHNxbGl0ZTNfc3RtdCosIGludD4gY29uc3RydWN0
QW5kUHJlcGFyZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IGNoYXIq
IHF1ZXJ5LCBzaXplX3QgcXVlcnlMZW5ndGgpCiB7Ci0gICAgTG9ja0hvbGRlciBkYXRhYmFzZUxv
Y2soZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpKTsKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
ZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAgICAgTE9HKFNRTERhdGFiYXNlLCAiU1FMIC0g
cHJlcGFyZSAtICVzIiwgcXVlcnkpOwogCiAgICAgLy8gUGFzcyB0aGUgbGVuZ3RoIG9mIHRoZSBz
dHJpbmcgaW5jbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciB0byBzcWxpdGUzX3ByZXBhcmVfdjI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmlu
ZGV4IGE5MmQzYWM1ZTU4NjU2ZjBiMzM2MTE1NDgyN2FiODcyYTU3ZGVlM2EuLjZkOGRjNzJlZGNi
ZDQyODg3ZTY3NzVhMTYwMjg1NDdhOTdjNjMxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNRTGl0ZVN0
YXRlbWVudDo6flNRTGl0ZVN0YXRlbWVudCgpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAo
KQogewotICAgIExvY2tIb2xkZXIgZGF0YWJhc2VMb2NrKG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRl
eCgpKTsKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4
KCkgfTsKIAogICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAgICAg
aWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVy
LmNwcAppbmRleCAwMjhjYjUzNzhhZTI0NjcxY2Q2MmE2MTRlZjk3MDNjYzY2MTQyYjQ0Li45MWI4
ODk0MWE3NmE4MDcxZDMwZDdmZWQ3NDE2M2ZiMDlmN2I4NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgV2ViSURCU2VydmVyOjpXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2UKICAgICBwb3N0VGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9
IGRpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgc3BhY2VSZXF1ZXN0ZXIgPSBXVEZNb3ZlKHNwYWNl
UmVxdWVzdGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXIgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPihzZXNzaW9uSUQsIGRpcmVjdG9y
eSwgV1RGTW92ZShzcGFjZVJlcXVlc3RlciksIG1fc2VydmVyTG9jayk7CiAgICAgfSk7CiB9CkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRPcmlnaW5zKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yCiAgICAgcG9zdFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgdG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3VudCgpXSgpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJM
b2NrIH07CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pLCBvcmlnaW5zID0gY3Jv
c3NUaHJlYWRDb3B5KG1fc2VydmVyLT5nZXRPcmlnaW5zKCkpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgICAgIH0pKTsKQEAgLTgxLDcg
KzgxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShXYWxsVGltZSBtb2RpZmljYXRpb25UaW0KICAgICBwb3N0VGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmljYXRpb25UaW1lLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldKCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzTW9kaWZpZWRTaW5jZShtb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgcG9zdFRhc2tSZXBs
eShDcm9zc1RocmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0g
V1RGTW92ZSh0b2tlbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAt
OTYsNyArOTYsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cgogICAgIHBvc3RUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbkRhdGFzID0gb3JpZ2luRGF0
YXMuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0g
bV9kYXRhVGFza0NvdW50ZXIuY291bnQoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAg
bV9zZXJ2ZXItPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5EYXRhcyk7
CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbGJhY2soKTsKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6
cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2lu
LCBjbwogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IG9sZE9yaWdpbiA9IG9sZE9yaWdpbi5pc29sYXRlZENvcHkoKSwgbmV3T3JpZ2luID0gbmV3T3Jp
Z2luLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9
IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldICgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAg
IG1fc2VydmVyLT5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4pOwogICAgICAgICBw
b3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgdG9rZW4gPSBXVEZNb3ZlKHRva2VuKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKCk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFz
ZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZl
ci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMTU1LDcgKzE1NSw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERh
dGEpOwogfQogCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2EKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
IG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAK
QEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXIt
PmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE3OSw3
ICsxNzksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDbwogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRpZEZpbmlz
aEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUluZm8pOwogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9p
ZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKIH0KIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVz
dERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiB9CiAKQEAgLTIxMSw3ICsy
MTEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KIApAQCAtMjE5LDcg
KzIxOSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Y3JlYXRlSW5k
ZXgocmVxdWVzdERhdGEsIGluZGV4SW5mbyk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7CiB9CiAKQEAgLTIzNSw3ICsyMzUs
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFt
ZSk7CiB9CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cHV0T3JBZGQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAg
bV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcldyaXRl
TW9kZSk7CiB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0UmVj
b3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgVwog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAg
ICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiB9CiAK
QEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbgogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXIt
PmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KIApAQCAt
MjY3LDcgKzI2Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0
Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiB9CiAKQEAgLTI3NSw3ICsyNzUsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29ucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKIH0KIApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJz
b3JJbmZvKTsKIH0KIApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjppdGVy
YXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICBtX3NlcnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgaXRlcmF0ZUN1cnNvckRh
dGEpOwogfQogCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmVzdGFibGlz
aFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGMKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
IG1fc2VydmVyLT5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCB0cmFuc2FjdGlvbkluZm8pOwogfQogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBXZWJJ
REJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGUKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xv
c2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMxNSw3ICszMTUsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzIzLDcgKzMy
Myw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+YWJvcnRPcGVuQW5k
VXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwogfQogCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRp
ZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKIH0K
IApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2Fu
Y2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0CiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZl
ci0+b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTM1MCw3ICsz
NTAsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25z
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYwogICAgIGF1dG8qIHdlYklEQkNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CiAgICAgQVNT
RVJUKHdlYklEQkNvbm5lY3Rpb24pOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXIt
PmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyh3ZWJJREJDb25uZWN0aW9uLT5pZGVudGlm
aWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pOwogfQogCkBAIC0zNjUsNyArMzY1LDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFkZENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBXZWJDb3JlOjpQcm9jZXNzSWQKIAogICAgICAgICBBU1NFUlRfVU5VU0VEKGlzTmV3
RW50cnksIGlzTmV3RW50cnkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAg
bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbihpdGVyLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xp
ZW50KCkpOwogICAgIH0pOwogICAgIG1fY29ubmVjdGlvbnMuYWRkKCZjb25uZWN0aW9uKTsKQEAg
LTM4Niw3ICszODYsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwog
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnVucmVnaXN0ZXJD
b25uZWN0aW9uKGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsKICAgICB9KTsKIApA
QCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZSgpCiAgICAgcG9zdFRh
c2soW3RoaXNdKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOwog
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXIgPSBudWxscHRyOwog
ICAgICAgICBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpraWxsKCk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKaW5kZXggOWExYTIwODY0MGZlZDgxMTNkYTM3YjY0NGQwYjc0YjlmYmZmYjMzMC4u
MmFjZTUxYzYxMDhlMjM1ZjgwNjFkYzJlODg5OWJkNTZiZDc4MjM4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcApAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgRW5naW5lOjp3cml0ZVNpemVGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChb
cGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIHNpemUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9i
YWxTaXplRmlsZUxvY2sgfTsKICAgICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAKICAgICAg
ICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpIHsKQEAgLTU1NCw3
ICs1NTQsNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gRW5naW5lOjpyZWFkU2l6ZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
TG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBh
dXRvIGNsb3NlRmlsZUhhbmRsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwpAQCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgRW5n
aW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1f
aW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgICAgIGZvciAoYXV0byYg
ZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgpKSB7CiAgICAgICAgICAg
ICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBh
dGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlVHlwZShmaWxl
UGF0aCkgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkKQEAgLTc1OSw3ICs3NTks
NyBAQCB2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJl
YWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbAogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHko
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShwYXRoKTsKIAogICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKaW5kZXggZDhlYTMzNjg1
ZWEyYjhlYjZjY2ViNDNhZDM4ZTA2MGM0M2E4OTU5NC4uMjRkYTM4ODc5Y2IwNDI2ZTE5ZjRmYmM3
MWRhOTJlODMxNGZmY2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9nbGliL0ROU0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2ds
aWIvRE5TQ2FjaGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEROU0NhY2hlOjpETlNDYWNoZU1hcCYg
RE5TQ2FjaGU6Om1hcEZvclR5cGUoVHlwZSB0eXBlKQogCiBPcHRpb25hbDxWZWN0b3I8R1JlZlB0
cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBob3N0LCBU
eXBlIHR5cGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byYgbWFwID0gbWFwRm9yVHlwZSh0eXBlKTsKICAg
ICBhdXRvIGl0ID0gbWFwLmZpbmQoaG9zdCk7CiAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKQEAg
LTgxLDcgKzgxLDcgQEAgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IERO
U0NhY2hlOjpsb29rdXAoY29uc3QgQ1N0cmluZyYgaG9zdCwgVHkKIAogdm9pZCBETlNDYWNoZTo6
dXBkYXRlKGNvbnN0IENTdHJpbmcmIGhvc3QsIFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+
JiYgYWRkcmVzc0xpc3QsIFR5cGUgdHlwZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvJiBtYXAgPSBtYXBG
b3JUeXBlKHR5cGUpOwogICAgIENhY2hlZFJlc3BvbnNlIHJlc3BvbnNlID0geyBXVEZNb3ZlKGFk
ZHJlc3NMaXN0KSwgTW9ub3RvbmljVGltZTo6bm93KCkgKyBleHBpcmVJbnRlcnZhbCB9OwogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbWFwLnNldChob3N0LCBXVEZNb3ZlKHJlc3BvbnNlKSk7CkBAIC0x
MTksNyArMTE5LDcgQEAgdm9pZCBETlNDYWNoZTo6cHJ1bmVSZXNwb25zZXNJbk1hcChETlNDYWNo
ZU1hcCYgbWFwKQogCiB2b2lkIEROU0NhY2hlOjpyZW1vdmVFeHBpcmVkUmVzcG9uc2VzRmlyZWQo
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgIHJlbW92ZUV4cGlyZWRSZXNwb25zZXNJbk1hcChtX2Ruc01hcCk7CiAj
aWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsIDU5LCAwKQogICAgIHJlbW92ZUV4cGlyZWRSZXNwb25z
ZXNJbk1hcChtX2lwdjRNYXApOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRE5TQ2FjaGU6OnJl
bW92ZUV4cGlyZWRSZXNwb25zZXNGaXJlZCgpCiAKIHZvaWQgRE5TQ2FjaGU6OmNsZWFyKCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICBtX2Ruc01hcC5jbGVhcigpOwogI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCA1
OSwgMCkKICAgICBtX2lwdjRNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5n
UnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4IGIyYTRmZGQ2ZmZj
NmZlZTMxMzUyNmJmYWY0ZjliMmRmNTkxZjlmZjIuLjU3OTEzNzkyZmU0OGVkOGFlZTQ1Mjc0Mzk3
M2ZjNjdlNjVkYTg2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcApAQCAtOTYsMTQgKzk2LDE0IEBAIHZvaWQgQ29t
cG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFza1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbikKIAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN1c3BlbmQoKQogewotICAgIExvY2tI
b2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIg
eyBtX3N0YXRlLmxvY2sgfTsKICAgICBtX3N0YXRlLmlzU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBt
X3VwZGF0ZVRpbWVyLnN0b3AoKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnJlc3Vt
ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tlcihtX3N0YXRlLmxvY2spOworICAgIExv
Y2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgIG1fc3RhdGUuaXNTdXNwZW5k
ZWQgPSBmYWxzZTsKICAgICBpZiAobV9zdGF0ZS51cGRhdGUgPT0gVXBkYXRlU3RhdGU6OlNjaGVk
dWxlZCkKICAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTExMSw3
ICsxMTEsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6cmVzdW1lKCkKIAogdm9pZCBDb21w
b3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRlKCkKIHsKLSAgICBMb2NrSG9sZGVyIHN0YXRl
TG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9zdGF0ZS5s
b2NrIH07CiAgICAgc2NoZWR1bGVVcGRhdGUoc3RhdGVMb2NrZXIpOwogfQogCkBAIC0xNDMsNyAr
MTQzLDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVzKCkKIHsKICAgICAv
LyBTdG9wIGV2ZXJ5dGhpbmcuCiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICBtX3VwZGF0ZVRpbWVy
LnN0b3AoKTsKICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJZGxlOwogICAgIG1f
c3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgQ29t
cG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVUaW1lckZpcmVkKCkKIHsKICAgICB7CiAgICAgICAgIC8v
IFNjZW5lIHVwZGF0ZSBpcyBub3cgaW4gcHJvZ3Jlc3MuCi0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlLmxvY2sg
fTsKICAgICAgICAgaWYgKG1fc3RhdGUuaXNTdXNwZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OkluUHJvZ3Jlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcAppbmRleCAzNjY1OWU0NjdmZWMzZTNlOTdiODEyN2FlZTliYzkwYTIzMjM0NDFlLi5jOGI5
YjhjYzkxMTYwNzU2NDhiNjg2NTg0MDQyOWRjOWNmMTlkODE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50
JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb24KIHsKICAgICB7CiAgICAgICAgIC8v
IExvY2tpbmcgaXNuJ3QgcmVhbGx5IG5lY2Vzc2FyeSBoZXJlLCBidXQgaXQncyBkb25lIGZvciBj
b25zaXN0ZW5jeS4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICAgICAg
bV9hdHRyaWJ1dGVzLnZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgbV9hdHRy
aWJ1dGVzLnNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7CiAgICAgICAgIG1fYXR0cmlidXRlcy5u
ZWVkc1Jlc2l6ZSA9ICF2aWV3cG9ydFNpemUuaXNFbXB0eSgpOwpAQCAtMTM4LDE0ICsxMzgsMTQg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlc3VtZSgpCiAKIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpzZXRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRl
cy5sb2NrIH07CiAgICAgbV9hdHRyaWJ1dGVzLnNjYWxlRmFjdG9yID0gc2NhbGU7CiAgICAgbV9j
b21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRp
b24sIGZsb2F0IHNjYWxlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICBtX2F0
dHJpYnV0ZXMuc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKICAgICBtX2F0dHJpYnV0
ZXMuc2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1
bGVVcGRhdGUoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6
c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBmbG9hdAog
CiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUm
IHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9h
dHRyaWJ1dGVzLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9
OwogICAgIG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgbV9h
dHRyaWJ1dGVzLnNjYWxlRmFjdG9yID0gc2NhbGU7CiAgICAgbV9hdHRyaWJ1dGVzLm5lZWRzUmVz
aXplID0gdHJ1ZTsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6
cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlPiBzdGF0ZXM7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0
cmlidXRlcy5sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5sb2Nr
IH07CiAgICAgICAgIHZpZXdwb3J0U2l6ZSA9IG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemU7CiAg
ICAgICAgIHNjcm9sbFBvc2l0aW9uID0gbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uOwogICAg
ICAgICBzY2FsZUZhY3RvciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKQEAgLTI1MCwxMiAr
MjUwLDEyIEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKCkK
ICAgICBib29sIHNob3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjayB7IGZhbHNlIH07
CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CiAgICAgICAgIHNo
b3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjayA9IG1fYXR0cmlidXRlcy5jbGllbnRS
ZW5kZXJzTmV4dEZyYW1lCiAgICAgICAgICAgICB8fCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvci0+
cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCk7CiAgICAgfQogCi0gICAgTG9ja0hvbGRl
ciBzdGF0ZUxvY2tlcihtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhdGVMb2NrKCkpOworICAgIExv
Y2tlciBzdGF0ZUxvY2tlciB7IG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdGF0ZUxvY2soKSB9Owog
CiAgICAgLy8gU2NoZWR1bGUgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvciBjYWxsYmFjaywgaWYg
bmVjZXNzYXJ5LgogICAgIGlmIChzaG91bGREaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2sp
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRl
RmluaXNoZWQoKQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlU2NlbmVTdGF0ZShj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1
dGVzLmxvY2sgfTsKICAgICBtX2F0dHJpYnV0ZXMuc3RhdGVzLmFwcGVuZChzdGF0ZSk7CiAgICAg
bV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBhOGE3ODlm
YzEyYzQxODZhMDlmMDJjOTJkNDNlZWQxNDUxZTA0MTAwLi42OTkwNjA3ODUzMTY2ZjJmYTljYmRj
ODIzODI0OTUzNTI5NjIxNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEljb25EYXRh
YmFzZTo6cG9wdWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwKCkKICAgICB9CiAKICAgICBhdXRvIHJl
c3VsdCA9IHF1ZXJ5LT5zdGVwKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25V
UkxNYXBMb2NrIH07CiAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAg
IG1fcGFnZVVSTFRvSWNvblVSTE1hcC5zZXQocXVlcnktPmNvbHVtblRleHQoMCksIHF1ZXJ5LT5j
b2x1bW5UZXh0KDEpKTsKICAgICAgICAgcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKQEAgLTI2MCw3
ICsyNjAsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2xlYXJMb2FkZWRJY29uc1RpbWVyRmlyZWQo
KQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
SG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJ
Y29uc0xvY2sgfTsKICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGljb25zVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvIGl0ZXIgOiBtX2xvYWRl
ZEljb25zKSB7CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNv
blVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAg
ICAgICAgICAgIGJvb2wgZXhwaXJlZCA9IGZhbHNlOwogICAgICAgICAgICAgU3RyaW5nIGNhY2hl
ZEljb25VUkw7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
SG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CiAgICAgICAgICAgICAgICAg
Y2FjaGVkSWNvblVSTCA9IG1fcGFnZVVSTFRvSWNvblVSTE1hcC5nZXQocGFnZVVSTCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2FjaGVkSWNvblVSTCA9PSBpY29uVVJMKQpAQCAt
NTA2LDcgKzUwNiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdl
VVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zCiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjYW5Xcml0ZVRvRGF0YWJhc2UgfHwgc2V0SWNvbklERm9yUGFnZVVSTChp
Y29uSUQudmFsdWUoKSwgcGFnZVVSTCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VV
UkwsIGljb25VUkwpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTUxNCwxMyArNTE0LDEzIEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zCiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjYW5Xcml0ZVRvRGF0YWJhc2UpIHsK
ICAgICAgICAgICAgICAgICBib29sIGZvdW5kSW5NZW1vcnlDYWNoZTsKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZElj
b25zTG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvYWRlZElj
b25zTG9jayB9OwogICAgICAgICAgICAgICAgICAgICBmb3VuZEluTWVtb3J5Q2FjaGUgPSBtX2xv
YWRlZEljb25zLmNvbnRhaW5zKGljb25VUkwpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIGlmIChmb3VuZEluTWVtb3J5Q2FjaGUpIHsKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVy
KG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgICAgICAgICAgICAgICAg
ICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25VUkwpOwogICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CkBAIC01NDIsMTQg
KzU0MiwxNCBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBpY29uRGF0YTsKICAgICAgICAgU3RyaW5nIGljb25VUkw7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CiAg
ICAgICAgICAgICBpY29uVVJMID0gbV9wYWdlVVJMVG9JY29uVVJMTWFwLmdldChwYWdlVVJMKTsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV9kYi5pc09wZW4oKSAmJiAhaWNvblVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGJvb2wgZXhwaXJlZDsKICAgICAgICAgICAgIGljb25JRCA9IGlj
b25JREZvckljb25VUkwoaWNvblVSTCwgZXhwaXJlZCk7CiAgICAgICAgICAgICBpZiAoaWNvbklE
KSB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNM
b2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJY29uc0xvY2sg
fTsKICAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShpY29uSUQu
dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkws
IHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIs
IHsgfSkpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2FkZWRJY29uc0xvY2sgfTsKICAgICAgICAgICAgIGF1dG8gaXQgPSBtX2xvYWRl
ZEljb25zLmZpbmQoaWNvblVSTCk7CiAgICAgICAgICAgICBpZiAoaXQgIT0gbV9sb2FkZWRJY29u
cy5lbmQoKSAmJiBpdC0+dmFsdWUuZmlyc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGljb24g
PSBpdC0+dmFsdWUuZmlyc3Q7CkBAIC02MDYsNyArNjA2LDcgQEAgU3RyaW5nIEljb25EYXRhYmFz
ZTo6aWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogewogICAgIEFTU0VS
VChpc01haW5SdW5Mb29wKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25V
UkxNYXBMb2NrIH07CiAgICAgcmV0dXJuIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5nZXQocGFnZVVS
TCk7CiB9CiAKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAg
IGlmIChtX2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6Ok5vIHx8IGFs
bG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6Ok5vKSB7CiAgICAgICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
SG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRl
ZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25v
dG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgIGlmIChpY29uRGF0YVNpemUp
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlOwpAQCAt
NjMyLDcgKzYzMiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIHN0YXJ0Q2xl
YXJMb2FkZWRJY29uc1RpbWVyKCk7CiAgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHQsIGljb25VUkwgPSBpY29u
VVJMLmlzb2xhdGVkQ29weSgpLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9w
YWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxU
b0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25VUkwpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXN1bHQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC02NTksNyArNjU5
LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgICAgIGlmIChpY29uSUQpIHsK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzZXRJ
Y29uSURGb3JQYWdlVVJMKGljb25JRC52YWx1ZSgpLCBwYWdlVVJMKSkgewotICAgICAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7
CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxN
YXBMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5zZXQo
cGFnZVVSTCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
Njc4LDEyICs2NzgsMTIgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBBU1NFUlQoaXNNYWluUnVuTG9v
cCgpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNv
bnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CiAg
ICAgICAgIG1fbG9hZGVkSWNvbnMuY2xlYXIoKTsKICAgICB9CiAgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxN
YXBMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxN
YXBMb2NrIH07CiAgICAgICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuY2xlYXIoKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwCmluZGV4IGIyMzdhNmNjNjljZmViMzY1M2M4YmE2NWRlOWVjYjQ3ZGM0MWZm
OGEuLmFiMGU5MDk4OGI0OWQwMzk1MmIxZTdlNTgyMjY3Y2ExMWE2ZTkxODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkCiAgICAgZGlzcGF0Y2hUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgZGlyZWN0b3J5
ID0gZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCBzcGFjZVJlcXVlc3RlciA9
IHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcigqdGhpcyldICgpIG11dGFibGUgewog
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50OjpjcmVhdGUoKnRoaXMpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAg
ICAgbV9zZXJ2ZXIgPSBtYWtlVW5pcXVlPElEQlNlcnZlcjo6SURCU2VydmVyPihzZXNzaW9uSUQs
IGRpcmVjdG9yeSwgV1RGTW92ZShzcGFjZVJlcXVlc3RlciksIG1fc2VydmVyTG9jayk7CiAgICAg
ICAgIG1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRvQ2xpZW50KTsK
ICAgICB9KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25zdAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVy
LT5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRh
dGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAg
ICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVx
dWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwog
ICAgIH0pOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVy
ID0gcmVzb3VyY2VJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
c291cmNlSWRlbnRpZmllciA9IHJlc291cmNlSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2Fj
dGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlu
aXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRy
YW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMjg5LDcgKzI4
OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlc3VsdERh
dGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSA9IHJlc3Vs
dERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3Jl
KHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVzdWx0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29s
YXRlZENvcHkoKSwgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lLmlzb2xhdGVkQ29w
eSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3Nl
cnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CiAg
ICAgfSk7CiB9CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXMKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlz
b2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlz
b2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgfSk7CiB9CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXMKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlz
b2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVy
TG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUlu
ZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
SW5kZXhJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29w
eSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2Nr
IH07CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7CiAg
ICAgfSk7CiB9CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0
ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0gaW5kZXhOYW1lLmlz
b2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2
ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
TmFtZSk7CiAgICAgfSk7CiB9CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7
CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5yZW5hbWVJ
bmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIs
IG5ld05hbWUpOwogICAgIH0pOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNv
bGF0ZWRDb3B5KCksIGtleURhdGEgPSBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZh
bHVlLmlzb2xhdGVkQ29weSgpLCBvdmVyd3JpdGVNb2RlXSB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2
YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CkBAIC0zNTMsNyArMzUzLDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRS
ZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlz
b2xhdGVkQ29weSgpLCBnZXRSZWNvcmREYXRhID0gZ2V0UmVjb3JkRGF0YS5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5nZXRSZWNv
cmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpOwogICAgIH0pOwogfQpAQCAtMzYxLDcgKzM2
MSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Z2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKICAgICBk
aXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZ2V0QWxsUmVjb3Jkc0RhdGEgPSBn
ZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2Nr
IH07CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxS
ZWNvcmRzRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEs
IGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRl
ZENvcHkoKSwga2V5UmFuZ2VEYXRhID0ga2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChy
ZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KQEAgLTM4NSw3ICszODUsNyBA
QCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5D
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVk
Q29weSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5DdXJzb3IocmVxdWVzdERh
dGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmIGRhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCks
IGRhdGEgPSBkYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpOwogICAg
IH0pOwogfQpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVy
YXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQog
ewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5lc3RhYmxp
c2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKICAgICB9
KTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6bm90aWZ5
T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRh
dGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKICAgICB9KTsKIH0KQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXIt
PmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
ICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZQog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1f
c2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC00NjEsNyArNDYx
LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIg
Y29ubmVjdGlvbkNsb3NlZCkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVz
dElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgY29ubmVjdGlv
bkNsb3NlZF0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5k
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKICAgICB9KTsKIH0KQEAgLTQ2OSw3
ICs0NjksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0pOwogfQpAQCAtNDc3LDcgKzQ3Nyw3
IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQog
ewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBpZGVudGlmaWVyID0gbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgcmVxdWVz
dElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoaWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7CiAgICAgfSk7
CiB9CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXMKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2Fs
bFRpbWUgbW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpY2F0aW9uVGltZV0gewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0ZURhdGFiYXNl
c01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IDkxYjRmN2Fj
MzQ2MzMxM2UxMGVhN2YzMjJhZTg4N2E4ZTg0NGU0ZWIuLmY2YTZlOTc1N2I0YWZjYWI4OTg0YWJh
MWY1MjgwYjc5OGI5YWE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5
bmM6OnN5bmNUaW1lckZpcmVkKCkKIAogICAgIGJvb2wgcGFydGlhbFN5bmMgPSBmYWxzZTsKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zeW5jTG9jayB9OwogCiAgICAgICAgIC8vIERvIG5vdCBzY2hlZHVsZSBh
bm90aGVyIHN5bmMgaWYgd2UncmUgc3RpbGwgdHJ5aW5nIHRvIGNvbXBsZXRlIHRoZQogICAgICAg
ICAvLyBwcmV2aW91cyBvbmUuIEJ1dCwgaWYgd2UncmUgc2h1dHRpbmcgZG93biwgc2NoZWR1bGUg
aXQgYW55d2F5LgpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJm
b3JtU3luYygpCiAgICAgYm9vbCBjbGVhckl0ZW1zOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IGl0ZW1zOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5jTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N5bmNMb2NrIH07CiAKICAgICAgICAgQVNTRVJU
KG1fc3luY1NjaGVkdWxlZCk7CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
U3luYzo6cGVyZm9ybVN5bmMoKQogICAgIHN5bmMoY2xlYXJJdGVtcywgaXRlbXMpOwogCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc3luY0xvY2sgfTsKICAgICAgICAgbV9zeW5jSW5Qcm9ncmVzcyA9IGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKaW5kZXggNDlhMzMyZTIxYTQ4NTk4ZGQ0NTc0NzNkMTUzZjliZWFmMDZlZDA5Yi4uMWRl
OGU0Njg4MWZjYzExM2E2YmZiYmU0MGE4OWRiNGU1ZjQwNjU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6aW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogCiB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklkZW50aWZpZXJzKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFiYXNlTXV0ZXggfTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50
LT5kaWRGaW5pc2hMb2FkaW5nT3JpZ2lucygpOwogfQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
ZGF0YWJhc2VNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXgg
fTsKIAogICAgICAgICAvLyBEb24ndCBmb3JjZSBjcmVhdGlvbiBvZiBTdG9yYWdlVHJhY2tlcidz
IGRiIGp1c3QgYmVjYXVzZSBhIHRyYWNrZXIKICAgICAgICAgLy8gd2FzIGluaXRpYWxpemVkLiBJ
dCB3aWxsIGJlIGNyZWF0ZWQgaWYgbG9jYWwgc3RvcmFnZSBkYnMgYXJlIGZvdW5kCkBAIC0xOTgs
NyArMTk4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZW50aWZp
ZXJzKCkKICAgICAgICAgICAgIGludCByZXN1bHQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tPcmlnaW5zKG1fb3JpZ2luU2V0TXV0
ZXgpOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrT3JpZ2lucyB7IG1fb3JpZ2luU2V0TXV0
ZXggfTsKICAgICAgICAgICAgICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC0+c3RlcCgp
KSA9PSBTUUxJVEVfUk9XKQogICAgICAgICAgICAgICAgICAgICBtX29yaWdpblNldC5hZGQoc3Rh
dGVtZW50LT5jb2x1bW5UZXh0KDApLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgICAgIH0KQEAg
LTIxMywxMCArMjEzLDEwIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5J
ZGVudGlmaWVycygpCiAgICAgc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKTsKICAg
ICAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRNdXRleCB9OwogCiAgICAgICAgIGlmIChtX2Ns
aWVudCkgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7
CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OwogICAgICAg
ICAgICAgT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29yaWdpblNldC5lbmQoKTsK
ICAgICAgICAgICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2lu
U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oKml0KTsKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2RhdGFiYXNlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11
dGV4IH07CiAgICAgICAgIGZpbGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9z
dG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgfQogCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgIC8v
IGRlbGV0aW9ucyBmcm9tIGRpc2sgYW5kIGZyb20gbV9vcmlnaW5TZXQuCiAgICAgT3JpZ2luU2V0
IG9yaWdpblNldENvcHk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdp
blNldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsK
ICAgICAgICAgZm9yIChPcmlnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vcmlnaW5TZXQu
YmVnaW4oKSwgZW5kID0gbV9vcmlnaW5TZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAg
ICAgICAgIG9yaWdpblNldENvcHkuYWRkKCgqaXQpLmlzb2xhdGVkQ29weSgpKTsKICAgICB9CkBA
IC0yODUsNyArMjg1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0YWlscyhj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKIAogICAgICAgICBp
ZiAobV9vcmlnaW5TZXQuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY1NldE9y
aWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdAogCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVy
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKHRy
dWUpOwogICAgIApAQCAtMzI5LDEzICszMjksMTMgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y1NldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdAog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICclcycgaW4gdGhl
IHRyYWNrZXIiLCBvcmlnaW5JZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIGlmICghbV9vcmlnaW5TZXQu
Y29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAgICAgICBtX29yaWdpblNldC5hZGQo
b3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50TXV0
ZXggfTsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KQEAgLTM0OCw3ICsz
NDgsNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlVHJhY2tlcjo6b3JpZ2lu
cygpCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
b3JpZ2luU2V0TXV0ZXggfTsKIAogICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHJlc3Vs
dDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX29yaWdpblNldC5zaXplKCkp
OwpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdp
bnMoKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRN
dXRleCB9OwogICAgICAgICB3aWxsRGVsZXRlQWxsT3JpZ2lucygpOwogICAgICAgICBtX29yaWdp
blNldC5jbGVhcigpOwogICAgIH0KQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAKICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAgICAgCi0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFz
ZU11dGV4IH07CiAgICAgCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAgICAgaWYg
KCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShzdGF0ZW1lbnQtPmNvbHVtblRleHQoMSkpOwogCiAgICAgICAgIHsKLSAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY2xpZW50TXV0ZXggfTsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oc3RhdGVtZW50LT5j
b2x1bW5UZXh0KDApKTsKICAgICAgICAgfQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgU3RvcmFn
ZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikK
ICAgICBTdHJpbmcgb3JpZ2luSWQgPSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAg
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAgICAgICAgd2lsbERl
bGV0ZU9yaWdpbihvcmlnaW5JZCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LnJlbW92ZShvcmlnaW5J
ZCk7CiAgICAgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNE
ZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogCiAgICAgU1FMaXRl
VHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9kYXRhYmFzZU11dGV4IH07CiAgICAgCiAgICAgaWYgKCFjYW5EZWxldGVPcmlnaW4ob3Jp
Z2luSWRlbnRpZmllcikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0ZWQgdG8gZGVsZXRl
IG9yaWdpbiAnJXMnIHdoaWxlIGl0IHdhcyBiZWluZyBjcmVhdGVkXG4iLCBvcmlnaW5JZGVudGlm
aWVyLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAg
ICAKICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIG1fb3JpZ2luU2V0LnJlbW92
ZShvcmlnaW5JZGVudGlmaWVyKTsKICAgICAgICAgc2hvdWxkRGVsZXRlVHJhY2tlckZpbGVzID0g
bV9vcmlnaW5TZXQuaXNFbXB0eSgpOwogICAgIH0KQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllcikKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRNdXRleCB9OwogICAgICAg
ICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlP
cmlnaW4ob3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OndpbGxEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyKQogYm9vbCBTdG9yYWdlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VNdXRleC50cnlM
b2NrKCkpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgcmV0dXJuIG1fb3JpZ2luc0Jl
aW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKTsKIH0KIApAQCAtNTg4LDkgKzU4
OCw5IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5nT3JpZ2luKGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29y
aWdpblNldE11dGV4IH07CiAgICAgICAgIGlmICghbV9vcmlnaW5zQmVpbmdEZWxldGVkLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIG1fb3JpZ2luc0JlaW5nRGVsZXRlZC5yZW1vdmUob3JpZ2luSWRl
bnRpZmllcik7CiAgICAgfQpAQCAtNjM0LDcgKzYzNCw3IEBAIHVpbnQ2NF90IFN0b3JhZ2VUcmFj
a2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBpZiAo
IW1faXNBY3RpdmUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07
CiAKICAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihvcmlnaW4tPmRhdGEo
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDY1ZGY4ZTM3MmMzNDg1
OTcxZjVmNWVkMjkyMDJiZjRlMDZkNWRlNzMuLjMwMTBhNmE4OGI5NTdjOTA3NzkxNDY4ODhjNjY4
OTNjNGI1ZDdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTM5NTcsNyArMzk1Nyw3IEBAIC0gKHZvaWQpX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQ
b3NpdGlvbkxheW91dFJlY3QKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbmV3UmVjdDsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3RNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBfcHJpdmF0ZS0+cGVu
ZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAgICAgICAgaWYgKENHUmVjdElz
TnVsbChfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbmV3UmVjdCA9IFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3Qo
X3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCk7CkBAIC0zOTcxLDcgKzM5
NzEsNyBAQCAtICh2b2lkKV9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0
CiAtICh2b2lkKV9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEluV2ViVGhyZWFkOihD
R1JlY3QpcmVjdCBzeW5jaHJvbml6ZTooQk9PTClzeW5jaHJvbml6ZQogewogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0
UmVjdE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IF9wcml2YXRlLT5wZW5kaW5nRml4
ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCB9OwogICAgICAgICBfcHJpdmF0ZS0+cGVuZGluZ0Zp
eGVkUG9zaXRpb25MYXlvdXRSZWN0ID0gcmVjdDsKICAgICB9CiAgICAgaWYgKCFzeW5jaHJvbml6
ZSkKQEAgLTM5ODUsNyArMzk4NSw3IEBAIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0OihDR1JlY3QpcmVjdAogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZCgp
KTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4
ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBfcHJp
dmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAgICAgICAgX3By
aXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCA9IHJlY3Q7CiAgICAgfQogICAg
IFtzZWxmIF9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0XTsKQEAgLTM5
OTMsNyArMzk5Myw3IEBAIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0
OihDR1JlY3QpcmVjdAogCiAtIChCT09MKV9mZXRjaEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0OihOU1JlY3QqKXJlY3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0ZS0+cGVu
ZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBf
cHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAgICBpZiAo
Q0dSZWN0SXNOdWxsKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3QpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCmluZGV4IDRl
Y2MzMGRjN2U3OTYxNzlhMTAxZGQwMzkyNjI2NDcxNTc1NDc4ZTAuLjA5MjY2NmJkNTQ4NGI4NzE0
OTkxMDcyY2UyMjRkZDUyZDA4NTFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcApAQCAt
NDIsNyArNDIsNyBAQCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpQbHVnaW5NYWluVGhyZWFk
U2NoZWR1bGVyKCkKIAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVsZUNh
bGwoTlBQIG5wcCwgTWFpblRocmVhZEZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiB1c2VyRGF0YSkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9xdWV1ZU11dGV4IH07CiAKICAgICBDYWxsUXVldWVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9j
YWxsUXVldWVNYXAuZmluZChucHApOwogICAgIGlmIChpdCA9PSBtX2NhbGxRdWV1ZU1hcC5lbmQo
KSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hl
ZHVsZUNhbGwoTlBQIG5wcCwgTWFpblRocmVhZEZ1bmN0aW9uIGZ1bmN0aW8KIAogdm9pZCBQbHVn
aW5NYWluVGhyZWFkU2NoZWR1bGVyOjpyZWdpc3RlclBsdWdpbihOUFAgbnBwKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVl
TXV0ZXggfTsKIAogICAgIEFTU0VSVCghbV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBwKSk7CiAg
ICAgbV9jYWxsUXVldWVNYXAuc2V0KG5wcCwgRGVxdWU8Q2FsbD4oKSk7CkBAIC02OCw3ICs2OCw3
IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6cmVnaXN0ZXJQbHVnaW4oTlBQIG5w
cCkKIAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjp1bnJlZ2lzdGVyUGx1Z2luKE5Q
UCBucHApCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcXVldWVNdXRleCB9OwogCiAgICAgQVNTRVJUKG1fY2FsbFF1ZXVlTWFwLmNv
bnRhaW5zKG5wcCkpOwogICAgIG1fY2FsbFF1ZXVlTWFwLnJlbW92ZShucHApOwpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OmRpc3BhdGNoQ2FsbHNGb3JQ
bHVnaW4oTlBQIG5wcCwgY29uc3QgRGVxdWU8Q2FsbAogICAgIGZvciAoYXV0byYgY2FsbCA6IGNh
bGxzKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnLWluIGhhcyBiZWVuIGRlc3Ryb3ll
ZC4KICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7
CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CiAgICAgICAgICAg
ICBpZiAoIW1fY2FsbFF1ZXVlTWFwLmNvbnRhaW5zKG5wcCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYjMwOTRiYWZkZWM3Mjc0N2UzYTgwZTYxMzg5MWViZmVkMmNlZTQzOC4uYjI0
MjM1ZDI5NDI4ODdmYzdkMDQ0ZGQ2N2M2YzMwMTZkNjY4MjM3MSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA1
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBM
b2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGgg
TG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcy4gSXQgaXMgc2hvcnRlciBhbmQgaXQgYWxsb3dzIHN3
aXRjaGluZyB0aGUgbG9jaworICAgICAgICB0eXBlIG1vcmUgZWFzaWx5IHNpbmNlIHRoZSBjb21w
aWxlciB3aXRoIGRlZHVjZSB0aGUgbG9jayB0eXBlIFQgZm9yIExvY2tlcjxUPi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGli
L1dvcmtRdWV1ZUdMaWIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRD
b250ZXh0Ojp3YWl0TXlUdXJuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWluaXN0
aWNTY2hlZHVsZXI6OlRocmVhZENvbnRleHQ6OnlpZWxkVG9UaHJlYWQpOgorCiAyMDIxLTA1LTIx
ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSdW4gbGF5
b3V0IHRlc3RzIGluIHN0cmVzcyBtb2RlIGZvciAxMCBpdGVyYXRpb25zIG9uIHJlZ3VsYXIgRVdT
IGxheW91dC10ZXN0IHF1ZXVlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV29ya1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtR
dWV1ZS5jcHAKaW5kZXggNTZlMGEwNjJiM2QwYzhiYWRhYTEyZWQwNDk3YzE1ZDg4MTZjZWU1ZS4u
ZWY5OTc1NzUyMmRkOWRhNjEwOWNkYjk1YzdlMzdhZTFmNGQzYTU2NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRFU1Qo
V1RGX1dvcmtRdWV1ZSwgU2ltcGxlKQogICAgIGludCBpbml0aWFsUmVmQ291bnQgPSBxdWV1ZS0+
cmVmQ291bnQoKTsKICAgICBFWFBFQ1RfRVEoMSwgaW5pdGlhbFJlZkNvdW50KTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9y
ZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOwogICAgICAgICBjYWxsZWRTaW1wbGVUZXN0ID0g
dHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCiAgICAg
fSk7CiAKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAg
ICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZCh0aGlyZFRlc3RMYWJlbCk7CiAgICAgICAg
IGNhbGxlZFRoaXJkVGVzdCA9IHRydWU7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBURVNUKFdURl9X
b3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICBFWFBFQ1RfRVEoMVUsIHF1ZXVlMS0+cmVmQ291bnQo
KSk7CiAgICAgRVhQRUNUX0VRKDFVLCBxdWV1ZTItPnJlZkNvdW50KCkpOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
CiAgICAgcXVldWUxLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBtX2Z1bmN0aW9uQ2Fs
bE9yZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFRFU1Qo
V1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAgIHF1ZXVlMi0+ZGlzcGF0Y2goWyZdKHZvaWQp
IHsKICAgICAgICAgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKDUwbXMpOwogCi0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKIAogICAgICAgICAvLyBXaWxsIGZhaWwgaWYgcXVldWUyIHRvb2sgdGhlIG11dGV4IGJl
Zm9yZSBxdWV1ZTEuCiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7CkBAIC0x
MzUsNyArMTM1LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgfSk7CiAK
ICAgICBxdWV1ZTEtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAg
bV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQodGhpcmRUZXN0TGFiZWwpOwogICAgICAgICBjYWxs
ZWRUaGlyZFRlc3QgPSB0cnVlOwogICAgICAgICAKQEAgLTE3MSwxNyArMTcxLDE3IEBAIFRFU1Qo
V1RGX1dvcmtRdWV1ZSwgRGlzcGF0Y2hBZnRlcikKIAogICAgIGF1dG8gcXVldWUgPSBXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5UZXN0LmRpc3BhdGNoQWZ0ZXIiKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogCiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAg
ICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKICAgICAgICAg
Y2FsbGVkU2ltcGxlVGVzdCA9IHRydWU7CiAgICAgICAgIG1fdGVzdENvbXBsZXRlZC5ub3RpZnlP
bmUoKTsKICAgICB9KTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaEFmdGVyKDUwMF9tcywgWyZdKHZv
aWQpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZChk
aXNwYXRjaEFmdGVyTGFiZWwpOwogICAgICAgICBjYWxsZWREaXNwYXRjaEFmdGVyVGVzdCA9IHRy
dWU7CiAgICAgICAgIG1fZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0ZWQubm90aWZ5T25lKCk7CkBA
IC0yMTEsMTEgKzIxMSwxMSBAQCBURVNUKFdURl9Xb3JrUXVldWUsIERlc3Ryb3lPblNlbGYpCiAg
ICAgYm9vbCBjb21wbGV0ZWQgPSBmYWxzZTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGF1dG8gcXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5UZXN0LmRpc3BhdGNoQWZ0ZXIiKTsKICAgICAgICAgICAgIHF1ZXVlLT5kaXNwYXRjaEFm
dGVyKDUwMF9tcywgWyZdKHZvaWQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihsb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgICAg
ICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJUZXN0U3RhcnRlZC53YWl0KGxvY2ssIFsmXSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzdGFydGVkOwogICAgICAgICAgICAgICAgIH0pOwpAQCAt
MjI3LDcgKzIyNyw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgRGVzdHJveU9uU2VsZikKICAgICAg
ICAgZGlzcGF0Y2hBZnRlclRlc3RTdGFydGVkLm5vdGlmeU9uZSgpOwogICAgIH0KICAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bG9jayB9OwogICAgICAgICBkaXNwYXRjaEFmdGVyVGVzdENvbXBsZXRlZC53YWl0KGxvY2ssIFsm
XSB7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGVkOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCmlu
ZGV4IDk5MjNkNjU4MDBlZDcxNGJhNjgwNmIxM2Y3ZTUxZmVlNTgwMzVhZDAuLjA3YTJhY2QyN2Q4
YWZmMmY0NzI0OWFiZTNhMDM3NGVjNjEwZTU3OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtNTEsNyArNTEsNyBA
QCBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjdXJy
ZW50RGlyZWN0b3J5KGdfZ2V0X2N1cnJlbnRfZGlyKCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChjdXJyZW50RGlyZWN0b3J5LmdldCgp
KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihjb250ZXh0Lm1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGNvbnRleHQubV9sb2NrIH07CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lk
KSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVmYXVs
dCgpKTsKICAgICAgICAgRVhQRUNUX1RSVUUoZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZh
dWx0KCkgIT0gY29udGV4dC5tX21haW5Db250ZXh0KTsKQEAgLTU5LDcgKzU5LDcgQEAgVEVTVChX
VEZfV29ya1F1ZXVlLCBBc3luY0lPKQogICAgICAgICBnX2ZpbGVfcXVlcnlfaW5mb19hc3luYyhm
aWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIEdfRklMRV9RVUVSWV9J
TkZPX05PTkUsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwKICAgICAgICAgICAgIFtdKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICAgICAg
ICAgIFRlc3RpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8VGVzdGluZ0NvbnRleHQq
Pih1c2VyRGF0YSk7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoY29udGV4dC0+
bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC0+bV9sb2Nr
IH07CiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRf
ZGVmYXVsdCgpLCBjb250ZXh0LT5tX21haW5Db250ZXh0KTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5tX3Rlc3RDb21wbGV0ZWQubm90aWZ5T25lKCk7CiAgICAgICAgICAgICB9LCAmY29udGV4
dCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRh
YmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9y
dGFibGVUYXNrUXVldWUuY3BwCmluZGV4IDdiNTYzZDM2YjUyZjcyM2M4NGU3N2IxOWVlMDJiYzAz
Njg0NWI5MWIuLjExNDc5MWIzNmFhOTVmZGMxODZkYWI1NmQwOGUxMjlmNTRlNTU2YTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVl
dWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVU
YXNrUXVldWUuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQg
d2FpdE15VHVybigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3Nj
aGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NjaGVkdWxl
ci5tX211dGV4IH07CiAgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRDaGFu
Z2VkLndhaXQobV9zY2hlZHVsZXIubV9tdXRleCwgW3RoaXNdKCkgewogICAgICAgICAgICAgICAg
IHJldHVybiBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWQgPT0gbV90aGlzVGhyZWFkOwogICAg
ICAgICAgICAgfSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQg
eWllbGRUb1RocmVhZChUaHJlYWRFbnVtIG5leHRUaHJlYWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NjaGVkdWxlci5tX211dGV4IH07CiAgICAgICAgICAgICBtX3NjaGVk
dWxlci5tX2N1cnJlbnRUaHJlYWQgPSBuZXh0VGhyZWFkOwogICAgICAgICAgICAgbV9zY2hlZHVs
ZXIubV9jdXJyZW50VGhyZWFkQ2hhbmdlZC5ub3RpZnlBbGwoKTsKICAgICAgICAgfQo=
</data>
<flag name="commit-queue"
          id="450574"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429396</attachid>
            <date>2021-05-21 20:20:14 -0700</date>
            <delta_ts>2021-05-21 22:39:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226133-20210521202013.patch</filename>
            <type>text/plain</type>
            <size>282793</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZWI0ZmJjYWNhMTU4YTdjN2NhOTFjNDVlODIxYmIzNjNjMzU1NmE1Li4wODkyMDk5YTI2NGJiNjBm
YzYwMGQwZWRhYTYwMDY1NmQ3NGU2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjIgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9y
dGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBl
YXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3Ig
TG9ja2VyPFQ+LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2
YXRlUHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChoYW5kZXJGb3JTdHJ1Y3RUYWcp
OgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmNwcDoKKyAgICAgICAgKHRlc3RDQVBJVmlh
Q3BwKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpy
dW4pOgorICAgICAgICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjNf
MS5jcHA6CisgICAgICAgIChydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToK
KyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbENvZGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoSlND
OjpEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTdXBlclNh
bXBsZXIpOgorICAgICAgICAoSlNDOjpyZXNldFN1cGVyU2FtcGxlclN0YXRlKToKKyAgICAgICAg
KEpTQzo6cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChKU0M6OmVuYWJsZVN1cGVy
U2FtcGxlcik6CisgICAgICAgIChKU0M6OmRpc2FibGVTdXBlclNhbXBsZXIpOgorICAgICAgICAq
IGRmZy9ERkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjp+Q29tbW9uRGF0YSk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpjb2RlQmxvY2tGb3JWTVRyYXBQQyk6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNsZWFuTXVzdEhhbmRs
ZVZhbHVlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6
OmlzQWN0aXZlRm9yVk0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFk
eSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFsbFJlYWR5UGxhbnNGb3JW
TSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0Zv
clZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6
CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZU5vbkNvbXBpbGluZ1BsYW5zRm9yVk0pOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpxdWV1ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6V29ya2xpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojpz
ZXROdW1iZXJPZlRocmVhZHMpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyk6Cisg
ICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9C
bG9ja0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjphZGRCbG9j
ayk6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAgICogaGVh
cC9Db25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3Rz
OjphZGQpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkJlZ2lu
UGhhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpub3Rp
ZnlJc1NhZmVUb0NvbGxlY3QpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZGlkUmVhY2hUZXJtaW5hdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2lu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRy
YWNraW5nQ29tcGxldGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZyk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c3RvcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2
YXRlUnVuTG9vcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRh
dGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxl
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29v
bik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0
ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
UHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlh
bGl6ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1Jl
bW90ZUluc3BlY3RvckdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENv
bm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0
aW5nc1Nvb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUpOgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OmZyb250ZW5kRGlkQ2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlz
dGVuaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVM
aXN0ZW5lcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpnZXRQb3J0IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJ
ZkVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwOgorICAgICAg
ICAoSlNDOjpDTG9vcFN0YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChK
U0M6OkNMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpkdW1wSklUTWVtb3J5KToKKyAgICAg
ICAgKiBqaXQvSUNTdGF0cy5jcHA6CisgICAgICAgIChKU0M6OklDU3RhdHM6OklDU3RhdHMpOgor
ICAgICAgICAoSlNDOjpJQ1N0YXRzOjp+SUNTdGF0cyk6CisgICAgICAgICogaml0L0pJVFRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpj
dGlTbG93UGF0aEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAg
ICAgIChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjppc0ZpbmlzaGVkQ29tcGlsaW5nKToKKyAgICAg
ICAgKEpTQzo6SklUV29ya2xpc3Q6OkpJVFdvcmtsaXN0KToKKyAgICAgICAgKEpTQzo6SklUV29y
a2xpc3Q6OmNvbXBsZXRlQWxsRm9yVk0pOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6cG9s
bCk6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIpOgorICAgICAgICAo
SlNDOjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAgICogcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldElEKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6RGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpE
YXRhYmFzZTo6bG9nRXZlbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFk
ZERhdGFiYXNlVG9BdEV4aXQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnJl
bW92ZURhdGFiYXNlRnJvbUF0RXhpdCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmls
ZXJVSUQuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZlcnJl
ZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29y
a1RpbWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcik6CisgICAgICAgICogcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6
dGltZXJMb29wKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6c2h1dGRvd24pOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChKU0M6OlNh
bXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCk6
CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUpTTG9ja0FjcXVpc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1FbnRyeSk6CisgICAg
ICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KToKKyAg
ICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnN0
YXJ0VGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6d2lsbERlc3Ryb3lWTSk6CisgICAg
ICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6
aXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dh
c21FbnRyeVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OlRocmVhZENv
dW50SG9sZGVyOjpUaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgIChKU0M6Oldhc206OkVudHJ5
UGxhbjo6VGhyZWFkQ291bnRIb2xkZXI6On5UaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgICog
d2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjphZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFu
ZENhbmNlbElmTGFzdCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcik6CisgICAg
ICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0
OjplbnF1ZXVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmNvbXBsZXRlUGxhblN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6c3RvcEFsbFBsYW5z
Rm9yQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorCiAyMDIxLTA1LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xk
TG9jaygpIGluIEpTQyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBz
YWZldHkgYW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZDA1M2IzODRhMGNkZmMzY2E2YzAwMzYwNTgzZTczYWI5ZTRl
YTc3Zi4uZWRmOTM5MWRiMmQyZWYzOTYzYTg0ZmI0NTE5Yzg4ZTg2MmViZDgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJs
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNob3J0
ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3JlIGVh
c2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZvciBM
b2NrZXI8VD4uCisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOgorICAg
ICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNU
aHJlYWQ6On5BdXRvbWF0aWNUaHJlYWQpOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6
OmpvaW4pOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAg
KiB3dGYvQXV0b21hdGljVGhyZWFkLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmspOgorICAgICAgICAo
V1RGOjpNZXRhQWxsb2NhdG9yOjphZGRGcmVzaEZyZWVTcGFjZSk6CisgICAgICAgIChXVEY6Ok1l
dGFBbGxvY2F0b3I6OmRlYnVnRnJlZVNwYWNlU2l6ZSk6CisgICAgICAgICogd3RmL1BhcmFsbGVs
SGVscGVyUG9vbC5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpQYXJh
bGxlbEhlbHBlckNsaWVudCk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50Ojp+
UGFyYWxsZWxIZWxwZXJDbGllbnQpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVu
dDo6c2V0VGFzayk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpmaW5pc2gp
OgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVudDo6ZG9Tb21lSGVscGluZyk6Cisg
ICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpydW5UYXNrKToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJQb29sOjplbnN1cmVUaHJlYWRzKToKKyAgICAgICAgKFdURjo6UGFy
YWxsZWxIZWxwZXJQb29sOjpkb1NvbWVIZWxwaW5nKToKKyAgICAgICAgKiB3dGYvU2Vjb25kcy5j
cHA6CisgICAgICAgIChXVEY6OnNsZWVwKToKKyAgICAgICAgKiB3dGYvVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6c2xlZXApOgorICAgICAgICAqIHd0Zi9Xb3Jr
ZXJQb29sLmNwcDoKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6CisgICAg
ICAgIChXVEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2Vy
UG9vbDo6cG9zdFRhc2spOgorICAgICAgICAqIHd0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHA6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
cmVzdW1lKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpnZXRSZWdpc3RlcnMpOgorICAgICAgICAq
IHd0Zi93aW4vRGJnSGVscGVyV2luLmNwcDoKKyAgICAgICAgKFdURjo6RGJnSGVscGVyOjpTeW1G
cm9tQWRkcmVzcyk6CisgICAgICAgICogd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnJlc3VtZSk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKToKKwogMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkQ29uZGl0
aW9uIGluIG1vcmUgcGxhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIwNWNhYjAwNjRmMjM3YmU4YzU0YTBk
MTY1YWFiNGNmMDJlNTA0OC4uYmRlMGQ2NjkwNjkzYmMzMjkzODVkYjI1MGY1YWU1YTg0ZTQyMGI5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sK
KyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2Ug
dGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9E
ZWNvZGVyOjpBc3luY0F1ZGlvRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlv
RGVjb2Rlcjo6cnVuTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVjb3Jk
RGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmRE
YXRhYmFzZUNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFzUGVu
ZGluZ0RhdGFiYXNlQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpyZXRyeUNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRhdGFi
YXNlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldERh
dGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRvbmVD
cmVhdGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3Bl
bkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tG
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpxdW90YSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FM
Q2FsbGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dy
YXBwZXI6OnVud3JhcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0YXRl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVD
bG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4
dFN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpk
b0NsZWFudXApOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpmb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
cm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWRO
b2RlSUQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAoU2Ny
b2xsaW5nVHJlZU1hYzo6c2Nyb2xsaW5nTm9kZUZvclBvaW50KToKKyAgICAgICAgKFNjcm9sbGlu
Z1RyZWVNYWM6OmV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXApOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRG
b3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKC1b
V2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVy
RGVsZWdhdGUgdXBkYXRlRGF0YTpjb21wbGV0ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJl
ZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVk
QnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpkaWRDYW5jZWxMb2Fk
aW5nUmVxdWVzdDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNl
dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJv
dGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hh
bmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHA6CisgICAgICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0
KToKKyAgICAgICAgKFZpZGVvUmVuZGVyUmVxdWVzdFNjaGVkdWxlcjo6c3RvcCk6CisgICAgICAg
IChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OmRyYWluKToKKyAgICAgICAgKFZpZGVvUmVu
ZGVyUmVxdWVzdFNjaGVkdWxlcjo6cmVxdWVzdFJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAoc2lua0V2
ZW50SGFuZGxlcik6CisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
SXNGbHVzaGluZyk6CisgICAgICAgIChzZXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6QnVm
ZmVyOjpiZWdpblBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OkJ1ZmZlcjo6Y29tcGxldGVQ
YWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpCdWZmZXI6OndhaXRVbnRpbFBhaW50aW5nQ29t
cGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRm
b3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OlBsYXRmb3JtTGF5ZXI6OnNldFNjZW5lSW50
ZWdyYXRpb24pOgorICAgICAgICAoTmljb3NpYTo6UGxhdGZvcm1MYXllcjo6Y3JlYXRlVXBkYXRl
U2NvcGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6Zmx1c2hTdGF0ZSk6CisgICAg
ICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpjb21taXRTdGF0ZSk6CisgICAgICAgIChO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjphY2Nlc3NQZW5kaW5nKToKKyAgICAgICAgKE5pY29z
aWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmFjY2Vzc0NvbW1pdHRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaDoKKyAgICAgICAgKE5pY29zaWE6OlNj
ZW5lOjphY2Nlc3NTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVn
cmF0aW9uOjpzZXRDbGllbnQpOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0
VXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKToKKyAgICAgICAgKE5p
Y29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCk6CisgICAgICAg
IChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6aW52YWxpZGF0ZUNsaWVu
dCk6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Zmx1
c2hVcGRhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUpOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OnRh
a2VVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdDR0xQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpz
ZXROYXR1cmFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Okludm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Om9uTWVkaWFQ
bGF5ZXJEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpPbkNsb2NrU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpD
dXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1Jlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6
T25DbG9ja1NldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6R2V0Q3VycmVudE1lZGlhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpJ
bml0U2VydmljZVBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlJlbGVhc2VTZXJ2aWNlUG9p
bnRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6R2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50
ZXI6OlJlcGFpbnRWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6Z2V0U2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29s
OjpyZXR1cm5TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1w
bGVQb29sOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpz
dG9wU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlU2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6
OnByb2Nlc3NTYW1wbGVzSW5RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9T
Y2hlZHVsZXI6OnNjaGVkdWxlclRocmVhZFByb2NQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNl
dFZpZGVvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldERlc3RpbmF0aW9uUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNE
UHJlc2VudGVyOjpjcmVhdGVWaWRlb1NhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y2hlY2tEZXZp
Y2VTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpwcmVzZW50U2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6
OnBhaW50Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6
OmZyYW1lSGFzQWxwaGFBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGVzT3BhcXVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZG9MYXlvdXRUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vd0ZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldENvbnRlbnRSZXBsYWNlbWVudEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Y29udGVudFJlcGxhY2VtZW50SW1hZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6dXBkYXRlVGls
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkb1BlbmRpbmdSZXBhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OmFkZExheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnNldENhcGFjaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVRpbGVMYXllclBvb2w6OmRyYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dB
S1dpbmRvdy5tbToKKyAgICAgICAgKC1bV0FLV2luZG93IHNldEV4cG9zZWRTY3JvbGxWaWV3UmVj
dDpdKToKKyAgICAgICAgKC1bV0FLV2luZG93IGV4cG9zZWRTY3JvbGxWaWV3UmVjdF0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1bldl
YlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJU
Qy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJX
ZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtRmluYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6
OnNldFJlcXVlc3RQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldENh
bGxiYWNrUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpwYXVzZWRTdGF0
dXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjplbmFibGVEb3dubG9h
ZFRvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZp
bGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNsZWFudXBEb3du
bG9hZEZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmFsbG93QW55SFRUUFNDZXJ0
aWZpY2F0ZXNGb3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmNhbkln
bm9yZUFueUhUVFBTQ2VydGlmaWNhdGVzRm9ySG9zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsU1NMSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2U6Om1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRN
YXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cGFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAp
OgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNvbXBhdGli
bGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5NzQyYWRi
ZDg0MGEwNDFjZjRhOTVhZTJkMjJkMzliNjA5ZTI0NGIuLjk2NDMxNThmZjI1MzU0MGE1YmNlYWQ1
NjRiM2I3ZTdmM2MyYmQwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMjEtMDUtMjEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIExvY2tI
b2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNo
aW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2UgdGhlIGNvbXBpbGVy
IHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+LgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fY2xvc2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVE
YXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpj
bG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OnJlbmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpvcGVuQ3Vyc29y
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5j
ZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWRkQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp3cml0ZVNpemVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlYWRTaXplRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNr
Z3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RE5TQ2FjaGU6Omxvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6
OkROU0NhY2hlOjp1cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpETlNDYWNoZTo6cmVtb3ZlRXhw
aXJlZFJlc3BvbnNlc0ZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6RE5TQ2FjaGU6OmNsZWFyKToK
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
Q29tcG9zaXRpbmdSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5M
b29wOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpyZXN1
bWUpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCk6Cisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fZGlzcGxheVJlZnJlc2hN
b25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY2FsZUZh
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6c2V0U2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdwb3J0
U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJU
cmVlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZp
bmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2Vu
ZVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxN
YXApOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNsZWFyTG9hZGVkSWNvbnNUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRT
ZXRQYWdlVVJMSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmxvYWRJ
Y29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6aWNvblVSTEZv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpjbGVhcik6CisKIDIwMjEtMDUt
MjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBFeHBhbmQgc2FuZGJveCB3aXRoIG1pc3Npbmcgc3lzY3RsLXJlYWQgaGFuZGxlcyBmb3IgY29y
ZSBDUFUgYW5kIGNhY2hlIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDcwMzc4ZjM0
NzMyOTc3NTk4YjVlZDYzYzYyOTlhZGM3YTllZWIzZGUuLjkwZDhlYzU2ODIxZWFhYTE2M2QwYjI3
ZGE0NDM2NjY3YjBkNmZjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAK
KzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xk
ZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBh
bGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2Ug
dGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+Lgor
CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Q
cm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVJ
bmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENv
dW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpl
c3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YVN5bmM6OnN5bmNUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5j
OjpwZXJmb3JtU3luYyk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklk
ZW50aWZpZXJzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRP
cmlnaW5JZGVudGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5j
RmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNr
ZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNr
ZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxs
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxs
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6Y2FuY2VsRGVsZXRpbmdPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKToKKwogMjAyMS0w
NS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IENo
ZWNrZWRMb2NrIGluIFN0b3JhZ2VBcmVhU3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDFmNTUyNzUxNWU5MGYwYjBhOGYwMWU5M2YzNDNmNTI5MDA5NWMxMjcuLjAwMDJmODZhMmRm
YmVjMWRiNWI4Y2JkNWU3N2FlZDI3ODc4MWNkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2Nh
bCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0
IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlw
ZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlw
ZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Rd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RJ
bldlYlRocmVhZDpzeW5jaHJvbml6ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Q3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2ZldGNoQ3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6XSk6CisKIDIwMjEtMDUtMjEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9wdCBRTEl0
ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCmluZGV4IDkwZjczYzkxOGM1Mjc2OTk5ZDgwOGI2MjcyODBmYWUwMTU4MWZjYTgu
LjYzYTI3NTZkNDY2MzZkYzZhNjhiNDhiZDQxMzMzNmNjNDgzNDFkMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sK
KyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2Ug
dGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdp
bk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRo
cmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI6OnJlZ2lzdGVyUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnVucmVnaXN0ZXJQbHVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbik6
CisKIDIwMjEtMDUtMjAgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSBbSW1wbGljaXRUaGlzXSBhbmQgW0N1c3RvbVByb3h5
VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAzZDI4NWYzZDIyNTYyZWMwNjI5Y2QzNjlhYTkx
MDRhZjIxZWNiOTMyLi5iMzQzM2RlMGUyMjFkY2YxM2I0NWRhYTk3YWViMWU0OWIzZWZkOGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtOTUs
MjEgKzk1LDIxIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGVtcHR5OwogICAgICAgICAgICAgbV9wcm9w
ZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXJhdG9yLT52YWx1ZS5z
ZXQodm0sIG93bmVyLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQg
ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIG1fcHJvcGVydHlNYXAu
cmVtb3ZlKHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVmlzaXRvcj4KICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3Byb3BlcnR5TWFwKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBh
aXIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHBhaXIudmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGFjMDlmNjU0NTA3YzNkYmQ0
OTYwZmQ2NzEzMzJiYjNmMTFmOTA2MjUuLjIxZjkxOTA2NzExZGY2NGFmOGM3NWIyOTIzNmU1Nzg4
OTE3Mjc2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTEyMDksNyAr
MTIwOSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogY3JlYXRlU3RydWN0SGFuZGxlck1hcCgp
CiBzdGF0aWMgU3RydWN0VGFnSGFuZGxlciogaGFuZGVyRm9yU3RydWN0VGFnKGNvbnN0IGNoYXIq
IGVuY29kZWRUeXBlKQogewogICAgIHN0YXRpYyBMb2NrIGhhbmRlckZvclN0cnVjdFRhZ0xvY2s7
Ci0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKCZoYW5kZXJGb3JTdHJ1Y3RUYWdMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja0hvbGRlciB7IGhhbmRlckZvclN0cnVjdFRhZ0xvY2sgfTsKIAogICAgIHN0
YXRpYyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVy
TWFwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCmlu
ZGV4IDhjMTlmNTNkNGI2NDQ5YjI2YjE3OTIyNmUyNDVmZTlmNzYzZDgwNzYuLjVkNzUzMzUwMDU0
MjY4ODJhNjY3ZmU1MTdlNGUyNjQxZjEzM2VlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIGludCB0ZXN0Q0FQSVZp
YUNwcChjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFRlc3RBUEkmKT4+IHRhc2s7
CiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKGxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IGIxYjI2ODNlYmIxMzY0YmRlOWM3NmRmYjQ4OWNjMGU3
ZWJkYWQ0MTEuLjE5MWQxODI5MzVhYzFhNmU2ZjBiNTBiN2EzMTNiZDk4ODdhZGE0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0yNzI0LDcg
KzI3MjQsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQoKT4+IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayA9IHRhc2tzLnRh
a2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKaW5kZXgg
ZTVjODYyMmQ0NTI0YTJmOGEyNWNlMWQ0NWVjMmU1Yzg2ZTdjODYwMy4uYmU0ZGJmOTM4ODQ3ZTU4
MTA5NTZkNmVmZTEzODFjMDE0MTRlZGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBsb2FkQ29uc3RhbnRJbXBsKEJh
c2ljQmxvY2sqIGJsb2NrLCBUIHZhbHVlLCBCMzo6QWlyOjpPcGNvZGUgbW92ZSwgVG1wIHRtcCwK
ICAgICBzdGF0aWMgTG9jayBsb2NrOwogICAgIHN0YXRpYyBTdGRNYXA8VCwgVCo+KiBtYXA7IC8v
IEknbSBub3QgbWVzc2luZyB3aXRoIEhhc2hNYXAncyBwcm9ibGVtcyB3aXRoIGludGVnZXJzLgog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sg
fTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgbWFwID0gbmV3IFN0ZE1hcDxULCBUKj4oKTsKIApA
QCAtMjQ2OSw3ICsyNDY5LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAg
ICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwogICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sg
PSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjNfMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwCmlu
ZGV4IGU1MmU2ZGFiYzMzNDNkYmExNDE2MjQ1NGU4ZmNhODY3NDZmM2MwNzQuLjJiZTg4MzI4NjFm
ZDBkNWE2NTAzMzI5ZDNhM2U3YjljZGYzYjdiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM18xLmNwcApAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4gdGFzazsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9Owog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKaW5kZXggOTRjYmMyM2E2
NjkwMWQ1MWE4OWM4N2RjZDRmMGNkMTNkYzliZTVkZC4uMGE4OGE2YzhhNTBlYmM5ODA5ZmU2NzI4
MmM1YjcwMjBkN2FiMGU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHZvaWQg
RGlyZWN0RXZhbENvZGVDYWNoZTo6c2V0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG93bmVyLCBjCiAgICAgaWYgKCFldmFsRXhlY3V0YWJsZS0+YWxsb3dEaXJlY3RF
dmFsQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV9jYWNoZU1hcC5zZXQo
Q2FjaGVLZXkoZXZhbFNvdXJjZSwgY2FsbFNpdGVJbmRleCksIFdyaXRlQmFycmllcjxEaXJlY3RF
dmFsRXhlY3V0YWJsZT4oZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUp
KTsKIH0KIAogdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjpjbGVhcigpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
bV9jYWNoZU1hcC5jbGVhcigpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9p
ZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwoVmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICBFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2FjaGVNYXAu
ZW5kKCk7CiAgICAgZm9yIChFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIHB0ciA9IG1fY2FjaGVNYXAu
YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHB0ci0+
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVy
U2FtcGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVy
LmNwcAppbmRleCBjM2E1YzQyYWQyMWY2OTQ5MTdhNGI1MDMzZjUzNjY2OGEyM2Y5YjlkLi5hNDI2
NDBmMjg2MzI2OTcyNzlkYzQ5YTNjZTUxZWZjMzllYzFhMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2
b2lkIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKQogICAgICAgICAgICAgZm9yICg7OykgewogICAg
ICAgICAgICAgICAgIGZvciAoaW50IG1zID0gMDsgbXMgPCBwcmludGluZ1BlcmlvZDsgbXMgKz0g
c2xlZXBRdWFudHVtKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckVu
YWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2sp
OworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckNvdW50KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC03
MCw3ICs3MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpCiAKIHZvaWQgcmVzZXRT
dXBlclNhbXBsZXJTdGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICBpbiA9IDA7CiAgICAgb3V0ID0gMDsKIH0KQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBwcmludFN1cGVyU2FtcGxlclN0YXRlKCkKICAgICBpZiAoIU9w
dGlvbnM6OnVzZVN1cGVyU2FtcGxlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgIGRvdWJs
ZSBwZXJjZW50YWdlID0gMTAwLjAgKiBpbiAvIChpbiArIG91dCk7CiAgICAgaWYgKHBlcmNlbnRh
Z2UgIT0gcGVyY2VudGFnZSkKICAgICAgICAgcGVyY2VudGFnZSA9IDAuMDsKQEAgLTg5LDEzICs4
OSwxMyBAQCB2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKQogCiB2b2lkIGVuYWJsZVN1cGVy
U2FtcGxlcigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGxvY2sgfTsKICAgICBnX3N1cGVyU2FtcGxlckVuYWJsZWQgPSB0cnVlOwogfQogCiB2
b2lkIGRpc2FibGVTdXBlclNhbXBsZXIoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgZ19zdXBlclNhbXBsZXJFbmFibGVk
ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEu
Y3BwCmluZGV4IGZmYjA4MzVlNjEzNDdkODQzNGFkMzQzZWNjOWRjNTU5MTg2YTRhMjcuLjI3ZWRm
MWM4MWE1MzgzOGYxYjhiNmNlOTAwM2VjNDZkNzM0OWI1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIENvbW1v
bkRhdGE6OmludmFsaWRhdGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoVU5M
SUtFTFkoaGFzVk1UcmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkKSkgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
cGNDb2RlQmxvY2tNYXBMb2NrIH07CiAgICAgICAgIGF1dG8mIG1hcCA9IHBjQ29kZUJsb2NrTWFw
KGxvY2tlcik7CiAgICAgICAgIGZvciAoYXV0byYganVtcFJlcGxhY2VtZW50IDogbV9qdW1wUmVw
bGFjZW1lbnRzKQogICAgICAgICAgICAgbWFwLnJlbW92ZShqdW1wUmVwbGFjZW1lbnQuZGF0YUxv
Y2F0aW9uKCkpOwpAQCAtNzcsNyArNzcsNyBAQCBib29sIENvbW1vbkRhdGE6OmludmFsaWRhdGUo
KQogQ29tbW9uRGF0YTo6fkNvbW1vbkRhdGEoKQogewogICAgIGlmIChVTkxJS0VMWShoYXNWTVRy
YXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHBj
Q29kZUJsb2NrTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwY0NvZGVCbG9ja01h
cExvY2sgfTsKICAgICAgICAgYXV0byYgbWFwID0gcGNDb2RlQmxvY2tNYXAobG9ja2VyKTsKICAg
ICAgICAgZm9yIChhdXRvJiBqdW1wUmVwbGFjZW1lbnQgOiBtX2p1bXBSZXBsYWNlbWVudHMpCiAg
ICAgICAgICAgICBtYXAucmVtb3ZlKGp1bXBSZXBsYWNlbWVudC5kYXRhTG9jYXRpb24oKSk7CkBA
IC04Niw3ICs4Niw3IEBAIENvbW1vbkRhdGE6On5Db21tb25EYXRhKCkKIAogdm9pZCBDb21tb25E
YXRhOjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoQ29kZUJsb2NrKiBvd25lcikKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBwY0NvZGVCbG9ja01hcExvY2sgfTsKICAgICBpZiAoIWlzU3RpbGxWYWxpZCB8fCBoYXNWTVRy
YXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBoYXNWTVRyYXBz
QnJlYWtwb2ludHNJbnN0YWxsZWQgPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ29t
bW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKENvZGVCbG9jayogb3duZXIpCiBDb2Rl
QmxvY2sqIGNvZGVCbG9ja0ZvclZNVHJhcFBDKHZvaWQqIHBjKQogewogICAgIEFTU0VSVChpc0pJ
VFBDKHBjKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIocGNDb2RlQmxvY2tNYXBMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgcGNDb2RlQmxvY2tNYXBMb2NrIH07CiAgICAgYXV0byYgbWFwID0g
cGNDb2RlQmxvY2tNYXAobG9ja2VyKTsKICAgICBhdXRvIHJlc3VsdCA9IG1hcC5maW5kKHBjKTsK
ICAgICBpZiAocmVzdWx0ID09IG1hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCmluZGV4IDM4NmY1ZmI4ZmQ0ODI3NmFlNjU5ZGI2YThjMmM2ZDI2NDAwMTY3NTguLjc5
YWE2YzZiZTgyOGNmY2IyOTg2MGFmYWM2YTE4ZTgzMmE2MDQ1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgUGxhbjo6Y2FuY2Vs
KCkKIAogdm9pZCBQbGFuOjpjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXN0SGFuZGxlVmFsdWVDbGVhbmluZ0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9jayB9OwogCiAgICAg
aWYgKCFtX211c3RIYW5kbGVWYWx1ZXNNYXlJbmNsdWRlR2FyYmFnZSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCBhOTk2YzU1
Y2RkYzI1Y2NjMTZiMmFiYTQ1NmJiYzc0NzYzYTcwMjg5Li40ZDIyOGNmZTg3YWQ5ODE5MzZjMDdj
MDlkNDFiNzI3NTE1NTk0YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmts
aXN0LmNwcApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgfldv
cmtTY29wZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Ro
cmVhZC5tX3dvcmtsaXN0Lm1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1f
dGhyZWFkLm1fd29ya2xpc3QubV9sb2NrIH07CiAgICAgICAgICAgICBtX3RocmVhZC5tX3BsYW4g
PSBudWxscHRyOwogICAgICAgICAgICAgbV90aHJlYWQubV93b3JrbGlzdC5tX251bWJlck9mQWN0
aXZlVGhyZWFkcy0tOwogICAgICAgICB9CkBAIC05Nyw5ICs5Nyw5IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBXb3JrU2NvcGUgd29ya1Njb3BlKCp0aGlzKTsKIAotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2RhdGEubV9yaWdodFRvUnVuKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fZGF0YS5tX3JpZ2h0VG9SdW4gfTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV93b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGlmIChtX3BsYW4tPnN0YWdlKCkg
PT0gUGxhbjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBXb3JrUmVzdWx0OjpD
b250aW51ZTsKICAgICAgICAgICAgIG1fcGxhbi0+bm90aWZ5Q29tcGlsaW5nKCk7CkBAIC0xMjEs
NyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgewotICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV93b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGlm
IChtX3BsYW4tPnN0YWdlKCkgPT0gUGxhbjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBXb3JrUmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgICAgIApAQCAtMTg4LDcgKzE4OCw3
IEBAIFdvcmtsaXN0OjpXb3JrbGlzdChDU3RyaW5nJiYgdGllck5hbWUpCiBXb3JrbGlzdDo6fldv
cmtsaXN0KCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX3RocmVhZHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgbV9xdWV1ZS5hcHBlbmQo
bnVsbHB0cik7IC8vIFVzZSBudWxsIHBsYW4gdG8gaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRoZSB0
aHJlYWQgdG8gdGVybWluYXRlLgogICAgICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5QWxsKGxv
Y2tlcik7CkBAIC0yMDEsNyArMjAxLDcgQEAgV29ya2xpc3Q6On5Xb3JrbGlzdCgpCiB2b2lkIFdv
cmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxh
dGl2ZVByaW9yaXR5KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG51bWJlck9mVGhyZWFkcyk7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xv
Y2sgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZlRocmVhZHM7IGktLTspIHsKICAg
ICAgICAgY3JlYXRlTmV3VGhyZWFkKGxvY2tlciwgcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgfQpA
QCAtMjIzLDcgKzIyMyw3IEBAIFJlZjxXb3JrbGlzdD4gV29ya2xpc3Q6OmNyZWF0ZShDU3RyaW5n
JiYgdGllck5hbWUsIHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50CiAKIGJvb2wgV29ya2xp
c3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgUGxhbk1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbGFucy5lbmQoKTsKICAgICBmb3IgKFBsYW5NYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLT52bSgpID09ICZ2bSkKQEAgLTIzNCw3ICsyMzQs
NyBAQCBib29sIFdvcmtsaXN0Ojppc0FjdGl2ZUZvclZNKFZNJiB2bSkgY29uc3QKIAogdm9pZCBX
b3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4mJiBwbGFuKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIs
IFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRv
IG9wdGltaXplICIsIHBsYW4tPmtleSgpLCAiXG4iKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lk
IFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiAKIFdvcmtsaXN0OjpTdGF0ZSBX
b3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZShDb21waWxhdGlvbktleSBrZXkpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsK
ICAgICBQbGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9wbGFucy5maW5kKGtleSk7CiAgICAgaWYg
KGl0ZXIgPT0gbV9wbGFucy5lbmQoKSkKICAgICAgICAgcmV0dXJuIE5vdEtub3duOwpAQCAtMjcw
LDcgKzI3MCw3IEBAIHZvaWQgV29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFk
eShWTSYgdm0pCiAgICAgLy8gQWZ0ZXIgd2UgcmVsZWFzZSB0aGlzIGxvY2ssIHdlIGtub3cgdGhh
dCBhbHRob3VnaCBvdGhlciBWTXMgbWF5IHN0aWxsCiAgICAgLy8gYmUgYWRkaW5nIHBsYW5zLCBv
dXIgVk0gd2lsbCBub3QgYmUuCiAgICAgCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxvY2tlciwgV1RGOjpk
YXRhRmlsZSgpKTsKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFdvcmtsaXN0Ojp3YWl0VW50aWxB
bGxQbGFuc0ZvclZNQXJlUmVhZHkoVk0mIHZtKQogdm9pZCBXb3JrbGlzdDo6cmVtb3ZlQWxsUmVh
ZHlQbGFuc0ZvclZNKFZNJiB2bSwgVmVjdG9yPFJlZlB0cjxQbGFuPiwgOD4mIG15UmVhZHlQbGFu
cykKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcmVhZHlQbGFucy5zaXplKCk7ICsraSkgewogICAgICAgICBSZWZQ
dHI8UGxhbj4gcGxhbiA9IG1fcmVhZHlQbGFuc1tpXTsKICAgICAgICAgaWYgKHBsYW4tPnZtKCkg
IT0gJnZtKQpAQCAtMzQzLDcgKzM0Myw3IEBAIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29t
cGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBDb21waWxhdGlvbktleSByZXF1CiAgICAg
fQogICAgIAogICAgIGlmICghIXJlcXVlc3RlZEtleSAmJiByZXN1bHRpbmdTdGF0ZSA9PSBOb3RL
bm93bikgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgaWYgKG1fcGxhbnMuY29udGFpbnMocmVx
dWVzdGVkS2V5KSkKICAgICAgICAgICAgIHJlc3VsdGluZ1N0YXRlID0gQ29tcGlsaW5nOwogICAg
IH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdvcmtsaXN0Ojp2aXNpdFdlYWtSZWZlcmVuY2Vz
KFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgVk0qIHZtID0gJnZpc2l0b3IuaGVhcCgpLT52bSgp
OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIGZvciAoUGxhbk1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBtX3BsYW5zLmVuZCgpOyArK2l0ZXIpIHsK
ICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAg
IGlmIChwbGFuLT52bSgpICE9IHZtKQpAQCAtNDAzLDcgKzQwMyw3IEBAIHRlbXBsYXRlIHZvaWQg
V29ya2xpc3Q6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKIHZvaWQgV29ya2xp
c3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0pCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAg
ICAgICAgSGFzaFNldDxDb21waWxhdGlvbktleT4gZGVhZFBsYW5LZXlzOwogICAgICAgICBmb3Ig
KFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFu
cy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUu
Z2V0KCk7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5z
KFZNJiB2bSkKIAogdm9pZCBXb3JrbGlzdDo6cmVtb3ZlTm9uQ29tcGlsaW5nUGxhbnNGb3JWTShW
TSYgdm0pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7ICptX2xvY2sgfTsKICAgICBIYXNoU2V0PENvbXBpbGF0aW9uS2V5PiBkZWFkUGxhbktl
eXM7CiAgICAgVmVjdG9yPFJlZlB0cjxQbGFuPj4gZGVhZFBsYW5zOwogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX3BsYW5zKSB7CkBAIC00ODMsMTMgKzQ4MywxMyBAQCB2b2lkIFdvcmtsaXN0Ojpy
ZW1vdmVOb25Db21waWxpbmdQbGFuc0ZvclZNKFZNJiB2bSkKIAogc2l6ZV90IFdvcmtsaXN0Ojpx
dWV1ZUxlbmd0aCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICByZXR1cm4gbV9xdWV1ZS5zaXplKCk7CiB9CiAK
IHZvaWQgV29ya2xpc3Q6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9Owog
ICAgIGR1bXAobG9ja2VyLCBvdXQpOwogfQogCkBAIC01MDMsMTEgKzUwMywxMSBAQCB2b2lkIFdv
cmtsaXN0OjpkdW1wKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIAogdW5zaWduZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1bnNpZ25lZCBudW1i
ZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc3VzcGVuc2lvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N1c3BlbnNpb25M
b2NrIH07CiAgICAgYXV0byBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzID0gbV90aHJlYWRzLnNpemUo
KTsKICAgICBpZiAobnVtYmVyT2ZUaHJlYWRzIDwgY3VycmVudE51bWJlck9mVGhyZWFkcykgewog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzOyBpLS0gPiBudW1iZXJPZlRocmVhZHM7KSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fdGhyZWFkc1tpXS0+bV90aHJlYWQtPmhhc1VuZGVybHlp
bmdUaHJlYWQobG9ja2VyKSkgewogICAgICAgICAgICAgICAgICAgICBtX3F1ZXVlLmFwcGVuZChu
dWxscHRyKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCB1bnNpZ25lZCBXb3JrbGlzdDo6c2V0TnVtYmVy
T2ZUaHJlYWRzKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50IHJlbGF0aXZlUHJpbwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzOyBpLS0gPiBudW1i
ZXJPZlRocmVhZHM7KSB7CiAgICAgICAgICAgICBib29sIGlzU3RvcHBlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICAg
ICAgaXNTdG9wcGVkID0gbV90aHJlYWRzW2ldLT5tX3RocmVhZC0+dHJ5U3RvcChsb2NrZXIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFpc1N0b3BwZWQpCkBAIC01MjgsNyArNTI4
LDcgQEAgdW5zaWduZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1bnNpZ25lZCBudW1i
ZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW8KICAgICAgICAgbV90aHJlYWRzLnNocmlua1Rv
Rml0KCk7CiAgICAgICAgIEFTU0VSVChtX251bWJlck9mQWN0aXZlVGhyZWFkcyA8PSBudW1iZXJP
ZlRocmVhZHMpOwogICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZUaHJlYWRzID4gY3VycmVudE51bWJl
ck9mVGhyZWFkcykgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y3VycmVudE51bWJlck9mVGhyZWFkczsgaSA8IG51bWJlck9mVGhyZWFkczsgaSsrKQogICAgICAg
ICAgICAgY3JlYXRlTmV3VGhyZWFkKGxvY2tlciwgcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3RJbmxpbmVzLmgKaW5kZXgg
ZTVmOTBiNDM4YzdiOTU4YmRlMmZiYjBhYmU2NzUwZGZiYWZjYTA5Mi4uY2MyNjZmNmYzNjU2MWFj
NmVjNjQyNTI1MWFkYThkNmY0MmYyMDBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0SW5saW5lcy5oCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgaXRlcmF0ZUNv
ZGVCbG9ja3NGb3JHQyhWaXNpdG9yJiB2aXNpdG9yLCBWTSYgdm0sIGNvbnN0IEZ1bmMmIGZ1bmMp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jLCB0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBXb3JrbGlz
dDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhWaXNpdG9yJiB2aXNpdG9yLCBWTSYgdm0sIGNvbnN0
IEZ1bmMmIGZ1bmMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFucy5lbmQoKTsgKytpdGVyKSB7CiAgICAg
ICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKHBsYW4tPnZt
KCkgIT0gJnZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwCmluZGV4IGY0ZjFjMzdjYzM3YWE2YjUxNzk1YmJlNDkyYTk1NjQ0ZGVh
M2RlOWYuLjU1YzA1YzgxMjI5ZjM1OTM2ZmYxMzQ3Y2RkZjQ1NGYzYWZiNmFjOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAK
QEAgLTc3LDE0ICs3NywxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbnF1ZXVlKHN0ZDo6
dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2spCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlBbGwoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB3YWl0VW50aWxFbXB0eSgpCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkgfHwg
bV93b3JraW5nKQogICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX2xvY2spOwogICAgIH0K
QEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzazsKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgICAgICBtX3dvcmtpbmcg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICAg
ICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKaW5kZXggYjFlOTdmYzY1YTRlY2MwZWMzMjVk
NzgzOTQ0MTZiMjlkODVlNmI2NC4uNmMyNDJiODYzYmNlY2Q3M2U4MzBhNjNhMzVmZTIwMDBkMGEy
Mzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1CaXRz
KCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5
KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9i
aXR2ZWN0b3JMb2NrIH07CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRSZXNpemVCaXRzKG1f
YmxvY2tzLmNhcGFjaXR5KCkpOwogICAgICAgICAgICAgbV9iaXRzLnJlc2l6ZShtX2Jsb2Nrcy5j
YXBhY2l0eSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0SW5saW5lcy5oCmluZGV4IDA1ODEwOGY3M2E0ZmE4MDY5YmZmZDU5NGJlYzA3
YzY5ZWYzYzFiYWMuLjU3NTQ1MDgyYTIwYmQzOWY5MzVkZDIzNDFiY2Y3ZWUxNzg3YzI3MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgK
QEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFTdWJzcGFjZXMo
Vk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGZvciAoQ29kZUJsb2NrKiBjb2RlQmxvY2sg
OiBtX2N1cnJlbnRseUV4ZWN1dGluZykKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2spOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmlu
ZGV4IDRmMDlhNjNlZTA1OGQ0YTE4YmEzYzYxMTVlYWJjNjAzZTZmMTJlMjYuLjUxODM4NzBmNDZk
MjQ4MjNkNTc5OTczZjgzYzFlOWNmNWFmZTA2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2
YXRlOgogdm9pZCBDb25zZXJ2YXRpdmVSb290czo6YWRkKAogICAgIHZvaWQqIGJlZ2luLCB2b2lk
KiBlbmQsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9ja1NldCYg
Y29kZUJsb2NrcykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlQmxvY2tzLmdldExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNvZGVCbG9ja3MuZ2V0TG9jaygpIH07CiAgICAgQ29t
cG9zaXRlTWFya0hvb2sgbWFya0hvb2soaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzLCBsb2Nr
ZXIpOwogICAgIGdlbmVyaWNBZGRTcGFuKGJlZ2luLCBlbmQsIG1hcmtIb29rKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNjFkMmIyZDJiMTAxYzM4MjI1OWQ2OThkYmUy
Zjc1YzE2YzMxOTFmMy4uYzFjZjg2NDI3NzA1MWJhMDIxMDU4Y2Y1MTRhZDM3MmZiYTc0ODI3YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBIZWFw
OjpIZWFwKFZNJiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc2l6ZV90IG1lbW9yeUFib3Zl
Q3JpdGljYWxUaHJlc2hvbGQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PGRvdWJs
ZT4obV9yYW1TaXplKSAqICgxLjAgLSBPcHRpb25zOjpjcml0aWNhbEdDTWVtb3J5VGhyZXNob2xk
KCkpKTsKICAgICBtX21heEVkZW5TaXplV2hlbkNyaXRpY2FsID0gbWVtb3J5QWJvdmVDcml0aWNh
bFRocmVzaG9sZCAvIDQ7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgIG1fdGhyZWFkID0gYWRv
cHRSZWYobmV3IEhlYXBUaHJlYWQobG9ja2VyLCAqdGhpcykpOwogfQogCkBAIC00MDEsNyArNDAx
LDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgCiAgICAgaWYgKG1f
Y29sbGVjdENvbnRpbnVvdXNseVRocmVhZCkgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrKTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrIH07CiAgICAgICAgICAgICBt
X3Nob3VsZFN0b3BDb2xsZWN0aW5nQ29udGludW91c2x5ID0gdHJ1ZTsKICAgICAgICAgICAgIG1f
Y29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgfQpAQCAt
NDQzLDcgKzQ0Myw3IEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogICAgIC8v
IENhcmVmdWxseSBicmluZyB0aGUgdGhyZWFkIGRvd24uCiAgICAgYm9vbCBzdG9wcGVkID0gZmFs
c2U7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgc3RvcHBlZCA9
IG1fdGhyZWFkLT50cnlTdG9wKGxvY2tlcik7CiAgICAgICAgIG1fdGhyZWFkU2hvdWxkU3RvcCA9
IHRydWU7CiAgICAgICAgIGlmICghc3RvcHBlZCkKQEAgLTExMTEsNyArMTExMSw3IEBAIHZvaWQg
SGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogCiAgICAgYm9vbCBhbHJlYWR5
UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90
aHJlYWRMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAg
ICAgICAgZm9yIChjb25zdCBHQ1JlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCA6IG1fcmVxdWVzdHMp
IHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN1YnN1bWVkQnkocHJldmlvdXNSZXF1ZXN0KSkg
ewogICAgICAgICAgICAgICAgIGFscmVhZHlSZXF1ZXN0ZWQgPSB0cnVlOwpAQCAtMTI1MCw3ICsx
MjUwLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3Rv
ciBjb25uKQogICAgIG1fY3VycmVudEdDU3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CiAgICAgCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV9jdXJyZW50UmVxdWVz
dCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKICAgICB9CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBORVZF
Ul9JTkxJTkUgYm9vbCBIZWFwOjpydW5CZWdpblBoYXNlKEdDQ29uZHVjdG9yIGNvbm4pCiAgICAg
ICAgIFt0aGlzXSAoKSB7CiAgICAgICAgICAgICBTbG90VmlzaXRvciogdmlzaXRvcjsKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BhcmFsbGVsU2xv
dFZpc2l0b3JMb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJhbGxl
bFNsb3RWaXNpdG9yTG9jayB9OwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRSghbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5pc0VtcHR5KCksICJQYXJh
bGxlbCBTbG90VmlzaXRvcnMgYXJlIGFsbG9jYXRlZCBhcHJpb3JpIik7CiAgICAgICAgICAgICAg
ICAgdmlzaXRvciA9IG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMudGFrZUxhc3QoKTsK
ICAgICAgICAgICAgIH0KQEAgLTEzMTQsNyArMTMxNCw3IEBAIE5FVkVSX0lOTElORSBib29sIEhl
YXA6OnJ1bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFyYWxsZWxT
bG90VmlzaXRvckxvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcmFs
bGVsU2xvdFZpc2l0b3JMb2NrIH07CiAgICAgICAgICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxl
bFNsb3RWaXNpdG9ycy5hcHBlbmQodmlzaXRvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
OwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgdm9pZCBIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKGNvbnN0
IEZ1bmMmIGZ1bmMpCiAgICAgZm9yICg7OykgewogICAgICAgICBib29sIGRvbmU7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgICAgIGRvbmUg
PSBmdW5jKGxvY2tlcik7CiAgICAgICAgICAgICBpZiAoIWRvbmUpIHsKICAgICAgICAgICAgICAg
ICBzZXRNdXRhdG9yV2FpdGluZygpOwpAQCAtMjEyOCw3ICsyMTI4LDcgQEAgSGVhcDo6VGlja2V0
IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKEdDUmVxdWVzdCByZXF1ZXN0KQogICAgIEFTU0VSVCh2
bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KHZtKCkuYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1Rh
YmxlKCkpOwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgLy8gV2UgbWF5IGJlIGFibGUg
dG8gc3RlYWwgdGhlIGNvbm4uIFRoYXQgb25seSB3b3JrcyBpZiB0aGUgY29sbGVjdG9yIGlzIGRl
ZmluaXRlbHkgbm90IHJ1bm5pbmcKICAgICAvLyByaWdodCBub3cuIFRoaXMgaXMgYW4gb3B0aW1p
emF0aW9uIHRoYXQgcHJldmVudHMgdGhlIGNvbGxlY3RvciB0aHJlYWQgZnJvbSBldmVyIHN0YXJ0
aW5nIGluIG1vc3QKICAgICAvLyBjYXNlcy4KQEAgLTI5NjgsOSArMjk2OCw5IEBAIHZvaWQgSGVh
cDo6bm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkKICAgICAgICAgICAgICAgICBNb25vdG9uaWNUaW1l
IGluaXRpYWxUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAgICAgICAgICAgU2Vj
b25kcyBwZXJpb2QgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKE9wdGlvbnM6OmNvbGxlY3RD
b250aW51b3VzbHlQZXJpb2RNUygpKTsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NvbGxlY3RDb250aW51b3Vz
bHlMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29sbGVjdENv
bnRpbnVvdXNseUxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZXF1ZXN0cy5hcHBlbmQoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2xhc3RHcmFudGVkVGlja2V0Kys7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggNmYwNGMzNDc2ZTg3OWVjNGE0NzlmOGI2
ZWE4OTFmMmYzOWYzZDdiMC4uZjlhMTgzMjNjNzI4MzM0NzE5OGQ5Njg4OWRjNTlmNzQzNzhmMjA3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcApAQCAtNTc4
LDcgKzU3OCw3IEBAIHNpemVfdCBTbG90VmlzaXRvcjo6cGVyZm9ybUluY3JlbWVudE9mRHJhaW5p
bmcoc2l6ZV90IGJ5dGVzUmVxdWVzdGVkKQogCiBib29sIFNsb3RWaXNpdG9yOjpkaWRSZWFjaFRl
cm1pbmF0aW9uKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2hlYXAubV9tYXJraW5nTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2hlYXAubV9tYXJraW5nTXV0ZXggfTsKICAgICBy
ZXR1cm4gZGlkUmVhY2hUZXJtaW5hdGlvbihsb2NrZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDdlYjUxYWYzMGZkYTgwMmNhODFhOGIx
MGVjZDdlNmViZWUyMjExN2MuLmIyZDk5ZmJhODkyMjZkNGMyNDBjZGFiOGY1YjA1NzU3ODFiZThk
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoT3B0aW9uCiAgICAgICAgIFZNJiB2bSA9IG1f
ZW52aXJvbm1lbnQuZGVidWdnZXIoKS52bSgpOwogICAgICAgICBTYW1wbGluZ1Byb2ZpbGVyJiBz
YW1wbGluZ1Byb2ZpbGVyID0gdm0uZW5zdXJlU2FtcGxpbmdQcm9maWxlcihzdG9wd2F0Y2gpOwog
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJvZmlsZXIuZ2V0TG9jaygpKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNhbXBsaW5nUHJvZmlsZXIuZ2V0TG9jaygpIH07CiAg
ICAgICAgIHNhbXBsaW5nUHJvZmlsZXIuc2V0U3RvcFdhdGNoKGxvY2tlciwgc3RvcHdhdGNoKTsK
ICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5ub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRp
b25UaHJlYWQobG9ja2VyKTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5zdGFydChsb2NrZXIp
OwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6
dHJhY2tpbmdDb21wbGV0ZSgpCiAgICAgICAgIFNhbXBsaW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJv
ZmlsZXIgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNh
bXBsaW5nUHJvZmlsZXIpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJv
ZmlsZXItPmdldExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzYW1wbGluZ1Byb2Zp
bGVyLT5nZXRMb2NrKCkgfTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci0+cGF1c2UobG9ja2Vy
KTsKICAgICAgICAgVmVjdG9yPFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrVHJhY2U+IHN0YWNrVHJh
Y2VzID0gc2FtcGxpbmdQcm9maWxlci0+cmVsZWFzZVN0YWNrVHJhY2VzKGxvY2tlcik7CiAgICAg
ICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgSW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RvcFNhbXBsaW5nV2hlbkRpc2Nvbm5lY3RpbmcoKQog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGlu
Z1Byb2ZpbGVyID0gdm0uc2FtcGxpbmdQcm9maWxlcigpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNh
bXBsaW5nUHJvZmlsZXIpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJvZmlsZXIt
PmdldExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNhbXBsaW5nUHJvZmlsZXItPmdldExv
Y2soKSB9OwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnBhdXNlKGxvY2tlcik7CiAgICAgc2FtcGxp
bmdQcm9maWxlci0+Y2xlYXJEYXRhKGxvY2tlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQuY3BwCmluZGV4IDg5OTlmMzA3N2I3MzIwNTE4NWMxMDRhMGI2YjMyYjRmMjkwODdj
YjAuLmUwNmZiZDk5OTViYWVhNmQ1ODcwYTNjYmJiNTI2ODczZWE5NmM2YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogCiBib29sIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJv
b2wgYXV0b21hdGljYWxseVBhdXNlKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgIGlmICghbV90
YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxs
cHRyOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgICAgICBpZiAoIW1fdGFy
Z2V0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0YXJnZXQgPSBtX3RhcmdldDsKQEAg
LTg4LDcgKzg4LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdl
VG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OmNsb3NlKCkKIHsKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fdGFyZ2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9
OwogICAgICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDUs
NyArMTA1LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIAogdm9p
ZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11
dGV4IH07CiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcApp
bmRleCAzZjE5ZjBiOWU4YTU5NDNlZDk5Zjg0OTQ2NGViYTdhNGY2MDAzNDUwLi5kMWQ5NTJjOTQ0
NTk2N2FhOGExMWYxMjQzODJhYmEyYTJiOWU3MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0
YXJnZXQpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CiAKICAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBuZXh0QXZhaWxh
YmxlVGFyZ2V0SWRlbnRpZmllcigpOwogICAgIHRhcmdldC0+c2V0VGFyZ2V0SWRlbnRpZmllcih0
YXJnZXRJZGVudGlmaWVyKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnVucmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCiB7CiAg
ICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9t
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGF1dG8gdGFyZ2V0
SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAgIGlmICghdGFyZ2V0
SWRlbnRpZmllcikKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VS
VF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAoIXVwZGF0ZVRhcmdldE1h
cCh0YXJnZXQpKQogICAgICAgICByZXR1cm47CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgbV9j
bGllbnRDYXBhYmlsaXRpZXMgPSBXVEY6Om51bGxvcHQ7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xp
ZW50KQogICAgIEFTU0VSVCgobV9jbGllbnQgJiYgIWNsaWVudCkgfHwgKCFtX2NsaWVudCAmJiBj
bGllbnQpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX2NsaWVudCA9IGNsaWVu
dDsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0
Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpzZXR1cEZhaWxlZChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKIApA
QCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21w
bGV0ZWQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICh0YXJn
ZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50
aWZpZXIpCiAgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpjbGllbnRDYXBhYmlsaXRpZXNE
aWRDaGFuZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAg
ICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6QVBJKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldENvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXggZDAwY2ZiYzg4YTA2ZTI4
NDRiZDViMTI0N2JlODkwNTczMjE5MzAzNi4uOGIyYTdmYTM4YWEwNjhlNDUzNDNmMzRhNDcyY2Yx
YWUwNTBhZTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW0KQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0
SGFuZGxlUnVuU291cmNlR2xvYmFsKHZvaWQqKQogCiAgICAgUmVtb3RlVGFyZ2V0UXVldWUgcXVl
dWVDb3B5OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKHJ3aVF1ZXVlTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcndpUXVldWVNdXRleCB9OwogICAgICAgICBzdGQ6OnN3
YXAocXVldWVDb3B5LCAqcndpUXVldWUpOwogICAgIH0KIApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgdm9pZCBSZW1vdGVUYXJnZXRRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCiAgICAgQVNTRVJUKHJ3aVF1ZXVlKTsKIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrKHJ3aVF1ZXVlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
cndpUXVldWVNdXRleCB9OwogICAgICAgICByd2lRdWV1ZS0+YXBwZW5kKFdURk1vdmUoZnVuY3Rp
b24pKTsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0
SGFuZGxlUnVuU291cmNlV2l0aEluZm8odm9pZCogaW5mbykKIAogICAgIFJlbW90ZVRhcmdldFF1
ZXVlIHF1ZXVlQ29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhjb25uZWN0aW9u
VG9UYXJnZXQtPnF1ZXVlTXV0ZXgoKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBjb25uZWN0
aW9uVG9UYXJnZXQtPnF1ZXVlTXV0ZXgoKSB9OwogICAgICAgICBxdWV1ZUNvcHkgPSBjb25uZWN0
aW9uVG9UYXJnZXQtPnRha2VRdWV1ZSgpOwogICAgIH0KIApAQCAtMTU4LDcgKzE1OCw3IEBAIHZv
aWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRjaEFzeW5jT25UYXJnZXQoRnVuY3Rp
b248dm9pZCAoKT4mJiBjYWxsYmFjCiAKIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpz
ZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhbGx5UGF1c2Up
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RhcmdldE11dGV4IH07CiAKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EKICAg
ICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVP
cigwKTsKIAogICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgdGFyZ2V0SWRlbnRpZmll
ciwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBhdXRvbWF0aWNhbGx5UGF1c2UsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKIAogICAgICAg
ICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewog
ICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJn
ZXRJZGVudGlmaWVyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGlj
YQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
dGFyZ2V0TXV0ZXggfTsKIAogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KQEAgLTIwMSw3ICsy
MDEsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UoKQogICAgIGF1dG8g
dGFyZ2V0SWRlbnRpZmllciA9IG1fdGFyZ2V0ID8gbV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIo
KSA6IDA7CiAgICAgCiAgICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlzLCB0YXJnZXRJZGVu
dGlmaWVyLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhcmdl
dE11dGV4IH07CiAgICAgICAgIGlmIChtX3RhcmdldCkgewogICAgICAgICAgICAgaWYgKG1fY29u
bmVjdGVkKQogICAgICAgICAgICAgICAgIG1fdGFyZ2V0LT5kaXNjb25uZWN0KCp0aGlzKTsKQEAg
LTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3Nh
Z2VUb1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQo
W3RoaXMsIHN0cm9uZ01lc3NhZ2UgPSByZXRhaW5QdHIobWVzc2FnZSksIHN0cm9uZ1RoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSB7CiAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFy
Z2V0ID0gbnVsbHB0cjsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
dGFyZ2V0TXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXgg
fTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV90YXJnZXQ7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3AoRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW4KICAgICBBU1NFUlQobV9ydW5Mb29wKTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrIHsg
bV9xdWV1ZU11dGV4IH07CiAgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24p
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXgg
ZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2MzYzlmZmU5ZTUzZjgxYjZkZC4uNzVmMzk0MzdiZTViOWZj
OTA1YjBkMmFjNmYwNmQ0MzBmOGJiNjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yQ29jb2EubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Kgog
ewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgICAgIGlmICghdXBkYXRlVGFyZ2V0TWFwKHRhcmdldCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICAgICAg
Ly8gSW4gY2FzZSBkZWJ1Z2dlcnMgZmFpbCB0byByZXNwb25kLCBvciB3ZSBjYW5ub3QgY29ubmVj
dCB0byB3ZWJpbnNwZWN0b3JkLCBhdXRvbWF0aWNhbGx5IGNvbnRpbnVlIGFmdGVyIGEgc2hvcnQg
cGVyaW9kIG9mIHRpbWUuCiAgICAgICAgIGludDY0X3QgZGVidWdnZXJUaW1lb3V0RGVsYXkgPSAx
MDsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05P
VywgZGVidWdnZXJUaW1lb3V0RGVsYXkgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAgIGlmIChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0
ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWlsZWQgdG8gcmVjZWl2ZSBhIHJlc3BvbnNl
IGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmll
cik7CiAgICAgICAgICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICB0YXJnZXQt
PnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKTsKIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogCiAgICAgICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJn
ZXRJZGVudGlmaWVyKTsKICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFy
Z2V0SWRlbnRpZmllciA9IDA7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpCiAKIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElEIHRhcmdldElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICghbV9yZWxheUNv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcwLDcgKzI3MCw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBpZiAobV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTI5
NCw3ICsyOTQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZO
ZWVkZWQoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0
aW9uKHBpZF90IHBpZCwgUmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRhKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgaWYgKG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgfHwgbV9wYXJlbnRQcm9jZXNzQXVk
aXREYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIFJldGFpblB0
cjxDRkRhdGFSZWYKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdl
TmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9t
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7CiAgICAgICAgIHN0
b3BJbnRlcm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKQEAgLTM0NSw3ICszNDUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uKgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiByZWxheUNvbm5lY3Rpb24p
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAKICAgICBBU1NFUlQocmVsYXlDb25uZWN0aW9uID09IG1fcmVsYXlDb25uZWN0
aW9uKTsKICAgICBpZiAocmVsYXlDb25uZWN0aW9uICE9IG1fcmVsYXlDb25uZWN0aW9uKQpAQCAt
NDg0LDcgKzQ4NCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKCkK
IAogICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CiAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQogICAgICAgICAgICAg
cHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CkBAIC02MTUsNyArNjE1LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8pCiAgICAgZGlzcGF0Y2hBc3luY09uTWFpblRocmVhZFdpdGhXZWJUaHJlYWRMb2NrSWZOZWVk
ZWQoXnsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxscHRy
OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgICAgICAgICBhdXRvIGZp
bmRSZXN1bHQgPSBtX3RhcmdldE1hcC5maW5kKHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICAg
ICAgaWYgKGZpbmRSZXN1bHQgPT0gbV90YXJnZXRNYXAuZW5kKCkpCkBAIC02MzksNyArNjM5LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBsaWNhdGlvblNldHVwTWVz
c2FnZShOU0RpY3Rpb25hcnkgKikKICAgICAgICAgLy8gV2FpdCBhIGJpdCBmb3IgdGhlIGluZm9y
bWF0aW9uLCBidXQgZ2l2ZSB1cCBhZnRlciBhIHNlY29uZC4KICAgICAgICAgbV9zaG91bGRTZW5k
UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uID0gdHJ1ZTsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMSAqIE5TRUNfUEVSX1NFQyksIGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCks
IF57Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKG1fc2hvdWxkU2VuZFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbikKICAgICAgICAgICAgICAgICBzdG9wSW50ZXJuYWwoU3Rv
cFNvdXJjZTo6WFBDTWVzc2FnZSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KaW5kZXggYjUwMmUyOTM1ZjBmODU2YWEx
ZjIyYmU1MDQyNGFjM2E3ODU3MjEyOS4uNDNkZjI3MGFjODIyZjRiZjljZDY1ZDlkNTAwZjg3M2Uy
YWIxYWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tCkBAIC03MSw3ICs3MSw3IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uOjpjbG9zZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgY2xvc2VGcm9tTWVzc2FnZSgpOwog
fQogCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tTWVzc2FnZSgpCiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogCiAgICAgZGlzcGF0
Y2hfYXN5bmMobV9xdWV1ZS5nZXQoKSwgXnsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAvLyBUaGlz
IHdpbGwgdHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50
IG9uIHRoZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgIGNsb3NlT25RdWV1ZSgpOwogICAg
IH0pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIE5TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6ZGVzZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCBvYmplCiAKICAgICB4
cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShvYmpl
Y3QsIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSk7CiAg
ICAgaWYgKCF4cGNEaWN0aW9uYXJ5IHx8IHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSAhPSBY
UENfVFlQRV9ESUNUSU9OQVJZKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRo
aXMsIG9iamVjdCk7CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qg
b2JqZWN0KQogewogICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJP
UikgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uRmFpbGVkKHRo
aXMpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQogICAgICAgICBhdWRpdF90b2tl
bl90IHRva2VuOwogICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25u
ZWN0aW9uLmdldCgpLCAmdG9rZW4pOwogICAgICAgICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQo
dG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5zcGVjdG9yZCIpKSB7
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIg
b25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUg
YW5kIGRlcmVmIHVzLgogICAgICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQogICAgIGlmICh1c2VySW5mbyAm
JiAhW3VzZXJJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT54
cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZvKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIv
UmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCmluZGV4IDA0YWJmNTU1NGM0MmIz
OTUwYmFiNDFiYTI1NDc0NzJhYTNhMGJlMTIuLjhiYmNmZTFiZmY2MWViMzFjYmUyZjViNTlhZTE0
YzhhODIzMjBjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvcigpCiAKIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAobV9lbmFibGVkKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDIsNyArMTQyLDcgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlv
bjo6TWVzc2FnZUhhbmRsZXJzJiBSZW1vdGVJbnNwZWN0b3I6Om1lc3NhZ2VIYW5kbGVycygpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbm5lY3Rpb24oUmVmPFNvY2tldENvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIEFTU0VSVCghbV9zb2NrZXRDb25uZWN0
aW9uKTsKICAgICBtX3NvY2tldENvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKCkK
ICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwogCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fcHVzaFNjaGVkdWxl
ZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAgIH0pOwpAQCAtMjI5LDcgKzIy
OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZU1lc3NhZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90
ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgaWYgKCFtX3NvY2tldENvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAt
MjM4LDcgKzIzOCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3Rl
KFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZEdldFRhcmdldExpc3RNZXNzYWdlKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBwdXNo
TGlzdGluZ3NOb3coKTsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0
IGNoYXIqCiB7CiAgICAgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlv
blRvVGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBjb25uZWN0aW9uVG9UYXJn
ZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwogICAgICAg
ICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2Myw3
ICsyNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9zZU1lc3NhZ2UoVGFy
Z2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAg
IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRNYXAuZ2V0KHRhcmdl
dElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFyZ2V0SUQg
dGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdl
dDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgdGFyZ2V0ID0gbV90YXJnZXRNYXAuZ2V0
KHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFy
Z2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgV1RGTW92ZShj
b25uZWN0aW9uVG9UYXJnZXQpKTsKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQuY3BwCmluZGV4IDVhMWQ5MjQ1N2E1M2FhODdkNGNhYzliNGIxMTFjYzM0MTgzMTY5NTQu
LjVlMzg3OThlYTBiMTg1NTQ5MGJlNWM2ZjljMzgxYTVjNWE0ZTJhZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpkaWRS
ZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX3BhcnNlcnNMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJzZXJzTG9jayB9OwogICAgIGF1dG8gcmVzdWx0ID0gbV9w
YXJzZXJzLmVuc3VyZShjbGllbnRJRCwgW3RoaXMsIGNsaWVudElEXSB7CiAgICAgICAgIHJldHVy
biBNZXNzYWdlUGFyc2VyKFt0aGlzLCBjbGllbnRJRF0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gZXZlbnQgPSBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50OjpleHRyYWN0RXZlbnQoY2xpZW50SUQsIFdURk1vdmUoZGF0YSkpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCmluZGV4IDczOTY3M2VmODc3NGY2
MGVkODc4MTk1MzU1M2Q3MGZlMzcwYjNjZDUuLmUzMDU4ZjUwMWRjNzA5ZmIyOGU2ODY1YjY5NTMz
YTZiNTljODY1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpkaWRDbG9zZShSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCkKICAgICBtX2NsaWVudENv
bm5lY3Rpb24gPSBXVEY6Om51bGxvcHQ7CiAKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goWz1dIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6
QVBJKTsKICAgICB9KTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQogCiB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c3RhcnQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNo
TGlzdGluZ3NTb29uKCkKICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwogCiAgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFs9XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1f
cHVzaFNjaGVkdWxlZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAgIH0pOwpA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJnZXRJRCB0
YXJnZXRJZGVudGlmaWVyKQogewogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0
OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQo
dGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9j
a0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAg
ICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bm5lY3Rpb25Ub1RhcmdldCkpOwogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7
CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwSW5zcGVjdG9y
Q2xpZW50KGNvbnN0IEV2ZW50JikKIAogICAgIG1fcmVhZHlUb1B1c2hMaXN0aW5ncyA9IHRydWU7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApAQCAtMzI2LDcgKzMyNiw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpmcm9udGVuZERpZENsb3NlKGNvbnN0IEV2ZW50JiBldmVu
dCkKIAogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+IGNvbm5lY3Rpb25Ub1Rh
cmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFy
Z2V0KiB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQoZXZlbnQudGFyZ2V0SUQudmFsdWUoKSk7CiAg
ICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4LDcgKzM0OCw3
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBFdmVu
dCYgZXZlbnQpCiAKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0
aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGNvbm5lY3Rpb25Ub1Rh
cmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQoZXZlbnQudGFyZ2V0SUQudmFsdWUoKSk7
CiAgICAgICAgIGlmICghY29ubmVjdGlvblRvVGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEF1dG9tYXRpb25T
ZXNzaW9uKGNvbnN0IEV2ZW50JiBldmVudCkKIAogICAgIG1fcmVhZHlUb1B1c2hMaXN0aW5ncyA9
IHRydWU7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggYWU1
ZTZkOGExYWVhYjFhMDQ1NTY2YjM3YTNlNGNkMGViZDYxZjRmYy4uM2M5NzcwMWM2NDQxZTIxNzUy
ZjQxNGFkODI0NmMxZGQ2MjkyNTE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIE9wdGlvbmFs
PENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0
KGNvbnN0IGNoYXIqIHNlCiAKIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkcmVzcywgdWludDE2X3Qg
cG9ydCwgTGlzdGVuZXImIGxpc3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5l
Y3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAg
ICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAgICAgYXV0byBjb25uZWN0aW9u
ID0gbWFrZVVuaXF1ZTxMaXN0ZW5lckNvbm5lY3Rpb24+KGlkLCBsaXN0ZW5lciwgYWRkcmVzcywg
cG9ydCk7CiAgICAgaWYgKCFjb25uZWN0aW9uLT5pc0xpc3RlbmluZygpKQpAQCAtMTAyLDcgKzEw
Miw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkCiAKIGJvb2wgUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OmlzTGlzdGVuaW5nKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5l
Y3Rpb25zTG9jayB9OwogICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhpZCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3b3JrZXJUaHJlYWQoKQogICAgICAgICBW
ZWN0b3I8UG9sbGluZ0Rlc2NyaXB0b3I+IHBvbGxmZHM7CiAgICAgICAgIFZlY3RvcjxDb25uZWN0
aW9uSUQ+IGlkczsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb25uZWN0aW9uIDogbV9jbGll
bnRzKSB7CiAgICAgICAgICAgICAgICAgcG9sbGZkcy5hcHBlbmQoY29ubmVjdGlvbi52YWx1ZS0+
cG9sbCk7CiAgICAgICAgICAgICAgICAgaWRzLmFwcGVuZChjb25uZWN0aW9uLmtleSk7CkBAIC0y
MDMsNyArMjAzLDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIHsKICAgICBBU1NFUlQoU29j
a2V0Ojppc1ZhbGlkKHNvY2tldCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlv
bnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBh
dXRvIGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBt
YWtlVW5pcXVlPENsaWVudENvbm5lY3Rpb24+KGlkLCBzb2NrZXQsIGNsaWVudCk7CiAgICAgaWYg
KCFTb2NrZXQ6OmlzVmFsaWQoY29ubmVjdGlvbi0+c29ja2V0KSkKQEAgLTIxNyw3ICsyMTcsNyBA
QCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpj
cmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpkaXNjb25uZWN0KENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogCiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2xpc3RlbmVycy5n
ZXQoaWQpKSB7CiAgICAgICAgIG1fbGlzdGVuZXJzLnJlbW92ZShpZCk7CkBAIC0yMzUsNyArMjM1
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdChDb25u
ZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFs
aWRhdGVDbGllbnQoQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBtX2NsaWVudHMucmVtb3ZlSWYoWyZjbGllbnRdKGF1dG8mIGtleVZhbHVlKSB7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBrZXlWYWx1ZS52YWx1ZTsKIApAQCAtMjUwLDcg
KzI1MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVD
bGllbnQoQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OmludmFsaWRhdGVMaXN0ZW5lcihMaXN0ZW5lciYgbGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uc0xvY2sgfTsKICAgICBtX2xpc3RlbmVycy5yZW1vdmVJZihbJmxpc3RlbmVyXShhdXRv
JiBrZXlWYWx1ZSkgewogICAgICAgICBjb25zdCBhdXRvJiBjb25uZWN0aW9uID0ga2V5VmFsdWUu
dmFsdWU7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjppbnZhbGlkYXRlTGlzdGVuZXIoTGlzdGVuZXImIGxpc3RlbmVyKQogCiBPcHRpb25h
bDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVj
dGlvbklEIGlkKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNv
bnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2xpc3RlbmVycy5nZXQoaWQpKQogICAgICAgICByZXR1
cm4gU29ja2V0OjpnZXRQb3J0KGNvbm5lY3Rpb24tPnNvY2tldCk7CiAgICAgaWYgKGNvbnN0IGF1
dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0KGlkKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBP
cHRpb25hbDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQo
Q29ubmVjdGlvbklEIGlkKSBjb25zdAogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpyZWN2SWZFbmFibGVkKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChp
ZCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlY3ZCdWZmZXIoU29ja2V0OjpCdWZmZXJT
aXplKTsKICAgICAgICAgaWYgKGF1dG8gcmVhZFNpemUgPSBTb2NrZXQ6OnJlYWQoY29ubmVjdGlv
bi0+c29ja2V0LCByZWN2QnVmZmVyLmRhdGEoKSwgcmVjdkJ1ZmZlci5zaXplKCkpKSB7CkBAIC0y
OTgsNyArMjk4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklm
RW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExvY2tIb2xkZXIg
bG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlv
bnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0
KGlkKSkgewogICAgICAgICBTb2NrZXQ6OmNsZWFyV2FpdGluZ1dyaXRhYmxlKGNvbm5lY3Rpb24t
PnBvbGwpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29ubmVjdGlvbklEIGlkLCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9u
c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGlm
IChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpIHsKICAgICAgICAg
c2l6ZV90IG9mZnNldCA9IDA7CiAgICAgICAgIGlmIChjb25uZWN0aW9uLT5zZW5kQnVmZmVyLmlz
RW1wdHkoKSkgewpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewog
ICAgIEFTU0VSVChpc0xpc3RlbmluZyhpZCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fbGlzdGVuZXJzLmdldChpZCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gc29ja2V0ID0gU29ja2V0OjphY2NlcHQoY29ubmVjdGlvbi0+c29j
a2V0KSkgewogICAgICAgICAgICAgLy8gTmVlZCB0byB1bmxvY2sgYmVmb3JlIGNhbGxpbmcgY3Jl
YXRlQ2xpZW50IGFzIGl0IGFsc28gYXR0ZW1wdHMgdG8gbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcAppbmRleCAzYzkzYWI4ZWJlNWFi
MmM5NmUzNGMwMTlhMmI3ZjIwNDEzZjgwOGExLi44MTlkM2UzZWM0MTNlOWM4MjhhMTIzN2NkYTRk
Yzc4ZmE0NzE3OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ0xvb3BTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NMb29wU3RhY2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDTG9vcFN0YWNrOjpyZWxl
YXNlRXhjZXNzQ2FwYWNpdHkoKQogCiB2b2lkIENMb29wU3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0
ZUNvdW50KGxvbmcgYnl0ZUNvdW50KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKHN0YWNrU3Rh
dGlzdGljc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3RhY2tTdGF0aXN0aWNzTXV0ZXgg
fTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8bG9uZz4oY29tbWl0dGVkQnl0ZXNDb3VudCkgKyBi
eXRlQ291bnQgPiAtMSk7CiAgICAgY29tbWl0dGVkQnl0ZXNDb3VudCArPSBieXRlQ291bnQ7CiB9
CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBDTG9vcFN0YWNrOjppc1NhZmVUb1JlY3Vyc2UoKSBj
b25zdAogCiBzaXplX3QgQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0ZUNvdW50KCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHN0YWNrU3RhdGlzdGljc011dGV4IH07CiAgICAgcmV0dXJuIGNvbW1pdHRlZEJ5dGVzQ291
bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwCmluZGV4IDU0MzNjNzFjNzM3Yjk1YWRmYTZiYjc2ZjdlOGM1MDM1MGU1MDI1YzYu
LjljZDUyNTI1ZTZjNzIyZjcwZDg4ZTRlNjkzYjE1Yjk2Y2Q3MTEwMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMTA1OCw3
ICsxMDU4LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qgdm9p
ZCogc3JjLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgYnVmZmVyID0gYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPihtYWxsb2MoYnVmZmVyU2l6ZSkpOwogICAgICAgICBmbHVzaFF1ZXVlLmNvbnN0cnVjdChX
b3JrUXVldWU6OmNyZWF0ZSgianNjLmR1bXBKSVRNZW1vcnkucXVldWUiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpKTsKICAgICAgICAgc3RkOjph
dGV4aXQoW10gewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZHVtcEpJVE1lbW9yeUxv
Y2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGR1bXBKSVRNZW1vcnlMb2NrIH07CiAg
ICAgICAgICAgICBmbHVzaChsb2NrZXIpOwogICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAg
ICAgICAgZmQgPSAtMTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgZHVtcEpJVE1lbW9yeShj
b25zdCB2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IHNpemUpCiAKICAgICAgICAg
bmVlZHNUb0ZsdXNoID0gdHJ1ZTsKICAgICAgICAgZmx1c2hRdWV1ZS5nZXQoKS0+ZGlzcGF0Y2hB
ZnRlcihTZWNvbmRzKE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlGbHVzaEludGVydmFsKCkpLCBbXSB7
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihkdW1wSklUTWVtb3J5TG9jayk7CisgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZHVtcEpJVE1lbW9yeUxvY2sgfTsKICAgICAgICAgICAg
IGlmICghbmVlZHNUb0ZsdXNoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGZsdXNoKGxvY2tlcik7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnko
Y29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICBl
bnF1ZXVlRmx1c2gobG9ja2VyKTsKICAgICB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoZHVt
cEpJVE1lbW9yeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBkdW1wSklUTWVtb3J5TG9jayB9
OwogICAgIHVpbnQ2NF90IHRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKICAgICB1aW50NjRf
dCBkc3Q2NCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGRzdCk7CiAgICAgdWludDY0X3Qgc2l6
ZTY0ID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwCmluZGV4IDgxMzVi
NGZkZWU2MmY3OGU5ZGM2YjQ2MmQ2Y2VlY2E0ZmQxYzYwNjYuLjdkMWE3NDRkZjc2Y2U1ZWY1OTA1
MjZkNTBjNTA0MmU4NWIxMWZjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmNw
cApAQCAtNjYsNyArNjYsNyBAQCBJQ1N0YXRzOjpJQ1N0YXRzKCkKICAgICBtX3RocmVhZCA9IFRo
cmVhZDo6Y3JlYXRlKAogICAgICAgICAiSlNDIElDU3RhdHMiLAogICAgICAgICBbdGhpc10gKCkg
ewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAg
ICAgICAgICBtX2NvbmRpdGlvbi53YWl0Rm9yKAogICAgICAgICAgICAgICAgICAgICBtX2xvY2ss
IFNlY29uZHMoMSksIFt0aGlzXSAoKSAtPiBib29sIHsgcmV0dXJuIG1fc2hvdWxkU3RvcDsgfSk7
CkBAIC04NCw3ICs4NCw3IEBAIElDU3RhdHM6OklDU3RhdHMoKQogSUNTdGF0czo6fklDU3RhdHMo
KQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX3Nob3VsZFN0b3AgPSB0cnVlOwog
ICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMzI1NTM0ZWI5NmZjZmFiMTI4NGRhYTg1NDg3ZDM4
M2NlOGI4MmI1OS4uMzE5YjUwZDk0MmQ1YTk0ZDllOWJkMGZmNDJlNTNkY2E3MzEyYmU3NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlJbnRl
cm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZNCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUVGh1bmtzOjpjdGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJh
dG9yKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1
Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
KCkpOwogICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIENvbXBpbGF0aW9u
IHRocmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgpAQCAtMTQzLDcgKzE0
Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpj
dGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmV4aXN0aW5nQ1RJU3R1YihUaHVua0dlbmVyYXRvciBn
ZW5lcmF0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGV4aXN0aW5nQ1RJU3R1YihnZW5lcmF0b3Is
IE5vTG9ja2luZ05lY2Vzc2FyeSk7CiB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHViKFRo
dW5rR2VuZXJhdG9yCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
VGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRoRnVuY3Rpb24g
c2xvd1BhdGhGdW5jdGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2FzdDxU
aHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgQ1RJU3R1Yk1hcDo6QWRkUmVz
dWx0IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChrZXksIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4oKSk7CiAgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKaW5kZXggNTM5YjZmYTljYWE4MzI5MTU0
NGM4YWQzNzlkMjI2MDI4NDc0YjU5NC4uYTcwNTJlNzlmMGE3NDM2N2ZlM2ZkYzVhM2NmNmQ1Mzhl
NjkzMjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9qaXQuY29tcGlsZUFuZExp
bmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBtX2lzRmluaXNoZWRDb21waWxpbmcgPSB0cnVlOwogICAgIH0K
ICAgICAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNGaW5pc2hl
ZENvbXBpbGluZygpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHJldHVybiBtX2lzRmlu
aXNoZWRDb21waWxpbmc7CiAgICAgfQogICAgIApAQCAtMTM4LDEzICsxMzgsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG1haW4g
dGhyZWFkIHJlYWxpemVzIHRoYXQgd2UganVzdCBjb21waWxlZCBzb21ldGhpbmcuIE5vdGlmeWlu
ZwogICAgICAgICAgICAgLy8gYSBjb25kaXRpb24gaXMgYmFzaWNhbGx5IGZyZWUgaWYgbm9ib2R5
IGlzIHdhaXRpbmcuCi0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5t
X2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9
OwogICAgICAgICAgICAgbV93b3JrbGlzdC5tX2NvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fbXlQbGFucy5jbGVhcigpOwogICAgICAg
ICAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICBtX3dvcmts
aXN0Lm1fbnVtQXZhaWxhYmxlVGhyZWFkcysrOwogICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6
Q29udGludWU7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIEpJVFdvcmtsaXN0OjpKSVRXb3Jr
bGlzdCgpCiAgICAgOiBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fY29uZGl0
aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBt
X3RocmVhZCA9IG5ldyBUaHJlYWQobG9ja2VyLCAqdGhpcyk7CiB9CiAKQEAgLTE4NCw3ICsxODQs
NyBAQCBib29sIEpJVFdvcmtsaXN0Ojpjb21wbGV0ZUFsbEZvclZNKFZNJiB2bSkKICAgICBmb3Ig
KDs7KSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDMyPiBteVBsYW5zOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBkaWRGaW5kVW5maW5pc2hlZFBsYW4gPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBtX3BsYW5zLnJlbW92ZUFsbE1hdGNoaW5nKApAQCAtMjIzLDcgKzIyMyw3IEBAIHZv
aWQgSklUV29ya2xpc3Q6OnBvbGwoVk0mIHZtKQogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKICAgICBQbGFucyBteVBsYW5zOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Km1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIG1f
cGxhbnMucmVtb3ZlQWxsTWF0Y2hpbmcoCiAgICAgICAgICAgICBbJl0gKFJlZlB0cjxQbGFuPiYg
cGxhbikgewogICAgICAgICAgICAgICAgIGlmICgmcGxhbi0+dm0oKSAhPSAmdm0pCkBAIC0yNTYs
NyArMjU2LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZUxhdGVyKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUIKICAgICBjb2RlQmxvY2stPmppdFNv
b24oKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIAogICAgICAgICBpZiAobV9w
bGFubmVkLmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTUs
NyArMjk1LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyhQbGFucyYgbXlQbGFu
cykKICAgICBmb3IgKFJlZlB0cjxQbGFuPiYgcGxhbiA6IG15UGxhbnMpIHsKICAgICAgICAgcGxh
bi0+ZmluYWxpemUodHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9w
bGFubmVkLnJlbW92ZShwbGFuLT5jb2RlQmxvY2soKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcAppbmRleCAwM2U1NWVlM2Qx
ZmYyMDI1ODZhZjJiZWE4ZDc5MWQ1MTUzYTE4N2IwLi42MDZlNWYxNzQ0YWYwZjYxMGRkY2NlNzYx
YmM5M2UzMjIzYjk1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgTG9jayBwcm92aWRlcklk
TG9jazsKIAogdm9pZCBTb3VyY2VQcm92aWRlcjo6Z2V0SUQoKQogewotICAgIExvY2tIb2xkZXIg
bG9jaygmcHJvdmlkZXJJZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBwcm92aWRlcklkTG9j
ayB9OwogICAgIGlmICghbV9pZCkgewogICAgICAgICBzdGF0aWMgaW50cHRyX3QgbmV4dFByb3Zp
ZGVySUQgPSAwOwogICAgICAgICBtX2lkID0gKytuZXh0UHJvdmlkZXJJRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAppbmRleCA3
NTIxYTFkN2FiYTM4N2I0YTFkYzhiZTZmNjIyMWMxNGIyZjFiZmIwLi4yZDI2ZWUxYTBkNzYzNjJh
OTdhY2FiZWZjMjNjZGFiYjU4N2Y5OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC01OCw3ICs1OCw3IEBAIERhdGFi
YXNlOjp+RGF0YWJhc2UoKQogCiBCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNG
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGVuc3VyZUJ5dGVj
b2Rlc0Zvcihsb2NrZXIsIGNvZGVCbG9jayk7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgQnl0ZWNv
ZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
Q29kZUJsb2NrKiBjb2RlQmwKIAogdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgbV9ieXRlY29kZXNNYXAucmVt
b3ZlKGNvZGVCbG9jayk7CiAgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJsb2NrKTsK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAKIHZvaWQgRGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBSZWY8Q29tcGlsYXRpb24+JiYgY29tcGlsYXRpb24pCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogCiAgICAgbV9jb21waWxhdGlvbnMu
YXBwZW5kKGNvbXBpbGF0aW9uLmNvcHlSZWYoKSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBE
YXRhYmFzZTo6cmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29uc3QgY2hhciogZmlsZW5hbWUpCiAKIHZv
aWQgRGF0YWJhc2U6OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyKiBz
dW1tYXJ5LCBjb25zdCBDU3RyaW5nJiBkZXRhaWwpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgQnl0ZWNv
ZGVzKiBieXRlY29kZXMgPSBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2VyLCBjb2RlQmxvY2spOwog
ICAgIENvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IG1fY29tcGlsYXRpb25NYXAuZ2V0KGNvZGVC
bG9jayk7CkBAIC0xODYsMTQgKzE4NiwxNCBAQCB2b2lkIERhdGFiYXNlOjphZGREYXRhYmFzZVRv
QXRFeGl0KCkKICAgICBpZiAoKytkaWRSZWdpc3RlckF0RXhpdCA9PSAxKQogICAgICAgICBhdGV4
aXQoYXRFeGl0Q2FsbGJhY2spOwogICAgIAotICAgIExvY2tIb2xkZXIgaG9sZGVyKHJlZ2lzdHJh
dGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3RyYXRpb25Mb2NrIH07CiAgICAg
bV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlID0gZmlyc3REYXRhYmFzZTsKICAgICBmaXJzdERhdGFi
YXNlID0gdGhpczsKIH0KIAogdm9pZCBEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2VGcm9tQXRFeGl0
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAgIGZvciAoRGF0YWJhc2UqKiBjdXJy
ZW50ID0gJmZpcnN0RGF0YWJhc2U7ICpjdXJyZW50OyBjdXJyZW50ID0gJigqY3VycmVudCktPm1f
bmV4dFJlZ2lzdGVyZWREYXRhYmFzZSkgewogICAgICAgICBpZiAoKmN1cnJlbnQgIT0gdGhpcykK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRGF0YWJhc2U6
OnBlcmZvcm1BdEV4aXRTYXZlKCkgY29uc3QKIAogRGF0YWJhc2UqIERhdGFiYXNlOjpyZW1vdmVG
aXJzdEF0RXhpdERhdGFiYXNlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRp
b25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAgIERh
dGFiYXNlKiByZXN1bHQgPSBmaXJzdERhdGFiYXNlOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAg
ICAgZmlyc3REYXRhYmFzZSA9IHJlc3VsdC0+bV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAKaW5kZXggODdj
OTdjZmQ4YjUwNGZjNzZmOTFjMDQ3NmZkYjcxYzdjODhmYWUyMC4uZjAwMGM5ODg4M2Y2MGQ0OTUz
YWFmMzI0ODM1ZTk3NWRmZGQxMmU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJVSUQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFVJRCBVSUQ6OmNyZWF0ZSgp
CiAgICAgc3RhdGljIExvY2sgbG9jazsKICAgICBzdGF0aWMgdWludDY0X3QgY291bnRlcjsKICAg
ICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9j
ayB9OwogICAgIFVJRCByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fdWlkID0gKytjb3VudGVyOwogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggMjlkNWRmZTc4YWIyOTQ3ZTM5YmNlNjk3NzA0Mjk3
N2ZkYTEyMjQ0NS4uMWYyZGJlYWZjNGQ2MWFmNDhlNjM5ZmM1OWJmZDI0ZDQ1YWUwZGRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVy
LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kCiAKIHZvaWQg
RGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFzayYm
IHRhc2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVw
bGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrKQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CkBA
IC0xNzQsNyArMTc0LDcgQEAgYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dv
cmsoVGlja2V0IHRpY2tldCkKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRpZFJlc3VtZVNjcmlw
dEV4ZWN1dGlvbk93bmVyKCkKIHsKICAgICBBU1NFUlQoIW1fY3VycmVudGx5UnVubmluZ1Rhc2sp
OwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmIG1fdGFza3Muc2l6ZSgp
KQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDVmZjU4N2VlOTQw
MTU4ZTY0ZWU5ZDE2MGJmNjAwNDRhMWI2OWRmNDMuLmQ3MWYzZWMxOWZmMzY3NDY3NzA3ZmU1MmI4
ODAyNGM1NjI3YTE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBTYW1wbGluZ1By
b2ZpbGVyOjp0aW1lckxvb3AoKQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFNlY29uZHMg
c3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lID0gMF9zOwogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1faXNTaHV0RG93bikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC02NzEsMTMgKzY3MSwxMyBAQCB0ZW1wbGF0ZSB2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6OnZpc2l0KFNsb3RWaXNpdG9yJik7CiAKIHZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6c2h1dGRvd24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1faXNTaHV0RG93biA9IHRydWU7CiB9CiAK
IHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6c3RhcnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHN0YXJ0KGxvY2tl
cik7CiB9CiAKQEAgLTcwMywxOSArNzAzLDE5IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90
aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9jCiAK
IHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9u
VGhyZWFkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICBub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRpb25U
aHJlYWQobG9ja2VyKTsKIH0KIAogdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpub3RpY2VKU0xvY2tB
Y3F1aXNpdGlvbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0
aW9uVGhyZWFkKGxvY2tlcik7CiB9CiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1F
bnRyeSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKG1fdm0uZW50cnlTY29wZSk7CiAgICAgbm90aWNl
Q3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiAgICAgbV9sYXN0VGlt
ZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQg
U2FtcGxpbmdQcm9maWxlcjo6cmVnaXN0ZXJGb3JSZXBvcnRBdEV4aXQoKQogICAgIHN0YXRpYyBM
b2NrIHJlZ2lzdHJhdGlvbkxvY2s7CiAgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNhbXBsaW5n
UHJvZmlsZXI+PiogcHJvZmlsZXNUb1JlcG9ydDsKIAotICAgIExvY2tIb2xkZXIgaG9sZGVyKHJl
Z2lzdHJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3RyYXRpb25Mb2NrIH07
CiAKICAgICBpZiAoIXByb2ZpbGVzVG9SZXBvcnQpIHsKICAgICAgICAgcHJvZmlsZXNUb1JlcG9y
dCA9IG5ldyBIYXNoU2V0PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAppbmRleCA0ZjVkNWM0ZTQ1MWJhMTYxMTdh
MjdhMWY3Nzk0ODE3MmU1OTYzNGFmLi40ZGFjNWUxOTg4MDI2YzdlZWE5YmQyNDg0MTQ0NzRlYTUz
NGEyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRv
Zy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RhcnRUaW1lcihTZWNvbmRzIHRpbWVM
aW1pdCkKICAgICAvLyB2aWEgd2lsbERlc3Ryb3lWTSgpIGJlZm9yZSBpdCBnb2VzIGF3YXkuCiAg
ICAgUmVmUHRyPFdhdGNoZG9nPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKICAgICBtX3RpbWVyUXVl
dWUtPmRpc3BhdGNoQWZ0ZXIodGltZUxpbWl0LCBbdGhpcywgcHJvdGVjdGVkVGhpc10gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAgICAgICAgIGlmIChtX3ZtKQogICAgICAgICAgICAgbV92bS0+bm90aWZ5TmVl
ZFdhdGNoZG9nQ2hlY2soKTsKICAgICB9KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFdhdGNo
ZG9nOjpzdG9wVGltZXIoKQogCiB2b2lkIFdhdGNoZG9nOjp3aWxsRGVzdHJveVZNKFZNKiB2bSkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICBBU1NFUlRfVU5VU0VEKHZtLCBtX3ZtID09IHZtKTsKICAgICBtX3ZtID0g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUlu
c3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3Bw
CmluZGV4IGVkODhmZjJjNzRhZjI1YzIzOTAxZTZlZTY0ODk3ZTc5ZmNiMmEzNzAuLmU0OWRhZTFl
MWJjOWRkNzBjOWViMjAyZDg3NzA5ZmNjNmNhNjcwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGF1dG8gVk1JbnNw
ZWN0b3I6OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IFZNSW5zcGVjdG9yOjpMb2NrZXIm
LCB2b2lkKiBtYWNoCiAgICAgICAgICAgICByZXR1cm4gRnVuY3RvclN0YXR1czo6Q29udGludWU7
IC8vIFNraXAgdGhpcyBWTS4KICAgICAgICAgfQogCi0gICAgICAgIExvY2tIb2xkZXIgZXhlY3V0
YWJsZUFsbG9jYXRvckxvY2tlcihsb2NrKTsKKyAgICAgICAgTG9ja2VyIGV4ZWN1dGFibGVBbGxv
Y2F0b3JMb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGlmIChhbGxvY2F0b3IuaXNWYWxpZEV4ZWN1
dGFibGVNZW1vcnkoZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciwgbWFjaGluZVBDKSkgewogICAg
ICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JTdGF0dXM6
OkRvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
MzZlZjY0ZGEzMzVjNzQ4ZWM1NzQ3YTIxYWMwZTI3MGM5YzM1NmUxMi4uZjc4ZWQyNTU0NjQxNDMz
OTU3YWJkYmM4YWJhNzBkYzM5YTZhYjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQkJRUGxhbjo6d29yayhD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIC8vIGFsd2F5cyBjYWxsIHRoZSBmYXN0
ZXN0IGNvZGUuIEFueSBmdW5jdGlvbiBsaW5rZWQgYWZ0ZXIgdXMgd2lsbCBzZWUgb3VyIG5ldyBj
b2RlIGFuZCB0aGUgbmV3IGNhbGxzaXRlcywgd2hpY2ggdGhleQogICAgICAgICAvLyB3aWxsIHVw
ZGF0ZS4gSXQncyBhbHNvIG9rIGlmIHRoZXkgcHVibGlzaCB0aGVpciBjb2RlIGJlZm9yZSB3ZSBy
ZXNldCB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGVzIGJlY2F1c2UgYWZ0ZXIgd2UgcmVsZWFzZQogICAg
ICAgICAvLyB0aGUgbG9jayBvdXIgY29kZSBpcyByZWFkeSB0byBiZSBwdWJsaXNoZWQgdG9vLgot
ICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fY29kZUJsb2NrLT5tX2xvY2sgfTsKIAogICAgICAgICBtX2NvZGVC
bG9jay0+bV9iYnFDYWxsZWVzW21fZnVuY3Rpb25JbmRleF0gPSBjYWxsZWUuY29weVJlZigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCmluZGV4IDlk
MmMyNGQ4ZWEwMjlhMGE5NWU0MjU4YWEyMDlmMGYzYzg3MTU1OTkuLjZmZWIxNTc3MzRkZmM5ZmJi
OGIyYWY0Y2E2M2M3ZWFjMGYwNDNhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgVGhy
ZWFkQ291bnRIb2xkZXIoRW50cnlQbGFuJiBwbGFuKQogICAgICAgICA6IG1fcGxhbihwbGFuKQog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wbGFuLm1fbG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3BsYW4ubV9sb2NrIH07CiAgICAgICAgIG1fcGxhbi5tX251bWJl
ck9mQWN0aXZlVGhyZWFkcysrOwogICAgIH0KIAogICAgIH5UaHJlYWRDb3VudEhvbGRlcigpCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BsYW4ubV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcGxhbi5tX2xvY2sgfTsKICAgICAgICAgbV9wbGFuLm1fbnVtYmVy
T2ZBY3RpdmVUaHJlYWRzLS07CiAKICAgICAgICAgaWYgKCFtX3BsYW4ubV9udW1iZXJPZkFjdGl2
ZVRocmVhZHMgJiYgIW1fcGxhbi5oYXNXb3JrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HUGxhbi5jcHAKaW5kZXggOGMyMzg4YjE2ZjBjZTE0OGQ3ZDhhMTM1NjI2ZGE2ZjVk
MzRlOTRjYi4uZWRmZDY4YWZjNGE2NmRmZTA2MDMwNzZkZjFlYTM5ZmZmOTVkNWUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgLy8gYWx3
YXlzIGNhbGwgdGhlIGZhc3Rlc3QgY29kZS4gQW55IGZ1bmN0aW9uIGxpbmtlZCBhZnRlciB1cyB3
aWxsIHNlZSBvdXIgbmV3IGNvZGUgYW5kIHRoZSBuZXcgY2FsbHNpdGVzLCB3aGljaCB0aGV5CiAg
ICAgICAgIC8vIHdpbGwgdXBkYXRlLiBJdCdzIGFsc28gb2sgaWYgdGhleSBwdWJsaXNoIHRoZWly
IGNvZGUgYmVmb3JlIHdlIHJlc2V0IHRoZSBpbnN0cnVjdGlvbiBjYWNoZXMgYmVjYXVzZSBhZnRl
ciB3ZSByZWxlYXNlCiAgICAgICAgIC8vIHRoZSBsb2NrIG91ciBjb2RlIGlzIHJlYWR5IHRvIGJl
IHB1Ymxpc2hlZCB0b28uCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29kZUJsb2NrLT5t
X2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2RlQmxvY2stPm1fbG9jayB9Owog
CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX29tZ0NhbGxlZXNbbV9mdW5jdGlvbkluZGV4XSA9IGNh
bGxlZS5jb3B5UmVmKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApp
bmRleCBjNmE5MDRkNjg0NDExZDIwNmVhMGZhOTRkMzk4ZmUwNzEyMTdlNmJmLi5mNzM1YjQwOTJk
Y2Y3OGY3ODY2MzYzYjgwZTJjMmQ2NWIyODkwNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUGxhbjo6cnVuQ29tcGxldGlv
blRhc2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIAogdm9pZCBQbGFuOjphZGRDb21wbGV0aW9u
VGFzayhDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgaWYgKCFpc0NvbXBsZXRlKCkpCiAgICAgICAgIG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihjb250ZXh0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgZWxzZQpAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIFBsYW46OmFkZENvbXBsZXRpb25UYXNrKENvbnRleHQqIGNvbnRleHQs
IENvbXBsZXRpb25UYXNrJiYgdGFzaykKIAogdm9pZCBQbGFuOjp3YWl0Rm9yQ29tcGxldGlvbigp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpIHsKICAgICAgICAgbV9jb21wbGV0ZWQu
d2FpdChtX2xvY2spOwogICAgIH0KQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQbGFuOjp3YWl0Rm9y
Q29tcGxldGlvbigpCiAKIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENhbmNlbElmTGFz
dChDb250ZXh0JiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7
CiAgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21wbGV0aW9uIHRhc2sgdG8gbm90IGhh
dmUgYSBDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmNwcAppbmRleCA2MjQ1YTMxZDAwYzFlMDFlNzQ3ODBlNzBiMTA5YTBlNzVkNmRkNjI3Li42YjIw
ZDA4OTQ1NDIwNjc5ZTc2MjdlZTBjOGRjMTliZGM5ODY3Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0cnVj
dCBQYXJhbWV0ZXJUeXBlcyB7CiBSZWZQdHI8U2lnbmF0dXJlPiBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZlY3RvcjxUeXBlLCAxPiYgcmVzdWx0cywgY29uc3QgVmVj
dG9yPFR5cGU+JiBhcmdzKQogewogICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2lu
Z2xldG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgaW5mby5tX2xvY2sgfTsKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3Np
Z25hdHVyZVNldC50ZW1wbGF0ZSBhZGQ8UGFyYW1ldGVyVHlwZXM+KFBhcmFtZXRlclR5cGVzIHsg
cmVzdWx0cywgYXJncyB9KTsKICAgICByZXR1cm4gbWFrZVJlZigqYWRkUmVzdWx0Lml0ZXJhdG9y
LT5rZXkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIFJlZlB0cjxTaWduYXR1cmU+IFNpZ25hdHVyZUlu
Zm9ybWF0aW9uOjpzaWduYXR1cmVGb3IoY29uc3QgVmVjdG9yPFR5cGUsIDE+JiByZXN1CiB2b2lk
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKIHsKICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07CiAKICAgICBpbmZvLm1f
c2lnbmF0dXJlU2V0LnJlbW92ZUlmKFsmXSAoYXV0byYgaGFzaCkgewogICAgICAgICBjb25zdCBh
dXRvJiBzaWduYXR1cmUgPSBoYXNoLmtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtV29ya2xpc3QuY3BwCmluZGV4IDBjYzZlZmZiZDc5NDhjYzBkM2NlODQxYTg5MzVmNmQ1Nzll
YjUwZjguLjViYWQwZDkwYTU2MmUyNWRkZTgxN2I1ODJjMDYwNjY1NmM5MDZlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKCFwbGFuLT5oYXNXb3JrKCkgfHwgcGxhbi0+
bXVsdGlUaHJlYWRlZCgpKTsKICAgICAgICAgaWYgKHBsYW4tPmhhc1dvcmsoKSAmJiAhd2FzTXVs
dGlUaHJlYWRlZCAmJiBwbGFuLT5tdWx0aVRocmVhZGVkKCkpIHsKLSAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKCp3b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7ICp3b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGVsZW1lbnQuc2V0VG9OZXh0UHJp
b3JpdHkoKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcXVldWUuZW5xdWV1ZShXVEZNb3ZlKGVs
ZW1lbnQpKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwo
bG9ja2VyKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdvcmtsaXN0OjpRdWV1ZUVsZW1lbnQ6
OnNldFRvTmV4dFByaW9yaXR5KCkKIAogdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4g
cGxhbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgKm1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fcXVldWUpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikKIHZvaWQgV29ya2xpc3Q6OmNvbXBs
ZXRlUGxhblN5bmNocm9ub3VzbHkoUGxhbiYgcGxhbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9
OwogICAgICAgICBtX3F1ZXVlLmRlY3JlYXNlS2V5KFsmXSAoUXVldWVFbGVtZW50JiBlbGVtZW50
KSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5wbGFuID09ICZwbGFuKSB7CiAgICAgICAgICAg
ICAgICAgZWxlbWVudC5wcmlvcml0eSA9IFByaW9yaXR5OjpTeW5jaHJvbm91czsKQEAgLTE4OSw3
ICsxODksNyBAQCB2b2lkIFdvcmtsaXN0Ojpjb21wbGV0ZVBsYW5TeW5jaHJvbm91c2x5KFBsYW4m
IHBsYW4pCiAKIHZvaWQgV29ya2xpc3Q6OnN0b3BBbGxQbGFuc0ZvckNvbnRleHQoQ29udGV4dCYg
Y29udGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogICAgIFZlY3RvcjxRdWV1ZUVsZW1lbnQ+IGVsZW1lbnRzOwog
ICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgUXVldWVFbGVtZW50IGVs
ZW1lbnQgPSBtX3F1ZXVlLmRlcXVldWUoKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBXb3JrbGlzdDo6
V29ya2xpc3QoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzID0g
T3B0aW9uczo6dXNlQ29uY3VycmVudEpJVCgpID8ga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vz
c29yQ29yZXMoKSA6IDE7CiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNv
bXBpbGF0aW9uVGhyZWFkcyk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKICAgICAgICAgbV90aHJlYWRzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsK
IH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoKQogV29ya2xpc3Q6On5X
b3JrbGlzdCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9xdWV1ZS5lbnF1
ZXVlKHsgUHJpb3JpdHk6OlNodXRkb3duLCBuZXh0VGlja2V0KCksIG51bGxwdHIgfSk7CiAgICAg
ICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2Jl
bmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggYjIwZGQ3ZTcxMzYxMjBmMWUwOWQ1MTZl
NWYyMzQyYWMzMWNlNDExNi4uMDE0NDAyMDI5MTUzZWRmMTZhOWMzZTUxMjYyZDJlYTU4MjYxNzI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteU51bUl0ZXJhdGlvbnMrKzsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG51bUl0ZXJhdGlvbnNMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBudW1JdGVyYXRpb25zTG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgbnVt
SXRlcmF0aW9ucyArPSBteU51bUl0ZXJhdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFk
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKaW5kZXggODdiOTFmMTA1
YzcyZDA0NjBkNjE3ZTM4NTU3M2NlY2VjYjI3Y2E1NC4uZjRlYTc4ZDEzZTFjZGRiNjE5YjgyMjg2
OGQzM2M3MjdjOWYyZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgQXV0b21hdGljVGhyZWFkOjp+QXV0b21hdGljVGhyZWFkKCkKIHsKICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBEZWxldGlu
ZyBBdXRvbWF0aWNUaHJlYWQuXG4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIAogICAgIC8vIEl0J3MgcG9zc2li
bGUgdGhhdCB3ZSdyZSBpbiBhIHdhaXRpbmcgc3RhdGUgd2l0aCB0aGUgdGhyZWFkIHNodXQgZG93
bi4gVGhpcyBpcyBhIGdvb2Z5IHdheSB0bwogICAgIC8vIGRpZSwgYnV0IGl0IGNvdWxkIGhhcHBl
bi4KQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIEF1dG9tYXRpY1RocmVhZDo6bm90aWZ5KGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAKIHZvaWQgQXV0b21hdGljVGhyZWFkOjpqb2luKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
Km1fbG9jayB9OwogICAgIHdoaWxlIChtX2lzUnVubmluZykKICAgICAgICAgbV9pc1J1bm5pbmdD
b25kaXRpb24ud2FpdCgqbV9sb2NrKTsKIH0KQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEF1dG9t
YXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgdGhy
ZWFkLT50aHJlYWREaWRTdGFydCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoQVNT
RVJUX0VOQUJMRUQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2NvbmRpdGlvbi0+Y29udGFpbnMobG9ja2VyLCB0aGlzKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEF1dG9tYXRp
Y1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKGxvY2tlcik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFBvbGxSZXN1bHQ6OldvcmspCkBA
IC0yMjgsNyArMjI4LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3Ry
YWN0TG9ja2VyJikKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBXb3JrUmVzdWx0
IHJlc3VsdCA9IHdvcmsoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFdvcmtSZXN1
bHQ6OlN0b3ApIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzdG9wUGVybWFuZW50bHkobG9ja2VyKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0ID09IFdvcmtS
ZXN1bHQ6OkNvbnRpbnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1Ro
cmVhZC5oIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKaW5kZXggNmQ1NTdiYzNi
NmNkOTRjMzE0YzJmMDk0MDlkZjk3MjBjNmQ5YjhkOC4uOGQ3YzJiNTE2ODBhM2VhNjcyOGU1MTc0
ZmM4MTgwNjhkZWU5NWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAvLwogLy8gICAgIGZvciAoOzspIHsKIC8vICAgICAgICAg
ewotLy8gICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKy8vICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIC8vICAgICAgICAgICAgIGZvciAoOzspIHsK
IC8vICBbMV0gICAgICAgICAgICBzdHVmZiB0aGF0IGNvdWxkIGJyZWFrLCByZXR1cm4sIG9yIGZh
bGwgdGhyb3VnaDsKIC8vICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7
CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHsKICAgICAvLyAgICAgZm9y
ICg7OykgewogICAgIC8vICAgICAgICAgewotICAgIC8vICAgICAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgLy8gICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgIC8vICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAvLyAgICAgICAgICAgICAg
ICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKCk7CiAgICAgLy8gICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gUG9sbFJlc3VsdDo6V29yaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAKaW5k
ZXggZDdjOGVkZWNlYjljMTEyYWI1MDM4NDBkYjRmZjU2YmY3N2E1MmEzMi4uZWVmODliNzdlN2Jk
ZGZjZDY3NjVkNjczYWE1NjVhMDY3N2NkNzBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TWV0YUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmsoc2l6ZV90
IG5ld1NpemVJbkJ5dGVzKQogICAgIEFTU0VSVChuZXdTaXplSW5CeXRlcyA8PSBzaXplSW5CeXRl
cyk7CiAKICAgICBNZXRhQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSB0aGlzLT5hbGxvY2F0b3IoKTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcigmYWxsb2NhdG9yLm1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGFsbG9jYXRvci5tX2xvY2sgfTsKIAogICAgIG5ld1NpemVJbkJ5dGVzID0gYWxsb2Nh
dG9yLnJvdW5kVXAobmV3U2l6ZUluQnl0ZXMpOwogICAgIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZv
aWQgTWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNlRnJvbVJlbGVhc2VkSGFuZGxlKEZyZWVTcGFj
ZVB0ciBzdGFydCwgc2l6ZV90IHNpCiB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJlZVNw
YWNlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiB7CiAgICAgQ29uZmlnOjpBc3Nl
cnROb3RGcm96ZW5TY29wZSBhc3NlcnROb3RGcm96ZW5TY29wZTsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcigmbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV9ieXRl
c1Jlc2VydmVkICs9IHNpemVJbkJ5dGVzOwogICAgIGFkZEZyZWVTcGFjZShGcmVlU3BhY2VQdHI6
Om1ha2VGcm9tUmF3UG9pbnRlcihzdGFydCksIHNpemVJbkJ5dGVzKTsKIH0KQEAgLTI5NSw3ICsy
OTUsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJlZVNwYWNlKHZvaWQqIHN0YXJ0
LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiBzaXplX3QgTWV0YUFsbG9jYXRvcjo6ZGVidWdGcmVlU3Bh
Y2VTaXplKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHNpemVfdCByZXN1bHQgPSAw
OwogICAgIGZvciAoRnJlZVNwYWNlTm9kZSogbm9kZSA9IG1fZnJlZVNwYWNlU2l6ZU1hcC5maXJz
dCgpOyBub2RlOyBub2RlID0gbm9kZS0+c3VjY2Vzc29yKCkpCiAgICAgICAgIHJlc3VsdCArPSBu
b2RlLT5zaXplSW5CeXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxI
ZWxwZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAKaW5k
ZXggN2MwNTZiYTE1MTIwMGY3NjlkYzZiYzkyNDQxOWNjMzY4YzcyMTg2NS4uNDQzZDczMTNlNmJh
ZDAyODQzNDllNjEwN2YyMDM5N2Y5M2Y0M2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGFyYWxsZWxIZWxwZXJQb29sLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhlbHBl
clBvb2wuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiBQYXJhbGxlbEhl
bHBlckNsaWVudDo6UGFyYWxsZWxIZWxwZXJDbGllbnQoUmVmUHRyPFBhcmFsbGVsSGVscGVyUG9v
bD4mJiBwb29sKQogICAgIDogbV9wb29sKFdURk1vdmUocG9vbCkpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+
bV9sb2NrIH07CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9vbC0+bV9pc0R5aW5nKTsKICAgICBt
X3Bvb2wtPm1fY2xpZW50cy5hcHBlbmQodGhpcyk7CiB9CiAKIFBhcmFsbGVsSGVscGVyQ2xpZW50
Ojp+UGFyYWxsZWxIZWxwZXJDbGllbnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Bv
b2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wtPm1fbG9jayB9OwogICAg
IGZpbmlzaChsb2NrZXIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvb2wtPm1f
Y2xpZW50cy5zaXplKCk7ICsraSkgewpAQCAtNTQsNyArNTQsNyBAQCBQYXJhbGxlbEhlbHBlckNs
aWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KCkKIAogdm9pZCBQYXJhbGxlbEhlbHBlckNsaWVu
dDo6c2V0VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4mJiB0YXNrKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICpt
X3Bvb2wtPm1fbG9jayB9OwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2spOwogICAgIG1fdGFz
ayA9IFdURk1vdmUodGFzayk7CiAgICAgbV9wb29sLT5kaWRNYWtlV29ya0F2YWlsYWJsZShsb2Nr
ZXIpOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFBhcmFsbGVsSGVscGVyQ2xpZW50OjpzZXRUYXNr
KFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiYmIHRhc2spCiAKIHZvaWQgUGFyYWxsZWxIZWxw
ZXJDbGllbnQ6OmZpbmlzaCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC0+bV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgZmluaXNo
KGxvY2tlcik7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBQYXJhbGxlbEhlbHBlckNsaWVu
dDo6ZG9Tb21lSGVscGluZygpCiB7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+IHRh
c2s7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgICAgIHRhc2sg
PSBjbGFpbVRhc2sobG9ja2VyKTsKICAgICAgICAgaWYgKCF0YXNrKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OnJ1blRh
c2soY29uc3QgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+JiB0YXNrKQogICAgIHRhc2stPnJ1
bigpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbnVtQWN0aXZlKTsKICAgICAgICAgLy8gTm8gbmV3IHRhc2sgY291bGQg
aGF2ZSBiZWVuIGluc3RhbGxlZCwgc2luY2Ugd2Ugd2VyZSBzdGlsbCBhY3RpdmUuCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2sgfHwgbV90YXNrID09IHRhc2spOwpAQCAtMTMzLDcgKzEz
Myw3IEBAIFBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVscGVyUG9vbCgpCiAgICAgUkVM
RUFTRV9BU1NFUlQobV9jbGllbnRzLmlzRW1wdHkoKSk7CiAgICAgCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xv
Y2sgfTsKICAgICAgICAgbV9pc0R5aW5nID0gdHJ1ZTsKICAgICAgICAgbV93b3JrQXZhaWxhYmxl
Q29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CkBAIC0xNDQsNyArMTQ0LDcgQEAg
UGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKCkKIAogdm9pZCBQYXJhbGxl
bEhlbHBlclBvb2w6OmVuc3VyZVRocmVhZHModW5zaWduZWQgbnVtVGhyZWFkcykKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9
OwogICAgIGlmIChudW1UaHJlYWRzIDwgbV9udW1UaHJlYWRzKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9udW1UaHJlYWRzID0gbnVtVGhyZWFkczsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFBh
cmFsbGVsSGVscGVyUG9vbDo6ZG9Tb21lSGVscGluZygpCiAgICAgUGFyYWxsZWxIZWxwZXJDbGll
bnQqIGNsaWVudDsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4gdGFzazsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgKm1fbG9jayB9OwogICAgICAgICBjbGllbnQgPSBnZXRDbGllbnRXaXRoVGFzayhsb2Nr
ZXIpOwogICAgICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5j
cHAKaW5kZXggNWE4MWYwOWQ5YjdkZTRkZDhmMzBlODk0YjkyZjU5MjIzMTZkZmI5NC4uZDYwN2M5
NzI5YWYxNjdmZmI3YWQyYTY2NmExNjQ3MGI3ZGZiNDkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5jcHAKQEAgLTg2
LDcgKzg2LDcgQEAgdm9pZCBzbGVlcChTZWNvbmRzIHZhbHVlKQogCiAgICAgTG9jayBmYWtlTG9j
azsKICAgICBDb25kaXRpb24gZmFrZUNvbmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VMb2Nr
ZXIoZmFrZUxvY2spOworICAgIExvY2tlciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAgICBm
YWtlQ29uZGl0aW9uLndhaXRGb3IoZmFrZUxvY2ssIHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKaW5kZXggYzdiOWVkMmU2MmUwNjc0ZTdj
YTUzYjg1YjEzMjkxY2IwMzhkMTk0ZS4uMmI1MGRlMWEzMWE1Y2Q5MzExYzgyMjQyYjQ3NWUxNDZk
ZmY0NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBzbGVlcChjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUmIHRpbWUpCiB7CiAgICAgTG9jayBmYWtlTG9jazsKICAgICBDb25kaXRpb24gZmFrZUNv
bmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VMb2NrZXIoZmFrZUxvY2spOworICAgIExvY2tl
ciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAgICBmYWtlQ29uZGl0aW9uLndhaXRVbnRpbChm
YWtlTG9jaywgdGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBv
b2wuY3BwIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKaW5kZXggNDJjOWUxMzVhYTll
YjkxYzhjMGJmNGQ0ODIzMzRlNTlkZGZlYzYyMy4uOGE5YzFmZGE3NGE3M2IyYzVhYjVjZGEyZDhl
NDYwOWFiZTgwYTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIGZpbmFsCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV9wb29sLm1fbG9jayB9OwogICAgICAgICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtl
cnMrKzsKICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgV29ya2VyUG9vbDo6V29ya2VyUG9vbChB
U0NJSUxpdGVyYWwgbmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRzIHRpbWUK
ICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQogICAgICwgbV9uYW1lKG5hbWUpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyArK2kpCiAgICAg
ICAgIG1fd29ya2Vycy5hcHBlbmQoYWRvcHRSZWYoKm5ldyBXb3JrZXIobG9ja2VyLCAqdGhpcywg
bV9sb2NrLCBtX2NvbmRpdGlvbi5jb3B5UmVmKCksIHRpbWVvdXQpKSk7CiB9CkBAIC05NSw3ICs5
NSw3IEBAIFdvcmtlclBvb2w6OldvcmtlclBvb2woQVNDSUlMaXRlcmFsIG5hbWUsIHVuc2lnbmVk
IG51bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lCiBXb3JrZXJQb29sOjp+V29ya2VyUG9vbCgp
CiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV93
b3JrZXJzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG1fdGFza3MuYXBwZW5kKG51bGxwdHIp
OyAvLyBVc2UgbnVsbCB0YXNrIHRvIGluZGljYXRlIHRoYXQgd2Ugd2FudCB0aGUgdGhyZWFkIHRv
IHRlcm1pbmF0ZS4KICAgICAgICAgbV9jb25kaXRpb24tPm5vdGlmeUFsbChsb2NrZXIpOwpAQCAt
MTIwLDcgKzEyMCw3IEBAIGJvb2wgV29ya2VyUG9vbDo6c2hvdWxkU2xlZXAoY29uc3QgQWJzdHJh
Y3RMb2NrZXImKQogCiB2b2lkIFdvcmtlclBvb2w6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyAqbV9sb2NrIH07CiAgICAgbV90YXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAg
ICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgv
VGhyZWFkaW5nUE9TSVguY3BwCmluZGV4IDM0ODEyN2RiNjg0YmJiYWIzNDQyYTkxN2EwOGIzMTZl
ZTk3ZTE2MDcuLjU5MTdiMzc5ZjEyYWZmNWZmNDJkMTM0N2ZiZGNiMWYyMDhhMDcwN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKQEAgLTM4Myw3ICszODMsNyBAQCBh
dXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVy
cm9yPgogICAgIC8vIFlvdXIgaXNzdWluZyB0aHJlYWQgKEEpIGF0dGVtcHRzIHRvIHN1c3BlbmQg
dGhlIHRhcmdldCB0aHJlYWQgKEIpLiBUaGVuLCB5b3Ugd2lsbCBzdXNwZW5kIHRoZSB0aHJlYWQg
KEMpIGFkZGl0aW9uYWxseS4KICAgICAvLyBUaGlzIGNhc2UgZnJlcXVlbnRseSBoYXBwZW5zIGlm
IHlvdSBzdG9wIHRocmVhZHMgdG8gcGVyZm9ybSBzdGFjayBzY2FubmluZy4gQnV0IHRocmVhZCAo
QikgbWF5IGhvbGQgdGhlIGxvY2sgb2YgdGhyZWFkIChDKS4KICAgICAvLyBJbiB0aGF0IGNhc2Us
IGRlYWQgbG9jayBoYXBwZW5zLiBVc2luZyBnbG9iYWwgbG9jayBoZXJlIGF2b2lkcyB0aGlzIGRl
YWQgbG9jay4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAg
IGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3N1c3BlbmQobV9wbGF0Zm9ybVRocmVhZCk7
CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCkBAIC00MTQsNyArNDE0LDcgQEAgYXV0
byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJv
cj4KIHZvaWQgVGhyZWFkOjpyZXN1bWUoKQogewogICAgIC8vIER1cmluZyByZXN1bWUsIHN1c3Bl
bmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJvbSB0aGUgb3RoZXIgdGhyZWFk
cy4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAgIHRocmVh
ZF9yZXN1bWUobV9wbGF0Zm9ybVRocmVhZCk7CiAjZWxzZQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHN0
YXRpYyBUaHJlYWRTdGF0ZU1ldGFkYXRhIHRocmVhZFN0YXRlTWV0YWRhdGEoKQogCiBzaXplX3Qg
VGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAgIGF1dG8gbWV0YWRh
dGEgPSB0aHJlYWRTdGF0ZU1ldGFkYXRhKCk7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0
aHJlYWRfZ2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG1ldGFkYXRhLmZsYXZvciwgKHRocmVh
ZF9zdGF0ZV90KSZyZWdpc3RlcnMsICZtZXRhZGF0YS51c2VyQ291bnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
RGJnSGVscGVyV2luLmNwcAppbmRleCA1NTlkYWFiMmE0YWI0ODU1YjNjNjRiOGZkMmQ2ZTBlN2Yw
ZWIzMDNmLi41YTFhYjRjYmRjN2IzNDFlODQ0ZjY1ZmQ3M2M5NWQ3ZDFjN2UyNWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplU3ltYm9scyhIQU5ETEUgaFByb2MpCiAKIGJvb2wgU3ltRnJvbUFkZHJlc3MoSEFO
RExFIGhQcm9jLCBEV09SRDY0IGFkZHJlc3MsIERXT1JENjQqIGRpc3BsYWNlbWVudCwgU1lNQk9M
X0lORk8qIHN5bWJvbEluZm8pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGNhbGxNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGNhbGxNdXRleCB9OwogICAgIGluaXRpYWxpemVTeW1ib2xzKGhQ
cm9jKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IDo6U3ltRnJvbUFkZHIoaFByb2MsIGFkZHJlc3Ms
IGRpc3BsYWNlbWVudCwgc3ltYm9sSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3Bw
CmluZGV4IDY2NzhhZWJlZjcwOWZjNDBiM2FlNTEzY2ZkZTc2NDFjMDJlYWU4NGQuLjRiMzcyNDdm
OTkwNzIzZTMyOGU3ZGM5MmRlMjViNWMzMDg2YWU5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiBhdXRv
IFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9y
PgogewogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzICE9ICZUaHJlYWQ6OmN1
cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRpbmcgdGhlIGN1cnJlbnQgdGhyZWFk
IGl0c2VsZi4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAgICAgRFdPUkQgcmVzdWx0
ID0gU3VzcGVuZFRocmVhZChtX2hhbmRsZSk7CiAgICAgaWYgKHJlc3VsdCAhPSAoRFdPUkQpLTEp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBhdXRvIFRocmVhZDo6
c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9yPgogLy8gRHVy
aW5nIHJlc3VtZSwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9t
IHRoZSBvdGhlciB0aHJlYWRzLgogdm9pZCBUaHJlYWQ6OnJlc3VtZSgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9i
YWxTdXNwZW5kTG9jayB9OwogICAgIFJlc3VtZVRocmVhZChtX2hhbmRsZSk7CiB9CiAKIHNpemVf
dCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgZ2xvYmFsU3VzcGVuZExvY2sgfTsKICAgICByZWdpc3RlcnMuQ29udGV4dEZsYWdzID0g
Q09OVEVYVF9JTlRFR0VSIHwgQ09OVEVYVF9DT05UUk9MOwogICAgIEdldFRocmVhZENvbnRleHQo
bV9oYW5kbGUsICZyZWdpc3RlcnMpOwogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIu
Y3BwCmluZGV4IGZhZDVjOWQ2YjRiMTcyZDcyMmI2YTliMzdkMmUwZTgzZGM1NzMyZWMuLjk3NWNm
YzNlY2Q1NzIzMmFiZTc3M2I5ZDFiYzRkMDQ0YjNjNWVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jQXVkaW9EZWNvZGVyOjpBc3luY0F1
ZGlvRGVjb2RlcigpCiB7CiAgICAgLy8gU3RhcnQgd29ya2VyIHRocmVhZC4KLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90
aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVk
aW8gRGVjb2RlciIsIFt0aGlzXSB7CiAgICAgICAgIHJ1bkxvb3AoKTsKICAgICB9LCBUaHJlYWRU
eXBlOjpBdWRpbyk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OnJ1
bkxvb3AoKQogCiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciB1bnRpbCB3ZSBoYXZlIG1fdGhy
ZWFkIGVzdGFibGlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgcnVuIGxvb3AuCi0gICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV90aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgfQogCiAgICAgLy8gS2VlcCBydW5u
aW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggM2E0Y2Q4NWU1ZWMxMDBj
ODcxMzI4NzYzODQ0OTk1NTI5MGNkYzNkNC4uNmJiODA4ODk2ZDdhY2YxNGM5ZGFiNDBiYjUxNTNh
NjZkNzAwNDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3JtQ2xv
c2UoKQogICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogCiAgICAgICAgIC8vIENsZWFuIHVwIHRyYW5zYWN0aW9u
cyB0aGF0IGhhdmUgbm90IGJlZW4gc2NoZWR1bGVkIHlldDoKICAgICAgICAgLy8gVHJhbnNhY3Rp
b24gcGhhc2UgMSBjbGVhbnVwLiBTZWUgY29tbWVudCBvbiAiV2hhdCBoYXBwZW5zIGlmIGEKQEAg
LTU0NCwxNCArNTQ0LDE0IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVw
KFNRTFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBEYXRhYmFzZTo6aW5Qcm9ncmVz
c1RyYW5zYWN0aW9uQ29tcGxldGVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7
CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBib29sIERhdGFiYXNlOjpoYXNQZW5k
aW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc011dGV4IH07CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHx8ICFtX3Ry
YW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpOwogfQogCkBAIC02ODEsNyArNjgxLDcgQEAgdm9pZCBE
YXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9u
KFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ssIFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiYmIHdy
YXBwZXIsIGJvb2wgcmVhZE9ubHkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIGlmICgh
bV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKSB7CiAgICAgICAgIGlmIChlcnJvckNhbGxiYWNr
KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgW2Vycm9yQ2FsbGJhY2sgPSBtYWtlUmVmKCplcnJvckNhbGxiYWNr
KV0oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwCmluZGV4IGZjZmYxMDRjNTJlMmM3ODQzOTUzNTkzNDI4MTI2OTdkZmM3
YTdjNzMuLmU2ZDdkNjZhMDhkOGFjNzU4Mzg2N2MwNzBiMTNjNDNiMTY2OTlmZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIERhdGFiYXNlVGhyZWFkOjp+RGF0YWJhc2VUaHJlYWQoKQog
CiB2b2lkIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1f
dGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRp
b25NdXRleCB9OwogCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAgICByZXR1cm47CkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICB7
CiAgICAgICAgIC8vIFdhaXQgZm9yIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRl
LgotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9OwogICAgICAgICBMT0co
U3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9CiAK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgp
CiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRhYmFzZVNldCBv
cGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX29wZW5EYXRhYmFz
ZVNldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0
ZXggfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDApIHsKICAgICAg
ICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBvcmlnaW5hbCBz
ZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAgICAgICAgb3Bl
blNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tIb2xk
ZXIgbG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9v
cGVuRGF0YWJhc2VTZXRNdXRleCB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0
YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmRE
YXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpy
ZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5EYXRhYmFz
ZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIERhdGFi
YXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0YWJhc2UpCiAK
IGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKICAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFiYXNlLT5oYXNQ
ZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJhbnNhY3Rpb24o
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGEwMzgyMzRiNzU1
NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTguLjgzNGFjODI3YzJiMWU1ZjdlMjAzZDE1MzBi
MzVjNjhkMWY0YTA5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6Omhhc0FkZXF1YXRlUXVvdGFGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaQogCiBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6OmNh
bkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXplKQogewotICAgIExvY2tIb2xkZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhp
cyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkgaXMgbm9uLW51bGw/CiAgICAgYXV0byBvcmlnaW4g
PSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUNv
bnRleHQmIGNvbnRleHQKIC8vIGhlbmNlIHNob3VsZCBub3QgYmUgYSBwZXJmb3JtYW5jZSBjcml0
aWNhbCBwYXRoIGFueXdheS4gCiBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6OnJl
dHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIHVpbnQ2NF90IGVzdGltYXRlZFNpemUpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsg
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkgaXMgbm9uLW51bGw/CiAgICAgYXV0byBvcmlnaW4g
PSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CkBAIC0yNzEsNyArMjcxLDcgQEAgdWludDY0X3Qg
RGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6ZShEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAg
Ly8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYSBkYXRhYmFzZSBpcyB0aGUgZnVsbCBxdW90YSBmb3Ig
aXRzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0aGluIHRoZSBvcmlnaW4sCiAg
ICAgLy8gcGx1cyB0aGUgY3VycmVudCB1c2FnZSBvZiB0aGUgZ2l2ZW4gZGF0YWJhc2UKLSAgICBM
b2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2Nr
RGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgYXV0byBvcmlnaW4gPSBk
YXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgYXV0byBxdW90YSA9IHF1b3RhTm9Mb2Nr
KG9yaWdpbik7CkBAIC0zNjAsMTMgKzM2MCwxMyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpm
dWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZwog
CiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZO
b3RFeGlzdHMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJk
KTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owog
ICAgIHJldHVybiBmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKG9yaWdpbiwgbmFtZSwgY3JlYXRl
SWZOb3RFeGlzdHMpLmlzb2xhdGVkQ29weSgpOwogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00MjEs
NyArNDIxLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVz
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IG5hbWVzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFz
ZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFw
R3VhcmQgfTsKICAgICAgICAgbmFtZXMgPSBkYXRhYmFzZU5hbWVzTm9Mb2NrKG9yaWdpbik7CiAg
ICAgfQogICAgIHJldHVybiBpc29sYXRlZENvcHkobmFtZXMpOwpAQCAtNDM0LDcgKzQzNCw3IEBA
IERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uCiAgICAgaW50NjRfdCBleHBlY3RlZFVzYWdlOwogCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwor
ICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owog
CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsK
ICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZv
aWQgRGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAgaW50NjRfdCBndWlkID0gMDsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tE
YXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIG9wZW5UcmFja2VyRGF0
YWJhc2UoQ3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAogCiB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6ZG9uZUNyZWF0aW5nRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9j
a2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICBkb25lQ3Jl
YXRpbmdEYXRhYmFzZShkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZS5zdHJpbmdJ
ZGVudGlmaWVySXNvbGF0ZWRDb3B5KCkpOwogfQogCkBAIC01MjcsNyArNTI3LDcgQEAgVmVjdG9y
PFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlcygpCiB7CiAgICAg
VmVjdG9yPFJlZjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAg
ICAgIExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9
OwogCiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgZm9yIChh
dXRvJiBuYW1lTWFwIDogbV9vcGVuRGF0YWJhc2VNYXAtPnZhbHVlcygpKSB7CkBAIC01NDMsNyAr
NTQzLDcgQEAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFi
YXNlcygpCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2Um
IGRhdGFiYXNlKQogewotICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5E
YXRhYmFzZU1hcEd1YXJkKTsKKyAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAg
ICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsK
QEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KERhdGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5E
YXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja0hvbGRlciBvcGVuRGF0YWJh
c2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgIExvY2tlciBvcGVuRGF0YWJh
c2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgaWYgKCFtX29wZW5E
YXRhYmFzZU1hcCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTYwOSw3ICs2
MDksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKERhdGFiYXNl
JiBkYXRhYmFzZSkKIAogUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lu
TG9ja0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJh
c2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRp
ZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIAogICAgIC8vIFRoZSBvcmlnaW5M
b2NrTWFwIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgRGF0YWJhc2VUaHJlYWRzIHNpbmNlCkBA
IC02ODgsMTMgKzY4OCwxMyBAQCB1aW50NjRfdCBEYXRhYmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2Nr
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiB1aW50NjRfdCBEYXRhYmFzZVRy
YWNrZXI6OnF1b3RhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tE
YXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICByZXR1cm4gcXVvdGFOb0xv
Y2sob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJh
c2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAKICAgICBpZiAocXVvdGFOb0xvY2sob3Jp
Z2luKSA9PSBxdW90YSkKICAgICAgICAgcmV0dXJuOwpAQCAtODI0LDcgKzgyNCw3IEBAIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4sIERlbGV0aW9uTW9kCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07
CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsK
ICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtODc2LDcgKzg3Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiAgICAgfQog
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9
OwogICAgICAgICBkZWxldGVPcmlnaW5Mb2NrRm9yKG9yaWdpbik7CiAgICAgICAgIGRvbmVEZWxl
dGluZ09yaWdpbihvcmlnaW4pOwogCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIERhdGFiYXNl
VHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luKQogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2Nr
ZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogICAgICAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgICAgIGlmICgh
bV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNzgs
MTIgKzEwNzgsMTIgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAgICAvLyBXZSBkcm9wIHRo
ZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRl
RGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCiAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURh
dGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVsdCkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9y
aWdpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFi
YXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VN
YXBHdWFyZCB9OwogICAgICAgICBkb25lRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0
YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFt
ZT0/Il9zKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbiwgY29uc3QKIAogI2lmbmRlZiBOREVCVUcKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBs
b2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgICAgIEFTU0VSVChp
c0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5hbWUpKTsKICAgICB9CiAjZW5k
aWYKQEAgLTExMzIsNyArMTEzMiw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRh
YmFzZUZpbGUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAgICAgLy8g
RGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNhbiBjYXVzZSBh
IGRlYWRsb2NrCiAgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRhYmFzZVRocmVhZCBj
YWxsIGl0IHRyaWdnZXJzLgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VN
YXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRhdGFi
YXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgaWYgKG1fb3Bl
bkRhdGFiYXNlTWFwKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogbmFtZU1hcCA9IG1fb3BlbkRh
dGFiYXNlTWFwLT5nZXQob3JpZ2luKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRh
YmFzZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKSkgewpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogICAgIAog
ICAgIHsKICAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jayBiZWZvcmUgY2FsbGluZyBvcGVuVHJh
Y2tlckRhdGFiYXNlLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNl
R3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBH
dWFyZCB9OwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RF
eGlzdCk7CiAgICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAgLy8gRGF0YWJhc2U6Om1hcmtB
c0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNhbiBjYXVzZSBhIGRlYWRsb2NrCiAgICAg
Ly8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRhYmFzZVRocmVhZCBjYWxsIGl0IHRyaWdnZXJz
LgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlTWFwKSB7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9wZW5EYXRhYmFzZSA6ICptX29wZW5EYXRhYmFzZU1h
cCkgewogICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IG9wZW5EYXRhYmFzZS5rZXk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNr
V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFj
a1dyYXBwZXIuaAppbmRleCBkMGQxMjgwOTZiYWIwYTZhMGY3YzJkYmYxMDNjMjJkNDA4MzlmZjBh
Li4yNzIxNDQxMzc1MjU5M2VkMDhhMjY2Mjk0MGZjYTg3YTkyNDM2YzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVy
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyOwogICAgICAgICBUKiBjYWxsYmFjazsKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKCFtX2NhbGxi
YWNrKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPFQ+IHVud3JhcCgpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgQVNT
RVJUKCFtX2NhbGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhy
ZWFkKCkpOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm4gV1RGTW92ZShtX2NhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggZWRkY2U4MWJk
ZDBlYThmNjRlOWMyMjg1M2I3ZjE4YTNhY2QzN2I2MS4uZTc0MjFjNzdjNTMyNzAxMWY1OGJmMTI2
MTZmOWUwNGRiNTFiNjY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpjYWxsRXJyb3JDYWxsYmFja0R1ZVRvSW50ZXJydXB0aW9uKCkKIAogdm9p
ZCBTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3Rh
dGVtZW50PiBzdGF0ZW1lbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZW1lbnRN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKICAgICBtX3N0
YXRlbWVudFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHN0YXRlbWVudCkpOwogfQogCkBAIC0xOTAsNyAr
MTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWREYXRhYmFz
ZSgpCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBzdG9wcGVkLCBkb24ndCBkbyBhbnl0aGlu
ZyBhbmQgY2FuY2VsIHF1ZXVlZCB3b3JrCiAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSB3
YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxpbmcgd29yayBmb3IgdGhpcyB0cmFu
c2FjdGlvbiIpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKICAgICBtX3N0YXRlbWVudFF1
ZXVlLmNsZWFyKCk7CiAgICAgbV9uZXh0U3RlcCA9IG51bGxwdHI7CiAKQEAgLTUxNiw3ICs1MTYs
NyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KCkKIHsKICAgICBtX2N1
cnJlbnRTdGF0ZW1lbnQgPSBudWxscHRyOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0
ZW1lbnRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKICAg
ICBpZiAoIW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRTdGF0
ZW1lbnQgPSBtX3N0YXRlbWVudFF1ZXVlLnRha2VGaXJzdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCmluZGV4IGQwMGVjMWQ5NDI0OGJmOWFkNTE1NDkxOTBjYmZjZDljNWYwMGRlMTEuLmEw
NDNmN2NhMzI2YmU4YzBlOWJjOTgzYmMzN2JiZjQ1MThlOTA2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6
ZG9DbGVhbnVwKCkKIAogICAgIG1fZnJvbnRlbmQucmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9mcm9udGVuZC5tX3N0YXRlbWVudE11dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVuZC5tX3N0YXRlbWVudE11dGV4IH07CiAgICAg
bV9mcm9udGVuZC5tX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CiAKICAgICBpZiAobV9mcm9udGVu
ZC5tX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggM2Y4
M2U4ZTY3MDZiYTQ1NzQzNGMyYTMxZmQyNDg5NmE3OWQ5NjJhMS4uOWZjMzg3ZTQ1Y2EyNTg1ODJl
Mzk5MjFmNTZjY2U5ZTdkMDEwNGE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpjbGVhcigpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBtX2F4T2JqZWN0Q2FjaGUgPSBudWxscHRyOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
aGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChtX3Jv
b3ROb2RlLT5vYmplY3RJRCgpKTsKICAgICBtX3Jvb3ROb2RlID0gbnVsbHB0cjsKICAgICBtX25v
ZGVNYXAuY2xlYXIoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpn
ZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhDb3JlT2JqZWN0KiBheFBh
cgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG9iamVjdCA9IGNyZWF0ZVN1YnRyZWUoYXhP
YmplY3QsIGF4UGFyZW50ID8gYXhQYXJlbnQtPm9iamVjdElEKCkgOiBJbnZhbGlkQVhJRCwgYXR0
YWNoV3JhcHBlcik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgaWYgKCFheFBhcmVu
dCkKICAgICAgICAgc2V0Um9vdE5vZGUob2JqZWN0LnB0cigpKTsKICAgICBlbHNlIGlmIChheFBh
cmVudC0+b2JqZWN0SUQoKSAhPSBJbnZhbGlkQVhJRCkgLy8gTmVlZCB0byBjaGVjayBmb3IgdGhl
IG9iamVjdElEIG9mIGF4UGFyZW50IGFnYWluIGJlY2F1c2UgaXQgbWF5IGhhdmUgYmVlbiBkZXRh
Y2hlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlLgpAQCAtMjI0LDcgKzIyNCw3IEBAIFJlZjxB
WElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZShBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBBWElECiAgICAgfQogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFu
Z2VMb2dMb2NrIH07CiAgICAgICAgIG1fcGVuZGluZ0FwcGVuZHMuYXBwZW5kKFdURk1vdmUobm9k
ZUNoYW5nZSkpOwogICAgICAgICB1cGRhdGVDaGlsZHJlbklEcyhvYmplY3QtPm9iamVjdElEKCks
IFdURk1vdmUoY2hpbGRyZW5JRHMpKTsKICAgICB9CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgIGF1
dG8gbmV3T2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKGF4T2JqZWN0LCB0aGlzLCBw
YXJlbnRJRCk7CiAgICAgbmV3T2JqZWN0LT5tX2NoaWxkcmVuSURzID0gYXhPYmplY3QuY2hpbGRy
ZW5JRHMoKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIC8vIFJlbW92ZSB0aGUg
b2xkIG9iamVjdCBhbmQgc2V0IHRoZSBuZXcgb25lIHRvIGJlIHVwZGF0ZWQgb24gdGhlIEFYIHRo
cmVhZC4KICAgICBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOwogICAgIG1fcGVu
ZGluZ0FwcGVuZHMuYXBwZW5kKHsgbmV3T2JqZWN0LCBheE9iamVjdC53cmFwcGVyKCkgfSk7CkBA
IC0yNzEsNyArMjcxLDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5
KGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYUHJvcGVydHkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1Byb3Bl
cnR5Q2hhbmdlcy5hcHBlbmQoeyBheE9iamVjdC5vYmplY3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsK
IH0KIApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxk
cmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAKICAgICBpZiAodXBkYXRlZENoaWxkIHx8IHJl
bW92YWxzLnNpemUoKSkgewogICAgICAgICAvLyBNYWtlIHRoZSBjaGlsZHJlbiBJRHMgb2YgdGhl
IGlzb2xhdGVkIG9iamVjdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgQVhPYmplY3Qncy4KLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgICAgICB1cGRhdGVDaGlsZHJlbklEcyhh
eEFuY2VzdG9yLT5vYmplY3RJRCgpLCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpKTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBOb3RoaW5nIHdhcyB1cGRhdGVkLiBBcyBhIGxhc3QgcmVzb3J0LCB1
cGRhdGUgdGhlIHN1YnRyZWUuCkBAIC0zNjIsNyArMzYyLDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRP
YmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSgpCiAgICAgQVhUUkFDRSgiQVhJc29s
YXRlZFRyZWU6OmZvY3VzZWROb2RlIik7CiAgICAgLy8gQXBwbHkgcGVuZGluZyBjaGFuZ2VzIGlu
IGNhc2UgZm9jdXMgaGFzIGNoYW5nZWQgYW5kIGhhc24ndCBiZWVuIHVwZGF0ZWQuCiAgICAgYXBw
bHlQZW5kaW5nQ2hhbmdlcygpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dM
b2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIEFYTE9H
KG1ha2VTdHJpbmcoImZvY3VzZWROb2RlSUQgIiwgbV9mb2N1c2VkTm9kZUlEKSk7CiAgICAgQVhM
T0coImZvY3VzZWQgbm9kZToiKTsKICAgICBBWExPRyhub2RlRm9ySUQobV9mb2N1c2VkTm9kZUlE
KSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0
ZWRUcmVlOjpmb2N1c2VkTm9kZSgpCiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRl
ZFRyZWU6OnJvb3ROb2RlKCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cm9vdE5v
ZGUiKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICByZXR1cm4gbV9yb290Tm9kZTsK
IH0KIApAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWRO
b2RlSUQoQVhJRCBheElEKQogICAgIEFYTE9HKG1ha2VTdHJpbmcoImF4SUQgIiwgYXhJRCkpOwog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsK
ICAgICBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEID0gYXhJRDsKIAogICAgIEFYUHJvcGVydHlNYXAg
cHJvcGVydHlNYXA7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVt
b3ZlTm9kZShBWElEIGF4SUQpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1f
bm9kZU1hcC5yZW1vdmUoYXhJRCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxv
Z0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9w
ZW5kaW5nTm9kZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KIApAQCAtNDMxLDcgKzQzMSw3IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUoQVhJRCBheElEKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nU3VidHJl
ZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KIApAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgIGlmIChtX3VzZWRPbkFYVGhy
ZWFkICYmIGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5n
ZUxvZ0xvY2sgfTsKIAogICAgIGlmIChtX3BlbmRpbmdGb2N1c2VkTm9kZUlEICE9IG1fZm9jdXNl
ZE5vZGVJRCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJmb2N1c2VkTm9kZUlEICIsIG1f
Zm9jdXNlZE5vZGVJRCwgIiBwZW5kaW5nRm9jdXNlZE5vZGVJRCAiLCBtX3BlbmRpbmdGb2N1c2Vk
Tm9kZUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IGJiMDU3ZWY2YTAwNjI2MWJkNGU2YTYxNWNhZjFlMDE4
MTk1ZWI0MWYuLjAxNjRkNTMyNDYyNDFjYmFmMTg3NWFlZTc5OTZiMWU1MzI5NTgyZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
TWFjLm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3Jv
bGxpbmdUcmVlTWFjOjpzY3JvbGxpbmdOb2RlRm9yUG9pbnQoRmxvYXRQb2ludCBwb2kKICAgICBp
ZiAoIXJvb3RTY3JvbGxpbmdOb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX2xheWVySGl0VGVzdE11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sYXllckhpdFRlc3RNdXRleCB9OwogCiAgICAgYXV0byByb290Q29udGVudHNMYXll
ciA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMqPihyb290
U2Nyb2xsaW5nTm9kZSktPnJvb3RDb250ZW50c0xheWVyKCk7CiAgICAgRmxvYXRQb2ludCBzY3Jv
bGxPcmlnaW4gPSByb290U2Nyb2xsaW5nTm9kZS0+c2Nyb2xsT3JpZ2luKCk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgT3B0aW9uU2V0PEV2ZW50TGlzdGVuZXJSZWdpb25UeXBlPiBTY3JvbGxpbmdUcmVl
TWFjOjpldmVudExpc3RlbmVyUmVnaW9uVHlwZXNGb3IKICAgICBpZiAoIXJvb3RTY3JvbGxpbmdO
b2RlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1f
bGF5ZXJIaXRUZXN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xheWVySGl0VGVzdE11
dGV4IH07CiAKICAgICBhdXRvIHJvb3RDb250ZW50c0xheWVyID0gc3RhdGljX2Nhc3Q8U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyo+KHJvb3RTY3JvbGxpbmdOb2RlKS0+cm9vdENv
bnRlbnRzTGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJv
cnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNr
UXVldWUuaAppbmRleCA3NGM3ZTBlODUzMmUxNGUzNzlkMmNmOTYyMmM1MjFjOWY4NzgzZGVkLi44
MjY5OWRlNjBmMDU2NTFkNmM3MDgxNjFhOGEzOGFjNzE5MjlhNjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAgICAgewotICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAgIG1fYWJvcnRpbmcgPSB0cnVlOwogICAg
ICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBBU1NFUlQobV9hYm9ydGluZyk7CiAgICAgICAgIG1fYWJv
cnRpbmcgPSBmYWxzZTsKICAgICB9CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQzLDE0
ICsxNDMsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBEb24ndCBkZWFkbG9jayB0aGUgbWFpbiB0
aHJlYWQgd2l0aCBpdHNlbGYuCiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFI+IHJlc3BvbnNlID0gV1RG
OjpudWxsb3B0OwogICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVh
ZFRhc2tIYW5kbGVyXSgpIHsKICAgICAgICAgICAgIFIgcmVzcG9uc2VWYWx1ZSA9IG1haW5UaHJl
YWRUYXNrSGFuZGxlcigpOwotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0
ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAg
IGlmICghbV9hYm9ydGluZykKICAgICAgICAgICAgICAgICByZXNwb25zZSA9IFdURk1vdmUocmVz
cG9uc2VWYWx1ZSk7CiAgICAgICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lm5vdGlmeUFs
bCgpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNDYW5j
ZWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX3Rhc2tRdWV1ZS0+bV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9jayB7
IG1fdGFza1F1ZXVlLT5tX211dGV4IH07CiAgICAgICAgICAgICBBU1NFUlQodGhpcyA9PSBtX3Rh
c2tRdWV1ZS0+bV9jaGFubmVsLmZpcnN0KCkucHRyKCkpOwogICAgICAgICAgICAgbV90YXNrUXVl
dWUtPm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOwogICAgICAgICAgICAgbG9jay51bmxvY2tFYXJs
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FS
aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmlu
Z0J1ZmZlci5jcHAKaW5kZXggNTI2NmI1ZmNhNWM1NTIyOGQwNDA1Mjc2OTg3MGEyMmExZjc0Mjhk
YS4uYTU4MWNmNjU1NmY5OTc1Njg3Y2M1MDUxZGFlZjkzZTJjMzJiODliOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCkBA
IC0yMzEsNyArMjMxLDcgQEAgYm9vbCBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjphbGxvY2F0
ZShzaXplX3QgYnl0ZUNvdW50LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGUKIAogdm9pZCBDQVJpbmdC
dWZmZXJTdG9yYWdlVmVjdG9yOjpmbHVzaCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9j
dXJyZW50RnJhbWVCb3VuZHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jdXJyZW50RnJh
bWVCb3VuZHNMb2NrIH07CiAgICAgZm9yIChhdXRvJiB0aW1lQm91bmRzIDogbV90aW1lQm91bmRz
UXVldWUpIHsKICAgICAgICAgdGltZUJvdW5kcy5tX3N0YXJ0RnJhbWUgPSAwOwogICAgICAgICB0
aW1lQm91bmRzLm1fZW5kRnJhbWUgPSAwOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgQ0FSaW5n
QnVmZmVyOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50NjRf
dCBlbmRUaW1lKQogCiB2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OnNldEN1cnJlbnRG
cmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydFRpbWUsIHVpbnQ2NF90IGVuZFRpbWUpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrIH07CiAgICAgdWludDMyX3QgbmV4dFB0
ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKSArIDE7CiAgICAgdWludDMyX3QgaW5kZXgg
PSBuZXh0UHRyICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKaW5kZXggOGNkNWMyODc0MjdkY2ZlNjA5YmQ5OGY2NmY5YWFhMDk0Y2Y5YzU4OS4uNDM2
OTY4OGUxOWE0MjdlYzhhZTRmNjFkNTAyN2FlNzNiMmU0ZmFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBlcio+JiBB
VkZXcmFwcGVyOjptYXAoKQogCiB2b2lkIEFWRldyYXBwZXI6OmFkZFRvTWFwKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2Nr
KCkgfTsKICAgICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlrZSBhIGtleSBvZiAwLCBhbmQg
YWxzbyBtYWtlIHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcgYW4gb2JqZWN0IElEIHRoYXQn
cyBhbHJlYWR5IGluIHVzZS4KQEAgLTE0NDYsNyArMTQ0Niw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
cmVtb3ZlRnJvbU1hcCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVt
b3ZlRnJvbU1hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAg
IG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKIH0KIApAQCAtMTY1MCw3ICsxNjUwLDcgQEAgdm9p
ZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpwZXJp
b2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2Zldy
YXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAg
ICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2sg
aW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE2ODIsNyArMTY4Miw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
cHJvY2Vzc05vdGlmaWNhdGlvbih2b2lkKiBjb250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4gbm90aWZpY2F0aW9uRGF0YSB7IHN0YXRpY19jYXN0
PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSo+KGNvbnRleHQpIH07CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAg
ICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChub3RpZmlj
YXRpb25EYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uIGludm9rZWQgZm9yIGRlbGV0ZWQg
QVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBA
IC0xNzM3LDcgKzE3MzcsNyBAQCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNr
KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogCiB2b2lkIEFWRldy
YXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQq
IGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBw
ZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayBp
bnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oY29udGV4dCkpOwpAQCAtMTc2NCw3ICsxNzY0LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpj
aGVja1BsYXlhYmlsaXR5KCkKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0
aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9Owog
ICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRl
eHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjps
b2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFw
cGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3ODQs
NyArMTc4NCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoKQogCiB2
b2lkIEFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayhBVkNGUGxheWVySXRlbVJlZiwg
Qm9vbGVhbiBmaW5pc2hlZCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZX
cmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAg
ICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6c2Vla0NvbXBs
ZXRlZENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODI4LDcgKzE4MjgsNyBAQCB2b2lk
IEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91dHB1dERhdGEocmVpbnRlcnByZXRfY2Fz
dDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNvbnRleHQpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldy
YXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGxlZ2libGVPdXRwdXRE
YXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJB
VkZXcmFwcGVyOjpwcm9jZXNzQ3VlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIs
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODQ0LDcgKzE4NDQs
NyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkKIHZvaWQgQVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFycmF5UmVmIGF0dHJpYnV0ZWRT
dHJpbmdzLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIENNVGltZSBpdGVtVGltZSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
YXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZXcmFw
cGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1
dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODgzLDcgKzE4ODMsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uodm9pZCogY29u
dGV4dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2FkUmVxdWVzdERhdGE+IGxvYWRSZXF1ZXN0
RGF0YShyZWludGVycHJldF9jYXN0PExvYWRSZXF1ZXN0RGF0YSo+KGNvbnRleHQpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExv
Y2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250
ZXh0KGxvYWRSZXF1ZXN0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAg
ICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAgYm9vbCBBVkZX
cmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdFIKIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkZXJS
ZWYgcmVzb3VyY2VMb2FkZXIsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgbG9h
ZGluZ1JlcXVlc3QsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkgIT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07
CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29u
dGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6
OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlIGlu
dm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCBlOTdkMDA0Y2M5NDdkNmRjMWY3NTEwMWMwZTczYjI3NTMwM2FmNDg2Li41
MmY5MThmMWVhYmJiMDczZWI0OTI4NWExZjI2YjYyZGVjMTg3NTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTk3LDcgKzk3LDcgQEAgLSAo
TlNEYXRhKilkYXRhCiAKIC0gKHZvaWQpc2V0RXhwZWN0ZWRDb250ZW50U2l6ZToobG9uZyBsb25n
KWV4cGVjdGVkQ29udGVudFNpemUKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IF9kYXRhTG9j
ayB9OworICAgIExvY2tlciBsb2NrZXIgeyBfZGF0YUxvY2sgfTsKICAgICBfZXhwZWN0ZWRDb250
ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNpemU7CiAKICAgICBbc2VsZiBmdWxmaWxsUGVuZGlu
Z1JlcXVlc3RzXTsKQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKXNldEV4cGVjdGVkQ29udGVu
dFNpemU6KGxvbmcgbG9uZylleHBlY3RlZENvbnRlbnRTaXplCiAKIC0gKHZvaWQpdXBkYXRlRGF0
YTooTlNEYXRhICopZGF0YSBjb21wbGV0ZTooQk9PTCljb21wbGV0ZQogewotICAgIExvY2tIb2xk
ZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IF9kYXRhTG9jayB9
OwogICAgIF9kYXRhID0gZGF0YTsKICAgICBfY29tcGxldGUgPSBjb21wbGV0ZTsKIApAQCAtMTkw
LDcgKzE5MCw3IEBAIC0gKHZvaWQpZnVsZmlsbFJlcXVlc3Q6KEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0ICopcmVxdWVzdAogCiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVz
b3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVz
dGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVl
c3QKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IF9kYXRhTG9jayB9OworICAgIExvY2tlciBs
b2NrZXIgeyBfZGF0YUxvY2sgfTsKIAogICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZUxvYWRlcik7
CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVz
b3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZAogCiAtICh2b2lk
KXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBk
aWRDYW5jZWxMb2FkaW5nUmVxdWVzdDooQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKils
b2FkaW5nUmVxdWVzdAogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IF9kYXRhTG9jayB9OwogCiAgICAgVU5VU0VEX1BBUkFNKHJlc291
cmNlTG9hZGVyKTsKICAgICBfcmVxdWVzdHMucmVtb3ZlQWxsKGxvYWRpbmdSZXF1ZXN0KTsKQEAg
LTQzNyw3ICs0MzcsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldFRyYWNrKEFWQXNz
ZXRUcmFjayAqdHJhY2spCiAgICAgICAgIHJldHVybjsKICAgICBtX3RyYWNrID0gdHJhY2s7CiAK
LSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKICAgICBtX3NhbXBsZURhdGEu
Y2xlYXIoKTsKICAgICBtX3NpemUucmVzZXQoKTsKICAgICBtX2N1cnNvciA9IG1fc2FtcGxlRGF0
YS5kZWNvZGVPcmRlcigpLmVuZCgpOwpAQCAtNTYxLDcgKzU2MSw3IEBAIHVuc2lnbmVkIEltYWdl
RGVjb2RlckFWRk9iakM6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzCiAKIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5l
cmF0b3JMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9
OwogCiAgICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOwogICAgIGlm
ICghc2FtcGxlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggMzUwMzhhZjU5ODNjMWQyM2NhYzdjNDBkNzEwN2FhYTMwMGIyMDAxNi4uNjQxMGMyOWQyMGE1
Njk0ZmJhOGFiOWFiM2M2M2JjYTQ5MWRmMjBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bAogCiBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JM
b2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCiAg
ICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghc2Ft
cGxlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCBhOGVlZjUyYTEzYTc3ZWVkNzdjZjE0ZTk4NzM2NzgwYWI5OWZlMDQ2
Li5lYThlMTA3MmE5NzFmNzEyMTcxNzBiNjEzZTdhZTc2OGJhZWRmZWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVj
dCgpCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShH
UmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVNdXRl
eCB9OwogICAgICAgICBtX3BlbmRpbmdTYW1wbGVzLmFwcGVuZChzYW1wbGUpOwogICAgIH0KIApA
QCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+
IHNhbXBsZXM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9zYW1wbGVNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIG1fcGVu
ZGluZ1NhbXBsZXMuc3dhcChzYW1wbGVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90
aWZpZXIuaAppbmRleCBhODg1OTI4OWM4NTUzMmQ5ZTY2M2RlNDcwYjYxMzFiYzlkYjA4ZmE3Li44
ZDk0MjQwYmIwNmVjNDFiN2Q3NzVjMmY0MDM1M2FjY2M1MjQ2MjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5U
aHJlYWROb3RpZmllci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNl
bFBlbmRpbmdOb3RpZmljYXRpb25zKHVuc2lnbmVkIG1hc2sgPSAwKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1faXNWYWxpZC5sb2FkKCkpOwotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Bl
bmRpbmdOb3RpZmljYXRpb25zTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BlbmRp
bmdOb3RpZmljYXRpb25zTG9jayB9OwogICAgICAgICBpZiAobWFzaykKICAgICAgICAgICAgIG1f
cGVuZGluZ05vdGlmaWNhdGlvbnMgJj0gfm1hc2s7CiAgICAgICAgIGVsc2UKQEAgLTEwNyw3ICsx
MDcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBhZGRQZW5kaW5nTm90aWZpY2F0aW9uKFQgbm90
aWZpY2F0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGVuZGlu
Z05vdGlmaWNhdGlvbnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGVuZGluZ05v
dGlmaWNhdGlvbnNMb2NrIH07CiAgICAgICAgIGlmIChub3RpZmljYXRpb25UeXBlICYgbV9wZW5k
aW5nTm90aWZpY2F0aW9ucykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9w
ZW5kaW5nTm90aWZpY2F0aW9ucyB8PSBub3RpZmljYXRpb25UeXBlOwpAQCAtMTE2LDcgKzExNiw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlbW92ZVBlbmRpbmdOb3RpZmljYXRpb24oVCBub3Rp
ZmljYXRpb25UeXBlKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wZW5kaW5n
Tm90aWZpY2F0aW9uc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wZW5kaW5nTm90
aWZpY2F0aW9uc0xvY2sgfTsKICAgICAgICAgaWYgKG5vdGlmaWNhdGlvblR5cGUgJiBtX3BlbmRp
bmdOb3RpZmljYXRpb25zKSB7CiAgICAgICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zICY9
IH5ub3RpZmljYXRpb25UeXBlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGFmNTEyOTkwYjZi
NDBhYzFlODA0NGE5YjcwOWU2MzllZmQxMTcyMzIuLjc1YTIxYzFiNGRkODUwNGZlMDI3Y2YyOTM4
MjBkMmY4N2UwNDhmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zNTUxLDcgKzM1NTEsNyBAQCBJbml0RGF0YSBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UoR3N0TWVz
cwogCiAgICAgSW5pdERhdGEgaW5pdERhdGE7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9wcm90ZWN0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm90ZWN0
aW9uTXV0ZXggfTsKICAgICAgICAgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyBwcm90ZWN0aW9uU3lz
dGVtRXZlbnRzKG1lc3NhZ2UpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHBpcGVsaW5lKCks
ICJmb3VuZCAlenUgcHJvdGVjdGlvbiBldmVudHMsICV6dSBkZWNyeXB0b3JzIGF2YWlsYWJsZSIs
IHByb3RlY3Rpb25TeXN0ZW1FdmVudHMuZXZlbnRzKCkuc2l6ZSgpLCBwcm90ZWN0aW9uU3lzdGVt
RXZlbnRzLmF2YWlsYWJsZVN5c3RlbXMoKS5zaXplKCkpOwogCkBAIC0zNjY2LDcgKzM2NjYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhM
b2NhbEluc3RhbmNlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQ
cm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogewogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fcHJvdGVjdGlvbk11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvdGVjdGlvbk11dGV4IH07CiAgICAgICAgIGlmIChtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRz
LmNvbnRhaW5zKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQpKSkgewogICAgICAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChwaXBlbGluZSgpLCAiZXZlbnQgJXUgYWxyZWFkeSBoYW5kbGVkIiwgR1NUX0VW
RU5UX1NFUU5VTShldmVudCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGQ2MGNhZTgwODFjZDNhOTA1ZTY5
NmFiMzM1Yzc5Yzc4ODY0Y2Q0OTQuLjYwMGE2N2ZkZjc0ZjY5MWM4NTcxMDgxZGI4MzA4NDNmYzJh
NTQyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3ND
aGFuZ2VkKCkKIAogICAgIEdTVF9ERUJVRygiSW5zcGVjdGluZyB0cmFjayBhdCBpbmRleCAlZCB3
aXRoIHRhZ3M6ICUiIEdTVF9QVFJfRk9STUFULCBtX2luZGV4LCB0YWdzLmdldCgpKTsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhZ011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdGFnTXV0ZXggfTsKICAgICAgICAgbV90YWdzLnN3YXAodGFncyk7CiAgICAgfQog
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mVGFnc0NoYW5nZWQoKQogCiAgICAgR1JlZlB0cjxHc3RUYWdMaXN0PiB0YWdzOwog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFnTXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YWdNdXRleCB9OwogICAgICAgICB0YWdzLnN3YXAobV90YWdzKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggZjQxMzliNzZhN2Zi
ZTJkZTBmN2Y2ZTY0Y2M1MzI2MGRmMDJkZDJhNS4uMTFiZWExMmI2NmRjNTQ2MjVhODI5ZjkwNzRh
OTJjMDM3NGNlMjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTcx
LDI2ICs3MSwyNiBAQCBjbGFzcyBWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXIgewogcHVibGlj
OgogICAgIHZvaWQgc3RhcnQoKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
YW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAg
ICAgICAgIG1fdW5sb2NrZWQgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKQogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIG1fc2FtcGxlID0gbnVsbHB0
cjsKICAgICAgICAgbV91bmxvY2tlZCA9IHRydWU7CiAgICAgfQogCiAgICAgdm9pZCBkcmFpbigp
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhbXBsZU11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgbV9zYW1wbGUgPSBu
dWxscHRyOwogICAgIH0KIAogICAgIGJvb2wgcmVxdWVzdFJlbmRlcihXZWJLaXRWaWRlb1Npbmsq
IHNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4
IH07CiAgICAgICAgIGlmIChtX3VubG9ja2VkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCmluZGV4IDE4MGUyNjBmOThlYzA2MDZkYzg0OWM0
NGFhMzJiNTk3Njg5YjZhMDYuLjMyMDE3NGQ1YmZlODc2ZGI4YzE0MjM1OWE4ZTFhMDFhYTg2YzBm
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21t
b25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0
YXRpYyBHc3RGbG93UmV0dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFz
ZSwgR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKICAgICB9
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHByaXYtPm11dGV4IH07CiAKICAgICBpZiAocHJpdi0+aXNGbHVzaGluZykgewogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJEZWNyeXB0aW9uIGFib3J0ZWQgYmVjYXVzZSBvZiBm
bHVzaCIpOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHRyYW5zZm9y
bUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBidWZmZXIpCiAgICAg
R1NUX1RSQUNFX09CSkVDVChzZWxmLCAiZGVjcnlwdGluZyIpOwogCiAgICAgLy8gVGVtcG9yYXJp
bHkgcmVsZWFzZSB0aGUgbG9jayB3aGlsZSB3ZSBkb24ndCBuZWVkIHRvIGFjY2VzcyBwcml2LiBU
aGUgbG93ZXIgbGV2ZWwgQVBJIGlzIHVzZWQKLSAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBjcmVh
dGluZyBzZXZlcmFsIHNjb3BlcyB3aXRoIGRpZmZlcmVudCBMb2NrSG9sZGVyIGluc3RhbmNlcyBp
biBlYWNoIG9uZS4KKyAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBzZXZlcmFsIHNj
b3BlcyB3aXRoIGRpZmZlcmVudCBMb2NrZXIgaW5zdGFuY2VzIGluIGVhY2ggb25lLgogICAgIHBy
aXYtPm11dGV4LnVubG9jaygpOwogCiAgICAgYm9vbCBkaWREZWNyeXB0aW9uU3VjY2VlZCA9IGts
YXNzLT5kZWNyeXB0KHNlbGYsIGl2QnVmZmVyLCBrZXlJREJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1w
bGVDb3VudCwgc3ViU2FtcGxlc0J1ZmZlcik7CkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIGdi
b29sZWFuIHNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50
KiBldmVudCkKICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVEFSVDoKICAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChzZWxmLCAiRmx1c2gtc3RhcnQiKTsKICAgICAgICAgewotICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IHByaXYtPm11dGV4IH07CiAgICAgICAgICAgICBib29sIGlzQ2RtUHJveHlBdHRhY2hlZCA9
IHByaXYtPmNkbVByb3h5OwogICAgICAgICAgICAgcHJpdi0+aXNGbHVzaGluZyA9IHRydWU7CiAg
ICAgICAgICAgICBpZiAoaXNDZG1Qcm94eUF0dGFjaGVkKSB7CkBAIC00MDYsNyArNDA2LDcgQEAg
c3RhdGljIGdib29sZWFuIHNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMs
IEdzdEV2ZW50KiBldmVudCkKICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJGbHVzaC1zdG9wIik7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgICAgICAgICAgcHJpdi0+aXNGbHVzaGluZyA9
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0
YXRpYyBnYm9vbGVhbiBzaW5rRXZlbnRIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qIHRyYW5zLCBH
c3RFdmVudCogZXZlbnQpCiBib29sIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRJ
c0ZsdXNoaW5nKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAg
ICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwotICAgIExvY2tIb2xkZXIg
bG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXggfTsK
ICAgICByZXR1cm4gcHJpdi0+aXNGbHVzaGluZzsKIH0KIApAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0
YXRpYyB2b2lkIHNldENvbnRleHQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0Q29udGV4dCogY29u
dGV4dCkKIAogICAgIGlmIChnc3RfY29udGV4dF9oYXNfY29udGV4dF90eXBlKGNvbnRleHQsICJk
cm0tY2RtLXByb3h5IikpIHsKICAgICAgICAgY29uc3QgR1ZhbHVlKiB2YWx1ZSA9IGdzdF9zdHJ1
Y3R1cmVfZ2V0X3ZhbHVlKGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUoY29udGV4dCksICJjZG0t
cHJveHkiKTsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXggfTsKICAgICAgICAgcHJpdi0+Y2RtUHJveHkg
PSB2YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNUHJveHkqPihnX3ZhbHVlX2dldF9wb2ludGVy
KHZhbHVlKSkgOiBudWxscHRyOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJyZWNl
aXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1Qcm94eS5nZXQoKSk7CiAgICAgICAg
IGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYsIHByaXYtPmNkbVByb3h5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFC
dWZmZXIuY3BwCmluZGV4IDk0OWJjZmE4NzQ1NTA0NWMxZTUzYWVkMjQzZjA3OGNlYThlZmM1ZmIu
LmM3OTE1ZmI1NWRlMzNmNjZjYmZhYTkyMTM2MGIxOTk1NjQyZDljYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVm
ZmVyLmNwcApAQCAtNTAsMTQgKzUwLDE0IEBAIEJ1ZmZlcjo6fkJ1ZmZlcigpID0gZGVmYXVsdDsK
IAogdm9pZCBCdWZmZXI6OmJlZ2luUGFpbnRpbmcoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFpbnRpbmcubG9jayB9
OwogICAgIEFTU0VSVChtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6OkNvbXBsZXRl
KTsKICAgICBtX3BhaW50aW5nLnN0YXRlID0gUGFpbnRpbmdTdGF0ZTo6SW5Qcm9ncmVzczsKIH0K
IAogdm9pZCBCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcoKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFpbnRpbmcubG9j
ayB9OwogICAgIEFTU0VSVChtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6OkluUHJv
Z3Jlc3MpOwogICAgIG1fcGFpbnRpbmcuc3RhdGUgPSBQYWludGluZ1N0YXRlOjpDb21wbGV0ZTsK
ICAgICBtX3BhaW50aW5nLmNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcoKQogCiB2b2lkIEJ1ZmZlcjo6d2FpdFVudGls
UGFpbnRpbmdDb21wbGV0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYWludGluZy5s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5sb2NrIH07CiAgICAgbV9wYWlu
dGluZy5jb25kaXRpb24ud2FpdChtX3BhaW50aW5nLmxvY2ssCiAgICAgICAgIFt0aGlzXSB7IHJl
dHVybiBtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6OkNvbXBsZXRlOyB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCA2NDBhMDQyMWJjZWI2MWE5ODhiNjFm
ZmY4ZjlhYjRjNmQ5NTFhZDMzLi45YjZhYzBkYmJkOTU5ZWI0MWY4YTY2MmZlOWY3ZjRkYTA0NTNi
ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC01OCwxMyArNTgsMTMgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRTY2VuZUludGVncmF0aW9uKFJlZlB0cjxTY2VuZUludGVn
cmF0aW9uPiYmIHNjZW5lSW50ZWdyYXRpb24pCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZS5sb2Nr
IH07CiAgICAgICAgIG1fc3RhdGUuc2NlbmVJbnRlZ3JhdGlvbiA9IFdURk1vdmUoc2NlbmVJbnRl
Z3JhdGlvbik7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246
OlVwZGF0ZVNjb3BlPiBjcmVhdGVVcGRhdGVTY29wZSgpCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0
ZS5sb2NrIH07CiAgICAgICAgIGlmIChtX3N0YXRlLnNjZW5lSW50ZWdyYXRpb24pCiAgICAgICAg
ICAgICByZXR1cm4gbV9zdGF0ZS5zY2VuZUludGVncmF0aW9uLT5jcmVhdGVVcGRhdGVTY29wZSgp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCwxNCArMjA4LDE0IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgVCYg
ZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKFBsYXRmb3JtTGF5ZXI6
Om1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0Zm9ybUxheWVyOjpt
X3N0YXRlLmxvY2sgfTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRlLnBlbmRpbmcpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBmbHVzaFN0YXRlKGNvbnN0IFQm
IGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVy
OjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgUGxhdGZvcm1MYXllcjo6
bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIGF1dG8mIHBlbmRpbmcgPSBtX3N0YXRlLnBlbmRpbmc7
CiAgICAgICAgIGF1dG8mIHN0YWdpbmcgPSBtX3N0YXRlLnN0YWdpbmc7CiAKQEAgLTI5Myw3ICsy
OTMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGNvbW1p
dFN0YXRlKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
UGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIG1fc3RhdGUuY29tbWl0dGVk
ID0gbV9zdGF0ZS5zdGFnaW5nOwogICAgICAgICBtX3N0YXRlLnN0YWdpbmcuZGVsdGEgPSB7IH07
CiAKQEAgLTMwMywxNCArMzAzLDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIHZvaWQgYWNjZXNzUGVuZGluZyhjb25zdCBUJiBmdW5jdG9yKQogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9OwogICAgICAg
ICBmdW5jdG9yKG1fc3RhdGUucGVuZGluZyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICB2b2lkIGFjY2Vzc0NvbW1pdHRlZChjb25zdCBUJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9Owog
ICAgICAgICBmdW5jdG9yKG1fc3RhdGUuY29tbWl0dGVkKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZS5o
CmluZGV4IDZmMjgxZGNiM2M5YTQ5ZjBiNDRlNDhkN2E2MzRjZGUzMTc2N2UyNTguLjYzMWM4NDcz
OGRmMDEyZDEyYWQ5MjJjZDhjMGI3Yjg4MjIxOGUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaApAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KICAgICB2b2lkIGFj
Y2Vzc1N0YXRlKGNvbnN0IEYmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NjZW5lLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY2VuZS5sb2Nr
IH07CiAgICAgICAgIGZ1bmN0b3IobV9zY2VuZS5zdGF0ZSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUlu
dGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDM3NDNhYjQwNGU5NTQ2NGQzNDAyYWY3
ZTAzMzNkZTk3NDQzMTk5ZWQuLmRlM2ZkMjcxZDAyZGRjMDg3NWYzYTQ3OGUzYzlhNjE1ZWI2ODg3
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC00NywyMCAr
NDcsMjAgQEAgU2NlbmVJbnRlZ3JhdGlvbjo6flNjZW5lSW50ZWdyYXRpb24oKQogCiB2b2lkIFNj
ZW5lSW50ZWdyYXRpb246OnNldENsaWVudChDbGllbnQmIGNsaWVudCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQu
bG9jayB9OwogICAgIG1fY2xpZW50Lm9iamVjdCA9ICZjbGllbnQ7CiB9CiAKIHZvaWQgU2NlbmVJ
bnRlZ3JhdGlvbjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGll
bnQubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKICAgICBtX2Ns
aWVudC5zY2VuZSA9IG51bGxwdHI7CiAgICAgbV9jbGllbnQub2JqZWN0ID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0VXBkYXRlKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQu
bG9jayB9OwogICAgIGlmIChtX2NsaWVudC5vYmplY3QpCiAgICAgICAgIG1fY2xpZW50Lm9iamVj
dC0+cmVxdWVzdFVwZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggYjljNzBk
YWExNTQyMzFjZDUyODdjMWQ5YjUxY2JiOWZmYjM5M2RkYi4uODdmOTE1YWM0ZDRjY2ZlN2FjZTFm
YWM2Y2UzOTUxYTRmYzYzODI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRhdGUo
KQogCiAgICAgLy8gSW5jcmVtZW50YWxseSBzdG9yZSB1cGRhdGVzIGFzIHRoZXkgYXJlIGJlaW5n
IGZsdXNoZWQgZnJvbSB0aGUgbGF5ZXItc2lkZS4KICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fdXBkYXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUu
bG9jayB9OwogICAgICAgICBtX3VwZGF0ZS5wZW5kaW5nLnRpbGVzVG9DcmVhdGUuYXBwZW5kVmVj
dG9yKG1fbGF5ZXJTdGF0ZS51cGRhdGUudGlsZXNUb0NyZWF0ZSk7CiAgICAgICAgIG1fdXBkYXRl
LnBlbmRpbmcudGlsZXNUb1VwZGF0ZS5hcHBlbmRWZWN0b3IobV9sYXllclN0YXRlLnVwZGF0ZS50
aWxlc1RvVXBkYXRlKTsKICAgICAgICAgbV91cGRhdGUucGVuZGluZy50aWxlc1RvUmVtb3ZlLmFw
cGVuZFZlY3RvcihtX2xheWVyU3RhdGUudXBkYXRlLnRpbGVzVG9SZW1vdmUpOwpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRl
KCkKIAogYXV0byBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6dGFrZVVwZGF0ZSgpIC0+
IFRpbGVVcGRhdGUKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogICAgIHJldHVybiBXVEZNb3ZlKG1f
dXBkYXRlLnBlbmRpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBmODFlNDhj
NzU1NzM3OGI0YTBiZDgzY2UzMWI0YzhlN2ExZDI4N2U5Li5mNjIzZTYzNDI1NDVhODg5ZDJlMDRh
ZGI5OGVhMWNkYWQ3ZTk2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTUyLDI2ICs1
MiwyNiBAQCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwoQ2xpZW50JiBjbGllbnQpCiBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bDo6fkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsKCkKIHsKICNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgQVNTRVJUKCFtX2NsaWVudC5jbGllbnQpOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmludmFsaWRhdGVD
bGllbnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgbV9jbGllbnQuY2xpZW50ID0gbnVs
bHB0cjsKIH0KIAogYm9vbCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9j
bGllbnQucGVuZGluZ1VwZGF0ZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQubG9jayB9
OwogICAgIGlmIChtX2NsaWVudC5jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LmNsaWVudC0+c3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBw
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggMWE4ZTY5
ODM0NDhkNjIxMmUyOWViMjA2MDYwMGQ0YTNiNmM5NDRlNi4uOTgzZjMxZmRhN2ZlMWNjNjgwMjJk
NmJjY2Y3MmVkNTE5NTFhNjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjp+SW1hZ2VCYWNraW5nVGV4dHVy
ZU1hcHBlckltcGwoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGw6OmZsdXNoVXBkYXRlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogCiAgICAgLy8gSWYg
dGhlIHVwZGF0ZSBoYXBwZW5zIGZvciB0aGUgc2FtZSBpbWFnZSBhbmQgdGhlcmUncyBubyBidWZm
ZXIsIGtlZXAgdGhlIGN1cnJlbnQgb25lCiAgICAgLy8gc28gaXQgY2FuIGJlIHJlY2VpdmVkIGJ5
IHRoZSBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuIEluIHRoYXQgY2FzZSB3ZSBvbmx5IG5lZWQg
dG8gdXBkYXRlCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGw6OmZsdXNoVXBkYXRlKCkKIAogYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bDo6dGFrZVVwZGF0ZSgpIC0+IFVwZGF0ZQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdXBk
YXRlLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3VwZGF0ZS5sb2NrIH07CiAgICAgcmV0
dXJuIFdURk1vdmUobV91cGRhdGUudXBkYXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAppbmRleCA4NTlhMDQ1YjcwYzIyZjY4MzZhM2Uz
NzEzNTYyMjcyNjY2YzFhNDI1Li5mOGIxMjViNTI0OGI5MDZjNTNhYThhNTI4OTgwOWQ5YTI5Y2Y0
OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNw
cApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0Lm1fYXR0cnMu
YWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSB9OwogICAg
ICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1
cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAppbmRleCBmNjc5ZjY0ZWYwMTBmMDE4MDU0OTJhYzQ4NDhiZjE3NWQ3M2VjOTA3Li5hNDU5
NzUzZjE3M2UxYjZiNTBkOTMyYzg0ZWJhZjZiYzIxNTViZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpzdXBwb3J0c1R5cGUoY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jYWNoZWROYXR1cmFsU2l6ZUxvY2sgfTsKICAgICAgICAgbV9jYWNoZWROYXR1cmFsU2l6
ZSA9IEZsb2F0U2l6ZSgpOwogICAgIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAog
CiBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpuYXR1cmFsU2l6
ZSgpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NhY2hlZE5hdHVyYWxTaXplTG9jayB9OwogICAg
IHJldHVybiBtX2NhY2hlZE5hdHVyYWxTaXplOwogfQogCkBAIC02NDUsMjEgKzY0NSwyMSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aW52YWxpZGF0ZUZyYW1lVmll
dygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjphZGRMaXN0ZW5l
cihNZWRpYVBsYXllckxpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX211dGV4TGlzdGVuZXJzKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleExpc3RlbmVy
cyB9OwogCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlbW92ZUxpc3RlbmVyKE1lZGlhUGxheWVyTGlz
dGVuZXIqIGxpc3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5l
cnMpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4TGlzdGVuZXJzIH07CiAKICAgICBtX2xp
c3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVsZXRlZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9tdXRleExpc3RlbmVycyk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXhMaXN0ZW5lcnMg
fTsKIAogICAgIGZvciAoSGFzaFNldDxNZWRpYVBsYXllckxpc3RlbmVyKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9saXN0ZW5lcnMuYmVnaW4oKTsgaXQgIT0gbV9saXN0ZW5lcnMuZW5kKCk7ICsr
aXQpCiAgICAgICAgICgqaXQpLT5vbk1lZGlhUGxheWVyRGVsZXRlZCgpOwpAQCAtNjY3LDcgKzY2
Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpub3RpZnlEZWxl
dGVkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnNldE5hdHVy
YWxTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2NhY2hlZE5hdHVyYWxTaXplTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2FjaGVkTmF0
dXJhbFNpemVMb2NrIH07CiAgICAgbV9jYWNoZWROYXR1cmFsU2l6ZSA9IHNpemU7CiB9CiAKQEAg
LTkxMCw3ICs5MTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6R2V0UAogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxs
YmFjazo6SW52b2tlKF9fUlBDX19pbl9vcHQgSU1GQXN5bmNSZXN1bHQgKnBBc3luY1Jlc3VsdCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9tdXRleCB9OwogCiAgICAgaWYgKCFtX21lZGlhUGxheWVyKQogICAgICAgICByZXR1cm4gU19P
SzsKQEAgLTkyNSw3ICs5MjUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6SW52bwogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6b25NZWRpYVBs
YXllckRlbGV0ZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBtX21lZGlhUGxheWVyID0gbnVsbHB0cjsK
IH0KQEAgLTk5OSw3ICs5OTksNyBAQCBVTE9ORyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2Nr
U3RhcnQoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIExPTkdMT05HIGxsQ2xvY2tTdGFydE9mZnNldCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKIAogICAgIC8vIEFmdGVyIHNodXRkb3duLCB3ZSBjYW5ub3Qgc3RhcnQuCiAgICAg
SFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIEhSRVNV
TFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRl
cjo6T25DbG9ja1N0YXJ0KE1GCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0b3AoTUZUSU1FIGhuc1N5c3Rl
bVRpbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAg
IGlmIChGQUlMRUQoaHIpKQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrU3Rv
cChNRlQKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2UoTUZUSU1FIGhuc1N5c3RlbVRpbWUpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICAvLyBBZnRlciBzaHV0ZG93biwgd2UgY2Fubm90IHBhdXNlLgogICAgIEhSRVNV
TFQgaHIgPSBjaGVja1NodXRkb3duKCk7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBIUkVTVUxUIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9u
Q2xvY2tQYXVzZShNRgogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tSZXN0YXJ0KE1GVElNRSBobnNTeXN0ZW1U
aW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBp
ZiAoRkFJTEVEKGhyKSkKQEAgLTEwNjksNyArMTA2OSw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1Jlc3Rh
cnQoCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6T25DbG9ja1NldFJhdGUoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIGZsb2F0
IHJhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAg
IGlmIChGQUlMRUQoaHIpKQpAQCAtMTA4NCw3ICsxMDg0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrU2V0
UmF0ZSgKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpQcm9jZXNzTWVzc2FnZShNRlZQX01FU1NBR0VfVFlQRSBlTWVzc2Fn
ZSwgVUxPTkdfUFRSIHVsUGFyYW0pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tT
aHV0ZG93bigpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgSFJF
U1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2Vu
dGVyOjpQcm9jZXNzTWVzc2FnZSgKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRDdXJyZW50TWVkaWFUeXBlKF9PdXRw
dHJfICBJTUZWaWRlb01lZGlhVHlwZSAqKnBwTWVkaWFUeXBlKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYg
KCFwcE1lZGlhVHlwZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTExNTgsNyArMTE1
OCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6SW5pdFNlcnZpY2VQb2luCiAKICAgICBIUkVTVUxUIGhyID0gU19PSzsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgaWYgKGlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBNRl9FX0lOVkFM
SURSRVFVRVNUOwpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpJbml0U2VydmljZVBvaW4K
IAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpSZWxlYXNlU2VydmljZVBvaW50ZXJzKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIG1fcmVu
ZGVyU3RhdGUgPSBSZW5kZXJTdGF0ZVNodXRkb3duOwogCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBI
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVz
ZW50ZXI6OlNodXRkb3duT2JqZWN0KAogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVvV2luZG93KEhXTkQgaHdu
ZFZpZGVvKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFJc1dpbmRvdyhod25kVmlkZW8pKQogICAgICAg
ICByZXR1cm4gRV9JTlZBTElEQVJHOwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgSFJFU1VMVCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpTZXRW
aWRlb1dpbmRvdygKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1dpbmRvdyhIV05EKiBwaHduZFZpZGVvKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgaWYgKCFwaHduZFZpZGVvKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgc3RhdGljIEhSRVNVTFQgc2V0TWl4ZXJTb3VyY2VSZWN0
KElNRlRyYW5zZm9ybSogbWl4ZXIsIGNvbnN0IE1GVmlkZW9Ob3JtYWxpemVkUmUKIAogSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpTZXRWaWRlb1Bvc2l0aW9uKGNvbnN0IE1GVmlkZW9Ob3JtYWxpemVkUmVjdCogcG5yY1NvdXJj
ZSwgY29uc3QgTFBSRUNUIHByY0Rlc3QpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAvLyBGaXJzdCwgY2hlY2sg
dGhhdCB0aGUgcGFyYW1ldGVycyBhcmUgdmFsaWQuCiAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIEhS
RVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6U2V0VmlkZW9Qb3NpdGlvCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6R2V0VmlkZW9Qb3NpdGlvbihNRlZpZGVv
Tm9ybWFsaXplZFJlY3QqIHBucmNTb3VyY2UsIExQUkVDVCBwcmNEZXN0KQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAg
ICAgaWYgKCFwbnJjU291cmNlIHx8ICFwcmNEZXN0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW8KIAogSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpSZXBhaW50VmlkZW8oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRv
d24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTIxOTUsNyArMjE5NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6bm90
aWZ5RXZlbnQobG9uZyBFCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmdldFNhbXBsZShDT01QdHI8SU1GU2FtcGxlPiYgc2FtcGxl
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gTUZf
RV9OT1RfSU5JVElBTElaRUQ7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBIUkVTVUxUIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpyZXR1cm5TYW1wbGUo
SU1GU2FtcAogICAgIGlmICghc2FtcGxlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBNRl9FX05PVF9J
TklUSUFMSVpFRDsKQEAgLTIyMjcsNyArMjIyNyw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OnJldHVyblNhbXBsZShJTUZTYW1w
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBv
b2w6OmFyZVNhbXBsZXNQZW5kaW5nKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghbV9pbml0aWFsaXpl
ZCkKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6YXJlU2FtcGxl
c1BlbmRpbmcoKQogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
VmlkZW9TYW1wbGVQb29sOjppbml0aWFsaXplKFZpZGVvU2FtcGxlTGlzdCYgc2FtcGxlcykKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKIAogICAgIGlmIChtX2luaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gTUZfRV9JTlZB
TElEUkVRVUVTVDsKQEAgLTIyNTQsNyArMjI1NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmluaXRpYWxpemUoVmlkZW9TYW1w
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBv
b2w6OmNsZWFyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIG1fdmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwog
ICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTIzMzMsNyArMjMzMyw3IEBAIEhSRVNVTFQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NjaGVkdWxlcjo6c3RvcFNj
aGVkdWxlcigpCiAgICAgLy8gV2FpdCBmb3IgdGhlIHNjaGVkdWxlciB0aHJlYWQgdG8gZmluaXNo
LgogICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdChtX3NjaGVkdWxlclRocmVhZC5nZXQoKSwgSU5G
SU5JVEUpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICBtX3NjaGVkdWxlZFNhbXBsZXMuY2xlYXIoKTsKICAgICBt
X3NjaGVkdWxlclRocmVhZC5jbGVhcigpOwpAQCAtMjM4NCw3ICsyMzg0LDcgQEAgSFJFU1VMVCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpzY2hlZHVs
ZVNhbXBsZShJTUZTYW0KICAgICAgICAgbV9wcmVzZW50ZXItPnByZXNlbnRTYW1wbGUoc2FtcGxl
LCAwKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU3VibWl0IHRoZSBzYW1wbGUgZm9yIHNjaGVk
dWxpbmcuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9zY2hlZHVsZWRTYW1wbGVzLmFwcGVuZChz
YW1wbGUpOwogCiAgICAgICAgIDo6UG9zdFRocmVhZE1lc3NhZ2UobV90aHJlYWRJRCwgRXZlbnRT
Y2hlZHVsZSwgMCwgMCk7CkBAIC0yNDA0LDcgKzI0MDQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnByb2Nlc3NTYW1wbGVzSW5R
dWV1ZQogICAgICAgICBDT01QdHI8SU1GU2FtcGxlPiBzYW1wbGU7CiAKICAgICAgICAgaWYgKHRy
dWUpIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAobV9zY2hlZHVsZWRT
YW1wbGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNh
bXBsZSA9IG1fc2NoZWR1bGVkU2FtcGxlcy50YWtlRmlyc3QoKTsKQEAgLTI0OTAsNyArMjQ5MCw3
IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NjaGVk
dWxlcjo6cHJvY2Vzc1NhbXBsZShJTUZTYW1wCiAgICAgICAgIGhyID0gbV9wcmVzZW50ZXItPnBy
ZXNlbnRTYW1wbGUoc2FtcGxlLCBwcmVzZW50YXRpb25UaW1lKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gUmV0dXJuIHRoZSBzYW1wbGUgdG8gdGhlIHF1ZXVlLCBzaW5jZSBpdCBpcyBub3QgcmVh
ZHkuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9zY2hlZHVsZWRTYW1wbGVzLnByZXBlbmQoc2Ft
cGxlKTsKICAgICB9CiAKQEAgLTI1NDAsNyArMjU0MCw3IEBAIERXT1JEIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlclRocmVhZFByb2NQ
cml2CiAKICAgICAgICAgICAgIGNhc2UgRXZlbnRGbHVzaDoKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOworICAgICAgICAgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1f
c2NoZWR1bGVkU2FtcGxlcy5jbGVhcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB3YWl0ID0gSU5GSU5JVEU7CkBAIC0yNjQ4LDcgKzI2NDgsNyBAQCBIUkVTVUxUIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldFZpZGVv
V2luZG93KEhXTgogICAgIEFTU0VSVChod25kICE9IG1faHduZCk7CiAKICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAgICAgbV9od25kID0gaHduZDsKICAgICB9CiAKQEAgLTI2NjAsNyArMjY2MCw3
IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFBy
ZXNlbnRlcjo6c2V0RGVzdGluYXRpb25SZWN0CiAgICAgaWYgKEVxdWFsUmVjdCgmcmNEZXN0LCAm
bV9kZXN0UmVjdCkpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBtX2Rlc3RS
ZWN0ID0gcmNEZXN0OwogCkBAIC0yNjgyLDcgKzI2ODIsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZVZpZGVvU2Ft
cGxlcwogICAgICAgICByZXR1cm4gTUZfRV9VTkVYUEVDVEVEOwogCiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIHJl
bGVhc2VSZXNvdXJjZXMoKTsKIApAQCAtMjcyMyw3ICsyNzIzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpyZWxlYXNlUmVzb3Vy
Y2VzKCkKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVj
dDNEUHJlc2VudGVyOjpjaGVja0RldmljZVN0YXRlKERldmljZVN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKIAogICAgIEhSRVNVTFQgaHIgPSBtX2RldmljZS0+Q2hlY2tEZXZpY2VTdGF0ZShtX2h3bmQp
OwogCkBAIC0yNzY0LDcgKzI3NjQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnByZXNlbnRTYW1wbGUoSU1GUwogewogICAg
IEhSRVNVTFQgaHIgPSBTX09LOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBDT01QdHI8SURpcmVjdDNEU3VyZmFj
ZTk+IHN1cmZhY2U7CiAKQEAgLTI4MjIsNyArMjgyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6cGFpbnRDdXJyZW50RnJhbWUo
V2ViCiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIGlmICghbV9tZW1TdXJmYWNlKQogICAgICAgICByZXR1cm47CkBAIC0yODg3LDcgKzI4
ODcsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0
M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSgpCiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAg
ICAgVUlOVCBhZGFwdGVySUQgPSBEM0RBREFQVEVSX0RFRkFVTFQ7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlm
ICghbV9kaXJlY3QzRDkgfHwgIW1fZGV2aWNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuIE1GX0Vf
Tk9UX0lOSVRJQUxJWkVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDIxYzFj
Mjc4NjllMzdlYjllMjg4OWJhYzRjOGE3NTZiMGZkMjdiNTEuLmYyY2ViMDAwYWQ0MDdjNGViNjIz
NTdjY2EwYzAyMmE1YjcxYTU5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAg
LTE3MCw3ICsxNzAsNyBAQCBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbAogCiBib29sIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0CiAKIGJvb2wgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTE5Miw3ICsx
OTIsNyBAQCBib29sIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0CiAKIHVuc2lnbmVkIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGRpbWVuc2lvbiBvZiB0aGUg
cmVxdWVzdGVkIGZyYW1lLgpAQCAtMjAxLDcgKzIwMSw3IEBAIHVuc2lnbmVkIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpCiAKIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDBfczsKIApAQCAtMjIxLDcg
KzIyMSw3IEBAIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIAogUGxhdGZvcm1JbWFnZVB0ciBTY2FsYWJsZUltYWdl
RGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgbG9ja0hv
bGRlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdl
IGhhdmUgYW4gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAgaWYgKHNpemUo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggYTYxNTdlZjNhODc0ZmNjZjMyMDBlOWFmNzQwNmVlNDg3OTg4Y2FmMy4uZmNm
MGE2MTE1ZGQ4NmMxNDc1OWIyYjIxYTdjNzFjNzhlOWY0Y2Y0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IGYxMTE3ZmYy
NDcwY2ZjMjdmNDU5MTNhNzQ4MjYyNWUwOWU3M2VlY2YuLjkyZGUxZGM1ZjYwNTZkNjFhOWIzMmYy
NjI5N2RiN2RhZWFmNDM4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
OjpzZXRUaWxlc09wYXF1ZShib29sIG9wYXF1ZSkKICAgICBpZiAobV90aWxlc09wYXF1ZSA9PSBv
cGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKIAogICAgIG1fdGlsZXNP
cGFxdWUgPSBvcGFxdWU7CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+dXBkYXRlVGlsZU9wYWNp
dHkoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZG9MYXlvdXRU
aWxlcygpCiAgICAgaWYgKGlzVGlsZUNyZWF0aW9uU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBMZWdhY3lUaWxlR3JpZCogYWN0aXZlR3JpZCA9IGFj
dGl2ZVRpbGVHcmlkKCk7CiAgICAgLy8gRXZlbiB0aG91Z2ggd2UgYXJlbid0IGFjdHVhbGx5IGNy
ZWF0aW5nIHRpbGVzIGluIHRoZSBpbmFjdGl2ZSBncmlkLCB3ZQogICAgIC8vIHN0aWxsIG5lZWQg
dG8gZHJvcCBpbnZhbGlkIHRpbGVzIGluIHJlc3BvbnNlIHRvIGEgbGF5b3V0LgpAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2Nh
bGUpCiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkgJiYgIWlzVGlsZUludmFsaWRhdGlv
blN1c3BlbmRlZCgpKSB7CiAgICAgICAgIC8vIFRpbGUgaW52YWxpZGF0aW9uIGlzIG5vcm1hbGx5
IHN1c3BlbmRlZCBkdXJpbmcgem9vbWluZyBieSBVSUtpdCBidXQgc29tZSBhcHBsaWNhdGlvbnMK
ICAgICAgICAgLy8gdXNpbmcgY3VzdG9tIHNjcm9sbHZpZXdzIG1heSB6b29tIHdpdGhvdXQgdHJp
Z2dlcmluZyB0aGUgY2FsbGJhY2tzLiBJbnZhbGlkYXRlIHRoZSB0aWxlcyBleHBsaWNpdGx5Lgot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgICAgICBhY3RpdmVUaWxlR3JpZCgpLT5kcm9wQWxs
VGlsZXMoKTsKICAgICAgICAgYWN0aXZlVGlsZUdyaWQoKS0+Y3JlYXRlVGlsZXMoQ292ZXJWaXNp
YmxlT25seSk7CiAgICAgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
Ojpjb21taXRTY2FsZUNoYW5nZSgpCiAgICAgQVNTRVJUKG1fcGVuZGluZ1pvb21lZE91dFNjYWxl
IHx8IG1fcGVuZGluZ1NjYWxlKTsKICAgICBBU1NFUlQobV90aWxpbmdNb2RlICE9IERpc2FibGVk
KTsKICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAKICAgICBpZiAobV9wZW5kaW5nWm9vbWVkT3V0U2Nh
bGUpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0U2NhbGUobV9wZW5kaW5nWm9v
bWVkT3V0U2NhbGUpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjps
YXlvdXRUaWxlc05vdygpCiAgICAgaWYgKG1fdGlsaW5nTW9kZSA9PSBab29taW5nKQogICAgICAg
ICBtX3RpbGluZ01vZGUgPSBNaW5pbWFsOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxl
TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgIExlZ2FjeVRp
bGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsKICAgICBpZiAoYWN0aXZlR3Jp
ZC0+Y2hlY2tEb1NpbmdsZVRpbGVMYXlvdXQoKSkgewogICAgICAgICBtX3RpbGluZ01vZGUgPSBz
YXZlZFRpbGluZ01vZGU7CkBAIC0zMTEsMTQgKzMxMSwxNCBAQCB2b2lkIExlZ2FjeVRpbGVDYWNo
ZTo6bGF5b3V0VGlsZXNOb3coKQogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93
Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xv
Y2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogCiAgICAgYWN0aXZlVGlsZUdyaWQo
KS0+YWRkVGlsZXNDb3ZlcmluZ1JlY3QocmVjdCk7CiB9CiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hl
OjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICByZW1v
dmVBbGxOb25WaXNpYmxlVGlsZXNJbnRlcm5hbCgpOwogfQogCkBAIC0zNDAsNyArMzQwLDcgQEAg
dm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZpc2libGVUaWxlc0ludGVybmFsKCkK
IAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVzKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4
IH07CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+ZHJvcEFsbFRpbGVzKCk7CiAgICAgaWYgKG1f
em9vbWVkSW5UaWxlR3JpZCkKICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkLT5kcm9wQWxsVGls
ZXMoKTsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxs
VGlsZXMoKQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkpCiAgICAg
ICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwogICAgIGlmIChtX3pvb21l
ZEluVGlsZUdyaWQpCkBAIC0zNTcsMTMgKzM1NywxMyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldENvbnRl
bnRSZXBsYWNlbWVudEltYWdlKFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50UmVwbGFjZW1l
bnRJbWFnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NvbnRlbnRSZXBsYWNlbWVudElt
YWdlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdl
TXV0ZXggfTsKICAgICBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlID0gY29udGVudFJlcGxhY2Vt
ZW50SW1hZ2U7CiB9CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBMZWdhY3lUaWxlQ2FjaGU6OmNv
bnRlbnRSZXBsYWNlbWVudEltYWdlKCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nv
bnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXggfTsKICAgICByZXR1cm4gbV9jb250ZW50UmVwbGFj
ZW1lbnRJbWFnZTsKIH0KIApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
Ojp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCkKIHsKICAgICBpZiAoaXNUaWxlQ3JlYXRpb25TdXNw
ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBjcmVhdGVUaWxl
c0luQWN0aXZlR3JpZChDb3ZlclNwZWN1bGF0aXZlKTsKIH0KIApAQCAtNjExLDcgKzYxMSw3IEBA
IHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvclBlbmRpbmdS
ZXBhaW50KCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYXZl
ZERpc3BsYXlSZWN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NhdmVkRGlzcGxheVJl
Y3RNdXRleCB9OwogICAgIGJvb2wgYWRkZWRGaXJzdFJlY3QgPSBtX3NhdmVkRGlzcGxheVJlY3Rz
LmlzRW1wdHkoKTsKICAgICBtX3NhdmVkRGlzcGxheVJlY3RzLmFwcGVuZChkaXJ0eVJlY3QpOwog
ICAgIGlmICghYWRkZWRGaXJzdFJlY3QpCkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OnVwZGF0ZVRpbGluZ01vZGUoKQogICAgICAgICBpZiAobV90aWxpbmdNb2RlID09
IERpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07
CiAgICAgICAgIGNyZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENvdmVyVmlzaWJsZU9ubHkpOwogCiAg
ICAgICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCkpCkBAIC03MDEsNyArNzAx
LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01vZGUoVGlsaW5nTW9kZSB0aWxp
bmdNb2RlKQogICAgIGlmICgobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgfHwgbV9wZW5kaW5nU2Nh
bGUpICYmIG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCkKICAgICAgICAgY29tbWl0U2NhbGVDaGFu
Z2UoKTsKICAgICBlbHNlIGlmICh3YXNab29taW5nKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07
CiAgICAgICAgIGJyaW5nQWN0aXZlVGlsZUdyaWRUb0Zyb250KCk7CiAgICAgfQogCkBAIC03NDQs
NyArNzQ0LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRvUGVuZGluZ1JlcGFpbnRzKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmIChpc1RpbGVJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBmbHVzaFNhdmVkRGlzcGxheVJlY3Rz
KCk7CiB9CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Zmx1c2hT
YXZlZERpc3BsYXlSZWN0cygpCiAKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhdmVkRGlzcGxheVJlY3RNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NhdmVkRGlzcGxheVJlY3RNdXRleCB9OwogICAgICAgICBt
X3NhdmVkRGlzcGxheVJlY3RzLnN3YXAocmVjdHMpOwogICAgIH0KICAgICBzaXplX3Qgc2l6ZSA9
IHJlY3RzLnNpemUoKTsKQEAgLTc3OCw3ICs3NzgsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cHJlcGFyZVRvRHJhdygpCiAgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gdmlld1dpbGxEcmF3
XTsKIAogICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV90aWxlTXV0ZXggfTsKICAgICAgICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5
ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wubW0KaW5kZXggYWM4YzY0OGQ2YjNmMTYzNDYxNDFkZTZhNGRmMTk2OTliNjVlZmRlNy4uMmY0
NTI1NmY0ODAzOTAyYmM4MWQyZTk5YzdjZDg0YTcyOGQzYTIxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjphZGRMYXllcihjb25zdCBSZXRhaW5QdHI8
TGVnYWN5VGlsZUxheWVyPiYgbGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sYXllclBvb2xNdXRleCB9OwogICAgIGxpc3RPZkxheWVyc1dpdGhTaXplKGxheWVyU2l6ZSku
cHJlcGVuZChsYXllcik7CiAgICAgbV90b3RhbEJ5dGVzICs9IGJ5dGVzQmFja2luZ0xheWVyV2l0
aFBpeGVsU2l6ZShsYXllclNpemUpOwogCkBAIC05NCw3ICs5NCw3IEBAIFJldGFpblB0cjxMZWdh
Y3lUaWxlTGF5ZXI+IExlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKGNvbnN0
IEludFNpemUmCiB7CiAgICAgaWYgKCFjYW5SZXVzZUxheWVyV2l0aFNpemUoc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKICAgICBMYXllckxpc3Qm
IHJldXNlTGlzdCA9IGxpc3RPZkxheWVyc1dpdGhTaXplKHNpemUsIE1hcmtBc1VzZWQpOwogICAg
IGlmIChyZXVzZUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTA0LDcg
KzEwNCw3IEBAIFJldGFpblB0cjxMZWdhY3lUaWxlTGF5ZXI+IExlZ2FjeVRpbGVMYXllclBvb2w6
OnRha2VMYXllcldpdGhTaXplKGNvbnN0IEludFNpemUmCiAKIHZvaWQgTGVnYWN5VGlsZUxheWVy
UG9vbDo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7Ci0gICAgTG9ja0hvbGRlciBy
ZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgcmV1c2VMb2NrZXIgeyBt
X2xheWVyUG9vbE11dGV4IH07CiAgICAgaWYgKGNhcGFjaXR5IDwgbV9jYXBhY2l0eSkKICAgICAg
ICAgc2NoZWR1bGVQcnVuZSgpOwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKQEAgLTEzNCw3
ICsxMzQsNyBAQCB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnNjaGVkdWxlUHJ1bmUoKQogCiB2
b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXllclBvb2xNdXRl
eCB9OwogICAgIEFTU0VSVChtX25lZWRzUHJ1bmUpOwogICAgIG1fbmVlZHNQcnVuZSA9IGZhbHNl
OwogICAgIHVuc2lnbmVkIHNocmlua1RvID0gZGVjYXllZENhcGFjaXR5KCk7CkBAIC0xNjEsNyAr
MTYxLDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpwcnVuZSgpCiAKIHZvaWQgTGVnYWN5
VGlsZUxheWVyUG9vbDo6ZHJhaW4oKQogewotICAgIExvY2tIb2xkZXIgcmV1c2VMb2NrZXIobV9s
YXllclBvb2xNdXRleCk7CisgICAgTG9ja2VyIHJldXNlTG9ja2VyIHsgbV9sYXllclBvb2xNdXRl
eCB9OwogICAgIG1fcmV1c2VMaXN0cy5jbGVhcigpOwogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIu
Y2xlYXIoKTsKICAgICBtX3RvdGFsQnl0ZXMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQppbmRleCA2Y2FlMDhiYTNiOTYzZDI1OTcxZGZhM2M0M2Fh
ZGQxMTFjMTU1NWQxLi42ZTVkODMzMzAzMTA4NDNiM2YyZDA5MTRmZjk0NzMyYjU4NGU4ZTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQpAQCAtMzg0
LDE0ICszODQsMTQgQEAgLSAodm9pZClzZW5kTW91c2VNb3ZlRXZlbnQ6KFdlYkV2ZW50ICopZXZl
bnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUMKIAogLSAodm9pZClzZXRFeHBv
c2VkU2Nyb2xsVmlld1JlY3Q6KENHUmVjdClleHBvc2VkU2Nyb2xsVmlld1JlY3QKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcigmX2V4cG9zZWRTY3JvbGxWaWV3UmVjdExvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayB9OwogICAgIF9leHBvc2VkU2Ny
b2xsVmlld1JlY3QgPSBleHBvc2VkU2Nyb2xsVmlld1JlY3Q7CiB9CiAKIC0gKENHUmVjdClleHBv
c2VkU2Nyb2xsVmlld1JlY3QKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZf
ZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBfZXhw
b3NlZFNjcm9sbFZpZXdSZWN0TG9jayB9OwogICAgICAgICBpZiAoIUNHUmVjdElzTnVsbChfZXhw
b3NlZFNjcm9sbFZpZXdSZWN0KSkKICAgICAgICAgICAgIHJldHVybiBfZXhwb3NlZFNjcm9sbFZp
ZXdSZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQppbmRleCAxOWZmZGVlYjUxZDZmODcxZWQ3YTZjZTljNTVjZDk0NGQ2YjI0
MTFmLi4wMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0MTc5YzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC02Njgs
NyArNjY4LDcgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICBwZXJDYWxs
b3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BTZXRQZXJDYWxsb3V0QXV0b3Jl
bGVhc2Vwb29sRW5hYmxlZChZRVMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzdGFydHVwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzdGFydHVwTG9jayB9Owog
ICAgICAgICBzdGFydHVwQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgIH0KIApAQCAtNzIyLDcg
KzcyMiw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIAogICAgIC8vIFdhaXQgZm9y
IHRoZSB3ZWIgdGhyZWFkIHRvIHN0YXJ0dXAgY29tcGxldGVseSBiZWZvcmUgd2UgY29udGludWUu
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihzdGFydHVwTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBzdGFydHVwTG9jayB9OwogCiAgICAgICAgIC8vIFByb3BhZ2F0ZSB0
aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gd29ya2VycyAmIHRoZSB3ZWIgdGhyZWFkLgogICAgICAg
ICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigpLnNhdmVNYWluVGhyZWFkRW52
aXJvbm1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKaW5kZXggNWMyNjJiNDI2ZmM1ZjQzODllYTQ2
ZmI2ZTkxOGE1NzJhYWI3ZTQwNS4uM2I5MDk1ODU4ZjVmZWE0ZjhlZDZkNGQyZmEyMGEyZWI1YjFh
ODAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
YWRhcHRlck11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07
CiAgICAgICAgIGNvbnN0IGF1dG8mIHNhbXBsZSA9IGRhdGEuZ2V0U2FtcGxlKCk7CiAgICAgICAg
IGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpOwogICAg
ICAgICBnc3RfYWRhcHRlcl9wdXNoKG1fYWRhcHRlci5nZXQoKSwgZ3N0X2J1ZmZlcl9yZWYoYnVm
ZmVyKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEoKQogICAgIHNpemVfdCBvdXRDaHVua1NhbXBsZUNv
dW50ID0gTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQ7CiAgICAgc2l6ZV90
IG91dEJ1ZmZlclNpemUgPSBvdXRDaHVua1NhbXBsZUNvdW50ICogbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5icGY7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2FkYXB0ZXJNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CiAgICAgc2l6ZV90IGluQ2h1bmtT
YW1wbGVDb3VudCA9IGdzdF9hdWRpb19jb252ZXJ0ZXJfZ2V0X2luX2ZyYW1lcyhtX3NhbXBsZUNv
bnZlcnRlci5nZXQoKSwgb3V0Q2h1bmtTYW1wbGVDb3VudCk7CiAgICAgc2l6ZV90IGluQnVmZmVy
U2l6ZSA9IGluQ2h1bmtTYW1wbGVDb3VudCAqIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5icGY7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGNjZDZhYzU2MjIzMWZmOGMyOThmZDZjNDUzNDE2
MDk5ZTFkMThkMzYuLmE2ZjJiNzNjMTdkZmNmODYyODRjOGM1ZGU1NjIwNmE5YTUwODc0Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBib29sIG9wZW5O
ZXh0U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiB7CiAgICAgLy8gQ0ZSZWFkU3RyZWFt
T3BlbigpIGNhbiBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJlLWVudGVyZWQgZnJvbSBhbm90
aGVyIHRocmVhZCBiZWZvcmUgaXQgcmV0dXJucy4KICAgICAvLyBPbmUgZXhhbXBsZSB3aGVuIHRo
aXMgY2FuIG9jY3VyIGlzIHdoZW4gdGhlIHN0cmVhbSBiZWluZyBvcGVuZWQgaGFzIG5vIGRhdGEu
IFNlZSA8cmRhcjovL3Byb2JsZW0vMjM1NTAyNjk+LgotICAgIExvY2tIb2xkZXIgbG9ja2VyKGZv
cm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrIH07CiAKICAgICAvLyBTa2lw
IG92ZXIgYW55IHN0cmVhbXMgd2UgY2FuJ3Qgb3Blbi4KICAgICBpZiAoIWFkdmFuY2VDdXJyZW50
U3RyZWFtKGZvcm0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2b2lkIGZvcm1GaW5hbGl6
ZShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0KQogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbZm9ybV0gewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrKTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrIH07CiAg
ICAgICAgICAgICBjbG9zZUN1cnJlbnRTdHJlYW0oZm9ybSk7CiAgICAgICAgIH0KICAgICAgICAg
ZGVsZXRlIGZvcm07CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIEJvb2xlYW4gZm9ybUNhblJl
YWQoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKIHN0YXRpYyB2b2lkIGZv
cm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihjb250ZXh0KTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZm9ybS0+c3RyZWFtSXNCZWluZ09wZW5lZE9yQ2xv
c2VkTG9jayB9OwogCiAgICAgY2xvc2VDdXJyZW50U3RyZWFtKGZvcm0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5k
ZXggZDlhMzE5NGFhZGI2Y2Y3OWUxMDgzODgxNzI4MmI3YWMyNGJmZDFlYS4uMTc3MjYwY2Y0MTJm
MmRiNzlhOWQwZDVhZDhjMTk2ZmRhYjcxMmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC02NDMsNyArNjQzLDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRSZWNlaXZlUmVzcG9uc2UoKQogdm9pZCBD
dXJsUmVxdWVzdDo6c2V0UmVxdWVzdFBhdXNlZChib29sIHBhdXNlZCkKIHsKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX3BhdXNlU3RhdGVNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OwogCiAgICAgICAgIGF1dG8gc2F2ZWRTdGF0ZSA9
IHNob3VsZEJlUGF1c2VkKCk7CiAgICAgICAgIG1fc2hvdWxkU3VzcGVuZCA9IG1faXNQYXVzZWRP
ZlJlcXVlc3QgPSBwYXVzZWQ7CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
c2V0UmVxdWVzdFBhdXNlZChib29sIHBhdXNlZCkKIHZvaWQgQ3VybFJlcXVlc3Q6OnNldENhbGxi
YWNrUGF1c2VkKGJvb2wgcGF1c2VkKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGF1c2VTdGF0
ZU11dGV4IH07CiAKICAgICAgICAgYXV0byBzYXZlZFN0YXRlID0gc2hvdWxkQmVQYXVzZWQoKTsK
ICAgICAgICAgbV9pc1BhdXNlZE9mQ2FsbGJhY2sgPSBwYXVzZWQ7CkBAIC02OTIsNyArNjkyLDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdlZCgpCiAKICAgICAgICAgYm9v
bCBuZWVkQ2FuY2VsIHsgZmFsc2UgfTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3BhdXNlU3RhdGVNdXRleCB9OwogICAgICAgICAgICAgYm9vbCBwYXVzZWQgPSBzaG91bGRCZVBh
dXNlZCgpOwogCiAgICAgICAgICAgICBpZiAoaXNIYW5kbGVQYXVzZWQoKSA9PSBwYXVzZWQpCkBA
IC03NDIsMjAgKzc0MiwyMCBAQCBOZXR3b3JrTG9hZE1ldHJpY3MgQ3VybFJlcXVlc3Q6Om5ldHdv
cmtMb2FkTWV0cmljcygpCiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmVuYWJsZURvd25sb2FkVG9GaWxl
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKICAgICBtX2lzRW5hYmxlZERvd25sb2FkVG9G
aWxlID0gdHJ1ZTsKIH0KIAogY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRl
ZEZpbGVQYXRoKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKICAgICByZXR1cm4gbV9kb3du
bG9hZEZpbGVQYXRoOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgICAgICBpZiAoIW1faXNFbmFibGVkRG93
bmxvYWRUb0ZpbGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NzAsNyArNzcwLDcgQEAgdm9p
ZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxl
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICBy
ZXR1cm47CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9h
ZEZpbGUoKQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgIGlmICghbV9kb3dubG9hZEZpbGVQYXRoLmlzRW1w
dHkoKSkgewogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZG93bmxvYWRGaWxlUGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTEhhbmRsZS5jcHAKaW5kZXggMmNmOWM4NzcxZGRkOGY1MmIyZTAwMjljNGY5M2E3ZGExMWUz
ZmQwNS4uYWU4NmQyYjEyZGIyZWRlNTQ1MmQ4YjJiYTVhYjIyN2NiZmQ5MDUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxl
LmNwcApAQCAtNjMsMjggKzYzLDI4IEBAIHZvaWQgQ3VybFNTTEhhbmRsZTo6Y2xlYXJDQUNlcnRJ
bmZvKCkKIAogdm9pZCBDdXJsU1NMSGFuZGxlOjphbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVzRm9y
SG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgTG9ja0hvbGRlciBtdXRleChtX2FsbG93
ZWRIb3N0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2FsbG93ZWRIb3N0c0xvY2sgfTsK
IAogICAgIG1fYWxsb3dlZEhvc3RzLmFkZFZvaWQoaG9zdCk7CiB9CiAKIGJvb2wgQ3VybFNTTEhh
bmRsZTo6Y2FuSWdub3JlQW55SFRUUFNDZXJ0aWZpY2F0ZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIG11dGV4KG1fYWxsb3dlZEhvc3RzTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWxsb3dlZEhvc3RzTG9jayB9OwogCiAgICAgcmV0dXJu
IG1fYWxsb3dlZEhvc3RzLmNvbnRhaW5zKGhvc3QpOwogfQogCiB2b2lkIEN1cmxTU0xIYW5kbGU6
OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBjb25zdCBT
dHJpbmcmIGNlcnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBMb2NrSG9sZGVy
IG11dGV4KG1fYWxsb3dlZENsaWVudEhvc3RzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
YWxsb3dlZENsaWVudEhvc3RzTG9jayB9OwogCiAgICAgbV9hbGxvd2VkQ2xpZW50SG9zdHMuc2V0
KGhvc3ROYW1lLCBDbGllbnRDZXJ0aWZpY2F0ZSB7IGNlcnRpZmljYXRlLCBrZXkgfSk7CiB9CiAK
IE9wdGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVudENlcnRpZmljYXRlPiBDdXJsU1NMSGFuZGxl
OjpnZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKSBjb25zdAog
ewotICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2VkQ2xpZW50SG9zdHNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9hbGxvd2VkQ2xpZW50SG9zdHNMb2NrIH07CiAKICAgICBhdXRvIGl0
ID0gbV9hbGxvd2VkQ2xpZW50SG9zdHMuZmluZChob3N0TmFtZSk7CiAgICAgaWYgKGl0ID09IG1f
YWxsb3dlZENsaWVudEhvc3RzLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZWE0NTMxMTBhMTgzOTczN2Q5NzVmYjM1ZTFlODIw
OWM4ZWEyMDI5Zi4uMTU3N2FhNjFiMmY1NjliMmQxNjcyY2IyNzE3M2MyYTg2ZGU0ZTAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0y
MjksNyArMjI5LDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xvc2UoKQogICAgICAgICAvLyBB
U1NFUlQobV9vcGVuaW5nVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgICAgIHNx
bGl0ZTMqIGRiID0gbV9kYjsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9OwogICAgICAgICAgICAgbV9kYiA9IDA7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fdXNlV0FMKSB7CkBAIC0yNzMsNyArMjczLDcgQEAgaW50NjRfdCBT
UUxpdGVEYXRhYmFzZTo6bWF4aW11bVNpemUoKQogICAgIGludDY0X3QgbWF4UGFnZUNvdW50ID0g
MDsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgICAgIGVu
YWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVT
dGF0ZW1lbnQoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCJfcyk7CiAgICAgICAgIG1heFBhZ2VDb3Vu
dCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCkgOiAwOwpAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDY0X3Qgc2l6
ZSkKICAgICBBU1NFUlQoY3VycmVudFBhZ2VTaXplIHx8ICFtX2RiKTsKICAgICBpbnQ2NF90IG5l
d01heFBhZ2VDb3VudCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUgLyBjdXJyZW50UGFnZVNpemUg
OiAwOwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgZW5hYmxlQXV0aG9yaXpl
cihmYWxzZSk7CiAKICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KG1h
a2VTdHJpbmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBhZ2VDb3VudCkpOwpA
QCAtMzA5LDcgKzMwOSw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6cGFnZVNpemUoKQogICAgIC8v
IFNpbmNlIHRoZSBwYWdlIHNpemUgb2YgYSBkYXRhYmFzZSBpcyBsb2NrZWQgaW4gYXQgY3JlYXRp
b24gYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgZHluYW1pYywgCiAgICAgLy8gd2UgY2FuIGNhY2hl
IHRoZSB2YWx1ZSBmb3IgZnV0dXJlIHVzZQogICAgIGlmIChtX3BhZ2VTaXplID09IC0xKSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9OwogICAgICAgICBlbmFibGVBdXRob3JpemVy
KGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudCgiUFJBR01BIHBhZ2Vfc2l6ZSJfcyk7CkBAIC0zMjYsNyArMzI2LDcgQEAgaW50NjRfdCBT
UUxpdGVEYXRhYmFzZTo6ZnJlZVNwYWNlU2l6ZSgpCiAgICAgaW50NjRfdCBmcmVlbGlzdENvdW50
ID0gMDsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgICAg
IGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICAvLyBOb3RlOiBmcmVlbGlzdF9jb3Vu
dCB3YXMgYWRkZWQgaW4gU1FMaXRlIDMuNC4xLgogICAgICAgICBhdXRvIHN0YXRlbWVudCA9IHBy
ZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBmcmVlbGlzdF9jb3VudCJfcyk7CkBAIC0zNDIsNyArMzQy
LDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKICAgICBpbnQ2NF90IHBh
Z2VDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9y
aXplckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9Owog
ICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgYXV0byBzdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgcGFnZV9jb3VudCJfcyk7CiAgICAgICAgIHBhZ2VD
b3VudCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCkgOiAwOwpAQCAtNDIz
LDcgKzQyMyw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6cnVuVmFjdXVtQ29tbWFuZCgpCiAKIGlu
dCBTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9hdXRob3JpemVyTG9jayB9OwogICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogCiAgICAg
aWYgKCFleGVjdXRlQ29tbWFuZCgiUFJBR01BIGluY3JlbWVudGFsX3ZhY3V1bSJfcykpCkBAIC00
MzUsNyArNDM1LDcgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNv
bW1hbmQoKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQoKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFiYXNlQ2xvc2luZ011dGV4IH07CiAgICAgaWYgKG1fZGIpCiAgICAgICAgIHNxbGl0
ZTNfaW50ZXJydXB0KG1fZGIpOwogfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU1FMaXRlRGF0
YWJhc2U6OnNldEF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVyJiBhdXRob3JpemVyKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVy
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sgfTsKIAogICAgIG1f
YXV0aG9yaXplciA9ICZhdXRob3JpemVyOwogICAgIApAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OnJlbGVhc2VNZW1vcnkoKQogCiBzdGF0aWMgRXhwZWN0ZWQ8c3FsaXRl
M19zdG10KiwgaW50PiBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNl
JiBkYXRhYmFzZSwgY29uc3QgY2hhciogcXVlcnksIHNpemVfdCBxdWVyeUxlbmd0aCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGRhdGFiYXNlTG9jayhkYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkpOworICAg
IExvY2tlciBkYXRhYmFzZUxvY2sgeyBkYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKICAgICBM
T0coU1FMRGF0YWJhc2UsICJTUUwgLSBwcmVwYXJlIC0gJXMiLCBxdWVyeSk7CiAKICAgICAvLyBQ
YXNzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVy
IHRvIHNxbGl0ZTNfcHJlcGFyZV92MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYTkyZDNhYzVlNTg2NTZmMGIzMzYxMTU0ODI3YWI4
NzJhNTdkZWUzYS4uNmQ4ZGM3MmVkY2JkNDI4ODdlNjc3NWExNjAyODU0N2E5N2M2MzFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgU1FMaXRlU3RhdGVtZW50Ojp+U1FMaXRlU3RhdGVtZW50KCkKIAogaW50
IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7Ci0gICAgTG9ja0hvbGRlciBkYXRhYmFzZUxvY2so
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkpOworICAgIExvY2tlciBkYXRhYmFzZUxvY2sgeyBt
X2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCiAgICAgaW50IGVycm9yID0gc3FsaXRlM19z
dGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3Ig
IT0gU1FMSVRFX1JPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmluZGV4IDAyOGNiNTM3OGFlMjQ2NzFjZDYyYTYx
NGVmOTcwM2NjNjYxNDJiNDQuLjkxYjg4OTQxYTc2YTgwNzFkMzBkN2ZlZDc0MTYzZmIwOWY3Yjg3
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCU2VydmVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBXZWJJREJTZXJ2ZXI6OldlYklE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
LCBXZQogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHNlc3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzcGFjZVJl
cXVlc3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2
ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSwgbV9zZXJ2
ZXJMb2NrKTsKICAgICB9KTsKIH0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmdldE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3IKICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVy
LmNvdW50KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9z
c1RocmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gV1RGTW92
ZSh0b2tlbiksIG9yaWdpbnMgPSBjcm9zc1RocmVhZENvcHkobV9zZXJ2ZXItPmdldE9yaWdpbnMo
KSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG9yaWdpbnMpKTsK
ICAgICAgICAgfSkpOwpAQCAtODEsNyArODEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2VB
bmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbQog
ICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlm
aWNhdGlvblRpbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRh
VGFza0NvdW50ZXIuY291bnQoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZl
ci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWNhdGlvblRpbWUp
OwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBXVEZNb3ZlKHRva2VuKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpj
bG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
b3JpZ2luRGF0YXMgPSBvcmlnaW5EYXRhcy5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3VudCgpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKG9yaWdpbkRhdGFzKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1RocmVh
ZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gV1RGTW92ZSh0b2tl
bildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2xkT3JpZ2luID0gb2xkT3JpZ2luLmlzb2xhdGVkQ29w
eSgpLCBuZXdPcmlnaW4gPSBuZXdPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRhVGFza0NvdW50ZXIuY291bnQoKV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9yaWdpbihvbGRPcmlnaW4s
IG5ld09yaWdpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwogfQog
CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5k
ZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKIH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkaWRG
aW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNv
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0K
IApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZl
ci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSW5mbyk7CiB9CiAK
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXIt
PmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogfQogCkBA
IC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5y
ZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdO
YW1lKTsKIH0KIApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbGVhck9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
IG1fc2VydmVyLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwogfQogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0
ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKIH0KIApA
QCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+
ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1l
KTsKIH0KIApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBt
X3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtl
eURhdGEsIHZhbHVlLCBvdmVyV3JpdGVNb2RlKTsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBXCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRh
LCBnZXRSZWNvcmREYXRhKTsKIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxs
UmVjb3Jkc0RhdGEpOwogfQogCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgV2UKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwogICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsK
IH0KIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVSZWNvcmQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3Nl
cnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogfQogCkBAIC0y
ODMsNyArMjgzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPm9wZW5D
dXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOwogfQogCkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVl
c3REYXRhLCBpdGVyYXRlQ3Vyc29yRGF0YSk7CiB9CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgYwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRyYW5zYWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSW5mbyk7CiB9CiAKQEAgLTMw
Nyw3ICszMDcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
IH0KIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3Nl
cnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpOwogfQogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
IG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMzMSw3ICszMzEsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIs
IGNvbm5lY3Rpb25DbG9zZWQpOwogfQogCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3RE
YXRhKTsKIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjCiAg
ICAgYXV0byogd2ViSURCQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoY29ubmVjdGlv
bi51bmlxdWVJRCgpKTsKICAgICBBU1NFUlQod2ViSURCQ29ubmVjdGlvbik7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHdl
YklEQkNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7
CiB9CiAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6YWRkQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nlc3NJZAogCiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7CiAKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKGl0ZXIt
PnZhbHVlLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CiAgICAgfSk7CiAgICAgbV9jb25uZWN0aW9u
cy5hZGQoJmNvbm5lY3Rpb24pOwpAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjpyZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogICAgICAg
ICBBU1NFUlQoY29ubmVjdGlvbik7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAg
ICBtX3NlcnZlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbi0+Y29ubmVjdGlvblRv
Q2xpZW50KCkpOwogICAgIH0pOwogCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXI6OmNsb3NlKCkKICAgICBwb3N0VGFzayhbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgbV9j
b25uZWN0aW9uTWFwLmNsZWFyKCk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAg
ICBtX3NlcnZlciA9IG51bGxwdHI7CiAgICAgICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6Omtp
bGwoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA5YTFhMjA4NjQwZmVkODExM2Rh
MzdiNjQ0ZDBiNzRiOWZiZmZiMzMwLi4yYWNlNTFjNjEwOGUyMzVmODA2MWRjMmU4ODk5YmQ1NmJk
NzgyMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBFbmdp
bmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjwKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAg
ICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgc2l6ZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgICAgICBhdXRvIGZp
bGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlKTsKIAogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlSGFuZGxlKSkgewpAQCAtNTU0LDcgKzU1NCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBFbmdp
bmU6OnJlYWRTaXplRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTaXplRmlsZUxvY2sgfTsKICAgICBhdXRv
IGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGF1dG8gY2xvc2VGaWxlSGFuZGxlID0gbWFrZVNjb3BlRXhp
dChbJl0gewogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CkBAIC02
OTgsNyArNjk4LDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IG1fcm9vdFBh
dGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNp
emVGaWxlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTaXplRmlsZUxvY2sg
fTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkocGF0aCkpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRoKSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KQpAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURp
cmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsCiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Bh
dGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihn
bG9iYWxTaXplRmlsZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6ZUZp
bGVMb2NrIH07CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHBh
dGgpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2ds
aWIvRE5TQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0Nh
Y2hlLmNwcAppbmRleCBkOGVhMzM2ODVlYTJiOGViNmNjZWI0M2FkMzhlMDYwYzQzYTg5NTk0Li4y
NGRhMzg4NzljYjA0MjZlMTlmNGZiYzcxZGE5MmU4MzE0ZmZjYjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
RE5TQ2FjaGU6OkROU0NhY2hlTWFwJiBETlNDYWNoZTo6bWFwRm9yVHlwZShUeXBlIHR5cGUpCiAK
IE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+PiBETlNDYWNoZTo6bG9va3Vw
KGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5cGUgdHlwZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvJiBtYXAg
PSBtYXBGb3JUeXBlKHR5cGUpOwogICAgIGF1dG8gaXQgPSBtYXAuZmluZChob3N0KTsKICAgICBp
ZiAoaXQgPT0gbWFwLmVuZCgpKQpAQCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxWZWN0b3I8R1Jl
ZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBob3N0
LCBUeQogCiB2b2lkIEROU0NhY2hlOjp1cGRhdGUoY29uc3QgQ1N0cmluZyYgaG9zdCwgVmVjdG9y
PEdSZWZQdHI8R0luZXRBZGRyZXNzPj4mJiBhZGRyZXNzTGlzdCwgVHlwZSB0eXBlKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIGF1dG8mIG1hcCA9IG1hcEZvclR5cGUodHlwZSk7CiAgICAgQ2FjaGVkUmVzcG9uc2Ug
cmVzcG9uc2UgPSB7IFdURk1vdmUoYWRkcmVzc0xpc3QpLCBNb25vdG9uaWNUaW1lOjpub3coKSAr
IGV4cGlyZUludGVydmFsIH07CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuc2V0KGhvc3QsIFdU
Rk1vdmUocmVzcG9uc2UpKTsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEROU0NhY2hlOjpwcnVu
ZVJlc3BvbnNlc0luTWFwKEROU0NhY2hlTWFwJiBtYXApCiAKIHZvaWQgRE5TQ2FjaGU6OnJlbW92
ZUV4cGlyZWRSZXNwb25zZXNGaXJlZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmVtb3ZlRXhwaXJlZFJlc3Bv
bnNlc0luTWFwKG1fZG5zTWFwKTsKICNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwgNTksIDApCiAg
ICAgcmVtb3ZlRXhwaXJlZFJlc3BvbnNlc0luTWFwKG1faXB2NE1hcCk7CkBAIC0xMjksNyArMTI5
LDcgQEAgdm9pZCBETlNDYWNoZTo6cmVtb3ZlRXhwaXJlZFJlc3BvbnNlc0ZpcmVkKCkKIAogdm9p
ZCBETlNDYWNoZTo6Y2xlYXIoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1fZG5zTWFwLmNsZWFyKCk7CiAjaWYg
R0xJQl9DSEVDS19WRVJTSU9OKDIsIDU5LCAwKQogICAgIG1faXB2NE1hcC5jbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9v
cC5jcHAKaW5kZXggYjJhNGZkZDZmZmM2ZmVlMzEzNTI2YmZhZjRmOWIyZGY1OTFmOWZmMi4uNTc5
MTM3OTJmZTQ4ZWQ4YWVlNDUyNzQzOTczZmM2N2U2NWRhODY5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29t
cG9zaXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC05
NiwxNCArOTYsMTQgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c3VzcGVuZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tlcihtX3N0YXRlLmxvY2spOwor
ICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgIG1fc3RhdGUuaXNT
dXNwZW5kZWQgPSB0cnVlOwogICAgIG1fdXBkYXRlVGltZXIuc3RvcCgpOwogfQogCiB2b2lkIENv
bXBvc2l0aW5nUnVuTG9vcDo6cmVzdW1lKCkKIHsKLSAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2Vy
KG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07
CiAgICAgbV9zdGF0ZS5pc1N1c3BlbmRlZCA9IGZhbHNlOwogICAgIGlmIChtX3N0YXRlLnVwZGF0
ZSA9PSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkKQogICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpyZXN1bWUoKQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoKQog
ewotICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICBMb2NrZXIg
c3RhdGVMb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICBzY2hlZHVsZVVwZGF0ZShzdGF0ZUxv
Y2tlcik7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c3RvcFVwZGF0ZXMoKQogewogICAgIC8vIFN0b3AgZXZlcnl0aGluZy4KIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9j
ayB9OwogICAgIG1fdXBkYXRlVGltZXIuc3RvcCgpOwogICAgIG1fc3RhdGUudXBkYXRlID0gVXBk
YXRlU3RhdGU6OklkbGU7CiAgICAgbV9zdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CkBAIC0x
ODAsNyArMTgwLDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQo
KQogewogICAgIHsKICAgICAgICAgLy8gU2NlbmUgdXBkYXRlIGlzIG5vdyBpbiBwcm9ncmVzcy4K
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgICAgICBpZiAobV9zdGF0ZS5pc1N1c3BlbmRl
ZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVT
dGF0ZTo6SW5Qcm9ncmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDM2NjU5ZTQ2N2ZlYzNlM2U5N2I4MTI3
YWVlOWJjOTBhMjMyMzQ0MWUuLmM4YjliOGNjOTExNjA3NTY0OGI2ODY1ODQwNDI5ZGM5Y2YxOWQ4
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcApAQCAtNjAsNyArNjAsNyBAQCBUaHJlYWRlZENvbXBvc2l0b3I6OlRo
cmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bgogewogICAgIHsKICAgICAgICAgLy8gTG9ja2luZyBpc24ndCByZWFsbHkgbmVjZXNzYXJ5IGhl
cmUsIGJ1dCBpdCdzIGRvbmUgZm9yIGNvbnNpc3RlbmN5LgotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJp
YnV0ZXMubG9jayB9OwogICAgICAgICBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplID0gdmlld3Bv
cnRTaXplOwogICAgICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsK
ICAgICAgICAgbV9hdHRyaWJ1dGVzLm5lZWRzUmVzaXplID0gIXZpZXdwb3J0U2l6ZS5pc0VtcHR5
KCk7CkBAIC0xMzgsMTQgKzEzOCwxNCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVzdW1l
KCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFNjYWxlRmFjdG9yKGZsb2F0IHNjYWxl
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVG
YWN0b3IgPSBzY2FsZTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUo
KTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJp
YnV0ZXMubG9jayB9OwogICAgIG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBv
c2l0aW9uOwogICAgIG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvciA9IHNjYWxlOwogICAgIG1fY29t
cG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZv
aWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYg
c2Nyb2xsUG9zaXRpb24sIGZsb2F0CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRWaWV3
cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CiAgICAgbV9hdHRyaWJ1dGVzLnZpZXdwb3J0U2l6ZSA9
IHZpZXdwb3J0U2l6ZTsKICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3IgPSBzY2FsZTsKICAg
ICBtX2F0dHJpYnV0ZXMubmVlZHNSZXNpemUgPSB0cnVlOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZv
aWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIFZlY3RvcjxXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsKIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICAgICAgdmlld3BvcnRTaXplID0gbV9hdHRy
aWJ1dGVzLnZpZXdwb3J0U2l6ZTsKICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBtX2F0dHJpYnV0
ZXMuc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIHNjYWxlRmFjdG9yID0gbV9hdHRyaWJ1dGVzLnNj
YWxlRmFjdG9yOwpAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnNjZW5lVXBkYXRlRmluaXNoZWQoKQogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVm
cmVzaENhbGxiYWNrIHsgZmFsc2UgfTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1
dGVzLmxvY2sgfTsKICAgICAgICAgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNr
ID0gbV9hdHRyaWJ1dGVzLmNsaWVudFJlbmRlcnNOZXh0RnJhbWUKICAgICAgICAgICAgIHx8IG1f
ZGlzcGxheVJlZnJlc2hNb25pdG9yLT5yZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsK
ICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zdGF0ZUxvY2soKSk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9jb21wb3NpdGluZ1J1
bkxvb3AtPnN0YXRlTG9jaygpIH07CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgRGlzcGxheVJlZnJl
c2hNb25pdG9yIGNhbGxiYWNrLCBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKHNob3VsZERpc3BhdGNo
RGlzcGxheVJlZnJlc2hDYWxsYmFjaykKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFRocmVhZGVk
Q29tcG9zaXRvcjo6c2NlbmVVcGRhdGVGaW5pc2hlZCgpCiAKIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OwogICAgIG1fYXR0cmlidXRlcy5zdGF0
ZXMuYXBwZW5kKHN0YXRlKTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRh
dGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCmluZGV4IGE4YTc4OWZjMTJjNDE4NmEwOWYwMmM5MmQ0M2VlZDE0NTFlMDQxMDAu
LjY5OTA2MDc4NTMxNjZmMmZhOWNiZGM4MjM4MjQ5NTM1Mjk2MjE0ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMTg4LDcg
KzE4OCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXAo
KQogICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICB3aGlsZSAocmVzdWx0ID09
IFNRTElURV9ST1cpIHsKICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChxdWVyeS0+
Y29sdW1uVGV4dCgwKSwgcXVlcnktPmNvbHVtblRleHQoMSkpOwogICAgICAgICByZXN1bHQgPSBx
dWVyeS0+c3RlcCgpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjbGVh
ckxvYWRlZEljb25zVGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgIGF1dG8gbm93ID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gaWNvbnNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8gaXRlciA6IG1fbG9hZGVkSWNvbnMpIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29ucwogICAgICAgICAgICAgYm9vbCBleHBpcmVkID0gZmFsc2U7CiAg
ICAgICAgICAgICBTdHJpbmcgY2FjaGVkSWNvblVSTDsKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7
CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExv
Y2sgfTsKICAgICAgICAgICAgICAgICBjYWNoZWRJY29uVVJMID0gbV9wYWdlVVJMVG9JY29uVVJM
TWFwLmdldChwYWdlVVJMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjYWNoZWRJ
Y29uVVJMID09IGljb25VUkwpCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkws
IGNvbnMKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbldyaXRlVG9EYXRhYmFzZSB8
fCBzZXRJY29uSURGb3JQYWdlVVJMKGljb25JRC52YWx1ZSgpLCBwYWdlVVJMKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVS
TE1hcExvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFn
ZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVS
TFRvSWNvblVSTE1hcC5zZXQocGFnZVVSTCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNTE0LDEzICs1
MTQsMTMgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5l
ZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IWNhbldyaXRlVG9EYXRhYmFzZSkgewogICAgICAgICAgICAgICAgIGJvb2wgZm91bmRJbk1lbW9y
eUNhY2hlOwogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIGZv
dW5kSW5NZW1vcnlDYWNoZSA9IG1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCk7CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGZvdW5kSW5NZW1vcnlDYWNoZSkg
ewogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2Nr
IH07CiAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5zZXQocGFnZVVS
TCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTU0MiwxNCArNTQyLDE0IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2Fk
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGljb25EYXRhOwogICAgICAgICBTdHJpbmcgaWNvblVS
TDsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgIGljb25VUkwgPSBtX3BhZ2VVUkxUb0lj
b25VUkxNYXAuZ2V0KHBhZ2VVUkwpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2RiLmlzT3Bl
bigpICYmICFpY29uVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBleHBpcmVkOwog
ICAgICAgICAgICAgaWNvbklEID0gaWNvbklERm9ySWNvblVSTChpY29uVVJMLCBleHBpcmVkKTsK
ICAgICAgICAgICAgIGlmIChpY29uSUQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRJ
Y29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0YSA9
IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9s
b2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwg
TW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFs
bG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgICAg
ICAgICAgYXV0byBpdCA9IG1fbG9hZGVkSWNvbnMuZmluZChpY29uVVJMKTsKICAgICAgICAgICAg
IGlmIChpdCAhPSBtX2xvYWRlZEljb25zLmVuZCgpICYmIGl0LT52YWx1ZS5maXJzdCkgewogICAg
ICAgICAgICAgICAgIGF1dG8gaWNvbiA9IGl0LT52YWx1ZS5maXJzdDsKQEAgLTYwNiw3ICs2MDYs
NyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjppY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IHBhZ2VVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICByZXR1cm4gbV9wYWdlVVJM
VG9JY29uVVJMTWFwLmdldChwYWdlVVJMKTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgaWYgKG1fYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93
RGF0YWJhc2VXcml0ZTo6Tm8gfHwgYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VX
cml0ZTo6Tm8pIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CiAgICAgICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWly
PFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAg
ICAgICAgaWYgKGljb25EYXRhU2l6ZSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gbmF0aXZlSW1hZ2U7CkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQg
Y2hhcioKICAgICAgICAgc3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKICAgICAgICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlc3VsdCwgaWNvblVSTCA9IGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VVUkwgPSBwYWdl
VVJMLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICAgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAg
ICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5zZXQocGFnZVVSTCwgaWNvblVSTCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Jl
c3VsdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAg
ICAgICAgICAgaWYgKGljb25JRCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgaWYgKHNldEljb25JREZvclBhZ2VVUkwoaWNvbklELnZhbHVlKCksIHBh
Z2VVUkwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3Bh
Z2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgbV9w
YWdlVVJMVG9JY29uVVJMTWFwLnNldChwYWdlVVJMLCBpY29uVVJMKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CkBAIC02NzgsMTIgKzY3OCwxMiBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2FkZWRJY29uc0xvY2sgfTsKICAgICAgICAgbV9sb2FkZWRJY29ucy5jbGVhcigpOwogICAg
IH0KICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9s
ZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgIG1fcGFnZVVSTFRv
SWNvblVSTE1hcC5jbGVhcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggYjIzN2E2Y2M2OWNmZWIz
NjUzYzhiYTY1ZGU5ZWNiNDdkYzQxZmY4YS4uYWIwZTkwOTg4YjQ5ZDAzOTUyYjFlN2U1ODIyNjdj
YTExYTZlOTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgSW5Qcm9jZXNzSURCU2VydmVyOjpJ
blByb2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGQKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkYXRhYmFzZURpcmVjdG9yeVBhdGguaXNvbGF0ZWRD
b3B5KCksIHNwYWNlUmVxdWVzdGVyID0gc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVy
KCp0aGlzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvQ2xpZW50ID0gSURC
U2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7CiAKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8SURCU2VydmVy
OjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVy
KSwgbV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbigq
bV9jb25uZWN0aW9uVG9DbGllbnQpOwogICAgIH0pOwpAQCAtMTIzLDcgKzEyMyw3IEBAIElEQlNl
cnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbm5lY3Rp
b25Ub0NsaWVudCgpIGNvbnN0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJh
c2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIGRp
c3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAg
ICB9KTsKIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
RGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5E
YXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9u
KGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVy
KQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5
KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+YWJvcnRU
cmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMjczLDcgKzI3
Myw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpj
b21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
c291cmNlSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyID0gcmVzb3VyY2VJZGVudGlm
aWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAg
bV9zZXJ2ZXItPmNvbW1pdFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7
CiB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRy
YW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNw
YXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAg
ICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgfSk7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGEKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZv
KQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8u
aXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3Nl
cnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CkBA
IC0yOTcsNyArMjk3LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXN1bHQKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewogICAgIGRp
c3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZU5hbWUgPSBvYmpl
Y3RTdG9yZU5hbWUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICB9KTsKIH0K
QEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlcwogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmll
cl0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jbGVhck9i
amVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIH0pOwog
fQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0CiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7CiAgICAgZGlzcGF0Y2hU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0g
cmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZUluZGV4
KHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KQEAgLTMyOSw3ICszMjksNyBAQCB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBkaXNw
YXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERh
dGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleE5hbWUgPSBpbmRleE5hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVy
TG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJl
bmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRl
ZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUg
PSBuZXdOYW1lLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAg
ICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgfSk7CiB9CkBAIC0zNDUsNyAr
MzQ1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKICAgICBk
aXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5RGF0YSA9IGtleURhdGEuaXNv
bGF0ZWRDb3B5KCksIHZhbHVlID0gdmFsdWUuaXNvbGF0ZWRDb3B5KCksIG92ZXJ3cml0ZU1vZGVd
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+cHV0T3JBZGQo
cmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKICAgICB9KTsKIH0K
QEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjbwogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGdldFJlY29yZERhdGEgPSBnZXRS
ZWNvcmREYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAg
ICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiAg
ICAgfSk7CiB9CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Omdl
dFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFs
bFJlY29yZHNEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmdldEFsbFJlY29y
ZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKICAgICB9KTsKIH0KQEAgLTM2OSw3
ICszNjksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVx
dWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGtleVJhbmdlRGF0YSA9IGtleVJhbmdlRGF0YS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVy
LT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KQEAgLTM3
Nyw3ICszNzcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjbwogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewogICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURh
dGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBt
X3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogICAgIH0p
OwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVS
ZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
ID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgp
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZl
ci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CkBAIC0zOTMsNyAr
MzkzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1
ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGRhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+aXRlcmF0ZUN1cnNvcihy
ZXF1ZXN0RGF0YSwgZGF0YSk7CiAgICAgfSk7CiB9CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIGluZm8pCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGlu
Zm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAg
ICAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGluZm8pOwogICAgIH0pOwogfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0
aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7
CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtNDQ1LDcgKzQ0NSw3IEBA
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2Uo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVu
QW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
ID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Nl
cnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAg
ICB9KTsKIH0KQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9u
Q2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQogewogICAgIGRpc3BhdGNo
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciA9IHJlcXVlc3RJZGVudGlmaWVyLmlz
b2xhdGVkQ29weSgpLCBjb25uZWN0aW9uQ2xvc2VkXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sg
fTsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQp
OwogICAgIH0pOwogfQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVx
dWVzdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7CiAgICAg
fSk7CiB9CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5E
QlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHIKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2luLmlzb2xh
dGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXIt
PmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhpZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRp
Zmllciwgb3JpZ2luKTsKICAgICB9KTsKIH0KQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdl
YkNvcmU6OklEQlJlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lKQogewogICAgIGRp
c3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmlj
YXRpb25UaW1lXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXIt
PmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmljYXRpb25UaW1lKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHAKaW5kZXggOTFiNGY3YWMzNDYzMzEzZTEwZWE3ZjMyMmFlODg3YThlODQ0ZTRlYi4u
ZjZhNmU5NzU3YjRhZmNhYjg5ODRhYmExZjUyODBiNzk4YjlhYTQ3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luY1RpbWVyRmlyZWQoKQogCiAgICAgYm9vbCBw
YXJ0aWFsU3luYyA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
eW5jTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N5bmNMb2NrIH07CiAKICAgICAg
ICAgLy8gRG8gbm90IHNjaGVkdWxlIGFub3RoZXIgc3luYyBpZiB3ZSdyZSBzdGlsbCB0cnlpbmcg
dG8gY29tcGxldGUgdGhlCiAgICAgICAgIC8vIHByZXZpb3VzIG9uZS4gQnV0LCBpZiB3ZSdyZSBz
aHV0dGluZyBkb3duLCBzY2hlZHVsZSBpdCBhbnl3YXkuCkBAIC00NjksNyArNDY5LDcgQEAgdm9p
ZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKCkKICAgICBib29sIGNsZWFySXRlbXM7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7CiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3luY0xv
Y2sgfTsKIAogICAgICAgICBBU1NFUlQobV9zeW5jU2NoZWR1bGVkKTsKIApAQCAtNDg0LDcgKzQ4
NCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtU3luYygpCiAgICAgc3luYyhjbGVh
ckl0ZW1zLCBpdGVtcyk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3lu
Y0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zeW5jTG9jayB9OwogICAgICAgICBt
X3N5bmNJblByb2dyZXNzID0gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCA0OWEzMzJlMjFhNDg1OThkZDQ1NzQ3
M2QxNTNmOWJlYWYwNmVkMDliLi4xZGU4ZTQ2ODgxZmNjMTEzYTZiZmJiZTQwYTg5ZGI0ZTVmNDA2
NTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjppbXBvcnRPcmlnaW5J
ZGVudGlmaWVycygpCiAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmZpbmlzaGVkSW1wb3J0aW5nT3Jp
Z2luSWRlbnRpZmllcnMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmdPcmlnaW5zKCk7CiB9CkBA
IC0xNzgsNyArMTc4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklk
ZW50aWZpZXJzKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogCiAgICAgICAgIC8vIERvbid0IGZvcmNlIGNyZWF0
aW9uIG9mIFN0b3JhZ2VUcmFja2VyJ3MgZGIganVzdCBiZWNhdXNlIGEgdHJhY2tlcgogICAgICAg
ICAvLyB3YXMgaW5pdGlhbGl6ZWQuIEl0IHdpbGwgYmUgY3JlYXRlZCBpZiBsb2NhbCBzdG9yYWdl
IGRicyBhcmUgZm91bmQKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpz
eW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogICAgICAgICAgICAgaW50IHJlc3VsdDsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a09yaWdpbnMobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tP
cmlnaW5zIHsgbV9vcmlnaW5TZXRNdXRleCB9OwogICAgICAgICAgICAgICAgIHdoaWxlICgocmVz
dWx0ID0gc3RhdGVtZW50LT5zdGVwKCkpID09IFNRTElURV9ST1cpCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3JpZ2luU2V0LmFkZChzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkuaXNvbGF0ZWRDb3B5
KCkpOwogICAgICAgICAgICAgfQpAQCAtMjEzLDEwICsyMTMsMTAgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZW50aWZpZXJzKCkKICAgICBzeW5jRmlsZVN5c3RlbUFu
ZFRyYWNrZXJEYXRhYmFzZSgpOwogICAgIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudE11dGV4
IH07CiAKICAgICAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29y
aWdpblNldE11dGV4IH07CiAgICAgICAgICAgICBPcmlnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fb3JpZ2luU2V0LmVuZCgpOwogICAgICAgICAgICAgZm9yIChPcmlnaW5TZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9vcmlnaW5TZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbigqaXQpOwpAQCAt
MjM4LDcgKzIzOCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJh
Y2tlckRhdGFiYXNlKCkKIAogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lczsKICAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKICAgICAgICAgZmlsZU5hbWVzID0gRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICB9CiAKQEAg
LTI0Niw3ICsyNDYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRy
YWNrZXJEYXRhYmFzZSgpCiAgICAgLy8gZGVsZXRpb25zIGZyb20gZGlzayBhbmQgZnJvbSBtX29y
aWdpblNldC4KICAgICBPcmlnaW5TZXQgb3JpZ2luU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9vcmlnaW5TZXRNdXRleCB9OwogICAgICAgICBmb3IgKE9yaWdpblNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX29yaWdpblNldC5iZWdpbigpLCBlbmQgPSBtX29yaWdpblNldC5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAgb3JpZ2luU2V0Q29weS5hZGQoKCppdCkuaXNv
bGF0ZWRDb3B5KCkpOwogICAgIH0KQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpzZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29u
c3QgU3RyaQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5T
ZXRNdXRleCB9OwogCiAgICAgICAgIGlmIChtX29yaWdpblNldC5jb250YWlucyhvcmlnaW5JZGVu
dGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0CiAKICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291
bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFi
YXNlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKIAogICAg
IG9wZW5UcmFja2VyRGF0YWJhc2UodHJ1ZSk7CiAgICAgCkBAIC0zMjksMTMgKzMyOSwxMyBAQCB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIsIGNvbnN0CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFi
bGlzaCBvcmlnaW4gJyVzJyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWko
KS5kYXRhKCkpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNl
dE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAg
ICAgICAgaWYgKCFtX29yaWdpblNldC5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAgICAg
ICAgICAgIG1fb3JpZ2luU2V0LmFkZChvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9jbGllbnRNdXRleCB9OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2luSWRlbnRpZmll
cik7CiAgICAgfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
IFN0b3JhZ2VUcmFja2VyOjpvcmlnaW5zKCkKICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OwogCiAgICAgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fb3JpZ2luU2V0LnNpemUoKSk7CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBTdG9yYWdl
VHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIHdpbGxEZWxldGVBbGxPcmln
aW5zKCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LmNsZWFyKCk7CiAgICAgfQpAQCAtMzk4LDcgKzM5
OCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIAogICAg
IFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRl
cjsKICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKICAgICAKICAgICBvcGVuVHJhY2tlckRh
dGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00MTgsNyAr
NDE4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgxKSk7CiAK
ICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7
CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRNdXRleCB9OwogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbihzdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwogICAgICAgICB9CkBAIC00ODUs
NyArNDg1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAgIFN0cmluZyBvcmlnaW5JZCA9IG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKTsKICAgICAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRN
dXRleCB9OwogICAgICAgICB3aWxsRGVsZXRlT3JpZ2luKG9yaWdpbklkKTsKICAgICAgICAgbV9v
cmlnaW5TZXQucmVtb3ZlKG9yaWdpbklkKTsKICAgICB9CkBAIC01MDEsNyArNTAxLDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpCiAKICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0
cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKICAgICAKICAgICBp
ZiAoIWNhbkRlbGV0ZU9yaWdpbihvcmlnaW5JZGVudGlmaWVyKSkgewogICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHRlZCB0byBkZWxldGUgb3JpZ2luICclcycgd2hpbGUgaXQgd2FzIGJlaW5nIGNy
ZWF0ZWRcbiIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwpAQCAtNTM2LDcgKzUz
Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKQogICAgIAogICAgIGJvb2wgc2hvdWxkRGVsZXRlVHJhY2tlckZp
bGVzID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNl
dE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAg
ICAgICAgbV9vcmlnaW5TZXQucmVtb3ZlKG9yaWdpbklkZW50aWZpZXIpOwogICAgICAgICBzaG91
bGREZWxldGVUcmFja2VyRmlsZXMgPSBtX29yaWdpblNldC5pc0VtcHR5KCk7CiAgICAgfQpAQCAt
NTUzLDcgKzU1Myw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2NsaWVudE11dGV4IH07CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CkBA
IC01NzksNyArNTc5LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6d2lsbERlbGV0ZU9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiBib29sIFN0b3JhZ2VUcmFja2VyOjpjYW5E
ZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIEFTU0VS
VCghbV9kYXRhYmFzZU11dGV4LnRyeUxvY2soKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9v
cmlnaW5TZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsK
ICAgICByZXR1cm4gbV9vcmlnaW5zQmVpbmdEZWxldGVkLmNvbnRhaW5zKG9yaWdpbklkZW50aWZp
ZXIpOwogfQogCkBAIC01ODgsOSArNTg4LDkgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6Y2FuY2Vs
RGVsZXRpbmdPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogICAgIGlmICgh
bV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9k
YXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAgICAgICAgaWYgKCFtX29y
aWdpbnNCZWluZ0RlbGV0ZWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9vcmlnaW5zQmVpbmdE
ZWxldGVkLnJlbW92ZShvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CkBAIC02MzQsNyArNjM0LDcg
QEAgdWludDY0X3QgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKIAogICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRo
Rm9yT3JpZ2luKG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggNjVkZjhlMzcyYzM0ODU5NzFmNWY1ZWQyOTIwMmJmNGUwNmQ1ZGU3My4uMzAxMGE2
YTg4Yjk1N2M5MDc3OTE0Njg4OGM2Njg5M2M0YjVkN2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzk1Nyw3ICszOTU3LDcgQEAgLSAodm9pZClf
c3luY2hyb25pemVDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdAogCiAgICAgV2ViQ29yZTo6
SW50UmVjdCBuZXdSZWN0OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoX3ByaXZh
dGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCB9
OwogICAgICAgICBpZiAoQ0dSZWN0SXNOdWxsKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBuZXdSZWN0ID0gV2Vi
Q29yZTo6ZW5jbG9zaW5nSW50UmVjdChfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0KTsKQEAgLTM5NzEsNyArMzk3MSw3IEBAIC0gKHZvaWQpX3N5bmNocm9uaXplQ3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3QKIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0SW5XZWJUaHJlYWQ6KENHUmVjdClyZWN0IHN5bmNocm9uaXplOihCT09MKXN5bmNo
cm9uaXplCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0ZS0+cGVu
ZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4IH07CiAgICAg
ICAgIF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3QgPSByZWN0OwogICAg
IH0KICAgICBpZiAoIXN5bmNocm9uaXplKQpAQCAtMzk4NSw3ICszOTg1LDcgQEAgLSAodm9pZClf
c2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KENHUmVjdClyZWN0CiB7CiAgICAgQVNT
RVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3RNdXRleCB9OwogICAgICAgICBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0ID0gcmVjdDsKICAgICB9CiAgICAgW3NlbGYgX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQb3Np
dGlvbkxheW91dFJlY3RdOwpAQCAtMzk5Myw3ICszOTkzLDcgQEAgLSAodm9pZClfc2V0Q3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KENHUmVjdClyZWN0CiAKIC0gKEJPT0wpX2ZldGNoQ3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KE5TUmVjdCopcmVjdAogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91
dFJlY3RNdXRleCB9OwogICAgIGlmIChDR1JlY3RJc051bGwoX3ByaXZhdGUtPnBlbmRpbmdGaXhl
ZFBvc2l0aW9uTGF5b3V0UmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVh
ZFNjaGVkdWxlci5jcHAKaW5kZXggNGVjYzMwZGM3ZTc5NjE3OWExMDFkZDAzOTI2MjY0NzE1NzU0
NzhlMC4uMDkyNjY2YmQ1NDg0Yjg3MTQ5OTEwNzJjZTIyNGRkNTJkMDg1MWMyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5U
aHJlYWRTY2hlZHVsZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFBsdWdpbk1haW5UaHJlYWRTY2hl
ZHVsZXI6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIoKQogCiB2b2lkIFBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXI6OnNjaGVkdWxlQ2FsbChOUFAgbnBwLCBNYWluVGhyZWFkRnVuY3Rpb24gZnVu
Y3Rpb24sIHZvaWQqIHVzZXJEYXRhKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVlTXV0ZXggfTsKIAogICAgIENhbGxRdWV1
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2NhbGxRdWV1ZU1hcC5maW5kKG5wcCk7CiAgICAgaWYgKGl0
ID09IG1fY2FsbFF1ZXVlTWFwLmVuZCgpKQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlQ2FsbChOUFAgbnBwLCBNYWluVGhyZWFkRnVuY3Rp
b24gZnVuY3RpbwogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnJlZ2lzdGVyUGx1
Z2luKE5QUCBucHApCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fcXVldWVNdXRleCB9OwogCiAgICAgQVNTRVJUKCFtX2NhbGxRdWV1
ZU1hcC5jb250YWlucyhucHApKTsKICAgICBtX2NhbGxRdWV1ZU1hcC5zZXQobnBwLCBEZXF1ZTxD
YWxsPigpKTsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
OjpyZWdpc3RlclBsdWdpbihOUFAgbnBwKQogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXI6OnVucmVnaXN0ZXJQbHVnaW4oTlBQIG5wcCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9x
dWV1ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CiAKICAgICBB
U1NFUlQobV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBwKSk7CiAgICAgbV9jYWxsUXVldWVNYXAu
cmVtb3ZlKG5wcCk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6ZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbihOUFAgbnBwLCBjb25zdCBEZXF1ZTxDYWxsCiAg
ICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHMpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBs
dWctaW4gaGFzIGJlZW4gZGVzdHJveWVkLgogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3F1
ZXVlTXV0ZXggfTsKICAgICAgICAgICAgIGlmICghbV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBw
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMzA5NGJhZmRlYzcyNzQ3ZTNhODBl
NjEzODkxZWJmZWQyY2VlNDM4Li5iMjQyMzVkMjk0Mjg4N2ZjN2QwNDRkZDY3YzZjMzAxNmQ2Njgy
MzcxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFy
aWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBz
aG9ydGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9y
ZSBlYXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBm
b3IgTG9ja2VyPFQ+LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1
ZXVlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
QWJvcnRhYmxlVGFza1F1ZXVlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWlu
aXN0aWNTY2hlZHVsZXI6OlRocmVhZENvbnRleHQ6OndhaXRNeVR1cm4pOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6eWllbGRU
b1RocmVhZCk6CisKIDIwMjEtMDUtMjEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJ1biBsYXlvdXQgdGVzdHMgaW4gc3RyZXNzIG1vZGUgZm9yIDEwIGl0
ZXJhdGlvbnMgb24gcmVndWxhciBFV1MgbGF5b3V0LXRlc3QgcXVldWVzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAppbmRleCA1NmUwYTA2MmIzZDBjOGJhZGFh
MTJlZDA0OTdjMTVkODgxNmNlZTVlLi5lZjk5NzU3NTIyZGQ5ZGE2MTA5Y2RiOTVjN2UzN2FlMWY0
ZDNhNTY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVl
dWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCiAgICAgaW50IGlu
aXRpYWxSZWZDb3VudCA9IHF1ZXVlLT5yZWZDb3VudCgpOwogICAgIEVYUEVDVF9FUSgxLCBpbml0
aWFsUmVmQ291bnQpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7CiAg
ICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7CiAgICAg
ICAgIGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwpAQCAtNzMsNyArNzMsNyBAQCBURVNUKFdURl9X
b3JrUXVldWUsIFNpbXBsZSkKICAgICB9KTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9p
ZCkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHRo
aXJkVGVzdExhYmVsKTsKICAgICAgICAgY2FsbGVkVGhpcmRUZXN0ID0gdHJ1ZTsKIApAQCAtMTE0
LDcgKzExNCw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAgIEVYUEVDVF9F
USgxVSwgcXVldWUxLT5yZWZDb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoMVUsIHF1ZXVlMi0+cmVm
Q291bnQoKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBxdWV1ZTEtPmRpc3BhdGNoKFsmXSh2b2lkKSB7
CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7CkBA
IC0xMjQsNyArMTI0LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgcXVl
dWUyLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjpzbGVl
cF9mb3IoNTBtcyk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgICAgIC8vIFdpbGwgZmFpbCBpZiBx
dWV1ZTIgdG9vayB0aGUgbXV0ZXggYmVmb3JlIHF1ZXVlMS4KICAgICAgICAgRVhQRUNUX1RSVUUo
Y2FsbGVkVGhpcmRUZXN0KTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUs
IFR3b1F1ZXVlcykKICAgICB9KTsKIAogICAgIHF1ZXVlMS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZCh0aGlyZFRl
c3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFRoaXJkVGVzdCA9IHRydWU7CiAgICAgICAgIApAQCAt
MTcxLDE3ICsxNzEsMTcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBEaXNwYXRjaEFmdGVyKQogCiAg
ICAgYXV0byBxdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlRlc3Qu
ZGlzcGF0Y2hBZnRlciIpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQp
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZChzaW1w
bGVUZXN0TGFiZWwpOwogICAgICAgICBjYWxsZWRTaW1wbGVUZXN0ID0gdHJ1ZTsKICAgICAgICAg
bV90ZXN0Q29tcGxldGVkLm5vdGlmeU9uZSgpOwogICAgIH0pOwogCiAgICAgcXVldWUtPmRpc3Bh
dGNoQWZ0ZXIoNTAwX21zLCBbJl0odm9pZCkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIG1fZnVu
Y3Rpb25DYWxsT3JkZXIuYXBwZW5kKGRpc3BhdGNoQWZ0ZXJMYWJlbCk7CiAgICAgICAgIGNhbGxl
ZERpc3BhdGNoQWZ0ZXJUZXN0ID0gdHJ1ZTsKICAgICAgICAgbV9kaXNwYXRjaEFmdGVyVGVzdENv
bXBsZXRlZC5ub3RpZnlPbmUoKTsKQEAgLTIxMSwxMSArMjExLDExIEBAIFRFU1QoV1RGX1dvcmtR
dWV1ZSwgRGVzdHJveU9uU2VsZikKICAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOwogCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGxvY2sgfTsKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBxdWV1ZSA9IFdvcmtRdWV1
ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlRlc3QuZGlzcGF0Y2hBZnRlciIpOwogICAgICAg
ICAgICAgcXVldWUtPmRpc3BhdGNoQWZ0ZXIoNTAwX21zLCBbJl0odm9pZCkgewotICAgICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBsb2NrIH07CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hBZnRlclRlc3RTdGFydGVk
LndhaXQobG9jaywgWyZdIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ZWQ7CiAg
ICAgICAgICAgICAgICAgfSk7CkBAIC0yMjcsNyArMjI3LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVl
LCBEZXN0cm95T25TZWxmKQogICAgICAgICBkaXNwYXRjaEFmdGVyVGVzdFN0YXJ0ZWQubm90aWZ5
T25lKCk7CiAgICAgfQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGRpc3BhdGNoQWZ0ZXJUZXN0
Q29tcGxldGVkLndhaXQobG9jaywgWyZdIHsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQ7
CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Z2xpYi9Xb3JrUXVldWVHTGliLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2ds
aWIvV29ya1F1ZXVlR0xpYi5jcHAKaW5kZXggOTkyM2Q2NTgwMGVkNzE0YmE2ODA2YjEzZjdlNTFm
ZWU1ODAzNWFkMC4uMDdhMmFjZDI3ZDhhZmYyZjQ3MjQ5YWJlM2EwMzc0ZWM2MTBlNTc5NSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGli
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdM
aWIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgQXN5bmNJTykKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGN1cnJlbnREaXJlY3RvcnkoZ19nZXRfY3VycmVudF9kaXIoKSk7
CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KGN1cnJlbnREaXJlY3RvcnkuZ2V0KCkpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvbnRl
eHQubV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC5tX2xvY2sgfTsKICAgICBx
dWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoZ19tYWluX2Nv
bnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRShnX21haW5f
Y29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSAhPSBjb250ZXh0Lm1fbWFpbkNvbnRleHQpOwpA
QCAtNTksNyArNTksNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAgICAgICAgIGdf
ZmlsZV9xdWVyeV9pbmZvX2FzeW5jKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRB
UkRfU0laRSwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgR19QUklPUklUWV9ERUZBVUxULCBudWxs
cHRyLAogICAgICAgICAgICAgW10oR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CiAgICAgICAgICAgICAgICAgVGVzdGluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxUZXN0aW5nQ29udGV4dCo+KHVzZXJEYXRhKTsKLSAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihjb250ZXh0LT5tX2xvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBjb250ZXh0LT5tX2xvY2sgfTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZ19t
YWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCksIGNvbnRleHQtPm1fbWFpbkNvbnRleHQp
OwogICAgICAgICAgICAgICAgIGNvbnRleHQtPm1fdGVzdENvbXBsZXRlZC5ub3RpZnlPbmUoKTsK
ICAgICAgICAgICAgIH0sICZjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKaW5kZXggN2I1NjNkMzZi
NTJmNzIzYzg0ZTc3YjE5ZWUwMmJjMDM2ODQ1YjkxYi4uMTE0NzkxYjM2YWE5NWZkYzE4NmRhYjU2
ZDA4ZTEyOWY1NGU1NTZhNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgdm9pZCB3YWl0TXlUdXJuKCkKICAgICAgICAgewotICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fc2NoZWR1bGVyLm1fbXV0ZXgpOworICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2NoZWR1bGVyLm1fbXV0ZXggfTsKICAgICAgICAgICAgIG1fc2NoZWR1
bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQud2FpdChtX3NjaGVkdWxlci5tX211dGV4LCBbdGhp
c10oKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVh
ZCA9PSBtX3RoaXNUaHJlYWQ7CiAgICAgICAgICAgICB9KTsKQEAgLTE1NSw3ICsxNTUsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgdm9pZCB5aWVsZFRvVGhyZWFkKFRocmVhZEVudW0gbmV4dFRocmVh
ZCkKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fc2NoZWR1bGVyLm1f
bXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2NoZWR1bGVyLm1fbXV0ZXgg
fTsKICAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZCA9IG5leHRUaHJlYWQ7
CiAgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRDaGFuZ2VkLm5vdGlmeUFs
bCgpOwogICAgICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="450585"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429397</attachid>
            <date>2021-05-21 21:16:50 -0700</date>
            <delta_ts>2021-05-21 22:13:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226133-20210521211649.patch</filename>
            <type>text/plain</type>
            <size>283419</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZWI0ZmJjYWNhMTU4YTdjN2NhOTFjNDVlODIxYmIzNjNjMzU1NmE1Li4wODkyMDk5YTI2NGJiNjBm
YzYwMGQwZWRhYTYwMDY1NmQ3NGU2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjIgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9y
dGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBl
YXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3Ig
TG9ja2VyPFQ+LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2
YXRlUHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChoYW5kZXJGb3JTdHJ1Y3RUYWcp
OgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmNwcDoKKyAgICAgICAgKHRlc3RDQVBJVmlh
Q3BwKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpy
dW4pOgorICAgICAgICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjNf
MS5jcHA6CisgICAgICAgIChydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToK
KyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbENvZGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoSlND
OjpEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTdXBlclNh
bXBsZXIpOgorICAgICAgICAoSlNDOjpyZXNldFN1cGVyU2FtcGxlclN0YXRlKToKKyAgICAgICAg
KEpTQzo6cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChKU0M6OmVuYWJsZVN1cGVy
U2FtcGxlcik6CisgICAgICAgIChKU0M6OmRpc2FibGVTdXBlclNhbXBsZXIpOgorICAgICAgICAq
IGRmZy9ERkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjp+Q29tbW9uRGF0YSk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpjb2RlQmxvY2tGb3JWTVRyYXBQQyk6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNsZWFuTXVzdEhhbmRs
ZVZhbHVlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6
OmlzQWN0aXZlRm9yVk0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFk
eSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFsbFJlYWR5UGxhbnNGb3JW
TSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0Zv
clZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6
CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZU5vbkNvbXBpbGluZ1BsYW5zRm9yVk0pOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpxdWV1ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6V29ya2xpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojpz
ZXROdW1iZXJPZlRocmVhZHMpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyk6Cisg
ICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9C
bG9ja0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjphZGRCbG9j
ayk6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAgICogaGVh
cC9Db25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3Rz
OjphZGQpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkJlZ2lu
UGhhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpub3Rp
ZnlJc1NhZmVUb0NvbGxlY3QpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZGlkUmVhY2hUZXJtaW5hdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2lu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRy
YWNraW5nQ29tcGxldGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZyk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c3RvcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2
YXRlUnVuTG9vcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRh
dGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxl
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29v
bik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0
ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
UHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlh
bGl6ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1Jl
bW90ZUluc3BlY3RvckdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENv
bm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0
aW5nc1Nvb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUpOgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OmZyb250ZW5kRGlkQ2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlz
dGVuaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVM
aXN0ZW5lcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpnZXRQb3J0IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJ
ZkVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwOgorICAgICAg
ICAoSlNDOjpDTG9vcFN0YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChK
U0M6OkNMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpkdW1wSklUTWVtb3J5KToKKyAgICAg
ICAgKiBqaXQvSUNTdGF0cy5jcHA6CisgICAgICAgIChKU0M6OklDU3RhdHM6OklDU3RhdHMpOgor
ICAgICAgICAoSlNDOjpJQ1N0YXRzOjp+SUNTdGF0cyk6CisgICAgICAgICogaml0L0pJVFRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpj
dGlTbG93UGF0aEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAg
ICAgIChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjppc0ZpbmlzaGVkQ29tcGlsaW5nKToKKyAgICAg
ICAgKEpTQzo6SklUV29ya2xpc3Q6OkpJVFdvcmtsaXN0KToKKyAgICAgICAgKEpTQzo6SklUV29y
a2xpc3Q6OmNvbXBsZXRlQWxsRm9yVk0pOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6cG9s
bCk6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIpOgorICAgICAgICAo
SlNDOjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAgICogcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldElEKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6RGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpE
YXRhYmFzZTo6bG9nRXZlbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFk
ZERhdGFiYXNlVG9BdEV4aXQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnJl
bW92ZURhdGFiYXNlRnJvbUF0RXhpdCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmls
ZXJVSUQuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZlcnJl
ZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29y
a1RpbWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcik6CisgICAgICAgICogcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6
dGltZXJMb29wKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6c2h1dGRvd24pOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChKU0M6OlNh
bXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCk6
CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUpTTG9ja0FjcXVpc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1FbnRyeSk6CisgICAg
ICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KToKKyAg
ICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnN0
YXJ0VGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6d2lsbERlc3Ryb3lWTSk6CisgICAg
ICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6
aXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dh
c21FbnRyeVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OlRocmVhZENv
dW50SG9sZGVyOjpUaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgIChKU0M6Oldhc206OkVudHJ5
UGxhbjo6VGhyZWFkQ291bnRIb2xkZXI6On5UaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgICog
d2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjphZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFu
ZENhbmNlbElmTGFzdCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcik6CisgICAg
ICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0
OjplbnF1ZXVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmNvbXBsZXRlUGxhblN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6c3RvcEFsbFBsYW5z
Rm9yQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorCiAyMDIxLTA1LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xk
TG9jaygpIGluIEpTQyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBz
YWZldHkgYW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZDA1M2IzODRhMGNkZmMzY2E2YzAwMzYwNTgzZTczYWI5ZTRl
YTc3Zi4uZWRmOTM5MWRiMmQyZWYzOTYzYTg0ZmI0NTE5Yzg4ZTg2MmViZDgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJs
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNob3J0
ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3JlIGVh
c2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZvciBM
b2NrZXI8VD4uCisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOgorICAg
ICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNU
aHJlYWQ6On5BdXRvbWF0aWNUaHJlYWQpOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6
OmpvaW4pOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAg
KiB3dGYvQXV0b21hdGljVGhyZWFkLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmspOgorICAgICAgICAo
V1RGOjpNZXRhQWxsb2NhdG9yOjphZGRGcmVzaEZyZWVTcGFjZSk6CisgICAgICAgIChXVEY6Ok1l
dGFBbGxvY2F0b3I6OmRlYnVnRnJlZVNwYWNlU2l6ZSk6CisgICAgICAgICogd3RmL1BhcmFsbGVs
SGVscGVyUG9vbC5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpQYXJh
bGxlbEhlbHBlckNsaWVudCk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50Ojp+
UGFyYWxsZWxIZWxwZXJDbGllbnQpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVu
dDo6c2V0VGFzayk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpmaW5pc2gp
OgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVudDo6ZG9Tb21lSGVscGluZyk6Cisg
ICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpydW5UYXNrKToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJQb29sOjplbnN1cmVUaHJlYWRzKToKKyAgICAgICAgKFdURjo6UGFy
YWxsZWxIZWxwZXJQb29sOjpkb1NvbWVIZWxwaW5nKToKKyAgICAgICAgKiB3dGYvU2Vjb25kcy5j
cHA6CisgICAgICAgIChXVEY6OnNsZWVwKToKKyAgICAgICAgKiB3dGYvVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6c2xlZXApOgorICAgICAgICAqIHd0Zi9Xb3Jr
ZXJQb29sLmNwcDoKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6CisgICAg
ICAgIChXVEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2Vy
UG9vbDo6cG9zdFRhc2spOgorICAgICAgICAqIHd0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHA6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
cmVzdW1lKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpnZXRSZWdpc3RlcnMpOgorICAgICAgICAq
IHd0Zi93aW4vRGJnSGVscGVyV2luLmNwcDoKKyAgICAgICAgKFdURjo6RGJnSGVscGVyOjpTeW1G
cm9tQWRkcmVzcyk6CisgICAgICAgICogd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnJlc3VtZSk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKToKKwogMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkQ29uZGl0
aW9uIGluIG1vcmUgcGxhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIwNWNhYjAwNjRmMjM3YmU4YzU0YTBk
MTY1YWFiNGNmMDJlNTA0OC4uYmRlMGQ2NjkwNjkzYmMzMjkzODVkYjI1MGY1YWU1YTg0ZTQyMGI5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sK
KyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2Ug
dGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9E
ZWNvZGVyOjpBc3luY0F1ZGlvRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlv
RGVjb2Rlcjo6cnVuTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVjb3Jk
RGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmRE
YXRhYmFzZUNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFzUGVu
ZGluZ0RhdGFiYXNlQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpyZXRyeUNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRhdGFi
YXNlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldERh
dGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRvbmVD
cmVhdGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3Bl
bkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tG
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpxdW90YSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FM
Q2FsbGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dy
YXBwZXI6OnVud3JhcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0YXRl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVD
bG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4
dFN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpk
b0NsZWFudXApOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpmb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
cm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWRO
b2RlSUQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAoU2Ny
b2xsaW5nVHJlZU1hYzo6c2Nyb2xsaW5nTm9kZUZvclBvaW50KToKKyAgICAgICAgKFNjcm9sbGlu
Z1RyZWVNYWM6OmV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXApOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRG
b3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKC1b
V2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVy
RGVsZWdhdGUgdXBkYXRlRGF0YTpjb21wbGV0ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJl
ZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVk
QnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpkaWRDYW5jZWxMb2Fk
aW5nUmVxdWVzdDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNl
dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJv
dGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hh
bmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHA6CisgICAgICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0
KToKKyAgICAgICAgKFZpZGVvUmVuZGVyUmVxdWVzdFNjaGVkdWxlcjo6c3RvcCk6CisgICAgICAg
IChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OmRyYWluKToKKyAgICAgICAgKFZpZGVvUmVu
ZGVyUmVxdWVzdFNjaGVkdWxlcjo6cmVxdWVzdFJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAoc2lua0V2
ZW50SGFuZGxlcik6CisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
SXNGbHVzaGluZyk6CisgICAgICAgIChzZXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6QnVm
ZmVyOjpiZWdpblBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OkJ1ZmZlcjo6Y29tcGxldGVQ
YWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpCdWZmZXI6OndhaXRVbnRpbFBhaW50aW5nQ29t
cGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRm
b3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OlBsYXRmb3JtTGF5ZXI6OnNldFNjZW5lSW50
ZWdyYXRpb24pOgorICAgICAgICAoTmljb3NpYTo6UGxhdGZvcm1MYXllcjo6Y3JlYXRlVXBkYXRl
U2NvcGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6Zmx1c2hTdGF0ZSk6CisgICAg
ICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpjb21taXRTdGF0ZSk6CisgICAgICAgIChO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjphY2Nlc3NQZW5kaW5nKToKKyAgICAgICAgKE5pY29z
aWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmFjY2Vzc0NvbW1pdHRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaDoKKyAgICAgICAgKE5pY29zaWE6OlNj
ZW5lOjphY2Nlc3NTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVn
cmF0aW9uOjpzZXRDbGllbnQpOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0
VXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKToKKyAgICAgICAgKE5p
Y29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCk6CisgICAgICAg
IChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6aW52YWxpZGF0ZUNsaWVu
dCk6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Zmx1
c2hVcGRhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUpOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OnRh
a2VVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdDR0xQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpz
ZXROYXR1cmFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Okludm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Om9uTWVkaWFQ
bGF5ZXJEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpPbkNsb2NrU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpD
dXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1Jlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6
T25DbG9ja1NldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6R2V0Q3VycmVudE1lZGlhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpJ
bml0U2VydmljZVBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlJlbGVhc2VTZXJ2aWNlUG9p
bnRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6R2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50
ZXI6OlJlcGFpbnRWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6Z2V0U2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29s
OjpyZXR1cm5TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1w
bGVQb29sOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpz
dG9wU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlU2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6
OnByb2Nlc3NTYW1wbGVzSW5RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9T
Y2hlZHVsZXI6OnNjaGVkdWxlclRocmVhZFByb2NQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNl
dFZpZGVvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldERlc3RpbmF0aW9uUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNE
UHJlc2VudGVyOjpjcmVhdGVWaWRlb1NhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y2hlY2tEZXZp
Y2VTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpwcmVzZW50U2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6
OnBhaW50Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6
OmZyYW1lSGFzQWxwaGFBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGVzT3BhcXVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZG9MYXlvdXRUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vd0ZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldENvbnRlbnRSZXBsYWNlbWVudEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Y29udGVudFJlcGxhY2VtZW50SW1hZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6dXBkYXRlVGls
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkb1BlbmRpbmdSZXBhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OmFkZExheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnNldENhcGFjaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVRpbGVMYXllclBvb2w6OmRyYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dB
S1dpbmRvdy5tbToKKyAgICAgICAgKC1bV0FLV2luZG93IHNldEV4cG9zZWRTY3JvbGxWaWV3UmVj
dDpdKToKKyAgICAgICAgKC1bV0FLV2luZG93IGV4cG9zZWRTY3JvbGxWaWV3UmVjdF0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1bldl
YlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJU
Qy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJX
ZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtRmluYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6
OnNldFJlcXVlc3RQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldENh
bGxiYWNrUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpwYXVzZWRTdGF0
dXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjplbmFibGVEb3dubG9h
ZFRvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZp
bGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNsZWFudXBEb3du
bG9hZEZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmFsbG93QW55SFRUUFNDZXJ0
aWZpY2F0ZXNGb3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmNhbkln
bm9yZUFueUhUVFBTQ2VydGlmaWNhdGVzRm9ySG9zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsU1NMSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2U6Om1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRN
YXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cGFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAp
OgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNvbXBhdGli
bGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5NzQyYWRi
ZDg0MGEwNDFjZjRhOTVhZTJkMjJkMzliNjA5ZTI0NGIuLjk2NDMxNThmZjI1MzU0MGE1YmNlYWQ1
NjRiM2I3ZTdmM2MyYmQwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMjEtMDUtMjEg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIExvY2tI
b2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNo
aW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2UgdGhlIGNvbXBpbGVy
IHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+LgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fY2xvc2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVE
YXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpj
bG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OnJlbmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpvcGVuQ3Vyc29y
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5j
ZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWRkQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp3cml0ZVNpemVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlYWRTaXplRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNr
Z3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RE5TQ2FjaGU6Omxvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6
OkROU0NhY2hlOjp1cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpETlNDYWNoZTo6cmVtb3ZlRXhw
aXJlZFJlc3BvbnNlc0ZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6RE5TQ2FjaGU6OmNsZWFyKToK
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
Q29tcG9zaXRpbmdSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5M
b29wOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpyZXN1
bWUpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnNjaGVkdWxlVXBkYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCk6Cisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fZGlzcGxheVJlZnJlc2hN
b25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY2FsZUZh
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6c2V0U2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdwb3J0
U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJU
cmVlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpzY2VuZVVwZGF0ZUZp
bmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2Vu
ZVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxN
YXApOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNsZWFyTG9hZGVkSWNvbnNUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRT
ZXRQYWdlVVJMSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmxvYWRJ
Y29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6aWNvblVSTEZv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpjbGVhcik6CisKIDIwMjEtMDUt
MjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBFeHBhbmQgc2FuZGJveCB3aXRoIG1pc3Npbmcgc3lzY3RsLXJlYWQgaGFuZGxlcyBmb3IgY29y
ZSBDUFUgYW5kIGNhY2hlIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDcwMzc4ZjM0
NzMyOTc3NTk4YjVlZDYzYzYyOTlhZGM3YTllZWIzZGUuLjkwZDhlYzU2ODIxZWFhYTE2M2QwYjI3
ZGE0NDM2NjY3YjBkNmZjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAK
KzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xk
ZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBpdCBh
bGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2luY2Ug
dGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+Lgor
CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Q
cm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVJ
bmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENv
dW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpl
c3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YVN5bmM6OnN5bmNUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5j
OjpwZXJmb3JtU3luYyk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklk
ZW50aWZpZXJzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRP
cmlnaW5JZGVudGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5j
RmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNr
ZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNr
ZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxs
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxs
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6Y2FuY2VsRGVsZXRpbmdPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKToKKwogMjAyMS0w
NS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IENo
ZWNrZWRMb2NrIGluIFN0b3JhZ2VBcmVhU3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDFmNTUyNzUxNWU5MGYwYjBhOGYwMWU5M2YzNDNmNTI5MDA5NWMxMjcuLjAwMDJmODZhMmRm
YmVjMWRiNWI4Y2JkNWU3N2FlZDI3ODc4MWNkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2Nh
bCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0
IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlw
ZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlw
ZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Rd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RJ
bldlYlRocmVhZDpzeW5jaHJvbml6ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Q3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2ZldGNoQ3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6XSk6CisKIDIwMjEtMDUtMjEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9wdCBRTEl0
ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCmluZGV4IDkwZjczYzkxOGM1Mjc2OTk5ZDgwOGI2MjcyODBmYWUwMTU4MWZjYTgu
LjYzYTI3NTZkNDY2MzZkYzZhNjhiNDhiZDQxMzMzNmNjNDgzNDFkMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sK
KyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2Ug
dGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdp
bk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRo
cmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI6OnJlZ2lzdGVyUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnVucmVnaXN0ZXJQbHVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbik6
CisKIDIwMjEtMDUtMjAgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIFtXZWJJRExdIFJlbW92ZSBbSW1wbGljaXRUaGlzXSBhbmQgW0N1c3RvbVByb3h5
VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAzZDI4NWYzZDIyNTYyZWMwNjI5Y2QzNjlhYTkx
MDRhZjIxZWNiOTMyLi5iMzQzM2RlMGUyMjFkY2YxM2I0NWRhYTk3YWViMWU0OWIzZWZkOGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtOTUs
MjEgKzk1LDIxIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGVtcHR5OwogICAgICAgICAgICAgbV9wcm9w
ZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXJhdG9yLT52YWx1ZS5z
ZXQodm0sIG93bmVyLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQg
ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIG1fcHJvcGVydHlNYXAu
cmVtb3ZlKHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVmlzaXRvcj4KICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3Byb3BlcnR5TWFwKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBh
aXIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHBhaXIudmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IGFjMDlmNjU0NTA3YzNkYmQ0
OTYwZmQ2NzEzMzJiYjNmMTFmOTA2MjUuLjIxZjkxOTA2NzExZGY2NGFmOGM3NWIyOTIzNmU1Nzg4
OTE3Mjc2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTEyMDksNyAr
MTIwOSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogY3JlYXRlU3RydWN0SGFuZGxlck1hcCgp
CiBzdGF0aWMgU3RydWN0VGFnSGFuZGxlciogaGFuZGVyRm9yU3RydWN0VGFnKGNvbnN0IGNoYXIq
IGVuY29kZWRUeXBlKQogewogICAgIHN0YXRpYyBMb2NrIGhhbmRlckZvclN0cnVjdFRhZ0xvY2s7
Ci0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKCZoYW5kZXJGb3JTdHJ1Y3RUYWdMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja0hvbGRlciB7IGhhbmRlckZvclN0cnVjdFRhZ0xvY2sgfTsKIAogICAgIHN0
YXRpYyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBjcmVhdGVTdHJ1Y3RIYW5kbGVy
TWFwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCmlu
ZGV4IDhjMTlmNTNkNGI2NDQ5YjI2YjE3OTIyNmUyNDVmZTlmNzYzZDgwNzYuLjVkNzUzMzUwMDU0
MjY4ODJhNjY3ZmU1MTdlNGUyNjQxZjEzM2VlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIGludCB0ZXN0Q0FQSVZp
YUNwcChjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFRlc3RBUEkmKT4+IHRhc2s7
CiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKGxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IGIxYjI2ODNlYmIxMzY0YmRlOWM3NmRmYjQ4OWNjMGU3
ZWJkYWQ0MTEuLjE5MWQxODI5MzVhYzFhNmU2ZjBiNTBiN2EzMTNiZDk4ODdhZGE0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0yNzI0LDcg
KzI3MjQsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQoKT4+IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayA9IHRhc2tzLnRh
a2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKaW5kZXgg
ZTVjODYyMmQ0NTI0YTJmOGEyNWNlMWQ0NWVjMmU1Yzg2ZTdjODYwMy4uYmU0ZGJmOTM4ODQ3ZTU4
MTA5NTZkNmVmZTEzODFjMDE0MTRlZGM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBsb2FkQ29uc3RhbnRJbXBsKEJh
c2ljQmxvY2sqIGJsb2NrLCBUIHZhbHVlLCBCMzo6QWlyOjpPcGNvZGUgbW92ZSwgVG1wIHRtcCwK
ICAgICBzdGF0aWMgTG9jayBsb2NrOwogICAgIHN0YXRpYyBTdGRNYXA8VCwgVCo+KiBtYXA7IC8v
IEknbSBub3QgbWVzc2luZyB3aXRoIEhhc2hNYXAncyBwcm9ibGVtcyB3aXRoIGludGVnZXJzLgog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sg
fTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgbWFwID0gbmV3IFN0ZE1hcDxULCBUKj4oKTsKIApA
QCAtMjQ2OSw3ICsyNDY5LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAg
ICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwogICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sg
PSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjNfMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwCmlu
ZGV4IGU1MmU2ZGFiYzMzNDNkYmExNDE2MjQ1NGU4ZmNhODY3NDZmM2MwNzQuLjJiZTg4MzI4NjFm
ZDBkNWE2NTAzMzI5ZDNhM2U3YjljZGYzYjdiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM18xLmNwcApAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4gdGFzazsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9Owog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKaW5kZXggOTRjYmMyM2E2
NjkwMWQ1MWE4OWM4N2RjZDRmMGNkMTNkYzliZTVkZC4uMGE4OGE2YzhhNTBlYmM5ODA5ZmU2NzI4
MmM1YjcwMjBkN2FiMGU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHZvaWQg
RGlyZWN0RXZhbENvZGVDYWNoZTo6c2V0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG93bmVyLCBjCiAgICAgaWYgKCFldmFsRXhlY3V0YWJsZS0+YWxsb3dEaXJlY3RF
dmFsQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV9jYWNoZU1hcC5zZXQo
Q2FjaGVLZXkoZXZhbFNvdXJjZSwgY2FsbFNpdGVJbmRleCksIFdyaXRlQmFycmllcjxEaXJlY3RF
dmFsRXhlY3V0YWJsZT4oZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lciwgZXZhbEV4ZWN1dGFibGUp
KTsKIH0KIAogdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjpjbGVhcigpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
bV9jYWNoZU1hcC5jbGVhcigpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9p
ZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwoVmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICBFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2FjaGVNYXAu
ZW5kKCk7CiAgICAgZm9yIChFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIHB0ciA9IG1fY2FjaGVNYXAu
YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHB0ci0+
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVy
U2FtcGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVy
LmNwcAppbmRleCBjM2E1YzQyYWQyMWY2OTQ5MTdhNGI1MDMzZjUzNjY2OGEyM2Y5YjlkLi5hNDI2
NDBmMjg2MzI2OTcyNzlkYzQ5YTNjZTUxZWZjMzllYzFhMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2
b2lkIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKQogICAgICAgICAgICAgZm9yICg7OykgewogICAg
ICAgICAgICAgICAgIGZvciAoaW50IG1zID0gMDsgbXMgPCBwcmludGluZ1BlcmlvZDsgbXMgKz0g
c2xlZXBRdWFudHVtKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckVu
YWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2sp
OworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckNvdW50KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC03
MCw3ICs3MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpCiAKIHZvaWQgcmVzZXRT
dXBlclNhbXBsZXJTdGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICBpbiA9IDA7CiAgICAgb3V0ID0gMDsKIH0KQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBwcmludFN1cGVyU2FtcGxlclN0YXRlKCkKICAgICBpZiAoIU9w
dGlvbnM6OnVzZVN1cGVyU2FtcGxlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgIGRvdWJs
ZSBwZXJjZW50YWdlID0gMTAwLjAgKiBpbiAvIChpbiArIG91dCk7CiAgICAgaWYgKHBlcmNlbnRh
Z2UgIT0gcGVyY2VudGFnZSkKICAgICAgICAgcGVyY2VudGFnZSA9IDAuMDsKQEAgLTg5LDEzICs4
OSwxMyBAQCB2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKQogCiB2b2lkIGVuYWJsZVN1cGVy
U2FtcGxlcigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGxvY2sgfTsKICAgICBnX3N1cGVyU2FtcGxlckVuYWJsZWQgPSB0cnVlOwogfQogCiB2
b2lkIGRpc2FibGVTdXBlclNhbXBsZXIoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgZ19zdXBlclNhbXBsZXJFbmFibGVk
ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEu
Y3BwCmluZGV4IGZmYjA4MzVlNjEzNDdkODQzNGFkMzQzZWNjOWRjNTU5MTg2YTRhMjcuLjI3ZWRm
MWM4MWE1MzgzOGYxYjhiNmNlOTAwM2VjNDZkNzM0OWI1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIENvbW1v
bkRhdGE6OmludmFsaWRhdGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoVU5M
SUtFTFkoaGFzVk1UcmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkKSkgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
cGNDb2RlQmxvY2tNYXBMb2NrIH07CiAgICAgICAgIGF1dG8mIG1hcCA9IHBjQ29kZUJsb2NrTWFw
KGxvY2tlcik7CiAgICAgICAgIGZvciAoYXV0byYganVtcFJlcGxhY2VtZW50IDogbV9qdW1wUmVw
bGFjZW1lbnRzKQogICAgICAgICAgICAgbWFwLnJlbW92ZShqdW1wUmVwbGFjZW1lbnQuZGF0YUxv
Y2F0aW9uKCkpOwpAQCAtNzcsNyArNzcsNyBAQCBib29sIENvbW1vbkRhdGE6OmludmFsaWRhdGUo
KQogQ29tbW9uRGF0YTo6fkNvbW1vbkRhdGEoKQogewogICAgIGlmIChVTkxJS0VMWShoYXNWTVRy
YXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHBj
Q29kZUJsb2NrTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwY0NvZGVCbG9ja01h
cExvY2sgfTsKICAgICAgICAgYXV0byYgbWFwID0gcGNDb2RlQmxvY2tNYXAobG9ja2VyKTsKICAg
ICAgICAgZm9yIChhdXRvJiBqdW1wUmVwbGFjZW1lbnQgOiBtX2p1bXBSZXBsYWNlbWVudHMpCiAg
ICAgICAgICAgICBtYXAucmVtb3ZlKGp1bXBSZXBsYWNlbWVudC5kYXRhTG9jYXRpb24oKSk7CkBA
IC04Niw3ICs4Niw3IEBAIENvbW1vbkRhdGE6On5Db21tb25EYXRhKCkKIAogdm9pZCBDb21tb25E
YXRhOjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoQ29kZUJsb2NrKiBvd25lcikKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBwY0NvZGVCbG9ja01hcExvY2sgfTsKICAgICBpZiAoIWlzU3RpbGxWYWxpZCB8fCBoYXNWTVRy
YXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBoYXNWTVRyYXBz
QnJlYWtwb2ludHNJbnN0YWxsZWQgPSB0cnVlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ29t
bW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKENvZGVCbG9jayogb3duZXIpCiBDb2Rl
QmxvY2sqIGNvZGVCbG9ja0ZvclZNVHJhcFBDKHZvaWQqIHBjKQogewogICAgIEFTU0VSVChpc0pJ
VFBDKHBjKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIocGNDb2RlQmxvY2tNYXBMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgcGNDb2RlQmxvY2tNYXBMb2NrIH07CiAgICAgYXV0byYgbWFwID0g
cGNDb2RlQmxvY2tNYXAobG9ja2VyKTsKICAgICBhdXRvIHJlc3VsdCA9IG1hcC5maW5kKHBjKTsK
ICAgICBpZiAocmVzdWx0ID09IG1hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCmluZGV4IDM4NmY1ZmI4ZmQ0ODI3NmFlNjU5ZGI2YThjMmM2ZDI2NDAwMTY3NTguLjc5
YWE2YzZiZTgyOGNmY2IyOTg2MGFmYWM2YTE4ZTgzMmE2MDQ1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgUGxhbjo6Y2FuY2Vs
KCkKIAogdm9pZCBQbGFuOjpjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXN0SGFuZGxlVmFsdWVDbGVhbmluZ0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9jayB9OwogCiAgICAg
aWYgKCFtX211c3RIYW5kbGVWYWx1ZXNNYXlJbmNsdWRlR2FyYmFnZSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCBhOTk2YzU1
Y2RkYzI1Y2NjMTZiMmFiYTQ1NmJiYzc0NzYzYTcwMjg5Li40ZDIyOGNmZTg3YWQ5ODE5MzZjMDdj
MDlkNDFiNzI3NTE1NTk0YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmts
aXN0LmNwcApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgfldv
cmtTY29wZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Ro
cmVhZC5tX3dvcmtsaXN0Lm1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1f
dGhyZWFkLm1fd29ya2xpc3QubV9sb2NrIH07CiAgICAgICAgICAgICBtX3RocmVhZC5tX3BsYW4g
PSBudWxscHRyOwogICAgICAgICAgICAgbV90aHJlYWQubV93b3JrbGlzdC5tX251bWJlck9mQWN0
aXZlVGhyZWFkcy0tOwogICAgICAgICB9CkBAIC05Nyw5ICs5Nyw5IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBXb3JrU2NvcGUgd29ya1Njb3BlKCp0aGlzKTsKIAotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2RhdGEubV9yaWdodFRvUnVuKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fZGF0YS5tX3JpZ2h0VG9SdW4gfTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV93b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGlmIChtX3BsYW4tPnN0YWdlKCkg
PT0gUGxhbjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBXb3JrUmVzdWx0OjpD
b250aW51ZTsKICAgICAgICAgICAgIG1fcGxhbi0+bm90aWZ5Q29tcGlsaW5nKCk7CkBAIC0xMjEs
NyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgewotICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV93b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGlm
IChtX3BsYW4tPnN0YWdlKCkgPT0gUGxhbjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBXb3JrUmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgICAgIApAQCAtMTg4LDcgKzE4OCw3
IEBAIFdvcmtsaXN0OjpXb3JrbGlzdChDU3RyaW5nJiYgdGllck5hbWUpCiBXb3JrbGlzdDo6fldv
cmtsaXN0KCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX3RocmVhZHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgbV9xdWV1ZS5hcHBlbmQo
bnVsbHB0cik7IC8vIFVzZSBudWxsIHBsYW4gdG8gaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRoZSB0
aHJlYWQgdG8gdGVybWluYXRlLgogICAgICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5QWxsKGxv
Y2tlcik7CkBAIC0yMDEsNyArMjAxLDcgQEAgV29ya2xpc3Q6On5Xb3JrbGlzdCgpCiB2b2lkIFdv
cmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxh
dGl2ZVByaW9yaXR5KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG51bWJlck9mVGhyZWFkcyk7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xv
Y2sgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZlRocmVhZHM7IGktLTspIHsKICAg
ICAgICAgY3JlYXRlTmV3VGhyZWFkKGxvY2tlciwgcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgfQpA
QCAtMjIzLDcgKzIyMyw3IEBAIFJlZjxXb3JrbGlzdD4gV29ya2xpc3Q6OmNyZWF0ZShDU3RyaW5n
JiYgdGllck5hbWUsIHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50CiAKIGJvb2wgV29ya2xp
c3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgUGxhbk1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbGFucy5lbmQoKTsKICAgICBmb3IgKFBsYW5NYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLT52bSgpID09ICZ2bSkKQEAgLTIzNCw3ICsyMzQs
NyBAQCBib29sIFdvcmtsaXN0Ojppc0FjdGl2ZUZvclZNKFZNJiB2bSkgY29uc3QKIAogdm9pZCBX
b3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4mJiBwbGFuKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIs
IFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRv
IG9wdGltaXplICIsIHBsYW4tPmtleSgpLCAiXG4iKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lk
IFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiAKIFdvcmtsaXN0OjpTdGF0ZSBX
b3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZShDb21waWxhdGlvbktleSBrZXkpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsK
ICAgICBQbGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9wbGFucy5maW5kKGtleSk7CiAgICAgaWYg
KGl0ZXIgPT0gbV9wbGFucy5lbmQoKSkKICAgICAgICAgcmV0dXJuIE5vdEtub3duOwpAQCAtMjcw
LDcgKzI3MCw3IEBAIHZvaWQgV29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFk
eShWTSYgdm0pCiAgICAgLy8gQWZ0ZXIgd2UgcmVsZWFzZSB0aGlzIGxvY2ssIHdlIGtub3cgdGhh
dCBhbHRob3VnaCBvdGhlciBWTXMgbWF5IHN0aWxsCiAgICAgLy8gYmUgYWRkaW5nIHBsYW5zLCBv
dXIgVk0gd2lsbCBub3QgYmUuCiAgICAgCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxvY2tlciwgV1RGOjpk
YXRhRmlsZSgpKTsKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFdvcmtsaXN0Ojp3YWl0VW50aWxB
bGxQbGFuc0ZvclZNQXJlUmVhZHkoVk0mIHZtKQogdm9pZCBXb3JrbGlzdDo6cmVtb3ZlQWxsUmVh
ZHlQbGFuc0ZvclZNKFZNJiB2bSwgVmVjdG9yPFJlZlB0cjxQbGFuPiwgOD4mIG15UmVhZHlQbGFu
cykKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcmVhZHlQbGFucy5zaXplKCk7ICsraSkgewogICAgICAgICBSZWZQ
dHI8UGxhbj4gcGxhbiA9IG1fcmVhZHlQbGFuc1tpXTsKICAgICAgICAgaWYgKHBsYW4tPnZtKCkg
IT0gJnZtKQpAQCAtMzQzLDcgKzM0Myw3IEBAIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29t
cGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBDb21waWxhdGlvbktleSByZXF1CiAgICAg
fQogICAgIAogICAgIGlmICghIXJlcXVlc3RlZEtleSAmJiByZXN1bHRpbmdTdGF0ZSA9PSBOb3RL
bm93bikgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgaWYgKG1fcGxhbnMuY29udGFpbnMocmVx
dWVzdGVkS2V5KSkKICAgICAgICAgICAgIHJlc3VsdGluZ1N0YXRlID0gQ29tcGlsaW5nOwogICAg
IH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdvcmtsaXN0Ojp2aXNpdFdlYWtSZWZlcmVuY2Vz
KFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgVk0qIHZtID0gJnZpc2l0b3IuaGVhcCgpLT52bSgp
OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIGZvciAoUGxhbk1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBtX3BsYW5zLmVuZCgpOyArK2l0ZXIpIHsK
ICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAg
IGlmIChwbGFuLT52bSgpICE9IHZtKQpAQCAtNDAzLDcgKzQwMyw3IEBAIHRlbXBsYXRlIHZvaWQg
V29ya2xpc3Q6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKIHZvaWQgV29ya2xp
c3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0pCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAg
ICAgICAgSGFzaFNldDxDb21waWxhdGlvbktleT4gZGVhZFBsYW5LZXlzOwogICAgICAgICBmb3Ig
KFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFu
cy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUu
Z2V0KCk7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5z
KFZNJiB2bSkKIAogdm9pZCBXb3JrbGlzdDo6cmVtb3ZlTm9uQ29tcGlsaW5nUGxhbnNGb3JWTShW
TSYgdm0pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7ICptX2xvY2sgfTsKICAgICBIYXNoU2V0PENvbXBpbGF0aW9uS2V5PiBkZWFkUGxhbktl
eXM7CiAgICAgVmVjdG9yPFJlZlB0cjxQbGFuPj4gZGVhZFBsYW5zOwogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX3BsYW5zKSB7CkBAIC00ODMsMTMgKzQ4MywxMyBAQCB2b2lkIFdvcmtsaXN0Ojpy
ZW1vdmVOb25Db21waWxpbmdQbGFuc0ZvclZNKFZNJiB2bSkKIAogc2l6ZV90IFdvcmtsaXN0Ojpx
dWV1ZUxlbmd0aCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICByZXR1cm4gbV9xdWV1ZS5zaXplKCk7CiB9CiAK
IHZvaWQgV29ya2xpc3Q6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9Owog
ICAgIGR1bXAobG9ja2VyLCBvdXQpOwogfQogCkBAIC01MDMsMTEgKzUwMywxMSBAQCB2b2lkIFdv
cmtsaXN0OjpkdW1wKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIAogdW5zaWduZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1bnNpZ25lZCBudW1i
ZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc3VzcGVuc2lvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N1c3BlbnNpb25M
b2NrIH07CiAgICAgYXV0byBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzID0gbV90aHJlYWRzLnNpemUo
KTsKICAgICBpZiAobnVtYmVyT2ZUaHJlYWRzIDwgY3VycmVudE51bWJlck9mVGhyZWFkcykgewog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzOyBpLS0gPiBudW1iZXJPZlRocmVhZHM7KSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fdGhyZWFkc1tpXS0+bV90aHJlYWQtPmhhc1VuZGVybHlp
bmdUaHJlYWQobG9ja2VyKSkgewogICAgICAgICAgICAgICAgICAgICBtX3F1ZXVlLmFwcGVuZChu
dWxscHRyKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCB1bnNpZ25lZCBXb3JrbGlzdDo6c2V0TnVtYmVy
T2ZUaHJlYWRzKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50IHJlbGF0aXZlUHJpbwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzOyBpLS0gPiBudW1i
ZXJPZlRocmVhZHM7KSB7CiAgICAgICAgICAgICBib29sIGlzU3RvcHBlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICAg
ICAgaXNTdG9wcGVkID0gbV90aHJlYWRzW2ldLT5tX3RocmVhZC0+dHJ5U3RvcChsb2NrZXIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFpc1N0b3BwZWQpCkBAIC01MjgsNyArNTI4
LDcgQEAgdW5zaWduZWQgV29ya2xpc3Q6OnNldE51bWJlck9mVGhyZWFkcyh1bnNpZ25lZCBudW1i
ZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW8KICAgICAgICAgbV90aHJlYWRzLnNocmlua1Rv
Rml0KCk7CiAgICAgICAgIEFTU0VSVChtX251bWJlck9mQWN0aXZlVGhyZWFkcyA8PSBudW1iZXJP
ZlRocmVhZHMpOwogICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZUaHJlYWRzID4gY3VycmVudE51bWJl
ck9mVGhyZWFkcykgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y3VycmVudE51bWJlck9mVGhyZWFkczsgaSA8IG51bWJlck9mVGhyZWFkczsgaSsrKQogICAgICAg
ICAgICAgY3JlYXRlTmV3VGhyZWFkKGxvY2tlciwgcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3RJbmxpbmVzLmgKaW5kZXgg
ZTVmOTBiNDM4YzdiOTU4YmRlMmZiYjBhYmU2NzUwZGZiYWZjYTA5Mi4uY2MyNjZmNmYzNjU2MWFj
NmVjNjQyNTI1MWFkYThkNmY0MmYyMDBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0SW5saW5lcy5oCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgaXRlcmF0ZUNv
ZGVCbG9ja3NGb3JHQyhWaXNpdG9yJiB2aXNpdG9yLCBWTSYgdm0sIGNvbnN0IEZ1bmMmIGZ1bmMp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jLCB0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBXb3JrbGlz
dDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhWaXNpdG9yJiB2aXNpdG9yLCBWTSYgdm0sIGNvbnN0
IEZ1bmMmIGZ1bmMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFucy5lbmQoKTsgKytpdGVyKSB7CiAgICAg
ICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKHBsYW4tPnZt
KCkgIT0gJnZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwCmluZGV4IGY0ZjFjMzdjYzM3YWE2YjUxNzk1YmJlNDkyYTk1NjQ0ZGVh
M2RlOWYuLjU1YzA1YzgxMjI5ZjM1OTM2ZmYxMzQ3Y2RkZjQ1NGYzYWZiNmFjOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAK
QEAgLTc3LDE0ICs3NywxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbnF1ZXVlKHN0ZDo6
dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2spCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlBbGwoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB3YWl0VW50aWxFbXB0eSgpCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkgfHwg
bV93b3JraW5nKQogICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX2xvY2spOwogICAgIH0K
QEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzazsKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgICAgICBtX3dvcmtpbmcg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICAg
ICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKaW5kZXggYjFlOTdmYzY1YTRlY2MwZWMzMjVk
NzgzOTQ0MTZiMjlkODVlNmI2NC4uNmMyNDJiODYzYmNlY2Q3M2U4MzBhNjNhMzVmZTIwMDBkMGEy
Mzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1CaXRz
KCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5
KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9i
aXR2ZWN0b3JMb2NrIH07CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRSZXNpemVCaXRzKG1f
YmxvY2tzLmNhcGFjaXR5KCkpOwogICAgICAgICAgICAgbV9iaXRzLnJlc2l6ZShtX2Jsb2Nrcy5j
YXBhY2l0eSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0SW5saW5lcy5oCmluZGV4IDA1ODEwOGY3M2E0ZmE4MDY5YmZmZDU5NGJlYzA3
YzY5ZWYzYzFiYWMuLjU3NTQ1MDgyYTIwYmQzOWY5MzVkZDIzNDFiY2Y3ZWUxNzg3YzI3MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgK
QEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFTdWJzcGFjZXMo
Vk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGZvciAoQ29kZUJsb2NrKiBjb2RlQmxvY2sg
OiBtX2N1cnJlbnRseUV4ZWN1dGluZykKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2spOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmlu
ZGV4IDRmMDlhNjNlZTA1OGQ0YTE4YmEzYzYxMTVlYWJjNjAzZTZmMTJlMjYuLjUxODM4NzBmNDZk
MjQ4MjNkNTc5OTczZjgzYzFlOWNmNWFmZTA2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2
YXRlOgogdm9pZCBDb25zZXJ2YXRpdmVSb290czo6YWRkKAogICAgIHZvaWQqIGJlZ2luLCB2b2lk
KiBlbmQsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9ja1NldCYg
Y29kZUJsb2NrcykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlQmxvY2tzLmdldExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNvZGVCbG9ja3MuZ2V0TG9jaygpIH07CiAgICAgQ29t
cG9zaXRlTWFya0hvb2sgbWFya0hvb2soaml0U3R1YlJvdXRpbmVzLCBjb2RlQmxvY2tzLCBsb2Nr
ZXIpOwogICAgIGdlbmVyaWNBZGRTcGFuKGJlZ2luLCBlbmQsIG1hcmtIb29rKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNjFkMmIyZDJiMTAxYzM4MjI1OWQ2OThkYmUy
Zjc1YzE2YzMxOTFmMy4uYzFjZjg2NDI3NzA1MWJhMDIxMDU4Y2Y1MTRhZDM3MmZiYTc0ODI3YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBIZWFw
OjpIZWFwKFZNJiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc2l6ZV90IG1lbW9yeUFib3Zl
Q3JpdGljYWxUaHJlc2hvbGQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRpY19jYXN0PGRvdWJs
ZT4obV9yYW1TaXplKSAqICgxLjAgLSBPcHRpb25zOjpjcml0aWNhbEdDTWVtb3J5VGhyZXNob2xk
KCkpKTsKICAgICBtX21heEVkZW5TaXplV2hlbkNyaXRpY2FsID0gbWVtb3J5QWJvdmVDcml0aWNh
bFRocmVzaG9sZCAvIDQ7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgIG1fdGhyZWFkID0gYWRv
cHRSZWYobmV3IEhlYXBUaHJlYWQobG9ja2VyLCAqdGhpcykpOwogfQogCkBAIC00MDEsNyArNDAx
LDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgCiAgICAgaWYgKG1f
Y29sbGVjdENvbnRpbnVvdXNseVRocmVhZCkgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrKTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrIH07CiAgICAgICAgICAgICBt
X3Nob3VsZFN0b3BDb2xsZWN0aW5nQ29udGludW91c2x5ID0gdHJ1ZTsKICAgICAgICAgICAgIG1f
Y29sbGVjdENvbnRpbnVvdXNseUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgfQpAQCAt
NDQzLDcgKzQ0Myw3IEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogICAgIC8v
IENhcmVmdWxseSBicmluZyB0aGUgdGhyZWFkIGRvd24uCiAgICAgYm9vbCBzdG9wcGVkID0gZmFs
c2U7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgc3RvcHBlZCA9
IG1fdGhyZWFkLT50cnlTdG9wKGxvY2tlcik7CiAgICAgICAgIG1fdGhyZWFkU2hvdWxkU3RvcCA9
IHRydWU7CiAgICAgICAgIGlmICghc3RvcHBlZCkKQEAgLTExMTEsNyArMTExMSw3IEBAIHZvaWQg
SGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogCiAgICAgYm9vbCBhbHJlYWR5
UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90
aHJlYWRMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAg
ICAgICAgZm9yIChjb25zdCBHQ1JlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCA6IG1fcmVxdWVzdHMp
IHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN1YnN1bWVkQnkocHJldmlvdXNSZXF1ZXN0KSkg
ewogICAgICAgICAgICAgICAgIGFscmVhZHlSZXF1ZXN0ZWQgPSB0cnVlOwpAQCAtMTI1MCw3ICsx
MjUwLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3Rv
ciBjb25uKQogICAgIG1fY3VycmVudEdDU3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CiAgICAgCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICAgICAgbV9jdXJyZW50UmVxdWVz
dCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKICAgICB9CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBORVZF
Ul9JTkxJTkUgYm9vbCBIZWFwOjpydW5CZWdpblBoYXNlKEdDQ29uZHVjdG9yIGNvbm4pCiAgICAg
ICAgIFt0aGlzXSAoKSB7CiAgICAgICAgICAgICBTbG90VmlzaXRvciogdmlzaXRvcjsKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BhcmFsbGVsU2xv
dFZpc2l0b3JMb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJhbGxl
bFNsb3RWaXNpdG9yTG9jayB9OwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRSghbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5pc0VtcHR5KCksICJQYXJh
bGxlbCBTbG90VmlzaXRvcnMgYXJlIGFsbG9jYXRlZCBhcHJpb3JpIik7CiAgICAgICAgICAgICAg
ICAgdmlzaXRvciA9IG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMudGFrZUxhc3QoKTsK
ICAgICAgICAgICAgIH0KQEAgLTEzMTQsNyArMTMxNCw3IEBAIE5FVkVSX0lOTElORSBib29sIEhl
YXA6OnJ1bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFyYWxsZWxT
bG90VmlzaXRvckxvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcmFs
bGVsU2xvdFZpc2l0b3JMb2NrIH07CiAgICAgICAgICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxl
bFNsb3RWaXNpdG9ycy5hcHBlbmQodmlzaXRvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
OwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgdm9pZCBIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKGNvbnN0
IEZ1bmMmIGZ1bmMpCiAgICAgZm9yICg7OykgewogICAgICAgICBib29sIGRvbmU7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgICAgIGRvbmUg
PSBmdW5jKGxvY2tlcik7CiAgICAgICAgICAgICBpZiAoIWRvbmUpIHsKICAgICAgICAgICAgICAg
ICBzZXRNdXRhdG9yV2FpdGluZygpOwpAQCAtMjEyOCw3ICsyMTI4LDcgQEAgSGVhcDo6VGlja2V0
IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKEdDUmVxdWVzdCByZXF1ZXN0KQogICAgIEFTU0VSVCh2
bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KHZtKCkuYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1Rh
YmxlKCkpOwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgLy8gV2UgbWF5IGJlIGFibGUg
dG8gc3RlYWwgdGhlIGNvbm4uIFRoYXQgb25seSB3b3JrcyBpZiB0aGUgY29sbGVjdG9yIGlzIGRl
ZmluaXRlbHkgbm90IHJ1bm5pbmcKICAgICAvLyByaWdodCBub3cuIFRoaXMgaXMgYW4gb3B0aW1p
emF0aW9uIHRoYXQgcHJldmVudHMgdGhlIGNvbGxlY3RvciB0aHJlYWQgZnJvbSBldmVyIHN0YXJ0
aW5nIGluIG1vc3QKICAgICAvLyBjYXNlcy4KQEAgLTI5NjgsOSArMjk2OCw5IEBAIHZvaWQgSGVh
cDo6bm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkKICAgICAgICAgICAgICAgICBNb25vdG9uaWNUaW1l
IGluaXRpYWxUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAgICAgICAgICAgU2Vj
b25kcyBwZXJpb2QgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKE9wdGlvbnM6OmNvbGxlY3RD
b250aW51b3VzbHlQZXJpb2RNUygpKTsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NvbGxlY3RDb250aW51b3Vz
bHlMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29sbGVjdENv
bnRpbnVvdXNseUxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZXF1ZXN0cy5hcHBlbmQoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2xhc3RHcmFudGVkVGlja2V0Kys7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggNmYwNGMzNDc2ZTg3OWVjNGE0NzlmOGI2
ZWE4OTFmMmYzOWYzZDdiMC4uZjlhMTgzMjNjNzI4MzM0NzE5OGQ5Njg4OWRjNTlmNzQzNzhmMjA3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcApAQCAtNTc4
LDcgKzU3OCw3IEBAIHNpemVfdCBTbG90VmlzaXRvcjo6cGVyZm9ybUluY3JlbWVudE9mRHJhaW5p
bmcoc2l6ZV90IGJ5dGVzUmVxdWVzdGVkKQogCiBib29sIFNsb3RWaXNpdG9yOjpkaWRSZWFjaFRl
cm1pbmF0aW9uKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2hlYXAubV9tYXJraW5nTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2hlYXAubV9tYXJraW5nTXV0ZXggfTsKICAgICBy
ZXR1cm4gZGlkUmVhY2hUZXJtaW5hdGlvbihsb2NrZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDdlYjUxYWYzMGZkYTgwMmNhODFhOGIx
MGVjZDdlNmViZWUyMjExN2MuLmIyZDk5ZmJhODkyMjZkNGMyNDBjZGFiOGY1YjA1NzU3ODFiZThk
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoT3B0aW9uCiAgICAgICAgIFZNJiB2bSA9IG1f
ZW52aXJvbm1lbnQuZGVidWdnZXIoKS52bSgpOwogICAgICAgICBTYW1wbGluZ1Byb2ZpbGVyJiBz
YW1wbGluZ1Byb2ZpbGVyID0gdm0uZW5zdXJlU2FtcGxpbmdQcm9maWxlcihzdG9wd2F0Y2gpOwog
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJvZmlsZXIuZ2V0TG9jaygpKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNhbXBsaW5nUHJvZmlsZXIuZ2V0TG9jaygpIH07CiAg
ICAgICAgIHNhbXBsaW5nUHJvZmlsZXIuc2V0U3RvcFdhdGNoKGxvY2tlciwgc3RvcHdhdGNoKTsK
ICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5ub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRp
b25UaHJlYWQobG9ja2VyKTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5zdGFydChsb2NrZXIp
OwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6
dHJhY2tpbmdDb21wbGV0ZSgpCiAgICAgICAgIFNhbXBsaW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJv
ZmlsZXIgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNh
bXBsaW5nUHJvZmlsZXIpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJv
ZmlsZXItPmdldExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzYW1wbGluZ1Byb2Zp
bGVyLT5nZXRMb2NrKCkgfTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci0+cGF1c2UobG9ja2Vy
KTsKICAgICAgICAgVmVjdG9yPFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrVHJhY2U+IHN0YWNrVHJh
Y2VzID0gc2FtcGxpbmdQcm9maWxlci0+cmVsZWFzZVN0YWNrVHJhY2VzKGxvY2tlcik7CiAgICAg
ICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgSW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RvcFNhbXBsaW5nV2hlbkRpc2Nvbm5lY3RpbmcoKQog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGlu
Z1Byb2ZpbGVyID0gdm0uc2FtcGxpbmdQcm9maWxlcigpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNh
bXBsaW5nUHJvZmlsZXIpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJvZmlsZXIt
PmdldExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNhbXBsaW5nUHJvZmlsZXItPmdldExv
Y2soKSB9OwogICAgIHNhbXBsaW5nUHJvZmlsZXItPnBhdXNlKGxvY2tlcik7CiAgICAgc2FtcGxp
bmdQcm9maWxlci0+Y2xlYXJEYXRhKGxvY2tlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQuY3BwCmluZGV4IDg5OTlmMzA3N2I3MzIwNTE4NWMxMDRhMGI2YjMyYjRmMjkwODdj
YjAuLmUwNmZiZDk5OTViYWVhNmQ1ODcwYTNjYmJiNTI2ODczZWE5NmM2YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogCiBib29sIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJv
b2wgYXV0b21hdGljYWxseVBhdXNlKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgIGlmICghbV90
YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxs
cHRyOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgICAgICBpZiAoIW1fdGFy
Z2V0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0YXJnZXQgPSBtX3RhcmdldDsKQEAg
LTg4LDcgKzg4LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdl
VG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OmNsb3NlKCkKIHsKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fdGFyZ2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9
OwogICAgICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDUs
NyArMTA1LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIAogdm9p
ZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11
dGV4IH07CiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcApp
bmRleCAzZjE5ZjBiOWU4YTU5NDNlZDk5Zjg0OTQ2NGViYTdhNGY2MDAzNDUwLi5kMWQ5NTJjOTQ0
NTk2N2FhOGExMWYxMjQzODJhYmEyYTJiOWU3MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0
YXJnZXQpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CiAKICAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBuZXh0QXZhaWxh
YmxlVGFyZ2V0SWRlbnRpZmllcigpOwogICAgIHRhcmdldC0+c2V0VGFyZ2V0SWRlbnRpZmllcih0
YXJnZXRJZGVudGlmaWVyKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnVucmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCiB7CiAg
ICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9t
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGF1dG8gdGFyZ2V0
SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAgIGlmICghdGFyZ2V0
SWRlbnRpZmllcikKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VS
VF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAoIXVwZGF0ZVRhcmdldE1h
cCh0YXJnZXQpKQogICAgICAgICByZXR1cm47CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgbV9j
bGllbnRDYXBhYmlsaXRpZXMgPSBXVEY6Om51bGxvcHQ7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xp
ZW50KQogICAgIEFTU0VSVCgobV9jbGllbnQgJiYgIWNsaWVudCkgfHwgKCFtX2NsaWVudCAmJiBj
bGllbnQpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX2NsaWVudCA9IGNsaWVu
dDsKICAgICB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0
Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpzZXR1cEZhaWxlZChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKIApA
QCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21w
bGV0ZWQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICh0YXJn
ZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50
aWZpZXIpCiAgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpjbGllbnRDYXBhYmlsaXRpZXNE
aWRDaGFuZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAg
ICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6QVBJKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldENvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXggZDAwY2ZiYzg4YTA2ZTI4
NDRiZDViMTI0N2JlODkwNTczMjE5MzAzNi4uOGIyYTdmYTM4YWEwNjhlNDUzNDNmMzRhNDcyY2Yx
YWUwNTBhZTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW0KQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0
SGFuZGxlUnVuU291cmNlR2xvYmFsKHZvaWQqKQogCiAgICAgUmVtb3RlVGFyZ2V0UXVldWUgcXVl
dWVDb3B5OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKHJ3aVF1ZXVlTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcndpUXVldWVNdXRleCB9OwogICAgICAgICBzdGQ6OnN3
YXAocXVldWVDb3B5LCAqcndpUXVldWUpOwogICAgIH0KIApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgdm9pZCBSZW1vdGVUYXJnZXRRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCiAgICAgQVNTRVJUKHJ3aVF1ZXVlKTsKIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrKHJ3aVF1ZXVlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
cndpUXVldWVNdXRleCB9OwogICAgICAgICByd2lRdWV1ZS0+YXBwZW5kKFdURk1vdmUoZnVuY3Rp
b24pKTsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0
SGFuZGxlUnVuU291cmNlV2l0aEluZm8odm9pZCogaW5mbykKIAogICAgIFJlbW90ZVRhcmdldFF1
ZXVlIHF1ZXVlQ29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhjb25uZWN0aW9u
VG9UYXJnZXQtPnF1ZXVlTXV0ZXgoKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBjb25uZWN0
aW9uVG9UYXJnZXQtPnF1ZXVlTXV0ZXgoKSB9OwogICAgICAgICBxdWV1ZUNvcHkgPSBjb25uZWN0
aW9uVG9UYXJnZXQtPnRha2VRdWV1ZSgpOwogICAgIH0KIApAQCAtMTU4LDcgKzE1OCw3IEBAIHZv
aWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRjaEFzeW5jT25UYXJnZXQoRnVuY3Rp
b248dm9pZCAoKT4mJiBjYWxsYmFjCiAKIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpz
ZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhbGx5UGF1c2Up
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RhcmdldE11dGV4IH07CiAKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EKICAg
ICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVP
cigwKTsKIAogICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgdGFyZ2V0SWRlbnRpZmll
ciwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBhdXRvbWF0aWNhbGx5UGF1c2UsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKIAogICAgICAg
ICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewog
ICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJn
ZXRJZGVudGlmaWVyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGlj
YQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
dGFyZ2V0TXV0ZXggfTsKIAogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KQEAgLTIwMSw3ICsy
MDEsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UoKQogICAgIGF1dG8g
dGFyZ2V0SWRlbnRpZmllciA9IG1fdGFyZ2V0ID8gbV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIo
KSA6IDA7CiAgICAgCiAgICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlzLCB0YXJnZXRJZGVu
dGlmaWVyLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhcmdl
dE11dGV4IH07CiAgICAgICAgIGlmIChtX3RhcmdldCkgewogICAgICAgICAgICAgaWYgKG1fY29u
bmVjdGVkKQogICAgICAgICAgICAgICAgIG1fdGFyZ2V0LT5kaXNjb25uZWN0KCp0aGlzKTsKQEAg
LTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3Nh
Z2VUb1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQo
W3RoaXMsIHN0cm9uZ01lc3NhZ2UgPSByZXRhaW5QdHIobWVzc2FnZSksIHN0cm9uZ1RoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSB7CiAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFy
Z2V0ID0gbnVsbHB0cjsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
dGFyZ2V0TXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXgg
fTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgdGFyZ2V0ID0gbV90YXJnZXQ7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3AoRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW4KICAgICBBU1NFUlQobV9ydW5Mb29wKTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrIHsg
bV9xdWV1ZU11dGV4IH07CiAgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24p
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXgg
ZDFiZjcxM2NiYzk2YzQ2Y2Y5YjA2N2MzYzlmZmU5ZTUzZjgxYjZkZC4uNzVmMzk0MzdiZTViOWZj
OTA1YjBkMmFjNmYwNmQ0MzBmOGJiNjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yQ29jb2EubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Kgog
ewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgICAgIGlmICghdXBkYXRlVGFyZ2V0TWFwKHRhcmdldCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICAgICAg
Ly8gSW4gY2FzZSBkZWJ1Z2dlcnMgZmFpbCB0byByZXNwb25kLCBvciB3ZSBjYW5ub3QgY29ubmVj
dCB0byB3ZWJpbnNwZWN0b3JkLCBhdXRvbWF0aWNhbGx5IGNvbnRpbnVlIGFmdGVyIGEgc2hvcnQg
cGVyaW9kIG9mIHRpbWUuCiAgICAgICAgIGludDY0X3QgZGVidWdnZXJUaW1lb3V0RGVsYXkgPSAx
MDsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05P
VywgZGVidWdnZXJUaW1lb3V0RGVsYXkgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAgIGlmIChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldElkZW50aWZpZXIpIHsKICAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0
ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWlsZWQgdG8gcmVjZWl2ZSBhIHJlc3BvbnNl
IGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmll
cik7CiAgICAgICAgICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICB0YXJnZXQt
PnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKTsKIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogCiAgICAgICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJn
ZXRJZGVudGlmaWVyKTsKICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFy
Z2V0SWRlbnRpZmllciA9IDA7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpCiAKIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElEIHRhcmdldElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICghbV9yZWxheUNv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcwLDcgKzI3MCw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBpZiAobV9yZWxheUNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTI5
NCw3ICsyOTQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZO
ZWVkZWQoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0
aW9uKHBpZF90IHBpZCwgUmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRhKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
CiAgICAgaWYgKG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgfHwgbV9wYXJlbnRQcm9jZXNzQXVk
aXREYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIFJldGFpblB0
cjxDRkRhdGFSZWYKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdl
TmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9t
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7CiAgICAgICAgIHN0
b3BJbnRlcm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKQEAgLTM0NSw3ICszNDUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uKgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiByZWxheUNvbm5lY3Rpb24p
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAKICAgICBBU1NFUlQocmVsYXlDb25uZWN0aW9uID09IG1fcmVsYXlDb25uZWN0
aW9uKTsKICAgICBpZiAocmVsYXlDb25uZWN0aW9uICE9IG1fcmVsYXlDb25uZWN0aW9uKQpAQCAt
NDg0LDcgKzQ4NCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKCkK
IAogICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CiAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQogICAgICAgICAgICAg
cHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CkBAIC02MTUsNyArNjE1LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8pCiAgICAgZGlzcGF0Y2hBc3luY09uTWFpblRocmVhZFdpdGhXZWJUaHJlYWRMb2NrSWZOZWVk
ZWQoXnsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxscHRy
OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgICAgICAgICBhdXRvIGZp
bmRSZXN1bHQgPSBtX3RhcmdldE1hcC5maW5kKHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICAg
ICAgaWYgKGZpbmRSZXN1bHQgPT0gbV90YXJnZXRNYXAuZW5kKCkpCkBAIC02MzksNyArNjM5LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBsaWNhdGlvblNldHVwTWVz
c2FnZShOU0RpY3Rpb25hcnkgKikKICAgICAgICAgLy8gV2FpdCBhIGJpdCBmb3IgdGhlIGluZm9y
bWF0aW9uLCBidXQgZ2l2ZSB1cCBhZnRlciBhIHNlY29uZC4KICAgICAgICAgbV9zaG91bGRTZW5k
UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uID0gdHJ1ZTsKICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMSAqIE5TRUNfUEVSX1NFQyksIGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCks
IF57Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKG1fc2hvdWxkU2VuZFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbikKICAgICAgICAgICAgICAgICBzdG9wSW50ZXJuYWwoU3Rv
cFNvdXJjZTo6WFBDTWVzc2FnZSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KaW5kZXggYjUwMmUyOTM1ZjBmODU2YWEx
ZjIyYmU1MDQyNGFjM2E3ODU3MjEyOS4uNDNkZjI3MGFjODIyZjRiZjljZDY1ZDlkNTAwZjg3M2Uy
YWIxYWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tCkBAIC03MSw3ICs3MSw3IEBAIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uOjpjbG9zZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgY2xvc2VGcm9tTWVzc2FnZSgpOwog
fQogCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tTWVzc2FnZSgpCiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogCiAgICAgZGlzcGF0
Y2hfYXN5bmMobV9xdWV1ZS5nZXQoKSwgXnsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAvLyBUaGlz
IHdpbGwgdHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50
IG9uIHRoZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgIGNsb3NlT25RdWV1ZSgpOwogICAg
IH0pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIE5TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6ZGVzZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCBvYmplCiAKICAgICB4
cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShvYmpl
Y3QsIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSk7CiAg
ICAgaWYgKCF4cGNEaWN0aW9uYXJ5IHx8IHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSAhPSBY
UENfVFlQRV9ESUNUSU9OQVJZKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRo
aXMsIG9iamVjdCk7CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qg
b2JqZWN0KQogewogICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJP
UikgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uRmFpbGVkKHRo
aXMpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQogICAgICAgICBhdWRpdF90b2tl
bl90IHRva2VuOwogICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4obV9jb25u
ZWN0aW9uLmdldCgpLCAmdG9rZW4pOwogICAgICAgICBpZiAoIVdURjo6aGFzRW50aXRsZW1lbnQo
dG9rZW4sICJjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iud2ViaW5zcGVjdG9yZCIpKSB7
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIg
b25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUg
YW5kIGRlcmVmIHVzLgogICAgICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQogICAgIGlmICh1c2VySW5mbyAm
JiAhW3VzZXJJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT54
cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZvKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIv
UmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCmluZGV4IDA0YWJmNTU1NGM0MmIz
OTUwYmFiNDFiYTI1NDc0NzJhYTNhMGJlMTIuLjhiYmNmZTFiZmY2MWViMzFjYmUyZjViNTlhZTE0
YzhhODIzMjBjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvcigpCiAKIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAobV9lbmFibGVkKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDIsNyArMTQyLDcgQEAgY29uc3QgU29ja2V0Q29ubmVjdGlv
bjo6TWVzc2FnZUhhbmRsZXJzJiBSZW1vdGVJbnNwZWN0b3I6Om1lc3NhZ2VIYW5kbGVycygpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbm5lY3Rpb24oUmVmPFNvY2tldENvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIEFTU0VSVCghbV9zb2NrZXRDb25uZWN0
aW9uKTsKICAgICBtX3NvY2tldENvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKCkK
ICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwogCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fcHVzaFNjaGVkdWxl
ZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAgIH0pOwpAQCAtMjI5LDcgKzIy
OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZU1lc3NhZ2UoKQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90
ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgaWYgKCFtX3NvY2tldENvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAt
MjM4LDcgKzIzOCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3Rl
KFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZEdldFRhcmdldExpc3RNZXNzYWdlKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBwdXNo
TGlzdGluZ3NOb3coKTsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0
IGNoYXIqCiB7CiAgICAgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlv
blRvVGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBjb25uZWN0aW9uVG9UYXJn
ZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwogICAgICAg
ICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2Myw3
ICsyNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9zZU1lc3NhZ2UoVGFy
Z2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAg
IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbV90YXJnZXRNYXAuZ2V0KHRhcmdl
dElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFyZ2V0SUQg
dGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdl
dDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgdGFyZ2V0ID0gbV90YXJnZXRNYXAuZ2V0
KHRhcmdldElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFy
Z2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgV1RGTW92ZShj
b25uZWN0aW9uVG9UYXJnZXQpKTsKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQuY3BwCmluZGV4IDVhMWQ5MjQ1N2E1M2FhODdkNGNhYzliNGIxMTFjYzM0MTgzMTY5NTQu
LjVlMzg3OThlYTBiMTg1NTQ5MGJlNWM2ZjljMzgxYTVjNWE0ZTJhZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpkaWRS
ZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX3BhcnNlcnNMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJzZXJzTG9jayB9OwogICAgIGF1dG8gcmVzdWx0ID0gbV9w
YXJzZXJzLmVuc3VyZShjbGllbnRJRCwgW3RoaXMsIGNsaWVudElEXSB7CiAgICAgICAgIHJldHVy
biBNZXNzYWdlUGFyc2VyKFt0aGlzLCBjbGllbnRJRF0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8gZXZlbnQgPSBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50OjpleHRyYWN0RXZlbnQoY2xpZW50SUQsIFdURk1vdmUoZGF0YSkpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCmluZGV4IDczOTY3M2VmODc3NGY2
MGVkODc4MTk1MzU1M2Q3MGZlMzcwYjNjZDUuLmUzMDU4ZjUwMWRjNzA5ZmIyOGU2ODY1YjY5NTMz
YTZiNTljODY1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpkaWRDbG9zZShSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRCkKICAgICBtX2NsaWVudENv
bm5lY3Rpb24gPSBXVEY6Om51bGxvcHQ7CiAKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goWz1dIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6
QVBJKTsKICAgICB9KTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQogCiB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c3RhcnQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNo
TGlzdGluZ3NTb29uKCkKICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwogCiAgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFs9XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1f
cHVzaFNjaGVkdWxlZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAgIH0pOwpA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJnZXRJRCB0
YXJnZXRJZGVudGlmaWVyKQogewogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0
OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQo
dGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9j
a0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAg
ICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bm5lY3Rpb25Ub1RhcmdldCkpOwogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7
CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwSW5zcGVjdG9y
Q2xpZW50KGNvbnN0IEV2ZW50JikKIAogICAgIG1fcmVhZHlUb1B1c2hMaXN0aW5ncyA9IHRydWU7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApAQCAtMzI2LDcgKzMyNiw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpmcm9udGVuZERpZENsb3NlKGNvbnN0IEV2ZW50JiBldmVu
dCkKIAogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+IGNvbm5lY3Rpb25Ub1Rh
cmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFy
Z2V0KiB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQoZXZlbnQudGFyZ2V0SUQudmFsdWUoKSk7CiAg
ICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4LDcgKzM0OCw3
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBFdmVu
dCYgZXZlbnQpCiAKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0
aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGNvbm5lY3Rpb25Ub1Rh
cmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQoZXZlbnQudGFyZ2V0SUQudmFsdWUoKSk7
CiAgICAgICAgIGlmICghY29ubmVjdGlvblRvVGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEF1dG9tYXRpb25T
ZXNzaW9uKGNvbnN0IEV2ZW50JiBldmVudCkKIAogICAgIG1fcmVhZHlUb1B1c2hMaXN0aW5ncyA9
IHRydWU7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggYWU1
ZTZkOGExYWVhYjFhMDQ1NTY2YjM3YTNlNGNkMGViZDYxZjRmYy4uM2M5NzcwMWM2NDQxZTIxNzUy
ZjQxNGFkODI0NmMxZGQ2MjkyNTE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIE9wdGlvbmFs
PENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0
KGNvbnN0IGNoYXIqIHNlCiAKIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkcmVzcywgdWludDE2X3Qg
cG9ydCwgTGlzdGVuZXImIGxpc3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5l
Y3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAg
ICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAgICAgYXV0byBjb25uZWN0aW9u
ID0gbWFrZVVuaXF1ZTxMaXN0ZW5lckNvbm5lY3Rpb24+KGlkLCBsaXN0ZW5lciwgYWRkcmVzcywg
cG9ydCk7CiAgICAgaWYgKCFjb25uZWN0aW9uLT5pc0xpc3RlbmluZygpKQpAQCAtMTAyLDcgKzEw
Miw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkCiAKIGJvb2wgUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OmlzTGlzdGVuaW5nKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5l
Y3Rpb25zTG9jayB9OwogICAgIGlmIChtX2xpc3RlbmVycy5jb250YWlucyhpZCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3b3JrZXJUaHJlYWQoKQogICAgICAgICBW
ZWN0b3I8UG9sbGluZ0Rlc2NyaXB0b3I+IHBvbGxmZHM7CiAgICAgICAgIFZlY3RvcjxDb25uZWN0
aW9uSUQ+IGlkczsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb25uZWN0aW9uIDogbV9jbGll
bnRzKSB7CiAgICAgICAgICAgICAgICAgcG9sbGZkcy5hcHBlbmQoY29ubmVjdGlvbi52YWx1ZS0+
cG9sbCk7CiAgICAgICAgICAgICAgICAgaWRzLmFwcGVuZChjb25uZWN0aW9uLmtleSk7CkBAIC0y
MDMsNyArMjAzLDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIHsKICAgICBBU1NFUlQoU29j
a2V0Ojppc1ZhbGlkKHNvY2tldCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlv
bnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBh
dXRvIGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBt
YWtlVW5pcXVlPENsaWVudENvbm5lY3Rpb24+KGlkLCBzb2NrZXQsIGNsaWVudCk7CiAgICAgaWYg
KCFTb2NrZXQ6OmlzVmFsaWQoY29ubmVjdGlvbi0+c29ja2V0KSkKQEAgLTIxNyw3ICsyMTcsNyBA
QCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpj
cmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpkaXNjb25uZWN0KENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogCiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2xpc3RlbmVycy5n
ZXQoaWQpKSB7CiAgICAgICAgIG1fbGlzdGVuZXJzLnJlbW92ZShpZCk7CkBAIC0yMzUsNyArMjM1
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdChDb25u
ZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFs
aWRhdGVDbGllbnQoQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBtX2NsaWVudHMucmVtb3ZlSWYoWyZjbGllbnRdKGF1dG8mIGtleVZhbHVlKSB7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBrZXlWYWx1ZS52YWx1ZTsKIApAQCAtMjUwLDcg
KzI1MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVD
bGllbnQoQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OmludmFsaWRhdGVMaXN0ZW5lcihMaXN0ZW5lciYgbGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uc0xvY2sgfTsKICAgICBtX2xpc3RlbmVycy5yZW1vdmVJZihbJmxpc3RlbmVyXShhdXRv
JiBrZXlWYWx1ZSkgewogICAgICAgICBjb25zdCBhdXRvJiBjb25uZWN0aW9uID0ga2V5VmFsdWUu
dmFsdWU7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjppbnZhbGlkYXRlTGlzdGVuZXIoTGlzdGVuZXImIGxpc3RlbmVyKQogCiBPcHRpb25h
bDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVj
dGlvbklEIGlkKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNv
bnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2xpc3RlbmVycy5nZXQoaWQpKQogICAgICAgICByZXR1
cm4gU29ja2V0OjpnZXRQb3J0KGNvbm5lY3Rpb24tPnNvY2tldCk7CiAgICAgaWYgKGNvbnN0IGF1
dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0KGlkKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBP
cHRpb25hbDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQo
Q29ubmVjdGlvbklEIGlkKSBjb25zdAogCiB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpyZWN2SWZFbmFibGVkKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChp
ZCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlY3ZCdWZmZXIoU29ja2V0OjpCdWZmZXJT
aXplKTsKICAgICAgICAgaWYgKGF1dG8gcmVhZFNpemUgPSBTb2NrZXQ6OnJlYWQoY29ubmVjdGlv
bi0+c29ja2V0LCByZWN2QnVmZmVyLmRhdGEoKSwgcmVjdkJ1ZmZlci5zaXplKCkpKSB7CkBAIC0y
OTgsNyArMjk4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklm
RW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExvY2tIb2xkZXIg
bG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlv
bnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0
KGlkKSkgewogICAgICAgICBTb2NrZXQ6OmNsZWFyV2FpdGluZ1dyaXRhYmxlKGNvbm5lY3Rpb24t
PnBvbGwpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29ubmVjdGlvbklEIGlkLCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9u
c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGlm
IChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpIHsKICAgICAgICAg
c2l6ZV90IG9mZnNldCA9IDA7CiAgICAgICAgIGlmIChjb25uZWN0aW9uLT5zZW5kQnVmZmVyLmlz
RW1wdHkoKSkgewpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewog
ICAgIEFTU0VSVChpc0xpc3RlbmluZyhpZCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fbGlzdGVuZXJzLmdldChpZCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gc29ja2V0ID0gU29ja2V0OjphY2NlcHQoY29ubmVjdGlvbi0+c29j
a2V0KSkgewogICAgICAgICAgICAgLy8gTmVlZCB0byB1bmxvY2sgYmVmb3JlIGNhbGxpbmcgY3Jl
YXRlQ2xpZW50IGFzIGl0IGFsc28gYXR0ZW1wdHMgdG8gbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcAppbmRleCAzYzkzYWI4ZWJlNWFi
MmM5NmUzNGMwMTlhMmI3ZjIwNDEzZjgwOGExLi44MTlkM2UzZWM0MTNlOWM4MjhhMTIzN2NkYTRk
Yzc4ZmE0NzE3OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ0xvb3BTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NMb29wU3RhY2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDTG9vcFN0YWNrOjpyZWxl
YXNlRXhjZXNzQ2FwYWNpdHkoKQogCiB2b2lkIENMb29wU3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0
ZUNvdW50KGxvbmcgYnl0ZUNvdW50KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKHN0YWNrU3Rh
dGlzdGljc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3RhY2tTdGF0aXN0aWNzTXV0ZXgg
fTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8bG9uZz4oY29tbWl0dGVkQnl0ZXNDb3VudCkgKyBi
eXRlQ291bnQgPiAtMSk7CiAgICAgY29tbWl0dGVkQnl0ZXNDb3VudCArPSBieXRlQ291bnQ7CiB9
CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBDTG9vcFN0YWNrOjppc1NhZmVUb1JlY3Vyc2UoKSBj
b25zdAogCiBzaXplX3QgQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0ZUNvdW50KCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHN0YWNrU3RhdGlzdGljc011dGV4IH07CiAgICAgcmV0dXJuIGNvbW1pdHRlZEJ5dGVzQ291
bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwCmluZGV4IDU0MzNjNzFjNzM3Yjk1YWRmYTZiYjc2ZjdlOGM1MDM1MGU1MDI1YzYu
LjljZDUyNTI1ZTZjNzIyZjcwZDg4ZTRlNjkzYjE1Yjk2Y2Q3MTEwMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMTA1OCw3
ICsxMDU4LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qgdm9p
ZCogc3JjLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgYnVmZmVyID0gYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPihtYWxsb2MoYnVmZmVyU2l6ZSkpOwogICAgICAgICBmbHVzaFF1ZXVlLmNvbnN0cnVjdChX
b3JrUXVldWU6OmNyZWF0ZSgianNjLmR1bXBKSVRNZW1vcnkucXVldWUiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpKTsKICAgICAgICAgc3RkOjph
dGV4aXQoW10gewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZHVtcEpJVE1lbW9yeUxv
Y2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGR1bXBKSVRNZW1vcnlMb2NrIH07CiAg
ICAgICAgICAgICBmbHVzaChsb2NrZXIpOwogICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAg
ICAgICAgZmQgPSAtMTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgZHVtcEpJVE1lbW9yeShj
b25zdCB2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IHNpemUpCiAKICAgICAgICAg
bmVlZHNUb0ZsdXNoID0gdHJ1ZTsKICAgICAgICAgZmx1c2hRdWV1ZS5nZXQoKS0+ZGlzcGF0Y2hB
ZnRlcihTZWNvbmRzKE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlGbHVzaEludGVydmFsKCkpLCBbXSB7
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihkdW1wSklUTWVtb3J5TG9jayk7CisgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZHVtcEpJVE1lbW9yeUxvY2sgfTsKICAgICAgICAgICAg
IGlmICghbmVlZHNUb0ZsdXNoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGZsdXNoKGxvY2tlcik7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIGR1bXBKSVRNZW1vcnko
Y29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAgICBl
bnF1ZXVlRmx1c2gobG9ja2VyKTsKICAgICB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoZHVt
cEpJVE1lbW9yeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBkdW1wSklUTWVtb3J5TG9jayB9
OwogICAgIHVpbnQ2NF90IHRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKICAgICB1aW50NjRf
dCBkc3Q2NCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGRzdCk7CiAgICAgdWludDY0X3Qgc2l6
ZTY0ID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwCmluZGV4IDgxMzVi
NGZkZWU2MmY3OGU5ZGM2YjQ2MmQ2Y2VlY2E0ZmQxYzYwNjYuLjdkMWE3NDRkZjc2Y2U1ZWY1OTA1
MjZkNTBjNTA0MmU4NWIxMWZjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmNw
cApAQCAtNjYsNyArNjYsNyBAQCBJQ1N0YXRzOjpJQ1N0YXRzKCkKICAgICBtX3RocmVhZCA9IFRo
cmVhZDo6Y3JlYXRlKAogICAgICAgICAiSlNDIElDU3RhdHMiLAogICAgICAgICBbdGhpc10gKCkg
ewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAg
ICAgICAgICBtX2NvbmRpdGlvbi53YWl0Rm9yKAogICAgICAgICAgICAgICAgICAgICBtX2xvY2ss
IFNlY29uZHMoMSksIFt0aGlzXSAoKSAtPiBib29sIHsgcmV0dXJuIG1fc2hvdWxkU3RvcDsgfSk7
CkBAIC04NCw3ICs4NCw3IEBAIElDU3RhdHM6OklDU3RhdHMoKQogSUNTdGF0czo6fklDU3RhdHMo
KQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX3Nob3VsZFN0b3AgPSB0cnVlOwog
ICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMzI1NTM0ZWI5NmZjZmFiMTI4NGRhYTg1NDg3ZDM4
M2NlOGI4MmI1OS4uMzE5YjUwZDk0MmQ1YTk0ZDllOWJkMGZmNDJlNTNkY2E3MzEyYmU3NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlJbnRl
cm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZNCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUVGh1bmtzOjpjdGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJh
dG9yKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1
Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
KCkpOwogICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIENvbXBpbGF0aW9u
IHRocmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgpAQCAtMTQzLDcgKzE0
Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpj
dGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmV4aXN0aW5nQ1RJU3R1YihUaHVua0dlbmVyYXRvciBn
ZW5lcmF0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGV4aXN0aW5nQ1RJU3R1YihnZW5lcmF0b3Is
IE5vTG9ja2luZ05lY2Vzc2FyeSk7CiB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHViKFRo
dW5rR2VuZXJhdG9yCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
VGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRoRnVuY3Rpb24g
c2xvd1BhdGhGdW5jdGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2FzdDxU
aHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgQ1RJU3R1Yk1hcDo6QWRkUmVz
dWx0IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChrZXksIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4oKSk7CiAgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKaW5kZXggNTM5YjZmYTljYWE4MzI5MTU0
NGM4YWQzNzlkMjI2MDI4NDc0YjU5NC4uYTcwNTJlNzlmMGE3NDM2N2ZlM2ZkYzVhM2NmNmQ1Mzhl
NjkzMjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9qaXQuY29tcGlsZUFuZExp
bmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBtX2lzRmluaXNoZWRDb21waWxpbmcgPSB0cnVlOwogICAgIH0K
ICAgICAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNGaW5pc2hl
ZENvbXBpbGluZygpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHJldHVybiBtX2lzRmlu
aXNoZWRDb21waWxpbmc7CiAgICAgfQogICAgIApAQCAtMTM4LDEzICsxMzgsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG1haW4g
dGhyZWFkIHJlYWxpemVzIHRoYXQgd2UganVzdCBjb21waWxlZCBzb21ldGhpbmcuIE5vdGlmeWlu
ZwogICAgICAgICAgICAgLy8gYSBjb25kaXRpb24gaXMgYmFzaWNhbGx5IGZyZWUgaWYgbm9ib2R5
IGlzIHdhaXRpbmcuCi0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5t
X2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9
OwogICAgICAgICAgICAgbV93b3JrbGlzdC5tX2NvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fbXlQbGFucy5jbGVhcigpOwogICAgICAg
ICAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICBtX3dvcmts
aXN0Lm1fbnVtQXZhaWxhYmxlVGhyZWFkcysrOwogICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6
Q29udGludWU7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIEpJVFdvcmtsaXN0OjpKSVRXb3Jr
bGlzdCgpCiAgICAgOiBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fY29uZGl0
aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBt
X3RocmVhZCA9IG5ldyBUaHJlYWQobG9ja2VyLCAqdGhpcyk7CiB9CiAKQEAgLTE4NCw3ICsxODQs
NyBAQCBib29sIEpJVFdvcmtsaXN0Ojpjb21wbGV0ZUFsbEZvclZNKFZNJiB2bSkKICAgICBmb3Ig
KDs7KSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDMyPiBteVBsYW5zOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBkaWRGaW5kVW5maW5pc2hlZFBsYW4gPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBtX3BsYW5zLnJlbW92ZUFsbE1hdGNoaW5nKApAQCAtMjIzLDcgKzIyMyw3IEBAIHZv
aWQgSklUV29ya2xpc3Q6OnBvbGwoVk0mIHZtKQogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKICAgICBQbGFucyBteVBsYW5zOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Km1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIG1f
cGxhbnMucmVtb3ZlQWxsTWF0Y2hpbmcoCiAgICAgICAgICAgICBbJl0gKFJlZlB0cjxQbGFuPiYg
cGxhbikgewogICAgICAgICAgICAgICAgIGlmICgmcGxhbi0+dm0oKSAhPSAmdm0pCkBAIC0yNTYs
NyArMjU2LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZUxhdGVyKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUIKICAgICBjb2RlQmxvY2stPmppdFNv
b24oKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIAogICAgICAgICBpZiAobV9w
bGFubmVkLmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTUs
NyArMjk1LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyhQbGFucyYgbXlQbGFu
cykKICAgICBmb3IgKFJlZlB0cjxQbGFuPiYgcGxhbiA6IG15UGxhbnMpIHsKICAgICAgICAgcGxh
bi0+ZmluYWxpemUodHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9w
bGFubmVkLnJlbW92ZShwbGFuLT5jb2RlQmxvY2soKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcAppbmRleCAwM2U1NWVlM2Qx
ZmYyMDI1ODZhZjJiZWE4ZDc5MWQ1MTUzYTE4N2IwLi42MDZlNWYxNzQ0YWYwZjYxMGRkY2NlNzYx
YmM5M2UzMjIzYjk1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgTG9jayBwcm92aWRlcklk
TG9jazsKIAogdm9pZCBTb3VyY2VQcm92aWRlcjo6Z2V0SUQoKQogewotICAgIExvY2tIb2xkZXIg
bG9jaygmcHJvdmlkZXJJZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBwcm92aWRlcklkTG9j
ayB9OwogICAgIGlmICghbV9pZCkgewogICAgICAgICBzdGF0aWMgaW50cHRyX3QgbmV4dFByb3Zp
ZGVySUQgPSAwOwogICAgICAgICBtX2lkID0gKytuZXh0UHJvdmlkZXJJRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAppbmRleCA3
NTIxYTFkN2FiYTM4N2I0YTFkYzhiZTZmNjIyMWMxNGIyZjFiZmIwLi4yZDI2ZWUxYTBkNzYzNjJh
OTdhY2FiZWZjMjNjZGFiYjU4N2Y5OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC01OCw3ICs1OCw3IEBAIERhdGFi
YXNlOjp+RGF0YWJhc2UoKQogCiBCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNG
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGVuc3VyZUJ5dGVj
b2Rlc0Zvcihsb2NrZXIsIGNvZGVCbG9jayk7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgQnl0ZWNv
ZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
Q29kZUJsb2NrKiBjb2RlQmwKIAogdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgbV9ieXRlY29kZXNNYXAucmVt
b3ZlKGNvZGVCbG9jayk7CiAgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJsb2NrKTsK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAKIHZvaWQgRGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBSZWY8Q29tcGlsYXRpb24+JiYgY29tcGlsYXRpb24pCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogCiAgICAgbV9jb21waWxhdGlvbnMu
YXBwZW5kKGNvbXBpbGF0aW9uLmNvcHlSZWYoKSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBE
YXRhYmFzZTo6cmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29uc3QgY2hhciogZmlsZW5hbWUpCiAKIHZv
aWQgRGF0YWJhc2U6OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyKiBz
dW1tYXJ5LCBjb25zdCBDU3RyaW5nJiBkZXRhaWwpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgQnl0ZWNv
ZGVzKiBieXRlY29kZXMgPSBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2VyLCBjb2RlQmxvY2spOwog
ICAgIENvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IG1fY29tcGlsYXRpb25NYXAuZ2V0KGNvZGVC
bG9jayk7CkBAIC0xODYsMTQgKzE4NiwxNCBAQCB2b2lkIERhdGFiYXNlOjphZGREYXRhYmFzZVRv
QXRFeGl0KCkKICAgICBpZiAoKytkaWRSZWdpc3RlckF0RXhpdCA9PSAxKQogICAgICAgICBhdGV4
aXQoYXRFeGl0Q2FsbGJhY2spOwogICAgIAotICAgIExvY2tIb2xkZXIgaG9sZGVyKHJlZ2lzdHJh
dGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3RyYXRpb25Mb2NrIH07CiAgICAg
bV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlID0gZmlyc3REYXRhYmFzZTsKICAgICBmaXJzdERhdGFi
YXNlID0gdGhpczsKIH0KIAogdm9pZCBEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2VGcm9tQXRFeGl0
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAgIGZvciAoRGF0YWJhc2UqKiBjdXJy
ZW50ID0gJmZpcnN0RGF0YWJhc2U7ICpjdXJyZW50OyBjdXJyZW50ID0gJigqY3VycmVudCktPm1f
bmV4dFJlZ2lzdGVyZWREYXRhYmFzZSkgewogICAgICAgICBpZiAoKmN1cnJlbnQgIT0gdGhpcykK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRGF0YWJhc2U6
OnBlcmZvcm1BdEV4aXRTYXZlKCkgY29uc3QKIAogRGF0YWJhc2UqIERhdGFiYXNlOjpyZW1vdmVG
aXJzdEF0RXhpdERhdGFiYXNlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRp
b25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAgIERh
dGFiYXNlKiByZXN1bHQgPSBmaXJzdERhdGFiYXNlOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAg
ICAgZmlyc3REYXRhYmFzZSA9IHJlc3VsdC0+bV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAKaW5kZXggODdj
OTdjZmQ4YjUwNGZjNzZmOTFjMDQ3NmZkYjcxYzdjODhmYWUyMC4uZjAwMGM5ODg4M2Y2MGQ0OTUz
YWFmMzI0ODM1ZTk3NWRmZGQxMmU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJVSUQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFVJRCBVSUQ6OmNyZWF0ZSgp
CiAgICAgc3RhdGljIExvY2sgbG9jazsKICAgICBzdGF0aWMgdWludDY0X3QgY291bnRlcjsKICAg
ICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9j
ayB9OwogICAgIFVJRCByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fdWlkID0gKytjb3VudGVyOwogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggMjlkNWRmZTc4YWIyOTQ3ZTM5YmNlNjk3NzA0Mjk3
N2ZkYTEyMjQ0NS4uMWYyZGJlYWZjNGQ2MWFmNDhlNjM5ZmM1OWJmZDI0ZDQ1YWUwZGRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVy
LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0RlcGVu
ZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kCiAKIHZvaWQg
RGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFzayYm
IHRhc2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdHVw
bGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmICFt
X2N1cnJlbnRseVJ1bm5pbmdUYXNrKQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CkBA
IC0xNzQsNyArMTc0LDcgQEAgYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dv
cmsoVGlja2V0IHRpY2tldCkKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRpZFJlc3VtZVNjcmlw
dEV4ZWN1dGlvbk93bmVyKCkKIHsKICAgICBBU1NFUlQoIW1fY3VycmVudGx5UnVubmluZ1Rhc2sp
OwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmIG1fdGFza3Muc2l6ZSgp
KQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDVmZjU4N2VlOTQw
MTU4ZTY0ZWU5ZDE2MGJmNjAwNDRhMWI2OWRmNDMuLmQ3MWYzZWMxOWZmMzY3NDY3NzA3ZmU1MmI4
ODAyNGM1NjI3YTE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBTYW1wbGluZ1By
b2ZpbGVyOjp0aW1lckxvb3AoKQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFNlY29uZHMg
c3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lID0gMF9zOwogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1faXNTaHV0RG93bikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC02NzEsMTMgKzY3MSwxMyBAQCB0ZW1wbGF0ZSB2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6OnZpc2l0KFNsb3RWaXNpdG9yJik7CiAKIHZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6c2h1dGRvd24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1faXNTaHV0RG93biA9IHRydWU7CiB9CiAK
IHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6c3RhcnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHN0YXJ0KGxvY2tl
cik7CiB9CiAKQEAgLTcwMywxOSArNzAzLDE5IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90
aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9jCiAK
IHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9u
VGhyZWFkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICBub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRpb25U
aHJlYWQobG9ja2VyKTsKIH0KIAogdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpub3RpY2VKU0xvY2tB
Y3F1aXNpdGlvbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0
aW9uVGhyZWFkKGxvY2tlcik7CiB9CiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1F
bnRyeSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKG1fdm0uZW50cnlTY29wZSk7CiAgICAgbm90aWNl
Q3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiAgICAgbV9sYXN0VGlt
ZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQg
U2FtcGxpbmdQcm9maWxlcjo6cmVnaXN0ZXJGb3JSZXBvcnRBdEV4aXQoKQogICAgIHN0YXRpYyBM
b2NrIHJlZ2lzdHJhdGlvbkxvY2s7CiAgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNhbXBsaW5n
UHJvZmlsZXI+PiogcHJvZmlsZXNUb1JlcG9ydDsKIAotICAgIExvY2tIb2xkZXIgaG9sZGVyKHJl
Z2lzdHJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3RyYXRpb25Mb2NrIH07
CiAKICAgICBpZiAoIXByb2ZpbGVzVG9SZXBvcnQpIHsKICAgICAgICAgcHJvZmlsZXNUb1JlcG9y
dCA9IG5ldyBIYXNoU2V0PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAppbmRleCA0ZjVkNWM0ZTQ1MWJhMTYxMTdh
MjdhMWY3Nzk0ODE3MmU1OTYzNGFmLi40ZGFjNWUxOTg4MDI2YzdlZWE5YmQyNDg0MTQ0NzRlYTUz
NGEyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRv
Zy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RhcnRUaW1lcihTZWNvbmRzIHRpbWVM
aW1pdCkKICAgICAvLyB2aWEgd2lsbERlc3Ryb3lWTSgpIGJlZm9yZSBpdCBnb2VzIGF3YXkuCiAg
ICAgUmVmUHRyPFdhdGNoZG9nPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKICAgICBtX3RpbWVyUXVl
dWUtPmRpc3BhdGNoQWZ0ZXIodGltZUxpbWl0LCBbdGhpcywgcHJvdGVjdGVkVGhpc10gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAgICAgICAgIGlmIChtX3ZtKQogICAgICAgICAgICAgbV92bS0+bm90aWZ5TmVl
ZFdhdGNoZG9nQ2hlY2soKTsKICAgICB9KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFdhdGNo
ZG9nOjpzdG9wVGltZXIoKQogCiB2b2lkIFdhdGNoZG9nOjp3aWxsRGVzdHJveVZNKFZNKiB2bSkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICBBU1NFUlRfVU5VU0VEKHZtLCBtX3ZtID09IHZtKTsKICAgICBtX3ZtID0g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUlu
c3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3Bw
CmluZGV4IGVkODhmZjJjNzRhZjI1YzIzOTAxZTZlZTY0ODk3ZTc5ZmNiMmEzNzAuLmU0OWRhZTFl
MWJjOWRkNzBjOWViMjAyZDg3NzA5ZmNjNmNhNjcwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGF1dG8gVk1JbnNw
ZWN0b3I6OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IFZNSW5zcGVjdG9yOjpMb2NrZXIm
LCB2b2lkKiBtYWNoCiAgICAgICAgICAgICByZXR1cm4gRnVuY3RvclN0YXR1czo6Q29udGludWU7
IC8vIFNraXAgdGhpcyBWTS4KICAgICAgICAgfQogCi0gICAgICAgIExvY2tIb2xkZXIgZXhlY3V0
YWJsZUFsbG9jYXRvckxvY2tlcihsb2NrKTsKKyAgICAgICAgTG9ja2VyIGV4ZWN1dGFibGVBbGxv
Y2F0b3JMb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGlmIChhbGxvY2F0b3IuaXNWYWxpZEV4ZWN1
dGFibGVNZW1vcnkoZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciwgbWFjaGluZVBDKSkgewogICAg
ICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JTdGF0dXM6
OkRvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
MzZlZjY0ZGEzMzVjNzQ4ZWM1NzQ3YTIxYWMwZTI3MGM5YzM1NmUxMi4uZjc4ZWQyNTU0NjQxNDMz
OTU3YWJkYmM4YWJhNzBkYzM5YTZhYjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQkJRUGxhbjo6d29yayhD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIC8vIGFsd2F5cyBjYWxsIHRoZSBmYXN0
ZXN0IGNvZGUuIEFueSBmdW5jdGlvbiBsaW5rZWQgYWZ0ZXIgdXMgd2lsbCBzZWUgb3VyIG5ldyBj
b2RlIGFuZCB0aGUgbmV3IGNhbGxzaXRlcywgd2hpY2ggdGhleQogICAgICAgICAvLyB3aWxsIHVw
ZGF0ZS4gSXQncyBhbHNvIG9rIGlmIHRoZXkgcHVibGlzaCB0aGVpciBjb2RlIGJlZm9yZSB3ZSBy
ZXNldCB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGVzIGJlY2F1c2UgYWZ0ZXIgd2UgcmVsZWFzZQogICAg
ICAgICAvLyB0aGUgbG9jayBvdXIgY29kZSBpcyByZWFkeSB0byBiZSBwdWJsaXNoZWQgdG9vLgot
ICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fY29kZUJsb2NrLT5tX2xvY2sgfTsKIAogICAgICAgICBtX2NvZGVC
bG9jay0+bV9iYnFDYWxsZWVzW21fZnVuY3Rpb25JbmRleF0gPSBjYWxsZWUuY29weVJlZigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCmluZGV4IDlk
MmMyNGQ4ZWEwMjlhMGE5NWU0MjU4YWEyMDlmMGYzYzg3MTU1OTkuLjZmZWIxNTc3MzRkZmM5ZmJi
OGIyYWY0Y2E2M2M3ZWFjMGYwNDNhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgVGhy
ZWFkQ291bnRIb2xkZXIoRW50cnlQbGFuJiBwbGFuKQogICAgICAgICA6IG1fcGxhbihwbGFuKQog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wbGFuLm1fbG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3BsYW4ubV9sb2NrIH07CiAgICAgICAgIG1fcGxhbi5tX251bWJl
ck9mQWN0aXZlVGhyZWFkcysrOwogICAgIH0KIAogICAgIH5UaHJlYWRDb3VudEhvbGRlcigpCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BsYW4ubV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcGxhbi5tX2xvY2sgfTsKICAgICAgICAgbV9wbGFuLm1fbnVtYmVy
T2ZBY3RpdmVUaHJlYWRzLS07CiAKICAgICAgICAgaWYgKCFtX3BsYW4ubV9udW1iZXJPZkFjdGl2
ZVRocmVhZHMgJiYgIW1fcGxhbi5oYXNXb3JrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HUGxhbi5jcHAKaW5kZXggOGMyMzg4YjE2ZjBjZTE0OGQ3ZDhhMTM1NjI2ZGE2ZjVk
MzRlOTRjYi4uZWRmZDY4YWZjNGE2NmRmZTA2MDMwNzZkZjFlYTM5ZmZmOTVkNWUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgLy8gYWx3
YXlzIGNhbGwgdGhlIGZhc3Rlc3QgY29kZS4gQW55IGZ1bmN0aW9uIGxpbmtlZCBhZnRlciB1cyB3
aWxsIHNlZSBvdXIgbmV3IGNvZGUgYW5kIHRoZSBuZXcgY2FsbHNpdGVzLCB3aGljaCB0aGV5CiAg
ICAgICAgIC8vIHdpbGwgdXBkYXRlLiBJdCdzIGFsc28gb2sgaWYgdGhleSBwdWJsaXNoIHRoZWly
IGNvZGUgYmVmb3JlIHdlIHJlc2V0IHRoZSBpbnN0cnVjdGlvbiBjYWNoZXMgYmVjYXVzZSBhZnRl
ciB3ZSByZWxlYXNlCiAgICAgICAgIC8vIHRoZSBsb2NrIG91ciBjb2RlIGlzIHJlYWR5IHRvIGJl
IHB1Ymxpc2hlZCB0b28uCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29kZUJsb2NrLT5t
X2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2RlQmxvY2stPm1fbG9jayB9Owog
CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX29tZ0NhbGxlZXNbbV9mdW5jdGlvbkluZGV4XSA9IGNh
bGxlZS5jb3B5UmVmKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApp
bmRleCBjNmE5MDRkNjg0NDExZDIwNmVhMGZhOTRkMzk4ZmUwNzEyMTdlNmJmLi5mNzM1YjQwOTJk
Y2Y3OGY3ODY2MzYzYjgwZTJjMmQ2NWIyODkwNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUGxhbjo6cnVuQ29tcGxldGlv
blRhc2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIAogdm9pZCBQbGFuOjphZGRDb21wbGV0aW9u
VGFzayhDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgaWYgKCFpc0NvbXBsZXRlKCkpCiAgICAgICAgIG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihjb250ZXh0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgZWxzZQpAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIFBsYW46OmFkZENvbXBsZXRpb25UYXNrKENvbnRleHQqIGNvbnRleHQs
IENvbXBsZXRpb25UYXNrJiYgdGFzaykKIAogdm9pZCBQbGFuOjp3YWl0Rm9yQ29tcGxldGlvbigp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpIHsKICAgICAgICAgbV9jb21wbGV0ZWQu
d2FpdChtX2xvY2spOwogICAgIH0KQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQbGFuOjp3YWl0Rm9y
Q29tcGxldGlvbigpCiAKIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENhbmNlbElmTGFz
dChDb250ZXh0JiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7
CiAgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21wbGV0aW9uIHRhc2sgdG8gbm90IGhh
dmUgYSBDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmNwcAppbmRleCA2MjQ1YTMxZDAwYzFlMDFlNzQ3ODBlNzBiMTA5YTBlNzVkNmRkNjI3Li42YjIw
ZDA4OTQ1NDIwNjc5ZTc2MjdlZTBjOGRjMTliZGM5ODY3Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0cnVj
dCBQYXJhbWV0ZXJUeXBlcyB7CiBSZWZQdHI8U2lnbmF0dXJlPiBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZlY3RvcjxUeXBlLCAxPiYgcmVzdWx0cywgY29uc3QgVmVj
dG9yPFR5cGU+JiBhcmdzKQogewogICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2lu
Z2xldG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgaW5mby5tX2xvY2sgfTsKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3Np
Z25hdHVyZVNldC50ZW1wbGF0ZSBhZGQ8UGFyYW1ldGVyVHlwZXM+KFBhcmFtZXRlclR5cGVzIHsg
cmVzdWx0cywgYXJncyB9KTsKICAgICByZXR1cm4gbWFrZVJlZigqYWRkUmVzdWx0Lml0ZXJhdG9y
LT5rZXkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIFJlZlB0cjxTaWduYXR1cmU+IFNpZ25hdHVyZUlu
Zm9ybWF0aW9uOjpzaWduYXR1cmVGb3IoY29uc3QgVmVjdG9yPFR5cGUsIDE+JiByZXN1CiB2b2lk
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKIHsKICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07CiAKICAgICBpbmZvLm1f
c2lnbmF0dXJlU2V0LnJlbW92ZUlmKFsmXSAoYXV0byYgaGFzaCkgewogICAgICAgICBjb25zdCBh
dXRvJiBzaWduYXR1cmUgPSBoYXNoLmtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtV29ya2xpc3QuY3BwCmluZGV4IDBjYzZlZmZiZDc5NDhjYzBkM2NlODQxYTg5MzVmNmQ1Nzll
YjUwZjguLjViYWQwZDkwYTU2MmUyNWRkZTgxN2I1ODJjMDYwNjY1NmM5MDZlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKCFwbGFuLT5oYXNXb3JrKCkgfHwgcGxhbi0+
bXVsdGlUaHJlYWRlZCgpKTsKICAgICAgICAgaWYgKHBsYW4tPmhhc1dvcmsoKSAmJiAhd2FzTXVs
dGlUaHJlYWRlZCAmJiBwbGFuLT5tdWx0aVRocmVhZGVkKCkpIHsKLSAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKCp3b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7ICp3b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGVsZW1lbnQuc2V0VG9OZXh0UHJp
b3JpdHkoKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcXVldWUuZW5xdWV1ZShXVEZNb3ZlKGVs
ZW1lbnQpKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwo
bG9ja2VyKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdvcmtsaXN0OjpRdWV1ZUVsZW1lbnQ6
OnNldFRvTmV4dFByaW9yaXR5KCkKIAogdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4g
cGxhbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgKm1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fcXVldWUpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikKIHZvaWQgV29ya2xpc3Q6OmNvbXBs
ZXRlUGxhblN5bmNocm9ub3VzbHkoUGxhbiYgcGxhbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9
OwogICAgICAgICBtX3F1ZXVlLmRlY3JlYXNlS2V5KFsmXSAoUXVldWVFbGVtZW50JiBlbGVtZW50
KSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5wbGFuID09ICZwbGFuKSB7CiAgICAgICAgICAg
ICAgICAgZWxlbWVudC5wcmlvcml0eSA9IFByaW9yaXR5OjpTeW5jaHJvbm91czsKQEAgLTE4OSw3
ICsxODksNyBAQCB2b2lkIFdvcmtsaXN0Ojpjb21wbGV0ZVBsYW5TeW5jaHJvbm91c2x5KFBsYW4m
IHBsYW4pCiAKIHZvaWQgV29ya2xpc3Q6OnN0b3BBbGxQbGFuc0ZvckNvbnRleHQoQ29udGV4dCYg
Y29udGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogICAgIFZlY3RvcjxRdWV1ZUVsZW1lbnQ+IGVsZW1lbnRzOwog
ICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgUXVldWVFbGVtZW50IGVs
ZW1lbnQgPSBtX3F1ZXVlLmRlcXVldWUoKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBXb3JrbGlzdDo6
V29ya2xpc3QoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzID0g
T3B0aW9uczo6dXNlQ29uY3VycmVudEpJVCgpID8ga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vz
c29yQ29yZXMoKSA6IDE7CiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNv
bXBpbGF0aW9uVGhyZWFkcyk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKICAgICAgICAgbV90aHJlYWRzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsK
IH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoKQogV29ya2xpc3Q6On5X
b3JrbGlzdCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9xdWV1ZS5lbnF1
ZXVlKHsgUHJpb3JpdHk6OlNodXRkb3duLCBuZXh0VGlja2V0KCksIG51bGxwdHIgfSk7CiAgICAg
ICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2Jl
bmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggYjIwZGQ3ZTcxMzYxMjBmMWUwOWQ1MTZl
NWYyMzQyYWMzMWNlNDExNi4uMDE0NDAyMDI5MTUzZWRmMTZhOWMzZTUxMjYyZDJlYTU4MjYxNzI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteU51bUl0ZXJhdGlvbnMrKzsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG51bUl0ZXJhdGlvbnNMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBudW1JdGVyYXRpb25zTG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgbnVt
SXRlcmF0aW9ucyArPSBteU51bUl0ZXJhdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFk
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKaW5kZXggODdiOTFmMTA1
YzcyZDA0NjBkNjE3ZTM4NTU3M2NlY2VjYjI3Y2E1NC4uZjRlYTc4ZDEzZTFjZGRiNjE5YjgyMjg2
OGQzM2M3MjdjOWYyZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgQXV0b21hdGljVGhyZWFkOjp+QXV0b21hdGljVGhyZWFkKCkKIHsKICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBEZWxldGlu
ZyBBdXRvbWF0aWNUaHJlYWQuXG4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIAogICAgIC8vIEl0J3MgcG9zc2li
bGUgdGhhdCB3ZSdyZSBpbiBhIHdhaXRpbmcgc3RhdGUgd2l0aCB0aGUgdGhyZWFkIHNodXQgZG93
bi4gVGhpcyBpcyBhIGdvb2Z5IHdheSB0bwogICAgIC8vIGRpZSwgYnV0IGl0IGNvdWxkIGhhcHBl
bi4KQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIEF1dG9tYXRpY1RocmVhZDo6bm90aWZ5KGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAKIHZvaWQgQXV0b21hdGljVGhyZWFkOjpqb2luKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
Km1fbG9jayB9OwogICAgIHdoaWxlIChtX2lzUnVubmluZykKICAgICAgICAgbV9pc1J1bm5pbmdD
b25kaXRpb24ud2FpdCgqbV9sb2NrKTsKIH0KQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEF1dG9t
YXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgdGhy
ZWFkLT50aHJlYWREaWRTdGFydCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoQVNT
RVJUX0VOQUJMRUQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2NvbmRpdGlvbi0+Y29udGFpbnMobG9ja2VyLCB0aGlzKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEF1dG9tYXRp
Y1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKGxvY2tlcik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFBvbGxSZXN1bHQ6OldvcmspCkBA
IC0yMjgsNyArMjI4LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3Ry
YWN0TG9ja2VyJikKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBXb3JrUmVzdWx0
IHJlc3VsdCA9IHdvcmsoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFdvcmtSZXN1
bHQ6OlN0b3ApIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzdG9wUGVybWFuZW50bHkobG9ja2VyKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0ID09IFdvcmtS
ZXN1bHQ6OkNvbnRpbnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1Ro
cmVhZC5oIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKaW5kZXggNmQ1NTdiYzNi
NmNkOTRjMzE0YzJmMDk0MDlkZjk3MjBjNmQ5YjhkOC4uOGQ3YzJiNTE2ODBhM2VhNjcyOGU1MTc0
ZmM4MTgwNjhkZWU5NWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAvLwogLy8gICAgIGZvciAoOzspIHsKIC8vICAgICAgICAg
ewotLy8gICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKy8vICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIC8vICAgICAgICAgICAgIGZvciAoOzspIHsK
IC8vICBbMV0gICAgICAgICAgICBzdHVmZiB0aGF0IGNvdWxkIGJyZWFrLCByZXR1cm4sIG9yIGZh
bGwgdGhyb3VnaDsKIC8vICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7
CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHsKICAgICAvLyAgICAgZm9y
ICg7OykgewogICAgIC8vICAgICAgICAgewotICAgIC8vICAgICAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgLy8gICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgIC8vICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAvLyAgICAgICAgICAgICAg
ICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKCk7CiAgICAgLy8gICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gUG9sbFJlc3VsdDo6V29yaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAKaW5k
ZXggZDdjOGVkZWNlYjljMTEyYWI1MDM4NDBkYjRmZjU2YmY3N2E1MmEzMi4uZWVmODliNzdlN2Jk
ZGZjZDY3NjVkNjczYWE1NjVhMDY3N2NkNzBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TWV0YUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmsoc2l6ZV90
IG5ld1NpemVJbkJ5dGVzKQogICAgIEFTU0VSVChuZXdTaXplSW5CeXRlcyA8PSBzaXplSW5CeXRl
cyk7CiAKICAgICBNZXRhQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSB0aGlzLT5hbGxvY2F0b3IoKTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcigmYWxsb2NhdG9yLm1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGFsbG9jYXRvci5tX2xvY2sgfTsKIAogICAgIG5ld1NpemVJbkJ5dGVzID0gYWxsb2Nh
dG9yLnJvdW5kVXAobmV3U2l6ZUluQnl0ZXMpOwogICAgIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZv
aWQgTWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNlRnJvbVJlbGVhc2VkSGFuZGxlKEZyZWVTcGFj
ZVB0ciBzdGFydCwgc2l6ZV90IHNpCiB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJlZVNw
YWNlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiB7CiAgICAgQ29uZmlnOjpBc3Nl
cnROb3RGcm96ZW5TY29wZSBhc3NlcnROb3RGcm96ZW5TY29wZTsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcigmbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV9ieXRl
c1Jlc2VydmVkICs9IHNpemVJbkJ5dGVzOwogICAgIGFkZEZyZWVTcGFjZShGcmVlU3BhY2VQdHI6
Om1ha2VGcm9tUmF3UG9pbnRlcihzdGFydCksIHNpemVJbkJ5dGVzKTsKIH0KQEAgLTI5NSw3ICsy
OTUsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJlZVNwYWNlKHZvaWQqIHN0YXJ0
LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiBzaXplX3QgTWV0YUFsbG9jYXRvcjo6ZGVidWdGcmVlU3Bh
Y2VTaXplKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHNpemVfdCByZXN1bHQgPSAw
OwogICAgIGZvciAoRnJlZVNwYWNlTm9kZSogbm9kZSA9IG1fZnJlZVNwYWNlU2l6ZU1hcC5maXJz
dCgpOyBub2RlOyBub2RlID0gbm9kZS0+c3VjY2Vzc29yKCkpCiAgICAgICAgIHJlc3VsdCArPSBu
b2RlLT5zaXplSW5CeXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxI
ZWxwZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAKaW5k
ZXggN2MwNTZiYTE1MTIwMGY3NjlkYzZiYzkyNDQxOWNjMzY4YzcyMTg2NS4uNDQzZDczMTNlNmJh
ZDAyODQzNDllNjEwN2YyMDM5N2Y5M2Y0M2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGFyYWxsZWxIZWxwZXJQb29sLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhlbHBl
clBvb2wuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiBQYXJhbGxlbEhl
bHBlckNsaWVudDo6UGFyYWxsZWxIZWxwZXJDbGllbnQoUmVmUHRyPFBhcmFsbGVsSGVscGVyUG9v
bD4mJiBwb29sKQogICAgIDogbV9wb29sKFdURk1vdmUocG9vbCkpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+
bV9sb2NrIH07CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9vbC0+bV9pc0R5aW5nKTsKICAgICBt
X3Bvb2wtPm1fY2xpZW50cy5hcHBlbmQodGhpcyk7CiB9CiAKIFBhcmFsbGVsSGVscGVyQ2xpZW50
Ojp+UGFyYWxsZWxIZWxwZXJDbGllbnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Bv
b2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wtPm1fbG9jayB9OwogICAg
IGZpbmlzaChsb2NrZXIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvb2wtPm1f
Y2xpZW50cy5zaXplKCk7ICsraSkgewpAQCAtNTQsNyArNTQsNyBAQCBQYXJhbGxlbEhlbHBlckNs
aWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KCkKIAogdm9pZCBQYXJhbGxlbEhlbHBlckNsaWVu
dDo6c2V0VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4mJiB0YXNrKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICpt
X3Bvb2wtPm1fbG9jayB9OwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2spOwogICAgIG1fdGFz
ayA9IFdURk1vdmUodGFzayk7CiAgICAgbV9wb29sLT5kaWRNYWtlV29ya0F2YWlsYWJsZShsb2Nr
ZXIpOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFBhcmFsbGVsSGVscGVyQ2xpZW50OjpzZXRUYXNr
KFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiYmIHRhc2spCiAKIHZvaWQgUGFyYWxsZWxIZWxw
ZXJDbGllbnQ6OmZpbmlzaCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC0+bV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgZmluaXNo
KGxvY2tlcik7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBQYXJhbGxlbEhlbHBlckNsaWVu
dDo6ZG9Tb21lSGVscGluZygpCiB7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+IHRh
c2s7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgICAgIHRhc2sg
PSBjbGFpbVRhc2sobG9ja2VyKTsKICAgICAgICAgaWYgKCF0YXNrKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OnJ1blRh
c2soY29uc3QgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+JiB0YXNrKQogICAgIHRhc2stPnJ1
bigpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbnVtQWN0aXZlKTsKICAgICAgICAgLy8gTm8gbmV3IHRhc2sgY291bGQg
aGF2ZSBiZWVuIGluc3RhbGxlZCwgc2luY2Ugd2Ugd2VyZSBzdGlsbCBhY3RpdmUuCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2sgfHwgbV90YXNrID09IHRhc2spOwpAQCAtMTMzLDcgKzEz
Myw3IEBAIFBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVscGVyUG9vbCgpCiAgICAgUkVM
RUFTRV9BU1NFUlQobV9jbGllbnRzLmlzRW1wdHkoKSk7CiAgICAgCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xv
Y2sgfTsKICAgICAgICAgbV9pc0R5aW5nID0gdHJ1ZTsKICAgICAgICAgbV93b3JrQXZhaWxhYmxl
Q29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CkBAIC0xNDQsNyArMTQ0LDcgQEAg
UGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKCkKIAogdm9pZCBQYXJhbGxl
bEhlbHBlclBvb2w6OmVuc3VyZVRocmVhZHModW5zaWduZWQgbnVtVGhyZWFkcykKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9
OwogICAgIGlmIChudW1UaHJlYWRzIDwgbV9udW1UaHJlYWRzKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9udW1UaHJlYWRzID0gbnVtVGhyZWFkczsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFBh
cmFsbGVsSGVscGVyUG9vbDo6ZG9Tb21lSGVscGluZygpCiAgICAgUGFyYWxsZWxIZWxwZXJDbGll
bnQqIGNsaWVudDsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4gdGFzazsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgKm1fbG9jayB9OwogICAgICAgICBjbGllbnQgPSBnZXRDbGllbnRXaXRoVGFzayhsb2Nr
ZXIpOwogICAgICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5j
cHAKaW5kZXggNWE4MWYwOWQ5YjdkZTRkZDhmMzBlODk0YjkyZjU5MjIzMTZkZmI5NC4uZDYwN2M5
NzI5YWYxNjdmZmI3YWQyYTY2NmExNjQ3MGI3ZGZiNDkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5jcHAKQEAgLTg2
LDcgKzg2LDcgQEAgdm9pZCBzbGVlcChTZWNvbmRzIHZhbHVlKQogCiAgICAgTG9jayBmYWtlTG9j
azsKICAgICBDb25kaXRpb24gZmFrZUNvbmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VMb2Nr
ZXIoZmFrZUxvY2spOworICAgIExvY2tlciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAgICBm
YWtlQ29uZGl0aW9uLndhaXRGb3IoZmFrZUxvY2ssIHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKaW5kZXggYzdiOWVkMmU2MmUwNjc0ZTdj
YTUzYjg1YjEzMjkxY2IwMzhkMTk0ZS4uMmI1MGRlMWEzMWE1Y2Q5MzExYzgyMjQyYjQ3NWUxNDZk
ZmY0NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBzbGVlcChjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUmIHRpbWUpCiB7CiAgICAgTG9jayBmYWtlTG9jazsKICAgICBDb25kaXRpb24gZmFrZUNv
bmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VMb2NrZXIoZmFrZUxvY2spOworICAgIExvY2tl
ciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAgICBmYWtlQ29uZGl0aW9uLndhaXRVbnRpbChm
YWtlTG9jaywgdGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtlclBv
b2wuY3BwIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKaW5kZXggNDJjOWUxMzVhYTll
YjkxYzhjMGJmNGQ0ODIzMzRlNTlkZGZlYzYyMy4uOGE5YzFmZGE3NGE3M2IyYzVhYjVjZGEyZDhl
NDYwOWFiZTgwYTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIGZpbmFsCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV9wb29sLm1fbG9jayB9OwogICAgICAgICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdvcmtl
cnMrKzsKICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgV29ya2VyUG9vbDo6V29ya2VyUG9vbChB
U0NJSUxpdGVyYWwgbmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRzIHRpbWUK
ICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQogICAgICwgbV9uYW1lKG5hbWUpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyArK2kpCiAgICAg
ICAgIG1fd29ya2Vycy5hcHBlbmQoYWRvcHRSZWYoKm5ldyBXb3JrZXIobG9ja2VyLCAqdGhpcywg
bV9sb2NrLCBtX2NvbmRpdGlvbi5jb3B5UmVmKCksIHRpbWVvdXQpKSk7CiB9CkBAIC05NSw3ICs5
NSw3IEBAIFdvcmtlclBvb2w6OldvcmtlclBvb2woQVNDSUlMaXRlcmFsIG5hbWUsIHVuc2lnbmVk
IG51bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lCiBXb3JrZXJQb29sOjp+V29ya2VyUG9vbCgp
CiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV93
b3JrZXJzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG1fdGFza3MuYXBwZW5kKG51bGxwdHIp
OyAvLyBVc2UgbnVsbCB0YXNrIHRvIGluZGljYXRlIHRoYXQgd2Ugd2FudCB0aGUgdGhyZWFkIHRv
IHRlcm1pbmF0ZS4KICAgICAgICAgbV9jb25kaXRpb24tPm5vdGlmeUFsbChsb2NrZXIpOwpAQCAt
MTIwLDcgKzEyMCw3IEBAIGJvb2wgV29ya2VyUG9vbDo6c2hvdWxkU2xlZXAoY29uc3QgQWJzdHJh
Y3RMb2NrZXImKQogCiB2b2lkIFdvcmtlclBvb2w6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyAqbV9sb2NrIH07CiAgICAgbV90YXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAg
ICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgv
VGhyZWFkaW5nUE9TSVguY3BwCmluZGV4IDM0ODEyN2RiNjg0YmJiYWIzNDQyYTkxN2EwOGIzMTZl
ZTk3ZTE2MDcuLjU5MTdiMzc5ZjEyYWZmNWZmNDJkMTM0N2ZiZGNiMWYyMDhhMDcwN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKQEAgLTM4Myw3ICszODMsNyBAQCBh
dXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVy
cm9yPgogICAgIC8vIFlvdXIgaXNzdWluZyB0aHJlYWQgKEEpIGF0dGVtcHRzIHRvIHN1c3BlbmQg
dGhlIHRhcmdldCB0aHJlYWQgKEIpLiBUaGVuLCB5b3Ugd2lsbCBzdXNwZW5kIHRoZSB0aHJlYWQg
KEMpIGFkZGl0aW9uYWxseS4KICAgICAvLyBUaGlzIGNhc2UgZnJlcXVlbnRseSBoYXBwZW5zIGlm
IHlvdSBzdG9wIHRocmVhZHMgdG8gcGVyZm9ybSBzdGFjayBzY2FubmluZy4gQnV0IHRocmVhZCAo
QikgbWF5IGhvbGQgdGhlIGxvY2sgb2YgdGhyZWFkIChDKS4KICAgICAvLyBJbiB0aGF0IGNhc2Us
IGRlYWQgbG9jayBoYXBwZW5zLiBVc2luZyBnbG9iYWwgbG9jayBoZXJlIGF2b2lkcyB0aGlzIGRl
YWQgbG9jay4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAg
IGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3N1c3BlbmQobV9wbGF0Zm9ybVRocmVhZCk7
CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCkBAIC00MTQsNyArNDE0LDcgQEAgYXV0
byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJv
cj4KIHZvaWQgVGhyZWFkOjpyZXN1bWUoKQogewogICAgIC8vIER1cmluZyByZXN1bWUsIHN1c3Bl
bmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJvbSB0aGUgb3RoZXIgdGhyZWFk
cy4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAgIHRocmVh
ZF9yZXN1bWUobV9wbGF0Zm9ybVRocmVhZCk7CiAjZWxzZQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHN0
YXRpYyBUaHJlYWRTdGF0ZU1ldGFkYXRhIHRocmVhZFN0YXRlTWV0YWRhdGEoKQogCiBzaXplX3Qg
VGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAgIGF1dG8gbWV0YWRh
dGEgPSB0aHJlYWRTdGF0ZU1ldGFkYXRhKCk7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0
aHJlYWRfZ2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG1ldGFkYXRhLmZsYXZvciwgKHRocmVh
ZF9zdGF0ZV90KSZyZWdpc3RlcnMsICZtZXRhZGF0YS51c2VyQ291bnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
RGJnSGVscGVyV2luLmNwcAppbmRleCA1NTlkYWFiMmE0YWI0ODU1YjNjNjRiOGZkMmQ2ZTBlN2Yw
ZWIzMDNmLi41YTFhYjRjYmRjN2IzNDFlODQ0ZjY1ZmQ3M2M5NWQ3ZDFjN2UyNWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplU3ltYm9scyhIQU5ETEUgaFByb2MpCiAKIGJvb2wgU3ltRnJvbUFkZHJlc3MoSEFO
RExFIGhQcm9jLCBEV09SRDY0IGFkZHJlc3MsIERXT1JENjQqIGRpc3BsYWNlbWVudCwgU1lNQk9M
X0lORk8qIHN5bWJvbEluZm8pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGNhbGxNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGNhbGxNdXRleCB9OwogICAgIGluaXRpYWxpemVTeW1ib2xzKGhQ
cm9jKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IDo6U3ltRnJvbUFkZHIoaFByb2MsIGFkZHJlc3Ms
IGRpc3BsYWNlbWVudCwgc3ltYm9sSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3Bw
CmluZGV4IDY2NzhhZWJlZjcwOWZjNDBiM2FlNTEzY2ZkZTc2NDFjMDJlYWU4NGQuLjRiMzcyNDdm
OTkwNzIzZTMyOGU3ZGM5MmRlMjViNWMzMDg2YWU5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRp
bmdXaW4uY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiBhdXRv
IFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9y
PgogewogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzICE9ICZUaHJlYWQ6OmN1
cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRpbmcgdGhlIGN1cnJlbnQgdGhyZWFk
IGl0c2VsZi4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAgICAgRFdPUkQgcmVzdWx0
ID0gU3VzcGVuZFRocmVhZChtX2hhbmRsZSk7CiAgICAgaWYgKHJlc3VsdCAhPSAoRFdPUkQpLTEp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBhdXRvIFRocmVhZDo6
c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9yPgogLy8gRHVy
aW5nIHJlc3VtZSwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9t
IHRoZSBvdGhlciB0aHJlYWRzLgogdm9pZCBUaHJlYWQ6OnJlc3VtZSgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9i
YWxTdXNwZW5kTG9jayB9OwogICAgIFJlc3VtZVRocmVhZChtX2hhbmRsZSk7CiB9CiAKIHNpemVf
dCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgZ2xvYmFsU3VzcGVuZExvY2sgfTsKICAgICByZWdpc3RlcnMuQ29udGV4dEZsYWdzID0g
Q09OVEVYVF9JTlRFR0VSIHwgQ09OVEVYVF9DT05UUk9MOwogICAgIEdldFRocmVhZENvbnRleHQo
bV9oYW5kbGUsICZyZWdpc3RlcnMpOwogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIu
Y3BwCmluZGV4IGZhZDVjOWQ2YjRiMTcyZDcyMmI2YTliMzdkMmUwZTgzZGM1NzMyZWMuLjk3NWNm
YzNlY2Q1NzIzMmFiZTc3M2I5ZDFiYzRkMDQ0YjNjNWVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jQXVkaW9EZWNvZGVyOjpBc3luY0F1
ZGlvRGVjb2RlcigpCiB7CiAgICAgLy8gU3RhcnQgd29ya2VyIHRocmVhZC4KLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90
aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVk
aW8gRGVjb2RlciIsIFt0aGlzXSB7CiAgICAgICAgIHJ1bkxvb3AoKTsKICAgICB9LCBUaHJlYWRU
eXBlOjpBdWRpbyk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OnJ1
bkxvb3AoKQogCiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciB1bnRpbCB3ZSBoYXZlIG1fdGhy
ZWFkIGVzdGFibGlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgcnVuIGxvb3AuCi0gICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV90aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgfQogCiAgICAgLy8gS2VlcCBydW5u
aW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggM2E0Y2Q4NWU1ZWMxMDBj
ODcxMzI4NzYzODQ0OTk1NTI5MGNkYzNkNC4uNmJiODA4ODk2ZDdhY2YxNGM5ZGFiNDBiYjUxNTNh
NjZkNzAwNDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3JtQ2xv
c2UoKQogICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogCiAgICAgICAgIC8vIENsZWFuIHVwIHRyYW5zYWN0aW9u
cyB0aGF0IGhhdmUgbm90IGJlZW4gc2NoZWR1bGVkIHlldDoKICAgICAgICAgLy8gVHJhbnNhY3Rp
b24gcGhhc2UgMSBjbGVhbnVwLiBTZWUgY29tbWVudCBvbiAiV2hhdCBoYXBwZW5zIGlmIGEKQEAg
LTU0NCwxNCArNTQ0LDE0IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVw
KFNRTFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBEYXRhYmFzZTo6aW5Qcm9ncmVz
c1RyYW5zYWN0aW9uQ29tcGxldGVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7
CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBib29sIERhdGFiYXNlOjpoYXNQZW5k
aW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc011dGV4IH07CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHx8ICFtX3Ry
YW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpOwogfQogCkBAIC02ODEsNyArNjgxLDcgQEAgdm9pZCBE
YXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9u
KFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ssIFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiYmIHdy
YXBwZXIsIGJvb2wgcmVhZE9ubHkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIGlmICgh
bV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKSB7CiAgICAgICAgIGlmIChlcnJvckNhbGxiYWNr
KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgW2Vycm9yQ2FsbGJhY2sgPSBtYWtlUmVmKCplcnJvckNhbGxiYWNr
KV0oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwCmluZGV4IGZjZmYxMDRjNTJlMmM3ODQzOTUzNTkzNDI4MTI2OTdkZmM3
YTdjNzMuLmU2ZDdkNjZhMDhkOGFjNzU4Mzg2N2MwNzBiMTNjNDNiMTY2OTlmZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIERhdGFiYXNlVGhyZWFkOjp+RGF0YWJhc2VUaHJlYWQoKQog
CiB2b2lkIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1f
dGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRp
b25NdXRleCB9OwogCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAgICByZXR1cm47CkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICB7
CiAgICAgICAgIC8vIFdhaXQgZm9yIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRl
LgotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9OwogICAgICAgICBMT0co
U3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9CiAK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgp
CiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRhYmFzZVNldCBv
cGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX29wZW5EYXRhYmFz
ZVNldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0
ZXggfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDApIHsKICAgICAg
ICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBvcmlnaW5hbCBz
ZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAgICAgICAgb3Bl
blNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tIb2xk
ZXIgbG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9v
cGVuRGF0YWJhc2VTZXRNdXRleCB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0
YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmRE
YXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpy
ZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5EYXRhYmFz
ZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIERhdGFi
YXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0YWJhc2UpCiAK
IGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKICAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFiYXNlLT5oYXNQ
ZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJhbnNhY3Rpb24o
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGEwMzgyMzRiNzU1
NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTguLjgzNGFjODI3YzJiMWU1ZjdlMjAzZDE1MzBi
MzVjNjhkMWY0YTA5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6Omhhc0FkZXF1YXRlUXVvdGFGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaQogCiBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6OmNh
bkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXplKQogewotICAgIExvY2tIb2xkZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhp
cyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkgaXMgbm9uLW51bGw/CiAgICAgYXV0byBvcmlnaW4g
PSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUNv
bnRleHQmIGNvbnRleHQKIC8vIGhlbmNlIHNob3VsZCBub3QgYmUgYSBwZXJmb3JtYW5jZSBjcml0
aWNhbCBwYXRoIGFueXdheS4gCiBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6OnJl
dHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIHVpbnQ2NF90IGVzdGltYXRlZFNpemUpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsg
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkgaXMgbm9uLW51bGw/CiAgICAgYXV0byBvcmlnaW4g
PSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CkBAIC0yNzEsNyArMjcxLDcgQEAgdWludDY0X3Qg
RGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6ZShEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAg
Ly8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYSBkYXRhYmFzZSBpcyB0aGUgZnVsbCBxdW90YSBmb3Ig
aXRzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0aGluIHRoZSBvcmlnaW4sCiAg
ICAgLy8gcGx1cyB0aGUgY3VycmVudCB1c2FnZSBvZiB0aGUgZ2l2ZW4gZGF0YWJhc2UKLSAgICBM
b2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2Nr
RGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgYXV0byBvcmlnaW4gPSBk
YXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgYXV0byBxdW90YSA9IHF1b3RhTm9Mb2Nr
KG9yaWdpbik7CkBAIC0zNjAsMTMgKzM2MCwxMyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpm
dWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZwog
CiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZO
b3RFeGlzdHMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJk
KTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owog
ICAgIHJldHVybiBmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKG9yaWdpbiwgbmFtZSwgY3JlYXRl
SWZOb3RFeGlzdHMpLmlzb2xhdGVkQ29weSgpOwogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00MjEs
NyArNDIxLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVz
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IG5hbWVzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFz
ZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFw
R3VhcmQgfTsKICAgICAgICAgbmFtZXMgPSBkYXRhYmFzZU5hbWVzTm9Mb2NrKG9yaWdpbik7CiAg
ICAgfQogICAgIHJldHVybiBpc29sYXRlZENvcHkobmFtZXMpOwpAQCAtNDM0LDcgKzQzNCw3IEBA
IERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uCiAgICAgaW50NjRfdCBleHBlY3RlZFVzYWdlOwogCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwor
ICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owog
CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsK
ICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZv
aWQgRGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAgaW50NjRfdCBndWlkID0gMDsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tE
YXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIG9wZW5UcmFja2VyRGF0
YWJhc2UoQ3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAogCiB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6ZG9uZUNyZWF0aW5nRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9j
a2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICBkb25lQ3Jl
YXRpbmdEYXRhYmFzZShkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZS5zdHJpbmdJ
ZGVudGlmaWVySXNvbGF0ZWRDb3B5KCkpOwogfQogCkBAIC01MjcsNyArNTI3LDcgQEAgVmVjdG9y
PFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlcygpCiB7CiAgICAg
VmVjdG9yPFJlZjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAg
ICAgIExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9
OwogCiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgZm9yIChh
dXRvJiBuYW1lTWFwIDogbV9vcGVuRGF0YWJhc2VNYXAtPnZhbHVlcygpKSB7CkBAIC01NDMsNyAr
NTQzLDcgQEAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFi
YXNlcygpCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2Um
IGRhdGFiYXNlKQogewotICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5E
YXRhYmFzZU1hcEd1YXJkKTsKKyAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1fb3Bl
bkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAg
ICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsK
QEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KERhdGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5E
YXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja0hvbGRlciBvcGVuRGF0YWJh
c2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgIExvY2tlciBvcGVuRGF0YWJh
c2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgaWYgKCFtX29wZW5E
YXRhYmFzZU1hcCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTYwOSw3ICs2
MDksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKERhdGFiYXNl
JiBkYXRhYmFzZSkKIAogUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lu
TG9ja0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJh
c2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRp
ZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIAogICAgIC8vIFRoZSBvcmlnaW5M
b2NrTWFwIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgRGF0YWJhc2VUaHJlYWRzIHNpbmNlCkBA
IC02ODgsMTMgKzY4OCwxMyBAQCB1aW50NjRfdCBEYXRhYmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2Nr
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiB1aW50NjRfdCBEYXRhYmFzZVRy
YWNrZXI6OnF1b3RhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tE
YXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICByZXR1cm4gcXVvdGFOb0xv
Y2sob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJh
c2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAKICAgICBpZiAocXVvdGFOb0xvY2sob3Jp
Z2luKSA9PSBxdW90YSkKICAgICAgICAgcmV0dXJuOwpAQCAtODI0LDcgKzgyNCw3IEBAIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4sIERlbGV0aW9uTW9kCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07
CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsK
ICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtODc2LDcgKzg3Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiAgICAgfQog
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9
OwogICAgICAgICBkZWxldGVPcmlnaW5Mb2NrRm9yKG9yaWdpbik7CiAgICAgICAgIGRvbmVEZWxl
dGluZ09yaWdpbihvcmlnaW4pOwogCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIERhdGFiYXNl
VHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luKQogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2Nr
ZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogICAgICAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgICAgIGlmICgh
bV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNzgs
MTIgKzEwNzgsMTIgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAgICAvLyBXZSBkcm9wIHRo
ZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRl
RGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCiAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURh
dGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVsdCkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9y
aWdpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFi
YXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VN
YXBHdWFyZCB9OwogICAgICAgICBkb25lRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0
YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFt
ZT0/Il9zKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbiwgY29uc3QKIAogI2lmbmRlZiBOREVCVUcKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBs
b2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgICAgIEFTU0VSVChp
c0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5hbWUpKTsKICAgICB9CiAjZW5k
aWYKQEAgLTExMzIsNyArMTEzMiw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRh
YmFzZUZpbGUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAgICAgLy8g
RGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNhbiBjYXVzZSBh
IGRlYWRsb2NrCiAgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRhYmFzZVRocmVhZCBj
YWxsIGl0IHRyaWdnZXJzLgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VN
YXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRhdGFi
YXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgaWYgKG1fb3Bl
bkRhdGFiYXNlTWFwKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogbmFtZU1hcCA9IG1fb3BlbkRh
dGFiYXNlTWFwLT5nZXQob3JpZ2luKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRh
YmFzZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKSkgewpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogICAgIAog
ICAgIHsKICAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jayBiZWZvcmUgY2FsbGluZyBvcGVuVHJh
Y2tlckRhdGFiYXNlLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNl
R3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBH
dWFyZCB9OwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RF
eGlzdCk7CiAgICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAgLy8gRGF0YWJhc2U6Om1hcmtB
c0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNhbiBjYXVzZSBhIGRlYWRsb2NrCiAgICAg
Ly8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRhYmFzZVRocmVhZCBjYWxsIGl0IHRyaWdnZXJz
LgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlTWFwKSB7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9wZW5EYXRhYmFzZSA6ICptX29wZW5EYXRhYmFzZU1h
cCkgewogICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IG9wZW5EYXRhYmFzZS5rZXk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNr
V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFj
a1dyYXBwZXIuaAppbmRleCBkMGQxMjgwOTZiYWIwYTZhMGY3YzJkYmYxMDNjMjJkNDA4MzlmZjBh
Li4yNzIxNDQxMzc1MjU5M2VkMDhhMjY2Mjk0MGZjYTg3YTkyNDM2YzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVy
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyOwogICAgICAgICBUKiBjYWxsYmFjazsKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKCFtX2NhbGxi
YWNrKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPFQ+IHVud3JhcCgpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgQVNT
RVJUKCFtX2NhbGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhy
ZWFkKCkpOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm4gV1RGTW92ZShtX2NhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggZWRkY2U4MWJk
ZDBlYThmNjRlOWMyMjg1M2I3ZjE4YTNhY2QzN2I2MS4uZTc0MjFjNzdjNTMyNzAxMWY1OGJmMTI2
MTZmOWUwNGRiNTFiNjY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpjYWxsRXJyb3JDYWxsYmFja0R1ZVRvSW50ZXJydXB0aW9uKCkKIAogdm9p
ZCBTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3Rh
dGVtZW50PiBzdGF0ZW1lbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZW1lbnRN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKICAgICBtX3N0
YXRlbWVudFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHN0YXRlbWVudCkpOwogfQogCkBAIC0xOTAsNyAr
MTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWREYXRhYmFz
ZSgpCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBzdG9wcGVkLCBkb24ndCBkbyBhbnl0aGlu
ZyBhbmQgY2FuY2VsIHF1ZXVlZCB3b3JrCiAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSB3
YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxpbmcgd29yayBmb3IgdGhpcyB0cmFu
c2FjdGlvbiIpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKICAgICBtX3N0YXRlbWVudFF1
ZXVlLmNsZWFyKCk7CiAgICAgbV9uZXh0U3RlcCA9IG51bGxwdHI7CiAKQEAgLTUxNiw3ICs1MTYs
NyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KCkKIHsKICAgICBtX2N1
cnJlbnRTdGF0ZW1lbnQgPSBudWxscHRyOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0
ZW1lbnRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKICAg
ICBpZiAoIW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRTdGF0
ZW1lbnQgPSBtX3N0YXRlbWVudFF1ZXVlLnRha2VGaXJzdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCmluZGV4IGQwMGVjMWQ5NDI0OGJmOWFkNTE1NDkxOTBjYmZjZDljNWYwMGRlMTEuLmEw
NDNmN2NhMzI2YmU4YzBlOWJjOTgzYmMzN2JiZjQ1MThlOTA2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6
ZG9DbGVhbnVwKCkKIAogICAgIG1fZnJvbnRlbmQucmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9mcm9udGVuZC5tX3N0YXRlbWVudE11dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVuZC5tX3N0YXRlbWVudE11dGV4IH07CiAgICAg
bV9mcm9udGVuZC5tX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CiAKICAgICBpZiAobV9mcm9udGVu
ZC5tX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggM2Y4
M2U4ZTY3MDZiYTQ1NzQzNGMyYTMxZmQyNDg5NmE3OWQ5NjJhMS4uOWZjMzg3ZTQ1Y2EyNTg1ODJl
Mzk5MjFmNTZjY2U5ZTdkMDEwNGE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpjbGVhcigpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBtX2F4T2JqZWN0Q2FjaGUgPSBudWxscHRyOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
aGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChtX3Jv
b3ROb2RlLT5vYmplY3RJRCgpKTsKICAgICBtX3Jvb3ROb2RlID0gbnVsbHB0cjsKICAgICBtX25v
ZGVNYXAuY2xlYXIoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpn
ZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhDb3JlT2JqZWN0KiBheFBh
cgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG9iamVjdCA9IGNyZWF0ZVN1YnRyZWUoYXhP
YmplY3QsIGF4UGFyZW50ID8gYXhQYXJlbnQtPm9iamVjdElEKCkgOiBJbnZhbGlkQVhJRCwgYXR0
YWNoV3JhcHBlcik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgaWYgKCFheFBhcmVu
dCkKICAgICAgICAgc2V0Um9vdE5vZGUob2JqZWN0LnB0cigpKTsKICAgICBlbHNlIGlmIChheFBh
cmVudC0+b2JqZWN0SUQoKSAhPSBJbnZhbGlkQVhJRCkgLy8gTmVlZCB0byBjaGVjayBmb3IgdGhl
IG9iamVjdElEIG9mIGF4UGFyZW50IGFnYWluIGJlY2F1c2UgaXQgbWF5IGhhdmUgYmVlbiBkZXRh
Y2hlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlLgpAQCAtMjI0LDcgKzIyNCw3IEBAIFJlZjxB
WElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZShBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBBWElECiAgICAgfQogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFu
Z2VMb2dMb2NrIH07CiAgICAgICAgIG1fcGVuZGluZ0FwcGVuZHMuYXBwZW5kKFdURk1vdmUobm9k
ZUNoYW5nZSkpOwogICAgICAgICB1cGRhdGVDaGlsZHJlbklEcyhvYmplY3QtPm9iamVjdElEKCks
IFdURk1vdmUoY2hpbGRyZW5JRHMpKTsKICAgICB9CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgIGF1
dG8gbmV3T2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKGF4T2JqZWN0LCB0aGlzLCBw
YXJlbnRJRCk7CiAgICAgbmV3T2JqZWN0LT5tX2NoaWxkcmVuSURzID0gYXhPYmplY3QuY2hpbGRy
ZW5JRHMoKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIC8vIFJlbW92ZSB0aGUg
b2xkIG9iamVjdCBhbmQgc2V0IHRoZSBuZXcgb25lIHRvIGJlIHVwZGF0ZWQgb24gdGhlIEFYIHRo
cmVhZC4KICAgICBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOwogICAgIG1fcGVu
ZGluZ0FwcGVuZHMuYXBwZW5kKHsgbmV3T2JqZWN0LCBheE9iamVjdC53cmFwcGVyKCkgfSk7CkBA
IC0yNzEsNyArMjcxLDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5
KGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYUHJvcGVydHkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1Byb3Bl
cnR5Q2hhbmdlcy5hcHBlbmQoeyBheE9iamVjdC5vYmplY3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsK
IH0KIApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxk
cmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAKICAgICBpZiAodXBkYXRlZENoaWxkIHx8IHJl
bW92YWxzLnNpemUoKSkgewogICAgICAgICAvLyBNYWtlIHRoZSBjaGlsZHJlbiBJRHMgb2YgdGhl
IGlzb2xhdGVkIG9iamVjdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgQVhPYmplY3Qncy4KLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgICAgICB1cGRhdGVDaGlsZHJlbklEcyhh
eEFuY2VzdG9yLT5vYmplY3RJRCgpLCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpKTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBOb3RoaW5nIHdhcyB1cGRhdGVkLiBBcyBhIGxhc3QgcmVzb3J0LCB1
cGRhdGUgdGhlIHN1YnRyZWUuCkBAIC0zNjIsNyArMzYyLDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRP
YmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSgpCiAgICAgQVhUUkFDRSgiQVhJc29s
YXRlZFRyZWU6OmZvY3VzZWROb2RlIik7CiAgICAgLy8gQXBwbHkgcGVuZGluZyBjaGFuZ2VzIGlu
IGNhc2UgZm9jdXMgaGFzIGNoYW5nZWQgYW5kIGhhc24ndCBiZWVuIHVwZGF0ZWQuCiAgICAgYXBw
bHlQZW5kaW5nQ2hhbmdlcygpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dM
b2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIEFYTE9H
KG1ha2VTdHJpbmcoImZvY3VzZWROb2RlSUQgIiwgbV9mb2N1c2VkTm9kZUlEKSk7CiAgICAgQVhM
T0coImZvY3VzZWQgbm9kZToiKTsKICAgICBBWExPRyhub2RlRm9ySUQobV9mb2N1c2VkTm9kZUlE
KSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0
ZWRUcmVlOjpmb2N1c2VkTm9kZSgpCiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRl
ZFRyZWU6OnJvb3ROb2RlKCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cm9vdE5v
ZGUiKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICByZXR1cm4gbV9yb290Tm9kZTsK
IH0KIApAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWRO
b2RlSUQoQVhJRCBheElEKQogICAgIEFYTE9HKG1ha2VTdHJpbmcoImF4SUQgIiwgYXhJRCkpOwog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsK
ICAgICBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEID0gYXhJRDsKIAogICAgIEFYUHJvcGVydHlNYXAg
cHJvcGVydHlNYXA7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVt
b3ZlTm9kZShBWElEIGF4SUQpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1f
bm9kZU1hcC5yZW1vdmUoYXhJRCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxv
Z0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9w
ZW5kaW5nTm9kZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KIApAQCAtNDMxLDcgKzQzMSw3IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUoQVhJRCBheElEKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nU3VidHJl
ZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KIApAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgIGlmIChtX3VzZWRPbkFYVGhy
ZWFkICYmIGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5n
ZUxvZ0xvY2sgfTsKIAogICAgIGlmIChtX3BlbmRpbmdGb2N1c2VkTm9kZUlEICE9IG1fZm9jdXNl
ZE5vZGVJRCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJmb2N1c2VkTm9kZUlEICIsIG1f
Zm9jdXNlZE5vZGVJRCwgIiBwZW5kaW5nRm9jdXNlZE5vZGVJRCAiLCBtX3BlbmRpbmdGb2N1c2Vk
Tm9kZUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IGJiMDU3ZWY2YTAwNjI2MWJkNGU2YTYxNWNhZjFlMDE4
MTk1ZWI0MWYuLjAxNjRkNTMyNDYyNDFjYmFmMTg3NWFlZTc5OTZiMWU1MzI5NTgyZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
TWFjLm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3Jv
bGxpbmdUcmVlTWFjOjpzY3JvbGxpbmdOb2RlRm9yUG9pbnQoRmxvYXRQb2ludCBwb2kKICAgICBp
ZiAoIXJvb3RTY3JvbGxpbmdOb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX2xheWVySGl0VGVzdE11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sYXllckhpdFRlc3RNdXRleCB9OwogCiAgICAgYXV0byByb290Q29udGVudHNMYXll
ciA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMqPihyb290
U2Nyb2xsaW5nTm9kZSktPnJvb3RDb250ZW50c0xheWVyKCk7CiAgICAgRmxvYXRQb2ludCBzY3Jv
bGxPcmlnaW4gPSByb290U2Nyb2xsaW5nTm9kZS0+c2Nyb2xsT3JpZ2luKCk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgT3B0aW9uU2V0PEV2ZW50TGlzdGVuZXJSZWdpb25UeXBlPiBTY3JvbGxpbmdUcmVl
TWFjOjpldmVudExpc3RlbmVyUmVnaW9uVHlwZXNGb3IKICAgICBpZiAoIXJvb3RTY3JvbGxpbmdO
b2RlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1f
bGF5ZXJIaXRUZXN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xheWVySGl0VGVzdE11
dGV4IH07CiAKICAgICBhdXRvIHJvb3RDb250ZW50c0xheWVyID0gc3RhdGljX2Nhc3Q8U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyo+KHJvb3RTY3JvbGxpbmdOb2RlKS0+cm9vdENv
bnRlbnRzTGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJv
cnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNr
UXVldWUuaAppbmRleCA3NGM3ZTBlODUzMmUxNGUzNzlkMmNmOTYyMmM1MjFjOWY4NzgzZGVkLi44
MjY5OWRlNjBmMDU2NTFkNmM3MDgxNjFhOGEzOGFjNzE5MjlhNjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAgICAgewotICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAgIG1fYWJvcnRpbmcgPSB0cnVlOwogICAg
ICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBBU1NFUlQobV9hYm9ydGluZyk7CiAgICAgICAgIG1fYWJv
cnRpbmcgPSBmYWxzZTsKICAgICB9CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQzLDE0
ICsxNDMsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBEb24ndCBkZWFkbG9jayB0aGUgbWFpbiB0
aHJlYWQgd2l0aCBpdHNlbGYuCiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFI+IHJlc3BvbnNlID0gV1RG
OjpudWxsb3B0OwogICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVh
ZFRhc2tIYW5kbGVyXSgpIHsKICAgICAgICAgICAgIFIgcmVzcG9uc2VWYWx1ZSA9IG1haW5UaHJl
YWRUYXNrSGFuZGxlcigpOwotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0
ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAg
IGlmICghbV9hYm9ydGluZykKICAgICAgICAgICAgICAgICByZXNwb25zZSA9IFdURk1vdmUocmVz
cG9uc2VWYWx1ZSk7CiAgICAgICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lm5vdGlmeUFs
bCgpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNDYW5j
ZWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX3Rhc2tRdWV1ZS0+bV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9jayB7
IG1fdGFza1F1ZXVlLT5tX211dGV4IH07CiAgICAgICAgICAgICBBU1NFUlQodGhpcyA9PSBtX3Rh
c2tRdWV1ZS0+bV9jaGFubmVsLmZpcnN0KCkucHRyKCkpOwogICAgICAgICAgICAgbV90YXNrUXVl
dWUtPm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOwogICAgICAgICAgICAgbG9jay51bmxvY2tFYXJs
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FS
aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmlu
Z0J1ZmZlci5jcHAKaW5kZXggNTI2NmI1ZmNhNWM1NTIyOGQwNDA1Mjc2OTg3MGEyMmExZjc0Mjhk
YS4uYTU4MWNmNjU1NmY5OTc1Njg3Y2M1MDUxZGFlZjkzZTJjMzJiODliOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCkBA
IC0yMzEsNyArMjMxLDcgQEAgYm9vbCBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjphbGxvY2F0
ZShzaXplX3QgYnl0ZUNvdW50LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGUKIAogdm9pZCBDQVJpbmdC
dWZmZXJTdG9yYWdlVmVjdG9yOjpmbHVzaCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9j
dXJyZW50RnJhbWVCb3VuZHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jdXJyZW50RnJh
bWVCb3VuZHNMb2NrIH07CiAgICAgZm9yIChhdXRvJiB0aW1lQm91bmRzIDogbV90aW1lQm91bmRz
UXVldWUpIHsKICAgICAgICAgdGltZUJvdW5kcy5tX3N0YXJ0RnJhbWUgPSAwOwogICAgICAgICB0
aW1lQm91bmRzLm1fZW5kRnJhbWUgPSAwOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgQ0FSaW5n
QnVmZmVyOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qgc3RhcnRUaW1lLCB1aW50NjRf
dCBlbmRUaW1lKQogCiB2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OnNldEN1cnJlbnRG
cmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydFRpbWUsIHVpbnQ2NF90IGVuZFRpbWUpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrIH07CiAgICAgdWludDMyX3QgbmV4dFB0
ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKSArIDE7CiAgICAgdWludDMyX3QgaW5kZXgg
PSBuZXh0UHRyICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVlTWFzazsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKaW5kZXggOGNkNWMyODc0MjdkY2ZlNjA5YmQ5OGY2NmY5YWFhMDk0Y2Y5YzU4OS4uNDM2
OTY4OGUxOWE0MjdlYzhhZTRmNjFkNTAyN2FlNzNiMmU0ZmFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBlcio+JiBB
VkZXcmFwcGVyOjptYXAoKQogCiB2b2lkIEFWRldyYXBwZXI6OmFkZFRvTWFwKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2Nr
KCkgfTsKICAgICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlrZSBhIGtleSBvZiAwLCBhbmQg
YWxzbyBtYWtlIHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcgYW4gb2JqZWN0IElEIHRoYXQn
cyBhbHJlYWR5IGluIHVzZS4KQEAgLTE0NDYsNyArMTQ0Niw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
cmVtb3ZlRnJvbU1hcCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVt
b3ZlRnJvbU1hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAg
IG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKIH0KIApAQCAtMTY1MCw3ICsxNjUwLDcgQEAgdm9p
ZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpwZXJp
b2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2Zldy
YXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAg
ICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2sg
aW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE2ODIsNyArMTY4Miw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
cHJvY2Vzc05vdGlmaWNhdGlvbih2b2lkKiBjb250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4gbm90aWZpY2F0aW9uRGF0YSB7IHN0YXRpY19jYXN0
PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSo+KGNvbnRleHQpIH07CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAg
ICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChub3RpZmlj
YXRpb25EYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uIGludm9rZWQgZm9yIGRlbGV0ZWQg
QVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBA
IC0xNzM3LDcgKzE3MzcsNyBAQCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNr
KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogCiB2b2lkIEFWRldy
YXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQq
IGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBw
ZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayBp
bnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oY29udGV4dCkpOwpAQCAtMTc2NCw3ICsxNzY0LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpj
aGVja1BsYXlhYmlsaXR5KCkKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0
aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9Owog
ICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRl
eHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjps
b2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFw
cGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3ODQs
NyArMTc4NCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoKQogCiB2
b2lkIEFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayhBVkNGUGxheWVySXRlbVJlZiwg
Qm9vbGVhbiBmaW5pc2hlZCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZX
cmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAg
ICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6c2Vla0NvbXBs
ZXRlZENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODI4LDcgKzE4MjgsNyBAQCB2b2lk
IEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91dHB1dERhdGEocmVpbnRlcnByZXRfY2Fz
dDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNvbnRleHQpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldy
YXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGxlZ2libGVPdXRwdXRE
YXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJB
VkZXcmFwcGVyOjpwcm9jZXNzQ3VlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIs
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODQ0LDcgKzE4NDQs
NyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkKIHZvaWQgQVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFycmF5UmVmIGF0dHJpYnV0ZWRT
dHJpbmdzLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIENNVGltZSBpdGVtVGltZSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
YXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZXcmFw
cGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1
dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODgzLDcgKzE4ODMsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uodm9pZCogY29u
dGV4dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2FkUmVxdWVzdERhdGE+IGxvYWRSZXF1ZXN0
RGF0YShyZWludGVycHJldF9jYXN0PExvYWRSZXF1ZXN0RGF0YSo+KGNvbnRleHQpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExv
Y2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250
ZXh0KGxvYWRSZXF1ZXN0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAg
ICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAgYm9vbCBBVkZX
cmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdFIKIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkZXJS
ZWYgcmVzb3VyY2VMb2FkZXIsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWYgbG9h
ZGluZ1JlcXVlc3QsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkgIT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07
CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29u
dGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6
OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlIGlu
dm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCBlOTdkMDA0Y2M5NDdkNmRjMWY3NTEwMWMwZTczYjI3NTMwM2FmNDg2Li41
MmY5MThmMWVhYmJiMDczZWI0OTI4NWExZjI2YjYyZGVjMTg3NTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTk3LDcgKzk3LDcgQEAgLSAo
TlNEYXRhKilkYXRhCiAKIC0gKHZvaWQpc2V0RXhwZWN0ZWRDb250ZW50U2l6ZToobG9uZyBsb25n
KWV4cGVjdGVkQ29udGVudFNpemUKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IF9kYXRhTG9j
ayB9OworICAgIExvY2tlciBsb2NrZXIgeyBfZGF0YUxvY2sgfTsKICAgICBfZXhwZWN0ZWRDb250
ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNpemU7CiAKICAgICBbc2VsZiBmdWxmaWxsUGVuZGlu
Z1JlcXVlc3RzXTsKQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKXNldEV4cGVjdGVkQ29udGVu
dFNpemU6KGxvbmcgbG9uZylleHBlY3RlZENvbnRlbnRTaXplCiAKIC0gKHZvaWQpdXBkYXRlRGF0
YTooTlNEYXRhICopZGF0YSBjb21wbGV0ZTooQk9PTCljb21wbGV0ZQogewotICAgIExvY2tIb2xk
ZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IF9kYXRhTG9jayB9
OwogICAgIF9kYXRhID0gZGF0YTsKICAgICBfY29tcGxldGUgPSBjb21wbGV0ZTsKIApAQCAtMTkw
LDcgKzE5MCw3IEBAIC0gKHZvaWQpZnVsZmlsbFJlcXVlc3Q6KEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0ICopcmVxdWVzdAogCiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVz
b3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVz
dGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVl
c3QKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IF9kYXRhTG9jayB9OworICAgIExvY2tlciBs
b2NrZXIgeyBfZGF0YUxvY2sgfTsKIAogICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZUxvYWRlcik7
CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVz
b3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZAogCiAtICh2b2lk
KXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBk
aWRDYW5jZWxMb2FkaW5nUmVxdWVzdDooQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKils
b2FkaW5nUmVxdWVzdAogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IF9kYXRhTG9jayB9OwogCiAgICAgVU5VU0VEX1BBUkFNKHJlc291
cmNlTG9hZGVyKTsKICAgICBfcmVxdWVzdHMucmVtb3ZlQWxsKGxvYWRpbmdSZXF1ZXN0KTsKQEAg
LTQzNyw3ICs0MzcsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldFRyYWNrKEFWQXNz
ZXRUcmFjayAqdHJhY2spCiAgICAgICAgIHJldHVybjsKICAgICBtX3RyYWNrID0gdHJhY2s7CiAK
LSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKICAgICBtX3NhbXBsZURhdGEu
Y2xlYXIoKTsKICAgICBtX3NpemUucmVzZXQoKTsKICAgICBtX2N1cnNvciA9IG1fc2FtcGxlRGF0
YS5kZWNvZGVPcmRlcigpLmVuZCgpOwpAQCAtNTYxLDcgKzU2MSw3IEBAIHVuc2lnbmVkIEltYWdl
RGVjb2RlckFWRk9iakM6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzCiAKIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5l
cmF0b3JMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9
OwogCiAgICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOwogICAgIGlm
ICghc2FtcGxlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggMzUwMzhhZjU5ODNjMWQyM2NhYzdjNDBkNzEwN2FhYTMwMGIyMDAxNi4uNjQxMGMyOWQyMGE1
Njk0ZmJhOGFiOWFiM2M2M2JjYTQ5MWRmMjBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bAogCiBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JM
b2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCiAg
ICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghc2Ft
cGxlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCBhOGVlZjUyYTEzYTc3ZWVkNzdjZjE0ZTk4NzM2NzgwYWI5OWZlMDQ2
Li5lYThlMTA3MmE5NzFmNzEyMTcxNzBiNjEzZTdhZTc2OGJhZWRmZWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlzY29ubmVj
dCgpCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShH
UmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVNdXRl
eCB9OwogICAgICAgICBtX3BlbmRpbmdTYW1wbGVzLmFwcGVuZChzYW1wbGUpOwogICAgIH0KIApA
QCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+
IHNhbXBsZXM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9zYW1wbGVNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIG1fcGVu
ZGluZ1NhbXBsZXMuc3dhcChzYW1wbGVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90
aWZpZXIuaAppbmRleCBhODg1OTI4OWM4NTUzMmQ5ZTY2M2RlNDcwYjYxMzFiYzlkYjA4ZmE3Li44
ZDk0MjQwYmIwNmVjNDFiN2Q3NzVjMmY0MDM1M2FjY2M1MjQ2MjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5U
aHJlYWROb3RpZmllci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNl
bFBlbmRpbmdOb3RpZmljYXRpb25zKHVuc2lnbmVkIG1hc2sgPSAwKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1faXNWYWxpZC5sb2FkKCkpOwotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Bl
bmRpbmdOb3RpZmljYXRpb25zTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BlbmRp
bmdOb3RpZmljYXRpb25zTG9jayB9OwogICAgICAgICBpZiAobWFzaykKICAgICAgICAgICAgIG1f
cGVuZGluZ05vdGlmaWNhdGlvbnMgJj0gfm1hc2s7CiAgICAgICAgIGVsc2UKQEAgLTEwNyw3ICsx
MDcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBhZGRQZW5kaW5nTm90aWZpY2F0aW9uKFQgbm90
aWZpY2F0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGVuZGlu
Z05vdGlmaWNhdGlvbnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGVuZGluZ05v
dGlmaWNhdGlvbnNMb2NrIH07CiAgICAgICAgIGlmIChub3RpZmljYXRpb25UeXBlICYgbV9wZW5k
aW5nTm90aWZpY2F0aW9ucykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9w
ZW5kaW5nTm90aWZpY2F0aW9ucyB8PSBub3RpZmljYXRpb25UeXBlOwpAQCAtMTE2LDcgKzExNiw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlbW92ZVBlbmRpbmdOb3RpZmljYXRpb24oVCBub3Rp
ZmljYXRpb25UeXBlKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wZW5kaW5n
Tm90aWZpY2F0aW9uc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wZW5kaW5nTm90
aWZpY2F0aW9uc0xvY2sgfTsKICAgICAgICAgaWYgKG5vdGlmaWNhdGlvblR5cGUgJiBtX3BlbmRp
bmdOb3RpZmljYXRpb25zKSB7CiAgICAgICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zICY9
IH5ub3RpZmljYXRpb25UeXBlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGFmNTEyOTkwYjZi
NDBhYzFlODA0NGE5YjcwOWU2MzllZmQxMTcyMzIuLjc1YTIxYzFiNGRkODUwNGZlMDI3Y2YyOTM4
MjBkMmY4N2UwNDhmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zNTUxLDcgKzM1NTEsNyBAQCBJbml0RGF0YSBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UoR3N0TWVz
cwogCiAgICAgSW5pdERhdGEgaW5pdERhdGE7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9wcm90ZWN0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm90ZWN0
aW9uTXV0ZXggfTsKICAgICAgICAgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyBwcm90ZWN0aW9uU3lz
dGVtRXZlbnRzKG1lc3NhZ2UpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHBpcGVsaW5lKCks
ICJmb3VuZCAlenUgcHJvdGVjdGlvbiBldmVudHMsICV6dSBkZWNyeXB0b3JzIGF2YWlsYWJsZSIs
IHByb3RlY3Rpb25TeXN0ZW1FdmVudHMuZXZlbnRzKCkuc2l6ZSgpLCBwcm90ZWN0aW9uU3lzdGVt
RXZlbnRzLmF2YWlsYWJsZVN5c3RlbXMoKS5zaXplKCkpOwogCkBAIC0zNjY2LDcgKzM2NjYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhM
b2NhbEluc3RhbmNlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQ
cm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogewogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fcHJvdGVjdGlvbk11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvdGVjdGlvbk11dGV4IH07CiAgICAgICAgIGlmIChtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRz
LmNvbnRhaW5zKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQpKSkgewogICAgICAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChwaXBlbGluZSgpLCAiZXZlbnQgJXUgYWxyZWFkeSBoYW5kbGVkIiwgR1NUX0VW
RU5UX1NFUU5VTShldmVudCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGQ2MGNhZTgwODFjZDNhOTA1ZTY5
NmFiMzM1Yzc5Yzc4ODY0Y2Q0OTQuLjYwMGE2N2ZkZjc0ZjY5MWM4NTcxMDgxZGI4MzA4NDNmYzJh
NTQyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3ND
aGFuZ2VkKCkKIAogICAgIEdTVF9ERUJVRygiSW5zcGVjdGluZyB0cmFjayBhdCBpbmRleCAlZCB3
aXRoIHRhZ3M6ICUiIEdTVF9QVFJfRk9STUFULCBtX2luZGV4LCB0YWdzLmdldCgpKTsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhZ011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdGFnTXV0ZXggfTsKICAgICAgICAgbV90YWdzLnN3YXAodGFncyk7CiAgICAgfQog
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3Rp
ZnlUcmFja09mVGFnc0NoYW5nZWQoKQogCiAgICAgR1JlZlB0cjxHc3RUYWdMaXN0PiB0YWdzOwog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFnTXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YWdNdXRleCB9OwogICAgICAgICB0YWdzLnN3YXAobV90YWdzKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggZjQxMzliNzZhN2Zi
ZTJkZTBmN2Y2ZTY0Y2M1MzI2MGRmMDJkZDJhNS4uMTFiZWExMmI2NmRjNTQ2MjVhODI5ZjkwNzRh
OTJjMDM3NGNlMjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTcx
LDI2ICs3MSwyNiBAQCBjbGFzcyBWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXIgewogcHVibGlj
OgogICAgIHZvaWQgc3RhcnQoKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
YW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAg
ICAgICAgIG1fdW5sb2NrZWQgPSBmYWxzZTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKQogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIG1fc2FtcGxlID0gbnVsbHB0
cjsKICAgICAgICAgbV91bmxvY2tlZCA9IHRydWU7CiAgICAgfQogCiAgICAgdm9pZCBkcmFpbigp
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhbXBsZU11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgbV9zYW1wbGUgPSBu
dWxscHRyOwogICAgIH0KIAogICAgIGJvb2wgcmVxdWVzdFJlbmRlcihXZWJLaXRWaWRlb1Npbmsq
IHNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4
IH07CiAgICAgICAgIGlmIChtX3VubG9ja2VkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCmluZGV4IDE4MGUyNjBmOThlYzA2MDZkYzg0OWM0
NGFhMzJiNTk3Njg5YjZhMDYuLjMyMDE3NGQ1YmZlODc2ZGI4YzE0MjM1OWE4ZTFhMDFhYTg2YzBm
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21t
b25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0
YXRpYyBHc3RGbG93UmV0dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFz
ZSwgR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKICAgICB9
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHByaXYtPm11dGV4IH07CiAKICAgICBpZiAocHJpdi0+aXNGbHVzaGluZykgewogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJEZWNyeXB0aW9uIGFib3J0ZWQgYmVjYXVzZSBvZiBm
bHVzaCIpOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHRyYW5zZm9y
bUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBidWZmZXIpCiAgICAg
R1NUX1RSQUNFX09CSkVDVChzZWxmLCAiZGVjcnlwdGluZyIpOwogCiAgICAgLy8gVGVtcG9yYXJp
bHkgcmVsZWFzZSB0aGUgbG9jayB3aGlsZSB3ZSBkb24ndCBuZWVkIHRvIGFjY2VzcyBwcml2LiBU
aGUgbG93ZXIgbGV2ZWwgQVBJIGlzIHVzZWQKLSAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBjcmVh
dGluZyBzZXZlcmFsIHNjb3BlcyB3aXRoIGRpZmZlcmVudCBMb2NrSG9sZGVyIGluc3RhbmNlcyBp
biBlYWNoIG9uZS4KKyAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBzZXZlcmFsIHNj
b3BlcyB3aXRoIGRpZmZlcmVudCBMb2NrZXIgaW5zdGFuY2VzIGluIGVhY2ggb25lLgogICAgIHBy
aXYtPm11dGV4LnVubG9jaygpOwogCiAgICAgYm9vbCBkaWREZWNyeXB0aW9uU3VjY2VlZCA9IGts
YXNzLT5kZWNyeXB0KHNlbGYsIGl2QnVmZmVyLCBrZXlJREJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1w
bGVDb3VudCwgc3ViU2FtcGxlc0J1ZmZlcik7CkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIGdi
b29sZWFuIHNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50
KiBldmVudCkKICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVEFSVDoKICAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChzZWxmLCAiRmx1c2gtc3RhcnQiKTsKICAgICAgICAgewotICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IHByaXYtPm11dGV4IH07CiAgICAgICAgICAgICBib29sIGlzQ2RtUHJveHlBdHRhY2hlZCA9
IHByaXYtPmNkbVByb3h5OwogICAgICAgICAgICAgcHJpdi0+aXNGbHVzaGluZyA9IHRydWU7CiAg
ICAgICAgICAgICBpZiAoaXNDZG1Qcm94eUF0dGFjaGVkKSB7CkBAIC00MDYsNyArNDA2LDcgQEAg
c3RhdGljIGdib29sZWFuIHNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMs
IEdzdEV2ZW50KiBldmVudCkKICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJGbHVzaC1zdG9wIik7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgICAgICAgICAgcHJpdi0+aXNGbHVzaGluZyA9
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0
YXRpYyBnYm9vbGVhbiBzaW5rRXZlbnRIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qIHRyYW5zLCBH
c3RFdmVudCogZXZlbnQpCiBib29sIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRJ
c0ZsdXNoaW5nKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAg
ICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwotICAgIExvY2tIb2xkZXIg
bG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXggfTsK
ICAgICByZXR1cm4gcHJpdi0+aXNGbHVzaGluZzsKIH0KIApAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0
YXRpYyB2b2lkIHNldENvbnRleHQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0Q29udGV4dCogY29u
dGV4dCkKIAogICAgIGlmIChnc3RfY29udGV4dF9oYXNfY29udGV4dF90eXBlKGNvbnRleHQsICJk
cm0tY2RtLXByb3h5IikpIHsKICAgICAgICAgY29uc3QgR1ZhbHVlKiB2YWx1ZSA9IGdzdF9zdHJ1
Y3R1cmVfZ2V0X3ZhbHVlKGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUoY29udGV4dCksICJjZG0t
cHJveHkiKTsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXggfTsKICAgICAgICAgcHJpdi0+Y2RtUHJveHkg
PSB2YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNUHJveHkqPihnX3ZhbHVlX2dldF9wb2ludGVy
KHZhbHVlKSkgOiBudWxscHRyOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJyZWNl
aXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1Qcm94eS5nZXQoKSk7CiAgICAgICAg
IGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYsIHByaXYtPmNkbVByb3h5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFC
dWZmZXIuY3BwCmluZGV4IDk0OWJjZmE4NzQ1NTA0NWMxZTUzYWVkMjQzZjA3OGNlYThlZmM1ZmIu
LmM3OTE1ZmI1NWRlMzNmNjZjYmZhYTkyMTM2MGIxOTk1NjQyZDljYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVm
ZmVyLmNwcApAQCAtNTAsMTQgKzUwLDE0IEBAIEJ1ZmZlcjo6fkJ1ZmZlcigpID0gZGVmYXVsdDsK
IAogdm9pZCBCdWZmZXI6OmJlZ2luUGFpbnRpbmcoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFpbnRpbmcubG9jayB9
OwogICAgIEFTU0VSVChtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6OkNvbXBsZXRl
KTsKICAgICBtX3BhaW50aW5nLnN0YXRlID0gUGFpbnRpbmdTdGF0ZTo6SW5Qcm9ncmVzczsKIH0K
IAogdm9pZCBCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcoKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFpbnRpbmcubG9j
ayB9OwogICAgIEFTU0VSVChtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6OkluUHJv
Z3Jlc3MpOwogICAgIG1fcGFpbnRpbmcuc3RhdGUgPSBQYWludGluZ1N0YXRlOjpDb21wbGV0ZTsK
ICAgICBtX3BhaW50aW5nLmNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcoKQogCiB2b2lkIEJ1ZmZlcjo6d2FpdFVudGls
UGFpbnRpbmdDb21wbGV0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYWludGluZy5s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5sb2NrIH07CiAgICAgbV9wYWlu
dGluZy5jb25kaXRpb24ud2FpdChtX3BhaW50aW5nLmxvY2ssCiAgICAgICAgIFt0aGlzXSB7IHJl
dHVybiBtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6OkNvbXBsZXRlOyB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCA2NDBhMDQyMWJjZWI2MWE5ODhiNjFm
ZmY4ZjlhYjRjNmQ5NTFhZDMzLi45YjZhYzBkYmJkOTU5ZWI0MWY4YTY2MmZlOWY3ZjRkYTA0NTNi
ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC01OCwxMyArNTgsMTMgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRTY2VuZUludGVncmF0aW9uKFJlZlB0cjxTY2VuZUludGVn
cmF0aW9uPiYmIHNjZW5lSW50ZWdyYXRpb24pCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZS5sb2Nr
IH07CiAgICAgICAgIG1fc3RhdGUuc2NlbmVJbnRlZ3JhdGlvbiA9IFdURk1vdmUoc2NlbmVJbnRl
Z3JhdGlvbik7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246
OlVwZGF0ZVNjb3BlPiBjcmVhdGVVcGRhdGVTY29wZSgpCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0
ZS5sb2NrIH07CiAgICAgICAgIGlmIChtX3N0YXRlLnNjZW5lSW50ZWdyYXRpb24pCiAgICAgICAg
ICAgICByZXR1cm4gbV9zdGF0ZS5zY2VuZUludGVncmF0aW9uLT5jcmVhdGVVcGRhdGVTY29wZSgp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCwxNCArMjA4LDE0IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgVCYg
ZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKFBsYXRmb3JtTGF5ZXI6
Om1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0Zm9ybUxheWVyOjpt
X3N0YXRlLmxvY2sgfTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRlLnBlbmRpbmcpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBmbHVzaFN0YXRlKGNvbnN0IFQm
IGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVy
OjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgUGxhdGZvcm1MYXllcjo6
bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIGF1dG8mIHBlbmRpbmcgPSBtX3N0YXRlLnBlbmRpbmc7
CiAgICAgICAgIGF1dG8mIHN0YWdpbmcgPSBtX3N0YXRlLnN0YWdpbmc7CiAKQEAgLTI5Myw3ICsy
OTMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGNvbW1p
dFN0YXRlKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
UGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIG1fc3RhdGUuY29tbWl0dGVk
ID0gbV9zdGF0ZS5zdGFnaW5nOwogICAgICAgICBtX3N0YXRlLnN0YWdpbmcuZGVsdGEgPSB7IH07
CiAKQEAgLTMwMywxNCArMzAzLDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIHZvaWQgYWNjZXNzUGVuZGluZyhjb25zdCBUJiBmdW5jdG9yKQogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9OwogICAgICAg
ICBmdW5jdG9yKG1fc3RhdGUucGVuZGluZyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICB2b2lkIGFjY2Vzc0NvbW1pdHRlZChjb25zdCBUJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9Owog
ICAgICAgICBmdW5jdG9yKG1fc3RhdGUuY29tbWl0dGVkKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZS5o
CmluZGV4IDZmMjgxZGNiM2M5YTQ5ZjBiNDRlNDhkN2E2MzRjZGUzMTc2N2UyNTguLjYzMWM4NDcz
OGRmMDEyZDEyYWQ5MjJjZDhjMGI3Yjg4MjIxOGUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaApAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KICAgICB2b2lkIGFj
Y2Vzc1N0YXRlKGNvbnN0IEYmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NjZW5lLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY2VuZS5sb2Nr
IH07CiAgICAgICAgIGZ1bmN0b3IobV9zY2VuZS5zdGF0ZSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUlu
dGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDM3NDNhYjQwNGU5NTQ2NGQzNDAyYWY3
ZTAzMzNkZTk3NDQzMTk5ZWQuLmRlM2ZkMjcxZDAyZGRjMDg3NWYzYTQ3OGUzYzlhNjE1ZWI2ODg3
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC00NywyMCAr
NDcsMjAgQEAgU2NlbmVJbnRlZ3JhdGlvbjo6flNjZW5lSW50ZWdyYXRpb24oKQogCiB2b2lkIFNj
ZW5lSW50ZWdyYXRpb246OnNldENsaWVudChDbGllbnQmIGNsaWVudCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQu
bG9jayB9OwogICAgIG1fY2xpZW50Lm9iamVjdCA9ICZjbGllbnQ7CiB9CiAKIHZvaWQgU2NlbmVJ
bnRlZ3JhdGlvbjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGll
bnQubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50LmxvY2sgfTsKICAgICBtX2Ns
aWVudC5zY2VuZSA9IG51bGxwdHI7CiAgICAgbV9jbGllbnQub2JqZWN0ID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0VXBkYXRlKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQu
bG9jayB9OwogICAgIGlmIChtX2NsaWVudC5vYmplY3QpCiAgICAgICAgIG1fY2xpZW50Lm9iamVj
dC0+cmVxdWVzdFVwZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggYjljNzBk
YWExNTQyMzFjZDUyODdjMWQ5YjUxY2JiOWZmYjM5M2RkYi4uODdmOTE1YWM0ZDRjY2ZlN2FjZTFm
YWM2Y2UzOTUxYTRmYzYzODI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRhdGUo
KQogCiAgICAgLy8gSW5jcmVtZW50YWxseSBzdG9yZSB1cGRhdGVzIGFzIHRoZXkgYXJlIGJlaW5n
IGZsdXNoZWQgZnJvbSB0aGUgbGF5ZXItc2lkZS4KICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fdXBkYXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUu
bG9jayB9OwogICAgICAgICBtX3VwZGF0ZS5wZW5kaW5nLnRpbGVzVG9DcmVhdGUuYXBwZW5kVmVj
dG9yKG1fbGF5ZXJTdGF0ZS51cGRhdGUudGlsZXNUb0NyZWF0ZSk7CiAgICAgICAgIG1fdXBkYXRl
LnBlbmRpbmcudGlsZXNUb1VwZGF0ZS5hcHBlbmRWZWN0b3IobV9sYXllclN0YXRlLnVwZGF0ZS50
aWxlc1RvVXBkYXRlKTsKICAgICAgICAgbV91cGRhdGUucGVuZGluZy50aWxlc1RvUmVtb3ZlLmFw
cGVuZFZlY3RvcihtX2xheWVyU3RhdGUudXBkYXRlLnRpbGVzVG9SZW1vdmUpOwpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRl
KCkKIAogYXV0byBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6dGFrZVVwZGF0ZSgpIC0+
IFRpbGVVcGRhdGUKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogICAgIHJldHVybiBXVEZNb3ZlKG1f
dXBkYXRlLnBlbmRpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBmODFlNDhj
NzU1NzM3OGI0YTBiZDgzY2UzMWI0YzhlN2ExZDI4N2U5Li5mNjIzZTYzNDI1NDVhODg5ZDJlMDRh
ZGI5OGVhMWNkYWQ3ZTk2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTUyLDI2ICs1
MiwyNiBAQCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwoQ2xpZW50JiBjbGllbnQpCiBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bDo6fkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsKCkKIHsKICNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgQVNTRVJUKCFtX2NsaWVudC5jbGllbnQpOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmludmFsaWRhdGVD
bGllbnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgbV9jbGllbnQuY2xpZW50ID0gbnVs
bHB0cjsKIH0KIAogYm9vbCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9j
bGllbnQucGVuZGluZ1VwZGF0ZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnQubG9jayB9
OwogICAgIGlmIChtX2NsaWVudC5jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LmNsaWVudC0+c3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBw
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggMWE4ZTY5
ODM0NDhkNjIxMmUyOWViMjA2MDYwMGQ0YTNiNmM5NDRlNi4uOTgzZjMxZmRhN2ZlMWNjNjgwMjJk
NmJjY2Y3MmVkNTE5NTFhNjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjp+SW1hZ2VCYWNraW5nVGV4dHVy
ZU1hcHBlckltcGwoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGw6OmZsdXNoVXBkYXRlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3VwZGF0ZS5s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogCiAgICAgLy8gSWYg
dGhlIHVwZGF0ZSBoYXBwZW5zIGZvciB0aGUgc2FtZSBpbWFnZSBhbmQgdGhlcmUncyBubyBidWZm
ZXIsIGtlZXAgdGhlIGN1cnJlbnQgb25lCiAgICAgLy8gc28gaXQgY2FuIGJlIHJlY2VpdmVkIGJ5
IHRoZSBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuIEluIHRoYXQgY2FzZSB3ZSBvbmx5IG5lZWQg
dG8gdXBkYXRlCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGw6OmZsdXNoVXBkYXRlKCkKIAogYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bDo6dGFrZVVwZGF0ZSgpIC0+IFVwZGF0ZQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdXBk
YXRlLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3VwZGF0ZS5sb2NrIH07CiAgICAgcmV0
dXJuIFdURk1vdmUobV91cGRhdGUudXBkYXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAppbmRleCA4NTlhMDQ1YjcwYzIyZjY4MzZhM2Uz
NzEzNTYyMjcyNjY2YzFhNDI1Li5mOGIxMjViNTI0OGI5MDZjNTNhYThhNTI4OTgwOWQ5YTI5Y2Y0
OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNw
cApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0Lm1fYXR0cnMu
YWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSB9OwogICAg
ICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1
cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAppbmRleCBmNjc5ZjY0ZWYwMTBmMDE4MDU0OTJhYzQ4NDhiZjE3NWQ3M2VjOTA3Li5hNDU5
NzUzZjE3M2UxYjZiNTBkOTMyYzg0ZWJhZjZiYzIxNTViZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpzdXBwb3J0c1R5cGUoY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jYWNoZWROYXR1cmFsU2l6ZUxvY2sgfTsKICAgICAgICAgbV9jYWNoZWROYXR1cmFsU2l6
ZSA9IEZsb2F0U2l6ZSgpOwogICAgIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAog
CiBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpuYXR1cmFsU2l6
ZSgpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NhY2hlZE5hdHVyYWxTaXplTG9jayB9OwogICAg
IHJldHVybiBtX2NhY2hlZE5hdHVyYWxTaXplOwogfQogCkBAIC02NDUsMjEgKzY0NSwyMSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aW52YWxpZGF0ZUZyYW1lVmll
dygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjphZGRMaXN0ZW5l
cihNZWRpYVBsYXllckxpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX211dGV4TGlzdGVuZXJzKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleExpc3RlbmVy
cyB9OwogCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlbW92ZUxpc3RlbmVyKE1lZGlhUGxheWVyTGlz
dGVuZXIqIGxpc3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5l
cnMpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4TGlzdGVuZXJzIH07CiAKICAgICBtX2xp
c3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVsZXRlZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9tdXRleExpc3RlbmVycyk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXhMaXN0ZW5lcnMg
fTsKIAogICAgIGZvciAoSGFzaFNldDxNZWRpYVBsYXllckxpc3RlbmVyKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9saXN0ZW5lcnMuYmVnaW4oKTsgaXQgIT0gbV9saXN0ZW5lcnMuZW5kKCk7ICsr
aXQpCiAgICAgICAgICgqaXQpLT5vbk1lZGlhUGxheWVyRGVsZXRlZCgpOwpAQCAtNjY3LDcgKzY2
Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpub3RpZnlEZWxl
dGVkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnNldE5hdHVy
YWxTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2NhY2hlZE5hdHVyYWxTaXplTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2FjaGVkTmF0
dXJhbFNpemVMb2NrIH07CiAgICAgbV9jYWNoZWROYXR1cmFsU2l6ZSA9IHNpemU7CiB9CiAKQEAg
LTkxMCw3ICs5MTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6R2V0UAogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxs
YmFjazo6SW52b2tlKF9fUlBDX19pbl9vcHQgSU1GQXN5bmNSZXN1bHQgKnBBc3luY1Jlc3VsdCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9tdXRleCB9OwogCiAgICAgaWYgKCFtX21lZGlhUGxheWVyKQogICAgICAgICByZXR1cm4gU19P
SzsKQEAgLTkyNSw3ICs5MjUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6SW52bwogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6b25NZWRpYVBs
YXllckRlbGV0ZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBtX21lZGlhUGxheWVyID0gbnVsbHB0cjsK
IH0KQEAgLTk5OSw3ICs5OTksNyBAQCBVTE9ORyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2Nr
U3RhcnQoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIExPTkdMT05HIGxsQ2xvY2tTdGFydE9mZnNldCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKIAogICAgIC8vIEFmdGVyIHNodXRkb3duLCB3ZSBjYW5ub3Qgc3RhcnQuCiAgICAg
SFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIEhSRVNV
TFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRl
cjo6T25DbG9ja1N0YXJ0KE1GCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0b3AoTUZUSU1FIGhuc1N5c3Rl
bVRpbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAg
IGlmIChGQUlMRUQoaHIpKQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrU3Rv
cChNRlQKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2UoTUZUSU1FIGhuc1N5c3RlbVRpbWUpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICAvLyBBZnRlciBzaHV0ZG93biwgd2UgY2Fubm90IHBhdXNlLgogICAgIEhSRVNV
TFQgaHIgPSBjaGVja1NodXRkb3duKCk7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBIUkVTVUxUIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9u
Q2xvY2tQYXVzZShNRgogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tSZXN0YXJ0KE1GVElNRSBobnNTeXN0ZW1U
aW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBp
ZiAoRkFJTEVEKGhyKSkKQEAgLTEwNjksNyArMTA2OSw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1Jlc3Rh
cnQoCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6T25DbG9ja1NldFJhdGUoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIGZsb2F0
IHJhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAg
IGlmIChGQUlMRUQoaHIpKQpAQCAtMTA4NCw3ICsxMDg0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrU2V0
UmF0ZSgKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpQcm9jZXNzTWVzc2FnZShNRlZQX01FU1NBR0VfVFlQRSBlTWVzc2Fn
ZSwgVUxPTkdfUFRSIHVsUGFyYW0pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tT
aHV0ZG93bigpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgSFJF
U1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2Vu
dGVyOjpQcm9jZXNzTWVzc2FnZSgKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRDdXJyZW50TWVkaWFUeXBlKF9PdXRw
dHJfICBJTUZWaWRlb01lZGlhVHlwZSAqKnBwTWVkaWFUeXBlKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYg
KCFwcE1lZGlhVHlwZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTExNTgsNyArMTE1
OCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6SW5pdFNlcnZpY2VQb2luCiAKICAgICBIUkVTVUxUIGhyID0gU19PSzsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgaWYgKGlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBNRl9FX0lOVkFM
SURSRVFVRVNUOwpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpJbml0U2VydmljZVBvaW4K
IAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpSZWxlYXNlU2VydmljZVBvaW50ZXJzKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIG1fcmVu
ZGVyU3RhdGUgPSBSZW5kZXJTdGF0ZVNodXRkb3duOwogCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBI
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVz
ZW50ZXI6OlNodXRkb3duT2JqZWN0KAogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVvV2luZG93KEhXTkQgaHdu
ZFZpZGVvKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFJc1dpbmRvdyhod25kVmlkZW8pKQogICAgICAg
ICByZXR1cm4gRV9JTlZBTElEQVJHOwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgSFJFU1VMVCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpTZXRW
aWRlb1dpbmRvdygKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1dpbmRvdyhIV05EKiBwaHduZFZpZGVvKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgaWYgKCFwaHduZFZpZGVvKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgc3RhdGljIEhSRVNVTFQgc2V0TWl4ZXJTb3VyY2VSZWN0
KElNRlRyYW5zZm9ybSogbWl4ZXIsIGNvbnN0IE1GVmlkZW9Ob3JtYWxpemVkUmUKIAogSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpTZXRWaWRlb1Bvc2l0aW9uKGNvbnN0IE1GVmlkZW9Ob3JtYWxpemVkUmVjdCogcG5yY1NvdXJj
ZSwgY29uc3QgTFBSRUNUIHByY0Rlc3QpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAvLyBGaXJzdCwgY2hlY2sg
dGhhdCB0aGUgcGFyYW1ldGVycyBhcmUgdmFsaWQuCiAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIEhS
RVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6U2V0VmlkZW9Qb3NpdGlvCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6R2V0VmlkZW9Qb3NpdGlvbihNRlZpZGVv
Tm9ybWFsaXplZFJlY3QqIHBucmNTb3VyY2UsIExQUkVDVCBwcmNEZXN0KQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAg
ICAgaWYgKCFwbnJjU291cmNlIHx8ICFwcmNEZXN0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW8KIAogSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpSZXBhaW50VmlkZW8oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRv
d24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTIxOTUsNyArMjE5NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6bm90
aWZ5RXZlbnQobG9uZyBFCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmdldFNhbXBsZShDT01QdHI8SU1GU2FtcGxlPiYgc2FtcGxl
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gTUZf
RV9OT1RfSU5JVElBTElaRUQ7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBIUkVTVUxUIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpyZXR1cm5TYW1wbGUo
SU1GU2FtcAogICAgIGlmICghc2FtcGxlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBNRl9FX05PVF9J
TklUSUFMSVpFRDsKQEAgLTIyMjcsNyArMjIyNyw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OnJldHVyblNhbXBsZShJTUZTYW1w
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBv
b2w6OmFyZVNhbXBsZXNQZW5kaW5nKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghbV9pbml0aWFsaXpl
ZCkKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6YXJlU2FtcGxl
c1BlbmRpbmcoKQogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
VmlkZW9TYW1wbGVQb29sOjppbml0aWFsaXplKFZpZGVvU2FtcGxlTGlzdCYgc2FtcGxlcykKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKIAogICAgIGlmIChtX2luaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gTUZfRV9JTlZB
TElEUkVRVUVTVDsKQEAgLTIyNTQsNyArMjI1NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmluaXRpYWxpemUoVmlkZW9TYW1w
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBv
b2w6OmNsZWFyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIG1fdmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwog
ICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTIzMzMsNyArMjMzMyw3IEBAIEhSRVNVTFQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NjaGVkdWxlcjo6c3RvcFNj
aGVkdWxlcigpCiAgICAgLy8gV2FpdCBmb3IgdGhlIHNjaGVkdWxlciB0aHJlYWQgdG8gZmluaXNo
LgogICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdChtX3NjaGVkdWxlclRocmVhZC5nZXQoKSwgSU5G
SU5JVEUpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICBtX3NjaGVkdWxlZFNhbXBsZXMuY2xlYXIoKTsKICAgICBt
X3NjaGVkdWxlclRocmVhZC5jbGVhcigpOwpAQCAtMjM4NCw3ICsyMzg0LDcgQEAgSFJFU1VMVCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpzY2hlZHVs
ZVNhbXBsZShJTUZTYW0KICAgICAgICAgbV9wcmVzZW50ZXItPnByZXNlbnRTYW1wbGUoc2FtcGxl
LCAwKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU3VibWl0IHRoZSBzYW1wbGUgZm9yIHNjaGVk
dWxpbmcuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9zY2hlZHVsZWRTYW1wbGVzLmFwcGVuZChz
YW1wbGUpOwogCiAgICAgICAgIDo6UG9zdFRocmVhZE1lc3NhZ2UobV90aHJlYWRJRCwgRXZlbnRT
Y2hlZHVsZSwgMCwgMCk7CkBAIC0yNDA0LDcgKzI0MDQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnByb2Nlc3NTYW1wbGVzSW5R
dWV1ZQogICAgICAgICBDT01QdHI8SU1GU2FtcGxlPiBzYW1wbGU7CiAKICAgICAgICAgaWYgKHRy
dWUpIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAobV9zY2hlZHVsZWRT
YW1wbGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNh
bXBsZSA9IG1fc2NoZWR1bGVkU2FtcGxlcy50YWtlRmlyc3QoKTsKQEAgLTI0OTAsNyArMjQ5MCw3
IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NjaGVk
dWxlcjo6cHJvY2Vzc1NhbXBsZShJTUZTYW1wCiAgICAgICAgIGhyID0gbV9wcmVzZW50ZXItPnBy
ZXNlbnRTYW1wbGUoc2FtcGxlLCBwcmVzZW50YXRpb25UaW1lKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gUmV0dXJuIHRoZSBzYW1wbGUgdG8gdGhlIHF1ZXVlLCBzaW5jZSBpdCBpcyBub3QgcmVh
ZHkuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9zY2hlZHVsZWRTYW1wbGVzLnByZXBlbmQoc2Ft
cGxlKTsKICAgICB9CiAKQEAgLTI1NDAsNyArMjU0MCw3IEBAIERXT1JEIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlclRocmVhZFByb2NQ
cml2CiAKICAgICAgICAgICAgIGNhc2UgRXZlbnRGbHVzaDoKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOworICAgICAgICAgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1f
c2NoZWR1bGVkU2FtcGxlcy5jbGVhcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB3YWl0ID0gSU5GSU5JVEU7CkBAIC0yNjQ4LDcgKzI2NDgsNyBAQCBIUkVTVUxUIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldFZpZGVv
V2luZG93KEhXTgogICAgIEFTU0VSVChod25kICE9IG1faHduZCk7CiAKICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAgICAgbV9od25kID0gaHduZDsKICAgICB9CiAKQEAgLTI2NjAsNyArMjY2MCw3
IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFBy
ZXNlbnRlcjo6c2V0RGVzdGluYXRpb25SZWN0CiAgICAgaWYgKEVxdWFsUmVjdCgmcmNEZXN0LCAm
bV9kZXN0UmVjdCkpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBtX2Rlc3RS
ZWN0ID0gcmNEZXN0OwogCkBAIC0yNjgyLDcgKzI2ODIsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZVZpZGVvU2Ft
cGxlcwogICAgICAgICByZXR1cm4gTUZfRV9VTkVYUEVDVEVEOwogCiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIHJl
bGVhc2VSZXNvdXJjZXMoKTsKIApAQCAtMjcyMyw3ICsyNzIzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpyZWxlYXNlUmVzb3Vy
Y2VzKCkKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVj
dDNEUHJlc2VudGVyOjpjaGVja0RldmljZVN0YXRlKERldmljZVN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKIAogICAgIEhSRVNVTFQgaHIgPSBtX2RldmljZS0+Q2hlY2tEZXZpY2VTdGF0ZShtX2h3bmQp
OwogCkBAIC0yNzY0LDcgKzI3NjQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnByZXNlbnRTYW1wbGUoSU1GUwogewogICAg
IEhSRVNVTFQgaHIgPSBTX09LOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBDT01QdHI8SURpcmVjdDNEU3VyZmFj
ZTk+IHN1cmZhY2U7CiAKQEAgLTI4MjIsNyArMjgyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6cGFpbnRDdXJyZW50RnJhbWUo
V2ViCiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIGlmICghbV9tZW1TdXJmYWNlKQogICAgICAgICByZXR1cm47CkBAIC0yODg3LDcgKzI4
ODcsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0
M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSgpCiAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAg
ICAgVUlOVCBhZGFwdGVySUQgPSBEM0RBREFQVEVSX0RFRkFVTFQ7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlm
ICghbV9kaXJlY3QzRDkgfHwgIW1fZGV2aWNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuIE1GX0Vf
Tk9UX0lOSVRJQUxJWkVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDIxYzFj
Mjc4NjllMzdlYjllMjg4OWJhYzRjOGE3NTZiMGZkMjdiNTEuLmYyY2ViMDAwYWQ0MDdjNGViNjIz
NTdjY2EwYzAyMmE1YjcxYTU5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAg
LTE3MCw3ICsxNzAsNyBAQCBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbAogCiBib29sIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0CiAKIGJvb2wgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTE5Miw3ICsx
OTIsNyBAQCBib29sIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0CiAKIHVuc2lnbmVkIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPD0gaW5kZXgpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGRpbWVuc2lvbiBvZiB0aGUg
cmVxdWVzdGVkIGZyYW1lLgpAQCAtMjAxLDcgKzIwMSw3IEBAIHVuc2lnbmVkIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpCiAKIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDBfczsKIApAQCAtMjIxLDcg
KzIyMSw3IEBAIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIAogUGxhdGZvcm1JbWFnZVB0ciBTY2FsYWJsZUltYWdl
RGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgbG9ja0hv
bGRlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdl
IGhhdmUgYW4gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAgaWYgKHNpemUo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggYTYxNTdlZjNhODc0ZmNjZjMyMDBlOWFmNzQwNmVlNDg3OTg4Y2FmMy4uZmNm
MGE2MTE1ZGQ4NmMxNDc1OWIyYjIxYTdjNzFjNzhlOWY0Y2Y0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IGYxMTE3ZmYy
NDcwY2ZjMjdmNDU5MTNhNzQ4MjYyNWUwOWU3M2VlY2YuLjkyZGUxZGM1ZjYwNTZkNjFhOWIzMmYy
NjI5N2RiN2RhZWFmNDM4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
OjpzZXRUaWxlc09wYXF1ZShib29sIG9wYXF1ZSkKICAgICBpZiAobV90aWxlc09wYXF1ZSA9PSBv
cGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKIAogICAgIG1fdGlsZXNP
cGFxdWUgPSBvcGFxdWU7CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+dXBkYXRlVGlsZU9wYWNp
dHkoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZG9MYXlvdXRU
aWxlcygpCiAgICAgaWYgKGlzVGlsZUNyZWF0aW9uU3VzcGVuZGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBMZWdhY3lUaWxlR3JpZCogYWN0aXZlR3JpZCA9IGFj
dGl2ZVRpbGVHcmlkKCk7CiAgICAgLy8gRXZlbiB0aG91Z2ggd2UgYXJlbid0IGFjdHVhbGx5IGNy
ZWF0aW5nIHRpbGVzIGluIHRoZSBpbmFjdGl2ZSBncmlkLCB3ZQogICAgIC8vIHN0aWxsIG5lZWQg
dG8gZHJvcCBpbnZhbGlkIHRpbGVzIGluIHJlc3BvbnNlIHRvIGEgbGF5b3V0LgpAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2Nh
bGUpCiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkgJiYgIWlzVGlsZUludmFsaWRhdGlv
blN1c3BlbmRlZCgpKSB7CiAgICAgICAgIC8vIFRpbGUgaW52YWxpZGF0aW9uIGlzIG5vcm1hbGx5
IHN1c3BlbmRlZCBkdXJpbmcgem9vbWluZyBieSBVSUtpdCBidXQgc29tZSBhcHBsaWNhdGlvbnMK
ICAgICAgICAgLy8gdXNpbmcgY3VzdG9tIHNjcm9sbHZpZXdzIG1heSB6b29tIHdpdGhvdXQgdHJp
Z2dlcmluZyB0aGUgY2FsbGJhY2tzLiBJbnZhbGlkYXRlIHRoZSB0aWxlcyBleHBsaWNpdGx5Lgot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgICAgICBhY3RpdmVUaWxlR3JpZCgpLT5kcm9wQWxs
VGlsZXMoKTsKICAgICAgICAgYWN0aXZlVGlsZUdyaWQoKS0+Y3JlYXRlVGlsZXMoQ292ZXJWaXNp
YmxlT25seSk7CiAgICAgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
Ojpjb21taXRTY2FsZUNoYW5nZSgpCiAgICAgQVNTRVJUKG1fcGVuZGluZ1pvb21lZE91dFNjYWxl
IHx8IG1fcGVuZGluZ1NjYWxlKTsKICAgICBBU1NFUlQobV90aWxpbmdNb2RlICE9IERpc2FibGVk
KTsKICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAKICAgICBpZiAobV9wZW5kaW5nWm9vbWVkT3V0U2Nh
bGUpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0U2NhbGUobV9wZW5kaW5nWm9v
bWVkT3V0U2NhbGUpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjps
YXlvdXRUaWxlc05vdygpCiAgICAgaWYgKG1fdGlsaW5nTW9kZSA9PSBab29taW5nKQogICAgICAg
ICBtX3RpbGluZ01vZGUgPSBNaW5pbWFsOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxl
TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgIExlZ2FjeVRp
bGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsKICAgICBpZiAoYWN0aXZlR3Jp
ZC0+Y2hlY2tEb1NpbmdsZVRpbGVMYXlvdXQoKSkgewogICAgICAgICBtX3RpbGluZ01vZGUgPSBz
YXZlZFRpbGluZ01vZGU7CkBAIC0zMTEsMTQgKzMxMSwxNCBAQCB2b2lkIExlZ2FjeVRpbGVDYWNo
ZTo6bGF5b3V0VGlsZXNOb3coKQogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93
Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xv
Y2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogCiAgICAgYWN0aXZlVGlsZUdyaWQo
KS0+YWRkVGlsZXNDb3ZlcmluZ1JlY3QocmVjdCk7CiB9CiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hl
OjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICByZW1v
dmVBbGxOb25WaXNpYmxlVGlsZXNJbnRlcm5hbCgpOwogfQogCkBAIC0zNDAsNyArMzQwLDcgQEAg
dm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZpc2libGVUaWxlc0ludGVybmFsKCkK
IAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVzKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4
IH07CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+ZHJvcEFsbFRpbGVzKCk7CiAgICAgaWYgKG1f
em9vbWVkSW5UaWxlR3JpZCkKICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkLT5kcm9wQWxsVGls
ZXMoKTsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxs
VGlsZXMoKQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkpCiAgICAg
ICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwogICAgIGlmIChtX3pvb21l
ZEluVGlsZUdyaWQpCkBAIC0zNTcsMTMgKzM1NywxMyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldENvbnRl
bnRSZXBsYWNlbWVudEltYWdlKFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50UmVwbGFjZW1l
bnRJbWFnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NvbnRlbnRSZXBsYWNlbWVudElt
YWdlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdl
TXV0ZXggfTsKICAgICBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlID0gY29udGVudFJlcGxhY2Vt
ZW50SW1hZ2U7CiB9CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBMZWdhY3lUaWxlQ2FjaGU6OmNv
bnRlbnRSZXBsYWNlbWVudEltYWdlKCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nv
bnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXggfTsKICAgICByZXR1cm4gbV9jb250ZW50UmVwbGFj
ZW1lbnRJbWFnZTsKIH0KIApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
Ojp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCkKIHsKICAgICBpZiAoaXNUaWxlQ3JlYXRpb25TdXNw
ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBjcmVhdGVUaWxl
c0luQWN0aXZlR3JpZChDb3ZlclNwZWN1bGF0aXZlKTsKIH0KIApAQCAtNjExLDcgKzYxMSw3IEBA
IHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvclBlbmRpbmdS
ZXBhaW50KCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYXZl
ZERpc3BsYXlSZWN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NhdmVkRGlzcGxheVJl
Y3RNdXRleCB9OwogICAgIGJvb2wgYWRkZWRGaXJzdFJlY3QgPSBtX3NhdmVkRGlzcGxheVJlY3Rz
LmlzRW1wdHkoKTsKICAgICBtX3NhdmVkRGlzcGxheVJlY3RzLmFwcGVuZChkaXJ0eVJlY3QpOwog
ICAgIGlmICghYWRkZWRGaXJzdFJlY3QpCkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OnVwZGF0ZVRpbGluZ01vZGUoKQogICAgICAgICBpZiAobV90aWxpbmdNb2RlID09
IERpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07
CiAgICAgICAgIGNyZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENvdmVyVmlzaWJsZU9ubHkpOwogCiAg
ICAgICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCkpCkBAIC03MDEsNyArNzAx
LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01vZGUoVGlsaW5nTW9kZSB0aWxp
bmdNb2RlKQogICAgIGlmICgobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgfHwgbV9wZW5kaW5nU2Nh
bGUpICYmIG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCkKICAgICAgICAgY29tbWl0U2NhbGVDaGFu
Z2UoKTsKICAgICBlbHNlIGlmICh3YXNab29taW5nKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07
CiAgICAgICAgIGJyaW5nQWN0aXZlVGlsZUdyaWRUb0Zyb250KCk7CiAgICAgfQogCkBAIC03NDQs
NyArNzQ0LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRvUGVuZGluZ1JlcGFpbnRzKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmIChpc1RpbGVJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBmbHVzaFNhdmVkRGlzcGxheVJlY3Rz
KCk7CiB9CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Zmx1c2hT
YXZlZERpc3BsYXlSZWN0cygpCiAKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhdmVkRGlzcGxheVJlY3RNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NhdmVkRGlzcGxheVJlY3RNdXRleCB9OwogICAgICAgICBt
X3NhdmVkRGlzcGxheVJlY3RzLnN3YXAocmVjdHMpOwogICAgIH0KICAgICBzaXplX3Qgc2l6ZSA9
IHJlY3RzLnNpemUoKTsKQEAgLTc3OCw3ICs3NzgsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cHJlcGFyZVRvRHJhdygpCiAgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gdmlld1dpbGxEcmF3
XTsKIAogICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV90aWxlTXV0ZXggfTsKICAgICAgICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5
ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wubW0KaW5kZXggYWM4YzY0OGQ2YjNmMTYzNDYxNDFkZTZhNGRmMTk2OTliNjVlZmRlNy4uMmY0
NTI1NmY0ODAzOTAyYmM4MWQyZTk5YzdjZDg0YTcyOGQzYTIxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjphZGRMYXllcihjb25zdCBSZXRhaW5QdHI8
TGVnYWN5VGlsZUxheWVyPiYgbGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sYXllclBvb2xNdXRleCB9OwogICAgIGxpc3RPZkxheWVyc1dpdGhTaXplKGxheWVyU2l6ZSku
cHJlcGVuZChsYXllcik7CiAgICAgbV90b3RhbEJ5dGVzICs9IGJ5dGVzQmFja2luZ0xheWVyV2l0
aFBpeGVsU2l6ZShsYXllclNpemUpOwogCkBAIC05NCw3ICs5NCw3IEBAIFJldGFpblB0cjxMZWdh
Y3lUaWxlTGF5ZXI+IExlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKGNvbnN0
IEludFNpemUmCiB7CiAgICAgaWYgKCFjYW5SZXVzZUxheWVyV2l0aFNpemUoc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXggfTsKICAgICBMYXllckxpc3Qm
IHJldXNlTGlzdCA9IGxpc3RPZkxheWVyc1dpdGhTaXplKHNpemUsIE1hcmtBc1VzZWQpOwogICAg
IGlmIChyZXVzZUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTA0LDcg
KzEwNCw3IEBAIFJldGFpblB0cjxMZWdhY3lUaWxlTGF5ZXI+IExlZ2FjeVRpbGVMYXllclBvb2w6
OnRha2VMYXllcldpdGhTaXplKGNvbnN0IEludFNpemUmCiAKIHZvaWQgTGVnYWN5VGlsZUxheWVy
UG9vbDo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7Ci0gICAgTG9ja0hvbGRlciBy
ZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgcmV1c2VMb2NrZXIgeyBt
X2xheWVyUG9vbE11dGV4IH07CiAgICAgaWYgKGNhcGFjaXR5IDwgbV9jYXBhY2l0eSkKICAgICAg
ICAgc2NoZWR1bGVQcnVuZSgpOwogICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKQEAgLTEzNCw3
ICsxMzQsNyBAQCB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnNjaGVkdWxlUHJ1bmUoKQogCiB2
b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXllclBvb2xNdXRl
eCB9OwogICAgIEFTU0VSVChtX25lZWRzUHJ1bmUpOwogICAgIG1fbmVlZHNQcnVuZSA9IGZhbHNl
OwogICAgIHVuc2lnbmVkIHNocmlua1RvID0gZGVjYXllZENhcGFjaXR5KCk7CkBAIC0xNjEsNyAr
MTYxLDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpwcnVuZSgpCiAKIHZvaWQgTGVnYWN5
VGlsZUxheWVyUG9vbDo6ZHJhaW4oKQogewotICAgIExvY2tIb2xkZXIgcmV1c2VMb2NrZXIobV9s
YXllclBvb2xNdXRleCk7CisgICAgTG9ja2VyIHJldXNlTG9ja2VyIHsgbV9sYXllclBvb2xNdXRl
eCB9OwogICAgIG1fcmV1c2VMaXN0cy5jbGVhcigpOwogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIu
Y2xlYXIoKTsKICAgICBtX3RvdGFsQnl0ZXMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQppbmRleCA2Y2FlMDhiYTNiOTYzZDI1OTcxZGZhM2M0M2Fh
ZGQxMTFjMTU1NWQxLi42ZTVkODMzMzAzMTA4NDNiM2YyZDA5MTRmZjk0NzMyYjU4NGU4ZTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQpAQCAtMzg0
LDE0ICszODQsMTQgQEAgLSAodm9pZClzZW5kTW91c2VNb3ZlRXZlbnQ6KFdlYkV2ZW50ICopZXZl
bnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUMKIAogLSAodm9pZClzZXRFeHBv
c2VkU2Nyb2xsVmlld1JlY3Q6KENHUmVjdClleHBvc2VkU2Nyb2xsVmlld1JlY3QKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcigmX2V4cG9zZWRTY3JvbGxWaWV3UmVjdExvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayB9OwogICAgIF9leHBvc2VkU2Ny
b2xsVmlld1JlY3QgPSBleHBvc2VkU2Nyb2xsVmlld1JlY3Q7CiB9CiAKIC0gKENHUmVjdClleHBv
c2VkU2Nyb2xsVmlld1JlY3QKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZf
ZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBfZXhw
b3NlZFNjcm9sbFZpZXdSZWN0TG9jayB9OwogICAgICAgICBpZiAoIUNHUmVjdElzTnVsbChfZXhw
b3NlZFNjcm9sbFZpZXdSZWN0KSkKICAgICAgICAgICAgIHJldHVybiBfZXhwb3NlZFNjcm9sbFZp
ZXdSZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQppbmRleCAxOWZmZGVlYjUxZDZmODcxZWQ3YTZjZTljNTVjZDk0NGQ2YjI0
MTFmLi4wMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0MTc5YzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC02Njgs
NyArNjY4LDcgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICBwZXJDYWxs
b3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BTZXRQZXJDYWxsb3V0QXV0b3Jl
bGVhc2Vwb29sRW5hYmxlZChZRVMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzdGFydHVwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzdGFydHVwTG9jayB9Owog
ICAgICAgICBzdGFydHVwQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgIH0KIApAQCAtNzIyLDcg
KzcyMiw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIAogICAgIC8vIFdhaXQgZm9y
IHRoZSB3ZWIgdGhyZWFkIHRvIHN0YXJ0dXAgY29tcGxldGVseSBiZWZvcmUgd2UgY29udGludWUu
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihzdGFydHVwTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBzdGFydHVwTG9jayB9OwogCiAgICAgICAgIC8vIFByb3BhZ2F0ZSB0
aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gd29ya2VycyAmIHRoZSB3ZWIgdGhyZWFkLgogICAgICAg
ICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigpLnNhdmVNYWluVGhyZWFkRW52
aXJvbm1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKaW5kZXggNWMyNjJiNDI2ZmM1ZjQzODllYTQ2
ZmI2ZTkxOGE1NzJhYWI3ZTQwNS4uM2I5MDk1ODU4ZjVmZWE0ZjhlZDZkNGQyZmEyMGEyZWI1YjFh
ODAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
YWRhcHRlck11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07
CiAgICAgICAgIGNvbnN0IGF1dG8mIHNhbXBsZSA9IGRhdGEuZ2V0U2FtcGxlKCk7CiAgICAgICAg
IGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpOwogICAg
ICAgICBnc3RfYWRhcHRlcl9wdXNoKG1fYWRhcHRlci5nZXQoKSwgZ3N0X2J1ZmZlcl9yZWYoYnVm
ZmVyKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEoKQogICAgIHNpemVfdCBvdXRDaHVua1NhbXBsZUNv
dW50ID0gTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQ7CiAgICAgc2l6ZV90
IG91dEJ1ZmZlclNpemUgPSBvdXRDaHVua1NhbXBsZUNvdW50ICogbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5icGY7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2FkYXB0ZXJNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CiAgICAgc2l6ZV90IGluQ2h1bmtT
YW1wbGVDb3VudCA9IGdzdF9hdWRpb19jb252ZXJ0ZXJfZ2V0X2luX2ZyYW1lcyhtX3NhbXBsZUNv
bnZlcnRlci5nZXQoKSwgb3V0Q2h1bmtTYW1wbGVDb3VudCk7CiAgICAgc2l6ZV90IGluQnVmZmVy
U2l6ZSA9IGluQ2h1bmtTYW1wbGVDb3VudCAqIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5icGY7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGNjZDZhYzU2MjIzMWZmOGMyOThmZDZjNDUzNDE2
MDk5ZTFkMThkMzYuLmE2ZjJiNzNjMTdkZmNmODYyODRjOGM1ZGU1NjIwNmE5YTUwODc0Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBib29sIG9wZW5O
ZXh0U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiB7CiAgICAgLy8gQ0ZSZWFkU3RyZWFt
T3BlbigpIGNhbiBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJlLWVudGVyZWQgZnJvbSBhbm90
aGVyIHRocmVhZCBiZWZvcmUgaXQgcmV0dXJucy4KICAgICAvLyBPbmUgZXhhbXBsZSB3aGVuIHRo
aXMgY2FuIG9jY3VyIGlzIHdoZW4gdGhlIHN0cmVhbSBiZWluZyBvcGVuZWQgaGFzIG5vIGRhdGEu
IFNlZSA8cmRhcjovL3Byb2JsZW0vMjM1NTAyNjk+LgotICAgIExvY2tIb2xkZXIgbG9ja2VyKGZv
cm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrIH07CiAKICAgICAvLyBTa2lw
IG92ZXIgYW55IHN0cmVhbXMgd2UgY2FuJ3Qgb3Blbi4KICAgICBpZiAoIWFkdmFuY2VDdXJyZW50
U3RyZWFtKGZvcm0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2b2lkIGZvcm1GaW5hbGl6
ZShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0KQogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbZm9ybV0gewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrKTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrIH07CiAg
ICAgICAgICAgICBjbG9zZUN1cnJlbnRTdHJlYW0oZm9ybSk7CiAgICAgICAgIH0KICAgICAgICAg
ZGVsZXRlIGZvcm07CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIEJvb2xlYW4gZm9ybUNhblJl
YWQoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKIHN0YXRpYyB2b2lkIGZv
cm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihjb250ZXh0KTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZm9ybS0+c3RyZWFtSXNCZWluZ09wZW5lZE9yQ2xv
c2VkTG9jayB9OwogCiAgICAgY2xvc2VDdXJyZW50U3RyZWFtKGZvcm0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5k
ZXggZDlhMzE5NGFhZGI2Y2Y3OWUxMDgzODgxNzI4MmI3YWMyNGJmZDFlYS4uMTc3MjYwY2Y0MTJm
MmRiNzlhOWQwZDVhZDhjMTk2ZmRhYjcxMmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC02NDMsNyArNjQzLDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRSZWNlaXZlUmVzcG9uc2UoKQogdm9pZCBD
dXJsUmVxdWVzdDo6c2V0UmVxdWVzdFBhdXNlZChib29sIHBhdXNlZCkKIHsKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX3BhdXNlU3RhdGVNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OwogCiAgICAgICAgIGF1dG8gc2F2ZWRTdGF0ZSA9
IHNob3VsZEJlUGF1c2VkKCk7CiAgICAgICAgIG1fc2hvdWxkU3VzcGVuZCA9IG1faXNQYXVzZWRP
ZlJlcXVlc3QgPSBwYXVzZWQ7CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
c2V0UmVxdWVzdFBhdXNlZChib29sIHBhdXNlZCkKIHZvaWQgQ3VybFJlcXVlc3Q6OnNldENhbGxi
YWNrUGF1c2VkKGJvb2wgcGF1c2VkKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGF1c2VTdGF0
ZU11dGV4IH07CiAKICAgICAgICAgYXV0byBzYXZlZFN0YXRlID0gc2hvdWxkQmVQYXVzZWQoKTsK
ICAgICAgICAgbV9pc1BhdXNlZE9mQ2FsbGJhY2sgPSBwYXVzZWQ7CkBAIC02OTIsNyArNjkyLDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdlZCgpCiAKICAgICAgICAgYm9v
bCBuZWVkQ2FuY2VsIHsgZmFsc2UgfTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3BhdXNlU3RhdGVNdXRleCB9OwogICAgICAgICAgICAgYm9vbCBwYXVzZWQgPSBzaG91bGRCZVBh
dXNlZCgpOwogCiAgICAgICAgICAgICBpZiAoaXNIYW5kbGVQYXVzZWQoKSA9PSBwYXVzZWQpCkBA
IC03NDIsMjAgKzc0MiwyMCBAQCBOZXR3b3JrTG9hZE1ldHJpY3MgQ3VybFJlcXVlc3Q6Om5ldHdv
cmtMb2FkTWV0cmljcygpCiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmVuYWJsZURvd25sb2FkVG9GaWxl
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKICAgICBtX2lzRW5hYmxlZERvd25sb2FkVG9G
aWxlID0gdHJ1ZTsKIH0KIAogY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRl
ZEZpbGVQYXRoKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKICAgICByZXR1cm4gbV9kb3du
bG9hZEZpbGVQYXRoOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgICAgICBpZiAoIW1faXNFbmFibGVkRG93
bmxvYWRUb0ZpbGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NzAsNyArNzcwLDcgQEAgdm9p
ZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxl
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICBy
ZXR1cm47CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9h
ZEZpbGUoKQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgIGlmICghbV9kb3dubG9hZEZpbGVQYXRoLmlzRW1w
dHkoKSkgewogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZG93bmxvYWRGaWxlUGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTEhhbmRsZS5jcHAKaW5kZXggMmNmOWM4NzcxZGRkOGY1MmIyZTAwMjljNGY5M2E3ZGExMWUz
ZmQwNS4uYWU4NmQyYjEyZGIyZWRlNTQ1MmQ4YjJiYTVhYjIyN2NiZmQ5MDUzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxl
LmNwcApAQCAtNjMsMjggKzYzLDI4IEBAIHZvaWQgQ3VybFNTTEhhbmRsZTo6Y2xlYXJDQUNlcnRJ
bmZvKCkKIAogdm9pZCBDdXJsU1NMSGFuZGxlOjphbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVzRm9y
SG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgTG9ja0hvbGRlciBtdXRleChtX2FsbG93
ZWRIb3N0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2FsbG93ZWRIb3N0c0xvY2sgfTsK
IAogICAgIG1fYWxsb3dlZEhvc3RzLmFkZFZvaWQoaG9zdCk7CiB9CiAKIGJvb2wgQ3VybFNTTEhh
bmRsZTo6Y2FuSWdub3JlQW55SFRUUFNDZXJ0aWZpY2F0ZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIG11dGV4KG1fYWxsb3dlZEhvc3RzTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWxsb3dlZEhvc3RzTG9jayB9OwogCiAgICAgcmV0dXJu
IG1fYWxsb3dlZEhvc3RzLmNvbnRhaW5zKGhvc3QpOwogfQogCiB2b2lkIEN1cmxTU0xIYW5kbGU6
OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBjb25zdCBT
dHJpbmcmIGNlcnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBMb2NrSG9sZGVy
IG11dGV4KG1fYWxsb3dlZENsaWVudEhvc3RzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
YWxsb3dlZENsaWVudEhvc3RzTG9jayB9OwogCiAgICAgbV9hbGxvd2VkQ2xpZW50SG9zdHMuc2V0
KGhvc3ROYW1lLCBDbGllbnRDZXJ0aWZpY2F0ZSB7IGNlcnRpZmljYXRlLCBrZXkgfSk7CiB9CiAK
IE9wdGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVudENlcnRpZmljYXRlPiBDdXJsU1NMSGFuZGxl
OjpnZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKSBjb25zdAog
ewotICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2VkQ2xpZW50SG9zdHNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9hbGxvd2VkQ2xpZW50SG9zdHNMb2NrIH07CiAKICAgICBhdXRvIGl0
ID0gbV9hbGxvd2VkQ2xpZW50SG9zdHMuZmluZChob3N0TmFtZSk7CiAgICAgaWYgKGl0ID09IG1f
YWxsb3dlZENsaWVudEhvc3RzLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZWE0NTMxMTBhMTgzOTczN2Q5NzVmYjM1ZTFlODIw
OWM4ZWEyMDI5Zi4uMTU3N2FhNjFiMmY1NjliMmQxNjcyY2IyNzE3M2MyYTg2ZGU0ZTAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0y
MjksNyArMjI5LDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xvc2UoKQogICAgICAgICAvLyBB
U1NFUlQobV9vcGVuaW5nVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgICAgIHNx
bGl0ZTMqIGRiID0gbV9kYjsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9OwogICAgICAgICAgICAgbV9kYiA9IDA7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fdXNlV0FMKSB7CkBAIC0yNzMsNyArMjczLDcgQEAgaW50NjRfdCBT
UUxpdGVEYXRhYmFzZTo6bWF4aW11bVNpemUoKQogICAgIGludDY0X3QgbWF4UGFnZUNvdW50ID0g
MDsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgICAgIGVu
YWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVT
dGF0ZW1lbnQoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCJfcyk7CiAgICAgICAgIG1heFBhZ2VDb3Vu
dCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCkgOiAwOwpAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDY0X3Qgc2l6
ZSkKICAgICBBU1NFUlQoY3VycmVudFBhZ2VTaXplIHx8ICFtX2RiKTsKICAgICBpbnQ2NF90IG5l
d01heFBhZ2VDb3VudCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUgLyBjdXJyZW50UGFnZVNpemUg
OiAwOwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgZW5hYmxlQXV0aG9yaXpl
cihmYWxzZSk7CiAKICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KG1h
a2VTdHJpbmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBhZ2VDb3VudCkpOwpA
QCAtMzA5LDcgKzMwOSw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6cGFnZVNpemUoKQogICAgIC8v
IFNpbmNlIHRoZSBwYWdlIHNpemUgb2YgYSBkYXRhYmFzZSBpcyBsb2NrZWQgaW4gYXQgY3JlYXRp
b24gYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgZHluYW1pYywgCiAgICAgLy8gd2UgY2FuIGNhY2hl
IHRoZSB2YWx1ZSBmb3IgZnV0dXJlIHVzZQogICAgIGlmIChtX3BhZ2VTaXplID09IC0xKSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9OwogICAgICAgICBlbmFibGVBdXRob3JpemVy
KGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudCgiUFJBR01BIHBhZ2Vfc2l6ZSJfcyk7CkBAIC0zMjYsNyArMzI2LDcgQEAgaW50NjRfdCBT
UUxpdGVEYXRhYmFzZTo6ZnJlZVNwYWNlU2l6ZSgpCiAgICAgaW50NjRfdCBmcmVlbGlzdENvdW50
ID0gMDsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgICAg
IGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICAvLyBOb3RlOiBmcmVlbGlzdF9jb3Vu
dCB3YXMgYWRkZWQgaW4gU1FMaXRlIDMuNC4xLgogICAgICAgICBhdXRvIHN0YXRlbWVudCA9IHBy
ZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBmcmVlbGlzdF9jb3VudCJfcyk7CkBAIC0zNDIsNyArMzQy
LDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKICAgICBpbnQ2NF90IHBh
Z2VDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9y
aXplckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9Owog
ICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgYXV0byBzdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgcGFnZV9jb3VudCJfcyk7CiAgICAgICAgIHBhZ2VD
b3VudCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMCkgOiAwOwpAQCAtNDIz
LDcgKzQyMyw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6cnVuVmFjdXVtQ29tbWFuZCgpCiAKIGlu
dCBTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9hdXRob3JpemVyTG9jayB9OwogICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogCiAgICAg
aWYgKCFleGVjdXRlQ29tbWFuZCgiUFJBR01BIGluY3JlbWVudGFsX3ZhY3V1bSJfcykpCkBAIC00
MzUsNyArNDM1LDcgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNv
bW1hbmQoKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQoKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2RhdGFiYXNlQ2xvc2luZ011dGV4IH07CiAgICAgaWYgKG1fZGIpCiAgICAgICAgIHNxbGl0
ZTNfaW50ZXJydXB0KG1fZGIpOwogfQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU1FMaXRlRGF0
YWJhc2U6OnNldEF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVyJiBhdXRob3JpemVyKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVy
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sgfTsKIAogICAgIG1f
YXV0aG9yaXplciA9ICZhdXRob3JpemVyOwogICAgIApAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OnJlbGVhc2VNZW1vcnkoKQogCiBzdGF0aWMgRXhwZWN0ZWQ8c3FsaXRl
M19zdG10KiwgaW50PiBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNl
JiBkYXRhYmFzZSwgY29uc3QgY2hhciogcXVlcnksIHNpemVfdCBxdWVyeUxlbmd0aCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGRhdGFiYXNlTG9jayhkYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkpOworICAg
IExvY2tlciBkYXRhYmFzZUxvY2sgeyBkYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKICAgICBM
T0coU1FMRGF0YWJhc2UsICJTUUwgLSBwcmVwYXJlIC0gJXMiLCBxdWVyeSk7CiAKICAgICAvLyBQ
YXNzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVy
IHRvIHNxbGl0ZTNfcHJlcGFyZV92MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYTkyZDNhYzVlNTg2NTZmMGIzMzYxMTU0ODI3YWI4
NzJhNTdkZWUzYS4uNmQ4ZGM3MmVkY2JkNDI4ODdlNjc3NWExNjAyODU0N2E5N2M2MzFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgU1FMaXRlU3RhdGVtZW50Ojp+U1FMaXRlU3RhdGVtZW50KCkKIAogaW50
IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7Ci0gICAgTG9ja0hvbGRlciBkYXRhYmFzZUxvY2so
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkpOworICAgIExvY2tlciBkYXRhYmFzZUxvY2sgeyBt
X2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCiAgICAgaW50IGVycm9yID0gc3FsaXRlM19z
dGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3Ig
IT0gU1FMSVRFX1JPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmluZGV4IDAyOGNiNTM3OGFlMjQ2NzFjZDYyYTYx
NGVmOTcwM2NjNjYxNDJiNDQuLjkxYjg4OTQxYTc2YTgwNzFkMzBkN2ZlZDc0MTYzZmIwOWY3Yjg3
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCU2VydmVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBXZWJJREJTZXJ2ZXI6OldlYklE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
LCBXZQogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHNlc3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzcGFjZVJl
cXVlc3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2
ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSwgbV9zZXJ2
ZXJMb2NrKTsKICAgICB9KTsKIH0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmdldE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3IKICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVy
LmNvdW50KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9z
c1RocmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gV1RGTW92
ZSh0b2tlbiksIG9yaWdpbnMgPSBjcm9zc1RocmVhZENvcHkobV9zZXJ2ZXItPmdldE9yaWdpbnMo
KSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG9yaWdpbnMpKTsK
ICAgICAgICAgfSkpOwpAQCAtODEsNyArODEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2VB
bmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbQog
ICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlm
aWNhdGlvblRpbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRh
VGFza0NvdW50ZXIuY291bnQoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZl
ci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWNhdGlvblRpbWUp
OwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBXVEZNb3ZlKHRva2VuKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpj
bG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
b3JpZ2luRGF0YXMgPSBvcmlnaW5EYXRhcy5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3VudCgpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKG9yaWdpbkRhdGFzKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1RocmVh
ZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gV1RGTW92ZSh0b2tl
bildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2xkT3JpZ2luID0gb2xkT3JpZ2luLmlzb2xhdGVkQ29w
eSgpLCBuZXdPcmlnaW4gPSBuZXdPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRhVGFza0NvdW50ZXIuY291bnQoKV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9yaWdpbihvbGRPcmlnaW4s
IG5ld09yaWdpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwogfQog
CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5k
ZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKIH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkaWRG
aW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNv
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0K
IApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZl
ci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSW5mbyk7CiB9CiAK
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXIt
PmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogfQogCkBA
IC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5y
ZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdO
YW1lKTsKIH0KIApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbGVhck9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
IG1fc2VydmVyLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwogfQogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0
ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKIH0KIApA
QCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+
ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1l
KTsKIH0KIApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBt
X3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtl
eURhdGEsIHZhbHVlLCBvdmVyV3JpdGVNb2RlKTsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBXCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRh
LCBnZXRSZWNvcmREYXRhKTsKIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxs
UmVjb3Jkc0RhdGEpOwogfQogCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgV2UKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwogICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsK
IH0KIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVSZWNvcmQo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3Nl
cnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogfQogCkBAIC0y
ODMsNyArMjgzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPm9wZW5D
dXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOwogfQogCkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVl
c3REYXRhLCBpdGVyYXRlQ3Vyc29yRGF0YSk7CiB9CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgYwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRyYW5zYWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSW5mbyk7CiB9CiAKQEAgLTMw
Nyw3ICszMDcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
IH0KIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3Nl
cnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpOwogfQogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
IG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMzMSw3ICszMzEsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIs
IGNvbm5lY3Rpb25DbG9zZWQpOwogfQogCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3RE
YXRhKTsKIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjCiAg
ICAgYXV0byogd2ViSURCQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoY29ubmVjdGlv
bi51bmlxdWVJRCgpKTsKICAgICBBU1NFUlQod2ViSURCQ29ubmVjdGlvbik7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHdl
YklEQkNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7
CiB9CiAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6YWRkQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlByb2Nlc3NJZAogCiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7CiAKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKGl0ZXIt
PnZhbHVlLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CiAgICAgfSk7CiAgICAgbV9jb25uZWN0aW9u
cy5hZGQoJmNvbm5lY3Rpb24pOwpAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjpyZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogICAgICAg
ICBBU1NFUlQoY29ubmVjdGlvbik7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAg
ICBtX3NlcnZlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVjdGlvbi0+Y29ubmVjdGlvblRv
Q2xpZW50KCkpOwogICAgIH0pOwogCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXI6OmNsb3NlKCkKICAgICBwb3N0VGFzayhbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgbV9j
b25uZWN0aW9uTWFwLmNsZWFyKCk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAg
ICBtX3NlcnZlciA9IG51bGxwdHI7CiAgICAgICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6Omtp
bGwoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA5YTFhMjA4NjQwZmVkODExM2Rh
MzdiNjQ0ZDBiNzRiOWZiZmZiMzMwLi4yYWNlNTFjNjEwOGUyMzVmODA2MWRjMmU4ODk5YmQ1NmJk
NzgyMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBFbmdp
bmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjwKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAg
ICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgc2l6ZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgICAgICBhdXRvIGZp
bGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlKTsKIAogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlSGFuZGxlKSkgewpAQCAtNTU0LDcgKzU1NCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBFbmdp
bmU6OnJlYWRTaXplRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTaXplRmlsZUxvY2sgfTsKICAgICBhdXRv
IGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGF1dG8gY2xvc2VGaWxlSGFuZGxlID0gbWFrZVNjb3BlRXhp
dChbJl0gewogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CkBAIC02
OTgsNyArNjk4LDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IG1fcm9vdFBh
dGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNp
emVGaWxlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTaXplRmlsZUxvY2sg
fTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkocGF0aCkpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRoKSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KQpAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURp
cmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsCiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Bh
dGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihn
bG9iYWxTaXplRmlsZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6ZUZp
bGVMb2NrIH07CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHBh
dGgpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2ds
aWIvRE5TQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0Nh
Y2hlLmNwcAppbmRleCBkOGVhMzM2ODVlYTJiOGViNmNjZWI0M2FkMzhlMDYwYzQzYTg5NTk0Li4y
NGRhMzg4NzljYjA0MjZlMTlmNGZiYzcxZGE5MmU4MzE0ZmZjYjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
RE5TQ2FjaGU6OkROU0NhY2hlTWFwJiBETlNDYWNoZTo6bWFwRm9yVHlwZShUeXBlIHR5cGUpCiAK
IE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+PiBETlNDYWNoZTo6bG9va3Vw
KGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5cGUgdHlwZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvJiBtYXAg
PSBtYXBGb3JUeXBlKHR5cGUpOwogICAgIGF1dG8gaXQgPSBtYXAuZmluZChob3N0KTsKICAgICBp
ZiAoaXQgPT0gbWFwLmVuZCgpKQpAQCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxWZWN0b3I8R1Jl
ZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBob3N0
LCBUeQogCiB2b2lkIEROU0NhY2hlOjp1cGRhdGUoY29uc3QgQ1N0cmluZyYgaG9zdCwgVmVjdG9y
PEdSZWZQdHI8R0luZXRBZGRyZXNzPj4mJiBhZGRyZXNzTGlzdCwgVHlwZSB0eXBlKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIGF1dG8mIG1hcCA9IG1hcEZvclR5cGUodHlwZSk7CiAgICAgQ2FjaGVkUmVzcG9uc2Ug
cmVzcG9uc2UgPSB7IFdURk1vdmUoYWRkcmVzc0xpc3QpLCBNb25vdG9uaWNUaW1lOjpub3coKSAr
IGV4cGlyZUludGVydmFsIH07CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuc2V0KGhvc3QsIFdU
Rk1vdmUocmVzcG9uc2UpKTsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEROU0NhY2hlOjpwcnVu
ZVJlc3BvbnNlc0luTWFwKEROU0NhY2hlTWFwJiBtYXApCiAKIHZvaWQgRE5TQ2FjaGU6OnJlbW92
ZUV4cGlyZWRSZXNwb25zZXNGaXJlZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmVtb3ZlRXhwaXJlZFJlc3Bv
bnNlc0luTWFwKG1fZG5zTWFwKTsKICNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwgNTksIDApCiAg
ICAgcmVtb3ZlRXhwaXJlZFJlc3BvbnNlc0luTWFwKG1faXB2NE1hcCk7CkBAIC0xMjksNyArMTI5
LDcgQEAgdm9pZCBETlNDYWNoZTo6cmVtb3ZlRXhwaXJlZFJlc3BvbnNlc0ZpcmVkKCkKIAogdm9p
ZCBETlNDYWNoZTo6Y2xlYXIoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1fZG5zTWFwLmNsZWFyKCk7CiAjaWYg
R0xJQl9DSEVDS19WRVJTSU9OKDIsIDU5LCAwKQogICAgIG1faXB2NE1hcC5jbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9v
cC5jcHAKaW5kZXggYjJhNGZkZDZmZmM2ZmVlMzEzNTI2YmZhZjRmOWIyZGY1OTFmOWZmMi4uNTc5
MTM3OTJmZTQ4ZWQ4YWVlNDUyNzQzOTczZmM2N2U2NWRhODY5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29t
cG9zaXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC05
NiwxNCArOTYsMTQgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c3VzcGVuZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tlcihtX3N0YXRlLmxvY2spOwor
ICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgIG1fc3RhdGUuaXNT
dXNwZW5kZWQgPSB0cnVlOwogICAgIG1fdXBkYXRlVGltZXIuc3RvcCgpOwogfQogCiB2b2lkIENv
bXBvc2l0aW5nUnVuTG9vcDo6cmVzdW1lKCkKIHsKLSAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2Vy
KG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07
CiAgICAgbV9zdGF0ZS5pc1N1c3BlbmRlZCA9IGZhbHNlOwogICAgIGlmIChtX3N0YXRlLnVwZGF0
ZSA9PSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkKQogICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpyZXN1bWUoKQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoKQog
ewotICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICBMb2NrZXIg
c3RhdGVMb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICBzY2hlZHVsZVVwZGF0ZShzdGF0ZUxv
Y2tlcik7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c3RvcFVwZGF0ZXMoKQogewogICAgIC8vIFN0b3AgZXZlcnl0aGluZy4KIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9j
ayB9OwogICAgIG1fdXBkYXRlVGltZXIuc3RvcCgpOwogICAgIG1fc3RhdGUudXBkYXRlID0gVXBk
YXRlU3RhdGU6OklkbGU7CiAgICAgbV9zdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CkBAIC0x
ODAsNyArMTgwLDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyRmlyZWQo
KQogewogICAgIHsKICAgICAgICAgLy8gU2NlbmUgdXBkYXRlIGlzIG5vdyBpbiBwcm9ncmVzcy4K
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgICAgICBpZiAobV9zdGF0ZS5pc1N1c3BlbmRl
ZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVT
dGF0ZTo6SW5Qcm9ncmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDM2NjU5ZTQ2N2ZlYzNlM2U5N2I4MTI3
YWVlOWJjOTBhMjMyMzQ0MWUuLmM4YjliOGNjOTExNjA3NTY0OGI2ODY1ODQwNDI5ZGM5Y2YxOWQ4
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcApAQCAtNjAsNyArNjAsNyBAQCBUaHJlYWRlZENvbXBvc2l0b3I6OlRo
cmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bgogewogICAgIHsKICAgICAgICAgLy8gTG9ja2luZyBpc24ndCByZWFsbHkgbmVjZXNzYXJ5IGhl
cmUsIGJ1dCBpdCdzIGRvbmUgZm9yIGNvbnNpc3RlbmN5LgotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJp
YnV0ZXMubG9jayB9OwogICAgICAgICBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplID0gdmlld3Bv
cnRTaXplOwogICAgICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsK
ICAgICAgICAgbV9hdHRyaWJ1dGVzLm5lZWRzUmVzaXplID0gIXZpZXdwb3J0U2l6ZS5pc0VtcHR5
KCk7CkBAIC0xMzgsMTQgKzEzOCwxNCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVzdW1l
KCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFNjYWxlRmFjdG9yKGZsb2F0IHNjYWxl
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVG
YWN0b3IgPSBzY2FsZTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUo
KTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJp
YnV0ZXMubG9jayB9OwogICAgIG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBv
c2l0aW9uOwogICAgIG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvciA9IHNjYWxlOwogICAgIG1fY29t
cG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZv
aWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYg
c2Nyb2xsUG9zaXRpb24sIGZsb2F0CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRWaWV3
cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CiAgICAgbV9hdHRyaWJ1dGVzLnZpZXdwb3J0U2l6ZSA9
IHZpZXdwb3J0U2l6ZTsKICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3IgPSBzY2FsZTsKICAg
ICBtX2F0dHJpYnV0ZXMubmVlZHNSZXNpemUgPSB0cnVlOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZv
aWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIFZlY3RvcjxXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsKIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICAgICAgdmlld3BvcnRTaXplID0gbV9hdHRy
aWJ1dGVzLnZpZXdwb3J0U2l6ZTsKICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBtX2F0dHJpYnV0
ZXMuc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIHNjYWxlRmFjdG9yID0gbV9hdHRyaWJ1dGVzLnNj
YWxlRmFjdG9yOwpAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnNjZW5lVXBkYXRlRmluaXNoZWQoKQogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVm
cmVzaENhbGxiYWNrIHsgZmFsc2UgfTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1
dGVzLmxvY2sgfTsKICAgICAgICAgc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNr
ID0gbV9hdHRyaWJ1dGVzLmNsaWVudFJlbmRlcnNOZXh0RnJhbWUKICAgICAgICAgICAgIHx8IG1f
ZGlzcGxheVJlZnJlc2hNb25pdG9yLT5yZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKTsK
ICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zdGF0ZUxvY2soKSk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9jb21wb3NpdGluZ1J1
bkxvb3AtPnN0YXRlTG9jaygpIH07CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgRGlzcGxheVJlZnJl
c2hNb25pdG9yIGNhbGxiYWNrLCBpZiBuZWNlc3NhcnkuCiAgICAgaWYgKHNob3VsZERpc3BhdGNo
RGlzcGxheVJlZnJlc2hDYWxsYmFjaykKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFRocmVhZGVk
Q29tcG9zaXRvcjo6c2NlbmVVcGRhdGVGaW5pc2hlZCgpCiAKIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OwogICAgIG1fYXR0cmlidXRlcy5zdGF0
ZXMuYXBwZW5kKHN0YXRlKTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRh
dGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCmluZGV4IGE4YTc4OWZjMTJjNDE4NmEwOWYwMmM5MmQ0M2VlZDE0NTFlMDQxMDAu
LmQ3NGE0NzNlMjBjOTAxOGZlMzZkNWFiNmRmZDhhYTUyYjVhNjlhNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMTg4LDcg
KzE4OCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXAo
KQogICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICB3aGlsZSAocmVzdWx0ID09
IFNRTElURV9ST1cpIHsKICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChxdWVyeS0+
Y29sdW1uVGV4dCgwKSwgcXVlcnktPmNvbHVtblRleHQoMSkpOwogICAgICAgICByZXN1bHQgPSBx
dWVyeS0+c3RlcCgpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjbGVh
ckxvYWRlZEljb25zVGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgIGF1dG8gbm93ID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gaWNvbnNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8gaXRlciA6IG1fbG9hZGVkSWNvbnMpIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29ucwogICAgICAgICAgICAgYm9vbCBleHBpcmVkID0gZmFsc2U7CiAg
ICAgICAgICAgICBTdHJpbmcgY2FjaGVkSWNvblVSTDsKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7
CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExv
Y2sgfTsKICAgICAgICAgICAgICAgICBjYWNoZWRJY29uVVJMID0gbV9wYWdlVVJMVG9JY29uVVJM
TWFwLmdldChwYWdlVVJMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjYWNoZWRJ
Y29uVVJMID09IGljb25VUkwpCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkws
IGNvbnMKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbldyaXRlVG9EYXRhYmFzZSB8
fCBzZXRJY29uSURGb3JQYWdlVVJMKGljb25JRC52YWx1ZSgpLCBwYWdlVVJMKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVS
TE1hcExvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFn
ZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVS
TFRvSWNvblVSTE1hcC5zZXQocGFnZVVSTCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNTE0LDEzICs1
MTQsMTMgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5l
ZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IWNhbldyaXRlVG9EYXRhYmFzZSkgewogICAgICAgICAgICAgICAgIGJvb2wgZm91bmRJbk1lbW9y
eUNhY2hlOwogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIGZv
dW5kSW5NZW1vcnlDYWNoZSA9IG1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCk7CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGZvdW5kSW5NZW1vcnlDYWNoZSkg
ewogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2Nr
IH07CiAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5zZXQocGFnZVVS
TCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTU0MiwxNCArNTQyLDE0IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2Fk
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGljb25EYXRhOwogICAgICAgICBTdHJpbmcgaWNvblVS
TDsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgIGljb25VUkwgPSBtX3BhZ2VVUkxUb0lj
b25VUkxNYXAuZ2V0KHBhZ2VVUkwpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2RiLmlzT3Bl
bigpICYmICFpY29uVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBleHBpcmVkOwog
ICAgICAgICAgICAgaWNvbklEID0gaWNvbklERm9ySWNvblVSTChpY29uVVJMLCBleHBpcmVkKTsK
ICAgICAgICAgICAgIGlmIChpY29uSUQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRJ
Y29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0YSA9
IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9s
b2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwg
TW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CkBAIC01NjYsMTMgKzU2NiwxMyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwg
QWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2sp
OworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CiAgICAg
ICAgICAgICBhdXRvIGl0ID0gbV9sb2FkZWRJY29ucy5maW5kKGljb25VUkwpOwogICAgICAgICAg
ICAgaWYgKGl0ICE9IG1fbG9hZGVkSWNvbnMuZW5kKCkgJiYgaXQtPnZhbHVlLmZpcnN0KSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBpY29uID0gaXQtPnZhbHVlLmZpcnN0OwogICAgICAgICAgICAg
ICAgIGl0LT52YWx1ZS5zZWNvbmQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgICAg
ICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1lcigpOwotICAgICAgICAgICAgICAgIGxvY2tI
b2xkZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHko
KTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGljb24pKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01OTYsNyArNTk2LDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZQogCiAgICAgICAgICAgICBhdXRvIGljb24gPSBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OwogICAgICAgICAgICAgc3RhcnRDbGVhckxvYWRlZElj
b25zVGltZXIoKTsKLSAgICAgICAgICAgIGxvY2tIb2xkZXIudW5sb2NrRWFybHkoKTsKKyAgICAg
ICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShpY29uKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNjA2LDcgKzYwNiw3
IEBAIFN0cmluZyBJY29uRGF0YWJhc2U6Omljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgIHJldHVybiBtX3BhZ2VVUkxU
b0ljb25VUkxNYXAuZ2V0KHBhZ2VVUkwpOwogfQogCkBAIC02MTgsNyArNjE4LDcgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
c3QgdW5zaWduZWQgY2hhcioKICAgICBpZiAobV9hbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dE
YXRhYmFzZVdyaXRlOjpObyB8fCBhbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdy
aXRlOjpObykgewogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJY29uc0xvY2sgfTsKICAgICAgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8
UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAg
ICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZTsKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBj
aGFyKgogICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1lcigpOwogICAgICAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVzdWx0LCBpY29uVVJMID0gaWNvblVSTC5pc29sYXRlZENvcHkoKSwgcGFnZVVSTCA9IHBhZ2VV
UkwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrIH07CiAgICAg
ICAgICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChwYWdlVVJMLCBpY29uVVJMKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVz
dWx0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAg
ICAgICAgICBpZiAoaWNvbklEKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoc2V0SWNvbklERm9yUGFnZVVSTChpY29uSUQudmFsdWUoKSwgcGFn
ZVVSTCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFn
ZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgICAgICAgICAgICAgICAgICBtX3Bh
Z2VVUkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25VUkwpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTY3OCwxMiArNjc4LDEyIEBAIHZvaWQgSWNvbkRhdGFiYXNl
OjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICBtX2xvYWRlZEljb25zLmNsZWFyKCk7CiAgICAg
fQogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xk
ZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgICAgICAgICAgbV9wYWdlVVJMVG9J
Y29uVVJMTWFwLmNsZWFyKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBiMjM3YTZjYzY5Y2ZlYjM2
NTNjOGJhNjVkZTllY2I0N2RjNDFmZjhhLi5hYjBlOTA5ODhiNDlkMDM5NTJiMWU3ZTU4MjI2N2Nh
MTFhNmU5MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBJblByb2Nlc3NJREJTZXJ2ZXI6Oklu
UHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
ZAogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9IGRhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENv
cHkoKSwgc3BhY2VSZXF1ZXN0ZXIgPSBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIo
KnRoaXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQgPSBJREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKIAotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyID0gbWFrZVVuaXF1ZTxJREJTZXJ2ZXI6
OklEQlNlcnZlcj4oc2Vzc2lvbklELCBkaXJlY3RvcnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIp
LCBtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCpt
X2Nvbm5lY3Rpb25Ub0NsaWVudCk7CiAgICAgfSk7CkBAIC0xMjMsNyArMTIzLDcgQEAgSURCU2Vy
dmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlv
blRvQ2xpZW50KCkgY29uc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFz
ZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgZGlz
cGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOwogICAg
IH0pOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRE
ZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5
KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+b3BlbkRh
dGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlc291cmNlSWRlbnRpZmllciA9IHJlc291cmNlSWRlbnRpZmllci5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5hYm9ydFRy
YW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yNzMsNyArMjcz
LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJgogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNv
bW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBt
X3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9KTsK
IH0KQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJgogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbklk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAg
ICB9KTsKIH0KQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
RmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YQogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXN1bHREYXRhLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8p
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpLCBpbmZvID0gaW5mby5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2Vy
dmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KQEAg
LTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlc3VsdAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgZGlz
cGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlTmFtZSA9IG9iamVj
dFN0b3JlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZU5hbWUpOwogICAgIH0pOwogfQpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBk
aXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIH0pOwogfQpA
QCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBk
aXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2Jq
ZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9
CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3QKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSBy
ZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgo
cmVxdWVzdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4TmFtZSA9IGluZGV4TmFtZS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJM
b2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0pOwogfQpAQCAtMzM3LDcgKzMzNyw3
IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVu
YW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVk
Q29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSA9
IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICB9KTsKIH0KQEAgLTM0NSw3ICsz
NDUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRl
eGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIGRp
c3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlEYXRhID0ga2V5RGF0YS5pc29s
YXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0g
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChy
ZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgIH0pOwogfQpA
QCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKICAgICBk
aXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZ2V0UmVjb3JkRGF0YSA9IGdldFJl
Y29yZERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKICAg
ICB9KTsKIH0KQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0
UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgYwogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxs
UmVjb3Jkc0RhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCks
IGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3Jk
cyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0pOwogfQpAQCAtMzY5LDcg
KzM2OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1
ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0ga2V5UmFuZ2VEYXRhLmlzb2xh
dGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXIt
PmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogICAgIH0pOwogfQpAQCAtMzc3
LDcgKzM3Nyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
ID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGtleVJhbmdlRGF0YSA9IGtleVJhbmdlRGF0
YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1f
c2VydmVyLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7
CiB9CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJl
Y29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEg
PSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCld
ICgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVy
LT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KQEAgLTM5Myw3ICsz
OTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVl
c3REYXRhLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gZGF0YS5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJl
cXVlc3REYXRhLCBkYXRhKTsKICAgICB9KTsKIH0KQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5z
YWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRy
YW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5m
byA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAg
ICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgaW5mbyk7CiAgICAgfSk7CiB9CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07
CiAgICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC00NDUsNyArNDQ1LDcgQEAg
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFz
ZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
IHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2Nr
IH07CiAgICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC00NTMsNyArNDUzLDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGUKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydE9wZW5B
bmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIg
PSB0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAg
IH0pOwogfQpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVkREI6OkNvbm5lY3Rpb25D
bG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCiB7CiAgICAgZGlzcGF0Y2hU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyID0gcmVxdWVzdElkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCksIGNvbm5lY3Rpb25DbG9zZWRdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7
CiAgICAgfSk7CiB9CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWQK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1
ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAg
ICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKICAgICB9
KTsKIH0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRC
UmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcgogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBD
bGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IG1fY29ubmVjdGlvblRvU2VydmVy
LT5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+
Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGlkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlm
aWVyLCBvcmlnaW4pOwogICAgIH0pOwogfQpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2Vi
Q29yZTo6SURCUmVzCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRh
YmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgZGlz
cGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWNh
dGlvblRpbWVdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+
Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWNhdGlvblRpbWUpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcAppbmRleCA5MWI0ZjdhYzM0NjMzMTNlMTBlYTdmMzIyYWU4ODdhOGU4NDRlNGViLi5m
NmE2ZTk3NTdiNGFmY2FiODk4NGFiYTFmNTI4MGI3OThiOWFhNDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMTY2LDcgKzE2Niw3
IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZCgpCiAKICAgICBib29sIHBh
cnRpYWxTeW5jID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5
bmNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3luY0xvY2sgfTsKIAogICAgICAg
ICAvLyBEbyBub3Qgc2NoZWR1bGUgYW5vdGhlciBzeW5jIGlmIHdlJ3JlIHN0aWxsIHRyeWluZyB0
byBjb21wbGV0ZSB0aGUKICAgICAgICAgLy8gcHJldmlvdXMgb25lLiBCdXQsIGlmIHdlJ3JlIHNo
dXR0aW5nIGRvd24sIHNjaGVkdWxlIGl0IGFueXdheS4KQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogICAgIGJvb2wgY2xlYXJJdGVtczsKICAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtczsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zeW5jTG9j
ayB9OwogCiAgICAgICAgIEFTU0VSVChtX3N5bmNTY2hlZHVsZWQpOwogCkBAIC00ODQsNyArNDg0
LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKCkKICAgICBzeW5jKGNsZWFy
SXRlbXMsIGl0ZW1zKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5j
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N5bmNMb2NrIH07CiAgICAgICAgIG1f
c3luY0luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDQ5YTMzMmUyMWE0ODU5OGRkNDU3NDcz
ZDE1M2Y5YmVhZjA2ZWQwOWIuLjFkZThlNDY4ODFmY2MxMTNhNmJmYmJlNDBhODlkYjRlNWY0MDY1
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmltcG9ydE9yaWdpbklk
ZW50aWZpZXJzKCkKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZmluaXNoZWRJbXBvcnRpbmdPcmln
aW5JZGVudGlmaWVycygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAgICAgaWYgKG1fY2xp
ZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZ09yaWdpbnMoKTsKIH0KQEAg
LTE3OCw3ICsxNzgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRl
bnRpZmllcnMoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAKICAgICAgICAgLy8gRG9uJ3QgZm9yY2UgY3JlYXRp
b24gb2YgU3RvcmFnZVRyYWNrZXIncyBkYiBqdXN0IGJlY2F1c2UgYSB0cmFja2VyCiAgICAgICAg
IC8vIHdhcyBpbml0aWFsaXplZC4gSXQgd2lsbCBiZSBjcmVhdGVkIGlmIGxvY2FsIHN0b3JhZ2Ug
ZGJzIGFyZSBmb3VuZApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5
bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAgICAgICAgICAgICBpbnQgcmVzdWx0OwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
T3JpZ2lucyhtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja09y
aWdpbnMgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgICAgICAgICAgd2hpbGUgKChyZXN1
bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgICAgICAgICAg
ICAgbV9vcmlnaW5TZXQuYWRkKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKS5pc29sYXRlZENvcHko
KSk7CiAgICAgICAgICAgICB9CkBAIC0yMTMsMTAgKzIxMywxMCBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogICAgIHN5bmNGaWxlU3lzdGVtQW5k
VHJhY2tlckRhdGFiYXNlKCk7CiAgICAgCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2NsaWVudE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50TXV0ZXgg
fTsKIAogICAgICAgICBpZiAobV9jbGllbnQpIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3Jp
Z2luU2V0TXV0ZXggfTsKICAgICAgICAgICAgIE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9vcmlnaW5TZXQuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKE9yaWdpblNldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX29yaWdpblNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKCppdCk7CkBAIC0y
MzgsNyArMjM4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFj
a2VyRGF0YWJhc2UoKQogCiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzOwogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgICAgICBmaWxlTmFtZXMgPSBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAgIH0KIApAQCAt
MjQ2LDcgKzI0Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJh
Y2tlckRhdGFiYXNlKCkKICAgICAvLyBkZWxldGlvbnMgZnJvbSBkaXNrIGFuZCBmcm9tIG1fb3Jp
Z2luU2V0LgogICAgIE9yaWdpblNldCBvcmlnaW5TZXRDb3B5OwogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fb3JpZ2luU2V0LmJlZ2luKCksIGVuZCA9IG1fb3JpZ2luU2V0LmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBvcmlnaW5TZXRDb3B5LmFkZCgoKml0KS5pc29s
YXRlZENvcHkoKSk7CiAgICAgfQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnNldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNl
dE11dGV4IH07CiAKICAgICAgICAgaWYgKG1fb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbklkZW50
aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3Vu
dGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJh
c2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogCiAgICAg
b3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsKICAgICAKQEAgLTMyOSwxMyArMzI5LDEzIEBAIHZv
aWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllciwgY29uc3QKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJs
aXNoIG9yaWdpbiAnJXMnIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgp
LmRhdGEoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OwogICAg
ICAgICBpZiAoIW1fb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAg
ICAgICAgbV9vcmlnaW5TZXQuYWRkKG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KIAogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NsaWVudE11dGV4IH07CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW5JZGVudGlmaWVy
KTsKICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4g
U3RvcmFnZVRyYWNrZXI6Om9yaWdpbnMoKQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAKICAgICBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9vcmlnaW5TZXQuc2l6ZSgpKTsKQEAgLTM3Myw3ICszNzMsNyBAQCB2b2lkIFN0b3JhZ2VU
cmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAgICAgICAgd2lsbERlbGV0ZUFsbE9yaWdp
bnMoKTsKICAgICAgICAgbV9vcmlnaW5TZXQuY2xlYXIoKTsKICAgICB9CkBAIC0zOTgsNyArMzk4
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVy
OwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgIAogICAgIG9wZW5UcmFja2VyRGF0
YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKQEAgLTQxOCw3ICs0
MTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDEpKTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudE11dGV4IH07CiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAgICAgICAgIH0KQEAgLTQ4NSw3
ICs0ODUsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAgU3RyaW5nIG9yaWdpbklkID0gb3JpZ2luLmRhdGFi
YXNlSWRlbnRpZmllcigpOwogICAgIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11
dGV4IH07CiAgICAgICAgIHdpbGxEZWxldGVPcmlnaW4ob3JpZ2luSWQpOwogICAgICAgICBtX29y
aWdpblNldC5yZW1vdmUob3JpZ2luSWQpOwogICAgIH0KQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lk
IFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllcikKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRy
YW5zYWN0aW9uQ291bnRlcjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgIAogICAgIGlm
ICghY2FuRGVsZXRlT3JpZ2luKG9yaWdpbklkZW50aWZpZXIpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdGVkIHRvIGRlbGV0ZSBvcmlnaW4gJyVzJyB3aGlsZSBpdCB3YXMgYmVpbmcgY3Jl
YXRlZFxuIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CkBAIC01MzYsNyArNTM2
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIpCiAgICAgCiAgICAgYm9vbCBzaG91bGREZWxldGVUcmFja2VyRmls
ZXMgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OwogICAg
ICAgICBtX29yaWdpblNldC5yZW1vdmUob3JpZ2luSWRlbnRpZmllcik7CiAgICAgICAgIHNob3Vs
ZERlbGV0ZVRyYWNrZXJGaWxlcyA9IG1fb3JpZ2luU2V0LmlzRW1wdHkoKTsKICAgICB9CkBAIC01
NTMsNyArNTUzLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAgICAgfQogCiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y2xpZW50TXV0ZXggfTsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KQEAg
LTU3OSw3ICs1NzksNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjp3aWxsRGVsZXRlT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIGJvb2wgU3RvcmFnZVRyYWNrZXI6OmNhbkRl
bGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJU
KCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29y
aWdpblNldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9Owog
ICAgIHJldHVybiBtX29yaWdpbnNCZWluZ0RlbGV0ZWQuY29udGFpbnMob3JpZ2luSWRlbnRpZmll
cik7CiB9CiAKQEAgLTU4OCw5ICs1ODgsOSBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpjYW5jZWxE
ZWxldGluZ09yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAgICAgaWYgKCFt
X2lzQWN0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rh
dGFiYXNlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9OwogICAgICAgICBpZiAoIW1fb3Jp
Z2luc0JlaW5nRGVsZXRlZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX29yaWdpbnNCZWluZ0Rl
bGV0ZWQucmVtb3ZlKG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KQEAgLTYzNCw3ICs2MzQsNyBA
QCB1aW50NjRfdCBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZGF0YWJhc2VNdXRleCB9OwogCiAgICAgU3RyaW5nIHBhdGggPSBkYXRhYmFzZVBhdGhG
b3JPcmlnaW4ob3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlmIChw
YXRoLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCA2NWRmOGUzNzJjMzQ4NTk3MWY1ZjVlZDI5MjAyYmY0ZTA2ZDVkZTczLi4zMDEwYTZh
ODhiOTU3YzkwNzc5MTQ2ODg4YzY2ODkzYzRiNWQ3YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zOTU3LDcgKzM5NTcsNyBAQCAtICh2b2lkKV9z
eW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0CiAKICAgICBXZWJDb3JlOjpJ
bnRSZWN0IG5ld1JlY3Q7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0
ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4IH07
CiAgICAgICAgIGlmIChDR1JlY3RJc051bGwoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG5ld1JlY3QgPSBXZWJD
b3JlOjplbmNsb3NpbmdJbnRSZWN0KF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91
dFJlY3QpOwpAQCAtMzk3MSw3ICszOTcxLDcgQEAgLSAodm9pZClfc3luY2hyb25pemVDdXN0b21G
aXhlZFBvc2l0aW9uTGF5b3V0UmVjdAogLSAodm9pZClfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxh
eW91dFJlY3RJbldlYlRocmVhZDooQ0dSZWN0KXJlY3Qgc3luY2hyb25pemU6KEJPT0wpc3luY2hy
b25pemUKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5k
aW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAgICAg
ICAgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCA9IHJlY3Q7CiAgICAg
fQogICAgIGlmICghc3luY2hyb25pemUpCkBAIC0zOTg1LDcgKzM5ODUsNyBAQCAtICh2b2lkKV9z
ZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooQ0dSZWN0KXJlY3QKIHsKICAgICBBU1NF
UlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVj
dE11dGV4IH07CiAgICAgICAgIF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3QgPSByZWN0OwogICAgIH0KICAgICBbc2VsZiBfc3luY2hyb25pemVDdXN0b21GaXhlZFBvc2l0
aW9uTGF5b3V0UmVjdF07CkBAIC0zOTkzLDcgKzM5OTMsNyBAQCAtICh2b2lkKV9zZXRDdXN0b21G
aXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooQ0dSZWN0KXJlY3QKIAogLSAoQk9PTClfZmV0Y2hDdXN0
b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooTlNSZWN0KilyZWN0CiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0
UmVjdE11dGV4IH07CiAgICAgaWYgKENHUmVjdElzTnVsbChfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVk
UG9zaXRpb25MYXlvdXRSZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFk
U2NoZWR1bGVyLmNwcAppbmRleCA0ZWNjMzBkYzdlNzk2MTc5YTEwMWRkMDM5MjYyNjQ3MTU3NTQ3
OGUwLi4wOTI2NjZiZDU0ODRiODcxNDk5MTA3MmNlMjI0ZGQ1MmQwODUxYzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRo
cmVhZFNjaGVkdWxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcigpCiAKIHZvaWQgUGx1Z2luTWFpblRocmVh
ZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKE5QUCBucHAsIE1haW5UaHJlYWRGdW5jdGlvbiBmdW5j
dGlvbiwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVNdXRleCB9OwogCiAgICAgQ2FsbFF1ZXVl
TWFwOjppdGVyYXRvciBpdCA9IG1fY2FsbFF1ZXVlTWFwLmZpbmQobnBwKTsKICAgICBpZiAoaXQg
PT0gbV9jYWxsUXVldWVNYXAuZW5kKCkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUGx1Z2luTWFp
blRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKE5QUCBucHAsIE1haW5UaHJlYWRGdW5jdGlv
biBmdW5jdGlvCiAKIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6cmVnaXN0ZXJQbHVn
aW4oTlBQIG5wcCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CiAKICAgICBBU1NFUlQoIW1fY2FsbFF1ZXVl
TWFwLmNvbnRhaW5zKG5wcCkpOwogICAgIG1fY2FsbFF1ZXVlTWFwLnNldChucHAsIERlcXVlPENh
bGw+KCkpOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6
OnJlZ2lzdGVyUGx1Z2luKE5QUCBucHApCiAKIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
cjo6dW5yZWdpc3RlclBsdWdpbihOUFAgbnBwKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3F1
ZXVlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVlTXV0ZXggfTsKIAogICAgIEFT
U0VSVChtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHApKTsKICAgICBtX2NhbGxRdWV1ZU1hcC5y
ZW1vdmUobnBwKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyOjpkaXNwYXRjaENhbGxzRm9yUGx1Z2luKE5QUCBucHAsIGNvbnN0IERlcXVlPENhbGwKICAg
ICBmb3IgKGF1dG8mIGNhbGwgOiBjYWxscykgewogICAgICAgICAvLyBDaGVjayBpZiB0aGUgcGx1
Zy1pbiBoYXMgYmVlbiBkZXN0cm95ZWQuCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVl
dWVNdXRleCB9OwogICAgICAgICAgICAgaWYgKCFtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHAp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzMDk0YmFmZGVjNzI3NDdlM2E4MGU2
MTM4OTFlYmZlZDJjZWU0MzguLmIyNDIzNWQyOTQyODg3ZmM3ZDA0NGRkNjdjNmMzMDE2ZDY2ODIz
NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJp
YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
cGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNo
b3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3Jl
IGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZv
ciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVl
dWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9B
Ym9ydGFibGVUYXNrUXVldWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGV0ZXJtaW5p
c3RpY1NjaGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6d2FpdE15VHVybik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJlYWRDb250ZXh0Ojp5aWVsZFRv
VGhyZWFkKToKKwogMjAyMS0wNS0yMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUnVuIGxheW91dCB0ZXN0cyBpbiBzdHJlc3MgbW9kZSBmb3IgMTAgaXRl
cmF0aW9ucyBvbiByZWd1bGFyIEVXUyBsYXlvdXQtdGVzdCBxdWV1ZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCmluZGV4IDU2ZTBhMDYyYjNkMGM4YmFkYWEx
MmVkMDQ5N2MxNWQ4ODE2Y2VlNWUuLmVmOTk3NTc1MjJkZDlkYTYxMDljZGI5NWM3ZTM3YWUxZjRk
M2E1NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1
ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFNpbXBsZSkKICAgICBpbnQgaW5p
dGlhbFJlZkNvdW50ID0gcXVldWUtPnJlZkNvdW50KCk7CiAgICAgRVhQRUNUX0VRKDEsIGluaXRp
YWxSZWZDb3VudCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAg
ICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKICAgICAg
ICAgY2FsbGVkU2ltcGxlVGVzdCA9IHRydWU7CkBAIC03Myw3ICs3Myw3IEBAIFRFU1QoV1RGX1dv
cmtRdWV1ZSwgU2ltcGxlKQogICAgIH0pOwogCiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lk
KSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQodGhp
cmRUZXN0TGFiZWwpOwogICAgICAgICBjYWxsZWRUaGlyZFRlc3QgPSB0cnVlOwogCkBAIC0xMTQs
NyArMTE0LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgRVhQRUNUX0VR
KDFVLCBxdWV1ZTEtPnJlZkNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgxVSwgcXVldWUyLT5yZWZD
b3VudCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgIAogICAgIHF1ZXVlMS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsK
ICAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKQEAg
LTEyNCw3ICsxMjQsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICBxdWV1
ZTItPmRpc3BhdGNoKFsmXSh2b2lkKSB7CiAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVw
X2Zvcig1MG1zKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAgICAgLy8gV2lsbCBmYWlsIGlmIHF1
ZXVlMiB0b29rIHRoZSBtdXRleCBiZWZvcmUgcXVldWUxLgogICAgICAgICBFWFBFQ1RfVFJVRShj
YWxsZWRUaGlyZFRlc3QpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwg
VHdvUXVldWVzKQogICAgIH0pOwogCiAgICAgcXVldWUxLT5kaXNwYXRjaChbJl0odm9pZCkgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHRoaXJkVGVz
dExhYmVsKTsKICAgICAgICAgY2FsbGVkVGhpcmRUZXN0ID0gdHJ1ZTsKICAgICAgICAgCkBAIC0x
NzEsMTcgKzE3MSwxNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIERpc3BhdGNoQWZ0ZXIpCiAKICAg
ICBhdXRvIHF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuVGVzdC5k
aXNwYXRjaEFmdGVyIik7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBs
ZVRlc3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwogICAgICAgICBt
X3Rlc3RDb21wbGV0ZWQubm90aWZ5T25lKCk7CiAgICAgfSk7CiAKICAgICBxdWV1ZS0+ZGlzcGF0
Y2hBZnRlcig1MDBfbXMsIFsmXSh2b2lkKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9mdW5j
dGlvbkNhbGxPcmRlci5hcHBlbmQoZGlzcGF0Y2hBZnRlckxhYmVsKTsKICAgICAgICAgY2FsbGVk
RGlzcGF0Y2hBZnRlclRlc3QgPSB0cnVlOwogICAgICAgICBtX2Rpc3BhdGNoQWZ0ZXJUZXN0Q29t
cGxldGVkLm5vdGlmeU9uZSgpOwpAQCAtMjExLDExICsyMTEsMTEgQEAgVEVTVChXVEZfV29ya1F1
ZXVlLCBEZXN0cm95T25TZWxmKQogICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7CiAKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbG9jayB9OwogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHF1ZXVlID0gV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuVGVzdC5kaXNwYXRjaEFmdGVyIik7CiAgICAgICAg
ICAgICBxdWV1ZS0+ZGlzcGF0Y2hBZnRlcig1MDBfbXMsIFsmXSh2b2lkKSB7Ci0gICAgICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGxvY2sgfTsKICAgICAgICAgICAgICAgICBkaXNwYXRjaEFmdGVyVGVzdFN0YXJ0ZWQu
d2FpdChsb2NrLCBbJl0gewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRlZDsKICAg
ICAgICAgICAgICAgICB9KTsKQEAgLTIyNyw3ICsyMjcsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUs
IERlc3Ryb3lPblNlbGYpCiAgICAgICAgIGRpc3BhdGNoQWZ0ZXJUZXN0U3RhcnRlZC5ub3RpZnlP
bmUoKTsKICAgICB9CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgZGlzcGF0Y2hBZnRlclRlc3RD
b21wbGV0ZWQud2FpdChsb2NrLCBbJl0gewogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZDsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9n
bGliL1dvcmtRdWV1ZUdMaWIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xp
Yi9Xb3JrUXVldWVHTGliLmNwcAppbmRleCA5OTIzZDY1ODAwZWQ3MTRiYTY4MDZiMTNmN2U1MWZl
ZTU4MDM1YWQwLi4wN2EyYWNkMjdkOGFmZjJmNDcyNDlhYmUzYTAzNzRlYzYxMGU1Nzk1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdMaWIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xp
Yi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBBc3luY0lPKQogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gY3VycmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2RpcigpKTsK
ICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
Y3VycmVudERpcmVjdG9yeS5nZXQoKSkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoY29udGV4
dC5tX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBjb250ZXh0Lm1fbG9jayB9OwogICAgIHF1
ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBFWFBFQ1RfVFJVRShnX21haW5fY29u
dGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGdfbWFpbl9j
b250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpICE9IGNvbnRleHQubV9tYWluQ29udGV4dCk7CkBA
IC01OSw3ICs1OSw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgQXN5bmNJTykKICAgICAgICAgZ19m
aWxlX3F1ZXJ5X2luZm9fYXN5bmMoZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFS
RF9TSVpFLCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxw
dHIsCiAgICAgICAgICAgICBbXShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIgdXNl
ckRhdGEpIHsKICAgICAgICAgICAgICAgICBUZXN0aW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRp
Y19jYXN0PFRlc3RpbmdDb250ZXh0Kj4odXNlckRhdGEpOwotICAgICAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKGNvbnRleHQtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGNvbnRleHQtPm1fbG9jayB9OwogICAgICAgICAgICAgICAgIEVYUEVDVF9FUShnX21h
aW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSwgY29udGV4dC0+bV9tYWluQ29udGV4dCk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+bV90ZXN0Q29tcGxldGVkLm5vdGlmeU9uZSgpOwog
ICAgICAgICAgICAgfSwgJmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcAppbmRleCA3YjU2M2QzNmI1
MmY3MjNjODRlNzdiMTllZTAyYmMwMzY4NDViOTFiLi4xMTQ3OTFiMzZhYTk1ZmRjMTg2ZGFiNTZk
MDhlMTI5ZjU0ZTU1NmE1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICB2b2lkIHdhaXRNeVR1cm4oKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2sobV9zY2hlZHVsZXIubV9tdXRleCk7CisgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zY2hlZHVsZXIubV9tdXRleCB9OwogICAgICAgICAgICAgbV9zY2hlZHVs
ZXIubV9jdXJyZW50VGhyZWFkQ2hhbmdlZC53YWl0KG1fc2NoZWR1bGVyLm1fbXV0ZXgsIFt0aGlz
XSgpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbV9zY2hlZHVsZXIubV9jdXJyZW50VGhyZWFk
ID09IG1fdGhpc1RocmVhZDsKICAgICAgICAgICAgIH0pOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICB2b2lkIHlpZWxkVG9UaHJlYWQoVGhyZWFkRW51bSBuZXh0VGhyZWFk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9zY2hlZHVsZXIubV9t
dXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY2hlZHVsZXIubV9tdXRleCB9
OwogICAgICAgICAgICAgbV9zY2hlZHVsZXIubV9jdXJyZW50VGhyZWFkID0gbmV4dFRocmVhZDsK
ICAgICAgICAgICAgIG1fc2NoZWR1bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQubm90aWZ5QWxs
KCk7CiAgICAgICAgIH0K
</data>
<flag name="commit-queue"
          id="450580"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429398</attachid>
            <date>2021-05-21 21:38:11 -0700</date>
            <delta_ts>2021-05-22 08:41:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226133-20210521213810.patch</filename>
            <type>text/plain</type>
            <size>284597</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZWI0ZmJjYWNhMTU4YTdjN2NhOTFjNDVlODIxYmIzNjNjMzU1NmE1Li4wODkyMDk5YTI2NGJiNjBm
YzYwMGQwZWRhYTYwMDY1NmQ3NGU2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjIgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9y
dGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBl
YXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3Ig
TG9ja2VyPFQ+LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2
YXRlUHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChoYW5kZXJGb3JTdHJ1Y3RUYWcp
OgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmNwcDoKKyAgICAgICAgKHRlc3RDQVBJVmlh
Q3BwKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpy
dW4pOgorICAgICAgICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjNf
MS5jcHA6CisgICAgICAgIChydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToK
KyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbENvZGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoSlND
OjpEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N1cGVyU2FtcGxlci5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTdXBlclNh
bXBsZXIpOgorICAgICAgICAoSlNDOjpyZXNldFN1cGVyU2FtcGxlclN0YXRlKToKKyAgICAgICAg
KEpTQzo6cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChKU0M6OmVuYWJsZVN1cGVy
U2FtcGxlcik6CisgICAgICAgIChKU0M6OmRpc2FibGVTdXBlclNhbXBsZXIpOgorICAgICAgICAq
IGRmZy9ERkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjp+Q29tbW9uRGF0YSk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpjb2RlQmxvY2tGb3JWTVRyYXBQQyk6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNsZWFuTXVzdEhhbmRs
ZVZhbHVlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6
OmlzQWN0aXZlRm9yVk0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFk
eSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFsbFJlYWR5UGxhbnNGb3JW
TSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0Zv
clZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6
CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZU5vbkNvbXBpbGluZ1BsYW5zRm9yVk0pOgorICAg
ICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpxdWV1ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRG
Rzo6V29ya2xpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojpz
ZXROdW1iZXJPZlRocmVhZHMpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyk6Cisg
ICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9C
bG9ja0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjphZGRCbG9j
ayk6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAgICogaGVh
cC9Db25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3Rz
OjphZGQpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkJlZ2lu
UGhhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpub3Rp
ZnlJc1NhZmVUb0NvbGxlY3QpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZGlkUmVhY2hUZXJtaW5hdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2lu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRy
YWNraW5nQ29tcGxldGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZyk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c3RvcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2
YXRlUnVuTG9vcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRh
dGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxl
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29v
bik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0
ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
UHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlh
bGl6ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1Jl
bW90ZUluc3BlY3RvckdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENv
bm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0
aW5nc1Nvb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUpOgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OmZyb250ZW5kRGlkQ2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlz
dGVuaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVM
aXN0ZW5lcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpnZXRQb3J0IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJ
ZkVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwOgorICAgICAg
ICAoSlNDOjpDTG9vcFN0YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChK
U0M6OkNMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpkdW1wSklUTWVtb3J5KToKKyAgICAg
ICAgKiBqaXQvSUNTdGF0cy5jcHA6CisgICAgICAgIChKU0M6OklDU3RhdHM6OklDU3RhdHMpOgor
ICAgICAgICAoSlNDOjpJQ1N0YXRzOjp+SUNTdGF0cyk6CisgICAgICAgICogaml0L0pJVFRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpj
dGlTbG93UGF0aEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAg
ICAgIChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjppc0ZpbmlzaGVkQ29tcGlsaW5nKToKKyAgICAg
ICAgKEpTQzo6SklUV29ya2xpc3Q6OkpJVFdvcmtsaXN0KToKKyAgICAgICAgKEpTQzo6SklUV29y
a2xpc3Q6OmNvbXBsZXRlQWxsRm9yVk0pOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6cG9s
bCk6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIpOgorICAgICAgICAo
SlNDOjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAgICogcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldElEKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6RGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpE
YXRhYmFzZTo6bG9nRXZlbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFk
ZERhdGFiYXNlVG9BdEV4aXQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnJl
bW92ZURhdGFiYXNlRnJvbUF0RXhpdCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFz
ZTo6cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmls
ZXJVSUQuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZlcnJl
ZFdvcmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29y
a1RpbWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcik6CisgICAgICAgICogcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6
dGltZXJMb29wKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6c2h1dGRvd24pOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChKU0M6OlNh
bXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCk6
CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUpTTG9ja0FjcXVpc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1FbnRyeSk6CisgICAg
ICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KToKKyAg
ICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnN0
YXJ0VGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6d2lsbERlc3Ryb3lWTSk6CisgICAg
ICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6
aXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dh
c21FbnRyeVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OlRocmVhZENv
dW50SG9sZGVyOjpUaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgIChKU0M6Oldhc206OkVudHJ5
UGxhbjo6VGhyZWFkQ291bnRIb2xkZXI6On5UaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgICog
d2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjphZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFu
ZENhbmNlbElmTGFzdCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcik6CisgICAg
ICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKToKKyAgICAg
ICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0
OjplbnF1ZXVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmNvbXBsZXRlUGxhblN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6c3RvcEFsbFBsYW5z
Rm9yQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorCiAyMDIxLTA1LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xk
TG9jaygpIGluIEpTQyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBz
YWZldHkgYW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZDA1M2IzODRhMGNkZmMzY2E2YzAwMzYwNTgzZTczYWI5ZTRl
YTc3Zi4uZWRmOTM5MWRiMmQyZWYzOTYzYTg0ZmI0NTE5Yzg4ZTg2MmViZDgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJs
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNob3J0
ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3JlIGVh
c2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZvciBM
b2NrZXI8VD4uCisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOgorICAg
ICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNU
aHJlYWQ6On5BdXRvbWF0aWNUaHJlYWQpOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6
OmpvaW4pOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAg
KiB3dGYvQXV0b21hdGljVGhyZWFkLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmspOgorICAgICAgICAo
V1RGOjpNZXRhQWxsb2NhdG9yOjphZGRGcmVzaEZyZWVTcGFjZSk6CisgICAgICAgIChXVEY6Ok1l
dGFBbGxvY2F0b3I6OmRlYnVnRnJlZVNwYWNlU2l6ZSk6CisgICAgICAgICogd3RmL1BhcmFsbGVs
SGVscGVyUG9vbC5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpQYXJh
bGxlbEhlbHBlckNsaWVudCk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50Ojp+
UGFyYWxsZWxIZWxwZXJDbGllbnQpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVu
dDo6c2V0VGFzayk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpmaW5pc2gp
OgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVudDo6ZG9Tb21lSGVscGluZyk6Cisg
ICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpydW5UYXNrKToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKToKKyAgICAgICAgKFdU
Rjo6UGFyYWxsZWxIZWxwZXJQb29sOjplbnN1cmVUaHJlYWRzKToKKyAgICAgICAgKFdURjo6UGFy
YWxsZWxIZWxwZXJQb29sOjpkb1NvbWVIZWxwaW5nKToKKyAgICAgICAgKiB3dGYvU2Vjb25kcy5j
cHA6CisgICAgICAgIChXVEY6OnNsZWVwKToKKyAgICAgICAgKiB3dGYvVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6c2xlZXApOgorICAgICAgICAqIHd0Zi9Xb3Jr
ZXJQb29sLmNwcDoKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6CisgICAg
ICAgIChXVEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29ya2Vy
UG9vbDo6cG9zdFRhc2spOgorICAgICAgICAqIHd0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHA6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
cmVzdW1lKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpnZXRSZWdpc3RlcnMpOgorICAgICAgICAq
IHd0Zi93aW4vRGJnSGVscGVyV2luLmNwcDoKKyAgICAgICAgKFdURjo6RGJnSGVscGVyOjpTeW1G
cm9tQWRkcmVzcyk6CisgICAgICAgICogd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnJlc3VtZSk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKToKKwogMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkQ29uZGl0
aW9uIGluIG1vcmUgcGxhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTljYzFlYTMyZGRmOGJiZWMzOWZlMzM1
MzYzMTc3NTdiMGFlMmZjMC4uOTUxOWM4NTRkZmUyZTZiNzcyMjJmYjdjYzM5ODg1MDNiODc2Zjhk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sK
KyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2Ug
dGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9E
ZWNvZGVyOjpBc3luY0F1ZGlvRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlv
RGVjb2Rlcjo6cnVuTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVjb3Jk
RGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmRE
YXRhYmFzZUNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFzUGVu
ZGluZ0RhdGFiYXNlQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpyZXRyeUNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRhdGFi
YXNlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldERh
dGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRvbmVD
cmVhdGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3Bl
bkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tG
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpxdW90YSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FM
Q2FsbGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dy
YXBwZXI6OnVud3JhcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0YXRl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVD
bG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4
dFN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpk
b0NsZWFudXApOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpmb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
cm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWRO
b2RlSUQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAoU2Ny
b2xsaW5nVHJlZU1hYzo6c2Nyb2xsaW5nTm9kZUZvclBvaW50KToKKyAgICAgICAgKFNjcm9sbGlu
Z1RyZWVNYWM6OmV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXApOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRG
b3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKC1b
V2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVy
RGVsZWdhdGUgdXBkYXRlRGF0YTpjb21wbGV0ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJl
ZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVk
QnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpkaWRDYW5jZWxMb2Fk
aW5nUmVxdWVzdDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNl
dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJv
dGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hh
bmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHA6CisgICAgICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0
KToKKyAgICAgICAgKFZpZGVvUmVuZGVyUmVxdWVzdFNjaGVkdWxlcjo6c3RvcCk6CisgICAgICAg
IChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OmRyYWluKToKKyAgICAgICAgKFZpZGVvUmVu
ZGVyUmVxdWVzdFNjaGVkdWxlcjo6cmVxdWVzdFJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAoc2lua0V2
ZW50SGFuZGxlcik6CisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
SXNGbHVzaGluZyk6CisgICAgICAgIChzZXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6QnVm
ZmVyOjpiZWdpblBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OkJ1ZmZlcjo6Y29tcGxldGVQ
YWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpCdWZmZXI6OndhaXRVbnRpbFBhaW50aW5nQ29t
cGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRm
b3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OlBsYXRmb3JtTGF5ZXI6OnNldFNjZW5lSW50
ZWdyYXRpb24pOgorICAgICAgICAoTmljb3NpYTo6UGxhdGZvcm1MYXllcjo6Y3JlYXRlVXBkYXRl
U2NvcGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6dXBkYXRlU3RhdGUp
OgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6Zmx1c2hTdGF0ZSk6CisgICAg
ICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpjb21taXRTdGF0ZSk6CisgICAgICAgIChO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjphY2Nlc3NQZW5kaW5nKToKKyAgICAgICAgKE5pY29z
aWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmFjY2Vzc0NvbW1pdHRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaDoKKyAgICAgICAgKE5pY29zaWE6OlNj
ZW5lOjphY2Nlc3NTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVn
cmF0aW9uOjpzZXRDbGllbnQpOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6
aW52YWxpZGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0
VXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKToKKyAgICAgICAgKE5p
Y29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCk6CisgICAgICAg
IChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6aW52YWxpZGF0ZUNsaWVu
dCk6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Zmx1
c2hVcGRhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUpOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OnRh
a2VVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdDR0xQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpz
ZXROYXR1cmFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Okludm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Om9uTWVkaWFQ
bGF5ZXJEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpPbkNsb2NrU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpD
dXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1Jlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6
T25DbG9ja1NldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6R2V0Q3VycmVudE1lZGlhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpJ
bml0U2VydmljZVBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlJlbGVhc2VTZXJ2aWNlUG9p
bnRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6R2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50
ZXI6OlJlcGFpbnRWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6Z2V0U2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29s
OjpyZXR1cm5TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1w
bGVQb29sOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpz
dG9wU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlU2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6
OnByb2Nlc3NTYW1wbGVzSW5RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9T
Y2hlZHVsZXI6OnNjaGVkdWxlclRocmVhZFByb2NQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNl
dFZpZGVvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldERlc3RpbmF0aW9uUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNE
UHJlc2VudGVyOjpjcmVhdGVWaWRlb1NhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y2hlY2tEZXZp
Y2VTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpwcmVzZW50U2FtcGxlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6
OnBhaW50Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6
OmZyYW1lSGFzQWxwaGFBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGVzT3BhcXVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZG9MYXlvdXRUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vd0ZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldENvbnRlbnRSZXBsYWNlbWVudEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Y29udGVudFJlcGxhY2VtZW50SW1hZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6dXBkYXRlVGls
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkb1BlbmRpbmdSZXBhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OmFkZExheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnNldENhcGFjaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVRpbGVMYXllclBvb2w6OmRyYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dB
S1dpbmRvdy5tbToKKyAgICAgICAgKC1bV0FLV2luZG93IHNldEV4cG9zZWRTY3JvbGxWaWV3UmVj
dDpdKToKKyAgICAgICAgKC1bV0FLV2luZG93IGV4cG9zZWRTY3JvbGxWaWV3UmVjdF0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1bldl
YlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJU
Qy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJX
ZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtRmluYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6
OnNldFJlcXVlc3RQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldENh
bGxiYWNrUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpwYXVzZWRTdGF0
dXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjplbmFibGVEb3dubG9h
ZFRvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZp
bGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNsZWFudXBEb3du
bG9hZEZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmFsbG93QW55SFRUUFNDZXJ0
aWZpY2F0ZXNGb3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmNhbkln
bm9yZUFueUhUVFBTQ2VydGlmaWNhdGVzRm9ySG9zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsU1NMSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2U6Om1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRN
YXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cGFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAp
OgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGxvY2tpbmcgaXNzdWUgZm9yIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bV9pc1BsYXlp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMGUxYTI4YmQ0OWIyMjQxOGUzMWNkOTdlZjNkMWJmNzY5Y2FmNmRkNS4u
NTg2ZWM2Njk0NTBiMDcwMzVmMjQ4NzQ1YTFmNzljNmM0MTkxOTA5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJs
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEz
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNob3J0
ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3JlIGVh
c2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZvciBM
b2NrZXI8VD4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9jbG9zZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCU2VydmVyOjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpj
b21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGlkRmlu
aXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
cjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNs
ZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29y
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmVzdGFibGlz
aFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkYXRhYmFzZUNv
bm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
cjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjpyZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpj
bG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRlU2l6ZUZp
bGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZFNpemVGaWxl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVz
RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRl
Tm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpETlNDYWNoZTo6bG9v
a3VwKToKKyAgICAgICAgKFdlYktpdDo6RE5TQ2FjaGU6OnVwZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkROU0NhY2hlOjpyZW1vdmVFeHBpcmVkUmVzcG9uc2VzRmlyZWQpOgorICAgICAgICAoV2Vi
S2l0OjpETlNDYWNoZTo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ1J1bkxvb3A6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5n
UnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1
bkxvb3A6OnN0b3BVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29w
Ojp1cGRhdGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV9kaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRl
ZENvbXBvc2l0b3I6OnNldFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b21wb3NpdG9yOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRl
ZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnBv
cHVsYXRlUGFnZVVSTFRvSWNvblVSTE1hcCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFz
ZTo6Y2xlYXJMb2FkZWRJY29uc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0
YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6
SWNvbkRhdGFiYXNlOjppY29uVVJMRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25E
YXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJh
c2U6OmNsZWFyKToKKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFN0b3AgdXNpbmcgaG9sZExvY2soKSBpbiBXZWJLaXQvV2ViS2l0TGVnYWN5
L1Rvb2xzIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFkIHNhZmV0eSBh
bmFseXNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA3MDM3OGYzNDczMjk3NzU5OGI1ZWQ2M2M2
Mjk5YWRjN2E5ZWViM2RlLi45MGQ4ZWM1NjgyMWVhYWExNjNkMGIyN2RhNDQzNjY2N2IwZDZmY2U1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA1LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVy
IHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGlu
IGxvY2FsIHZhcmlhYmxlcy4gSXQgaXMgc2hvcnRlciBhbmQgaXQgYWxsb3dzIHN3aXRjaGluZyB0
aGUgbG9jaworICAgICAgICB0eXBlIG1vcmUgZWFzaWx5IHNpbmNlIHRoZSBjb21waWxlciB3aXRo
IGRlZHVjZSB0aGUgbG9jayB0eXBlIFQgZm9yIExvY2tlcjxUPi4KKworICAgICAgICAqIFN0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6
SW5Qcm9jZXNzSURCU2VydmVyKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Q
cm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAo
SW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29y
ZHMpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRl
Q3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rp
b24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5k
aW5nQ2xvc2UpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rp
b25DbG9zZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5h
bWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjbG9zZUFuZERl
bGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMpOgor
ICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlVHJhY2tlcjo6ZmluaXNoZWRJbXBvcnRpbmdPcmlnaW5JZGVudGlmaWVycyk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFj
a2VyRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2lu
RGV0YWlscyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2lu
RGV0YWlscyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpvcmlnaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbik6CisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBTdG9y
YWdlQXJlYVN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAxZjU1Mjc1MTVlOTBm
MGIwYThmMDFlOTNmMzQzZjUyOTAwOTVjMTI3Li4wMDAyZjg2YTJkZmJlYzFkYjViOGNiZDVlNzdh
ZWQyNzg3ODFjZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIExvY2tI
b2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVyIGFuZCBp
dCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNpbHkgc2lu
Y2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9ja2VyPFQ+
LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9z
eW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0XSk6CisgICAgICAgICgtW1dl
YlZpZXcgX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0SW5XZWJUaHJlYWQ6c3luY2hy
b25pemU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9mZXRjaEN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0Ol0pOgorCiAyMDIxLTA1LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRvcHQgUUxJdGVtIGluIFdLSW1hZ2VFeHRy
YWN0aW9uUHJldmlld0NvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBi
ZDBhYTgwYjUwMmVjYWZjNWNmMjI5ZDU1MWQ3MGE1YTFlMzQ0NTExLi44OGUwZmQxOGIyNjcwYzhi
ZTViMDQxOWYyYjM4YjUyOTEzNzAxYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFy
aWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBz
aG9ydGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9y
ZSBlYXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBm
b3IgTG9ja2VyPFQ+LgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNj
aGVkdWxlQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
OjpyZWdpc3RlclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2No
ZWR1bGVyOjp1bnJlZ2lzdGVyUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5U
aHJlYWRTY2hlZHVsZXI6OmRpc3BhdGNoQ2FsbHNGb3JQbHVnaW4pOgorCiAyMDIxLTA1LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xk
TG9jaygpIGluIFdlYktpdC9XZWJLaXRMZWdhY3kvVG9vbHMgYXMgaXQgaXMgbm90IGNvbXBhdGli
bGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDNkMjg1ZjNkMjI1NjJlYzA2MjljZDM2
OWFhOTEwNGFmMjFlY2I5MzIuLmIzNDMzZGUwZTIyMWRjZjEzYjQ1ZGFhOTdhZWIxZTQ5YjNlZmQ4
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBA
IC05NSwyMSArOTUsMjEgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRQcml2
YXRlUHJvcGVydHkoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7CiAgICAgICAgICAgICBt
X3Byb3BlcnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuaXRlcmF0b3ItPnZh
bHVlLnNldCh2bSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgbV9wcm9wZXJ0
eU1hcC5yZW1vdmUocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIH0KIAogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oVmlz
aXRvciYgdmlzaXRvcikKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fcHJvcGVydHlNYXApIHsKICAgICAgICAgICAgICAgICBp
ZiAocGFpci52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocGFpci52
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggYWMwOWY2NTQ1MDdj
M2RiZDQ5NjBmZDY3MTMzMmJiM2YxMWY5MDYyNS4uMjFmOTE5MDY3MTFkZjY0YWY4Yzc1YjI5MjM2
ZTU3ODg5MTcyNzY1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTIw
OSw3ICsxMjA5LDcgQEAgc3RhdGljIFN0cnVjdEhhbmRsZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVy
TWFwKCkKIHN0YXRpYyBTdHJ1Y3RUYWdIYW5kbGVyKiBoYW5kZXJGb3JTdHJ1Y3RUYWcoY29uc3Qg
Y2hhciogZW5jb2RlZFR5cGUpCiB7CiAgICAgc3RhdGljIExvY2sgaGFuZGVyRm9yU3RydWN0VGFn
TG9jazsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIoJmhhbmRlckZvclN0cnVjdFRhZ0xvY2sp
OworICAgIExvY2tlciBsb2NrSG9sZGVyIHsgaGFuZGVyRm9yU3RydWN0VGFnTG9jayB9OwogCiAg
ICAgc3RhdGljIFN0cnVjdEhhbmRsZXJzKiBzdHJ1Y3RIYW5kbGVycyA9IGNyZWF0ZVN0cnVjdEhh
bmRsZXJNYXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
cHAKaW5kZXggOGMxOWY1M2Q0YjY0NDliMjZiMTc5MjI2ZTI0NWZlOWY3NjNkODA3Ni4uNWQ3NTMz
NTAwNTQyNjg4MmE2NjdmZTUxN2U0ZTI2NDFmMTMzZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgaW50IHRlc3RD
QVBJVmlhQ3BwKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7
CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoVGVzdEFQSSYpPj4g
dGFzazsKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhc2sgPSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYjFiMjY4M2ViYjEzNjRiZGU5Yzc2ZGZiNDg5
Y2MwZTdlYmRhZDQxMS4uMTkxZDE4MjkzNWFjMWE2ZTZmMGI1MGI3YTMxM2JkOTg4N2FkYTQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTI3
MjQsNyArMjcyNCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAg
ICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZCgpPj4gdGFzazsKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrID0gdGFz
a3MudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApp
bmRleCBlNWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzLi5iZTRkYmY5Mzg4
NDdlNTgxMDk1NmQ2ZWZlMTM4MWMwMTQxNGVkYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvdGVzdGFpci5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIGxvYWRDb25zdGFudElt
cGwoQmFzaWNCbG9jayogYmxvY2ssIFQgdmFsdWUsIEIzOjpBaXI6Ok9wY29kZSBtb3ZlLCBUbXAg
dG1wLAogICAgIHN0YXRpYyBMb2NrIGxvY2s7CiAgICAgc3RhdGljIFN0ZE1hcDxULCBUKj4qIG1h
cDsgLy8gSSdtIG5vdCBtZXNzaW5nIHdpdGggSGFzaE1hcCdzIHByb2JsZW1zIHdpdGggaW50ZWdl
cnMuCiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bG9jayB9OwogICAgIGlmICghbWFwKQogICAgICAgICBtYXAgPSBuZXcgU3RkTWFwPFQsIFQqPigp
OwogCkBAIC0yNDY5LDcgKzI0NjksNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGFzayA9IHRhc2tzLnRha2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiM18xLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5j
cHAKaW5kZXggZTUyZTZkYWJjMzM0M2RiYTE0MTYyNDU0ZThmY2E4Njc0NmYzYzA3NC4uMmJlODgz
Mjg2MWZkMGQ1YTY1MDMzMjlkM2EzZTdiOWNkZjNiN2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18xLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzEuY3BwCkBAIC04NjcsNyArODY3LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwogICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2Nr
IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRhc2sgPSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAppbmRleCA5NGNi
YzIzYTY2OTAxZDUxYTg5Yzg3ZGNkNGYwY2QxM2RjOWJlNWRkLi4wYTg4YTZjOGE1MGViYzk4MDlm
ZTY3MjgyYzViNzAyMGQ3YWIwZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAg
dm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3duZXIsIGMKICAgICBpZiAoIWV2YWxFeGVjdXRhYmxlLT5hbGxvd0Rp
cmVjdEV2YWxDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX2NhY2hlTWFw
LnNldChDYWNoZUtleShldmFsU291cmNlLCBjYWxsU2l0ZUluZGV4KSwgV3JpdGVCYXJyaWVyPERp
cmVjdEV2YWxFeGVjdXRhYmxlPihnbG9iYWxPYmplY3QtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0
YWJsZSkpOwogfQogCiB2b2lkIERpcmVjdEV2YWxDb2RlQ2FjaGU6OmNsZWFyKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
ICAgICBtX2NhY2hlTWFwLmNsZWFyKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+
CiB2b2lkIERpcmVjdEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgIEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9jYWNo
ZU1hcC5lbmQoKTsKICAgICBmb3IgKEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgcHRyID0gbV9jYWNo
ZU1hcC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQo
cHRyLT52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNh
bXBsZXIuY3BwCmluZGV4IGMzYTVjNDJhZDIxZjY5NDkxN2E0YjUwMzNmNTM2NjY4YTIzZjliOWQu
LmE0MjY0MGYyODYzMjY5NzI3OWRjNDlhM2NlNTFlZmMzOWVjMWEzOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpCiAgICAgICAgICAgICBmb3IgKDs7KSB7
CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBt
cyArPSBzbGVlcFF1YW50dW0pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdfc3VwZXJTYW1w
bGVyRW5hYmxlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9Owog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdfc3VwZXJTYW1wbGVyQ291bnQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4rKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
QEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCkKIAogdm9pZCBy
ZXNldFN1cGVyU2FtcGxlclN0YXRlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgIGluID0gMDsKICAgICBvdXQgPSAwOwog
fQpAQCAtODAsNyArODAsNyBAQCB2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKQogICAgIGlm
ICghT3B0aW9uczo6dXNlU3VwZXJTYW1wbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAg
ZG91YmxlIHBlcmNlbnRhZ2UgPSAxMDAuMCAqIGluIC8gKGluICsgb3V0KTsKICAgICBpZiAocGVy
Y2VudGFnZSAhPSBwZXJjZW50YWdlKQogICAgICAgICBwZXJjZW50YWdlID0gMC4wOwpAQCAtODks
MTMgKzg5LDEzIEBAIHZvaWQgcHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgpCiAKIHZvaWQgZW5hYmxl
U3VwZXJTYW1wbGVyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbG9jayB9OwogICAgIGdfc3VwZXJTYW1wbGVyRW5hYmxlZCA9IHRydWU7CiB9
CiAKIHZvaWQgZGlzYWJsZVN1cGVyU2FtcGxlcigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICBnX3N1cGVyU2FtcGxlckVu
YWJsZWQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb25EYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
RGF0YS5jcHAKaW5kZXggZmZiMDgzNWU2MTM0N2Q4NDM0YWQzNDNlY2M5ZGM1NTkxODZhNGEyNy4u
MjdlZGYxYzgxYTUzODM4ZjFiOGI2Y2U5MDAzZWM0NmQ3MzQ5YjU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wg
Q29tbW9uRGF0YTo6aW52YWxpZGF0ZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChVTkxJS0VMWShoYXNWTVRyYXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpKSB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKHBjQ29kZUJsb2NrTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBwY0NvZGVCbG9ja01hcExvY2sgfTsKICAgICAgICAgYXV0byYgbWFwID0gcGNDb2RlQmxv
Y2tNYXAobG9ja2VyKTsKICAgICAgICAgZm9yIChhdXRvJiBqdW1wUmVwbGFjZW1lbnQgOiBtX2p1
bXBSZXBsYWNlbWVudHMpCiAgICAgICAgICAgICBtYXAucmVtb3ZlKGp1bXBSZXBsYWNlbWVudC5k
YXRhTG9jYXRpb24oKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgQ29tbW9uRGF0YTo6aW52YWxp
ZGF0ZSgpCiBDb21tb25EYXRhOjp+Q29tbW9uRGF0YSgpCiB7CiAgICAgaWYgKFVOTElLRUxZKGhh
c1ZNVHJhcHNCcmVha3BvaW50c0luc3RhbGxlZCkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIocGNDb2RlQmxvY2tNYXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBjQ29kZUJs
b2NrTWFwTG9jayB9OwogICAgICAgICBhdXRvJiBtYXAgPSBwY0NvZGVCbG9ja01hcChsb2NrZXIp
OwogICAgICAgICBmb3IgKGF1dG8mIGp1bXBSZXBsYWNlbWVudCA6IG1fanVtcFJlcGxhY2VtZW50
cykKICAgICAgICAgICAgIG1hcC5yZW1vdmUoanVtcFJlcGxhY2VtZW50LmRhdGFMb2NhdGlvbigp
KTsKQEAgLTg2LDcgKzg2LDcgQEAgQ29tbW9uRGF0YTo6fkNvbW1vbkRhdGEoKQogCiB2b2lkIENv
bW1vbkRhdGE6Omluc3RhbGxWTVRyYXBCcmVha3BvaW50cyhDb2RlQmxvY2sqIG93bmVyKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKHBjQ29kZUJsb2NrTWFwTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHBjQ29kZUJsb2NrTWFwTG9jayB9OwogICAgIGlmICghaXNTdGlsbFZhbGlkIHx8IGhh
c1ZNVHJhcHNCcmVha3BvaW50c0luc3RhbGxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIGhhc1ZN
VHJhcHNCcmVha3BvaW50c0luc3RhbGxlZCA9IHRydWU7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9p
ZCBDb21tb25EYXRhOjppbnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoQ29kZUJsb2NrKiBvd25lcikK
IENvZGVCbG9jayogY29kZUJsb2NrRm9yVk1UcmFwUEModm9pZCogcGMpCiB7CiAgICAgQVNTRVJU
KGlzSklUUEMocGMpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBwY0NvZGVCbG9ja01hcExvY2sgfTsKICAgICBhdXRvJiBt
YXAgPSBwY0NvZGVCbG9ja01hcChsb2NrZXIpOwogICAgIGF1dG8gcmVzdWx0ID0gbWFwLmZpbmQo
cGMpOwogICAgIGlmIChyZXN1bHQgPT0gbWFwLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAKaW5kZXggMzg2ZjVmYjhmZDQ4Mjc2YWU2NTlkYjZhOGMyYzZkMjY0MDAxNjc1
OC4uNzlhYTZjNmJlODI4Y2ZjYjI5ODYwYWZhYzZhMThlODMyYTYwNDVkZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBQbGFuOjpj
YW5jZWwoKQogCiB2b2lkIFBsYW46OmNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXVzdEhhbmRsZVZhbHVlQ2xlYW5pbmdMb2NrIH07CiAK
ICAgICBpZiAoIW1fbXVzdEhhbmRsZVZhbHVlc01heUluY2x1ZGVHYXJiYWdlKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGE5
OTZjNTVjZGRjMjVjY2MxNmIyYWJhNDU2YmJjNzQ3NjNhNzAyODkuLjRkMjI4Y2ZlODdhZDk4MTkz
NmMwN2MwOWQ0MWI3Mjc1MTU1OTRhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
V29ya2xpc3QuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICB+V29ya1Njb3BlKCkKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Km1fdGhyZWFkLm1fd29ya2xpc3QubV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV90aHJlYWQubV93b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIG1fdGhyZWFkLm1f
cGxhbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX3RocmVhZC5tX3dvcmtsaXN0Lm1fbnVtYmVy
T2ZBY3RpdmVUaHJlYWRzLS07CiAgICAgICAgIH0KQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIFdvcmtTY29wZSB3b3JrU2NvcGUoKnRoaXMpOwogCi0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fZGF0YS5tX3JpZ2h0VG9SdW4pOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhLm1fcmlnaHRUb1J1biB9OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICAgICAgaWYgKG1fcGxhbi0+c3Rh
Z2UoKSA9PSBQbGFuOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdvcmtSZXN1
bHQ6OkNvbnRpbnVlOwogICAgICAgICAgICAgbV9wbGFuLT5ub3RpZnlDb21waWxpbmcoKTsKQEAg
LTEyMSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB7
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5tX2xvY2spOworICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICAg
ICAgaWYgKG1fcGxhbi0+c3RhZ2UoKSA9PSBQbGFuOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xODgsNyAr
MTg4LDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KENTdHJpbmcmJiB0aWVyTmFtZSkKIFdvcmtsaXN0
Ojp+V29ya2xpc3QoKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBtX3F1ZXVlLmFw
cGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgcGxhbiB0byBpbmRpY2F0ZSB0aGF0IHdlIHdhbnQg
dGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCiAgICAgICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlB
bGwobG9ja2VyKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBXb3JrbGlzdDo6fldvcmtsaXN0KCkKIHZv
aWQgV29ya2xpc3Q6OmZpbmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50
IHJlbGF0aXZlUHJpb3JpdHkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtYmVyT2ZUaHJlYWRz
KTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
Km1fbG9jayB9OwogICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mVGhyZWFkczsgaS0tOykg
ewogICAgICAgICBjcmVhdGVOZXdUaHJlYWQobG9ja2VyLCByZWxhdGl2ZVByaW9yaXR5KTsKICAg
ICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgUmVmPFdvcmtsaXN0PiBXb3JrbGlzdDo6Y3JlYXRlKENT
dHJpbmcmJiB0aWVyTmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQKIAogYm9vbCBX
b3JrbGlzdDo6aXNBY3RpdmVGb3JWTShWTSYgdm0pIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBQbGFu
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BsYW5zLmVuZCgpOwogICAgIGZvciAoUGxhbk1h
cDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgewogICAgICAgICBpZiAoaXRlci0+dmFsdWUtPnZtKCkgPT0gJnZtKQpAQCAtMjM0LDcg
KzIzNCw3IEBAIGJvb2wgV29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogCiB2
b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBp
ZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxv
Y2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKICAgICAgICAgZGF0YUxvZygiOiBFbnF1ZXVlaW5nIHBs
YW4gdG8gb3B0aW1pemUgIiwgcGxhbi0+a2V5KCksICJcbiIpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBA
IHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+JiYgcGxhbikKIAogV29ya2xpc3Q6OlN0
YXRlIFdvcmtsaXN0Ojpjb21waWxhdGlvblN0YXRlKENvbXBpbGF0aW9uS2V5IGtleSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9j
ayB9OwogICAgIFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmZpbmQoa2V5KTsKICAg
ICBpZiAoaXRlciA9PSBtX3BsYW5zLmVuZCgpKQogICAgICAgICByZXR1cm4gTm90S25vd247CkBA
IC0yNzAsNyArMjcwLDcgQEAgdm9pZCBXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFy
ZVJlYWR5KFZNJiB2bSkKICAgICAvLyBBZnRlciB3ZSByZWxlYXNlIHRoaXMgbG9jaywgd2Uga25v
dyB0aGF0IGFsdGhvdWdoIG90aGVyIFZNcyBtYXkgc3RpbGwKICAgICAvLyBiZSBhZGRpbmcgcGxh
bnMsIG91ciBWTSB3aWxsIG5vdCBiZS4KICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIAogICAgIGlmIChPcHRp
b25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKSB7CiAgICAgICAgIGR1bXAobG9ja2VyLCBX
VEY6OmRhdGFGaWxlKCkpOwpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgV29ya2xpc3Q6OndhaXRV
bnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFkeShWTSYgdm0pCiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVB
bGxSZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBWZWN0b3I8UmVmUHRyPFBsYW4+LCA4PiYgbXlSZWFk
eVBsYW5zKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yZWFkeVBsYW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFJlZlB0cjxQbGFuPiBwbGFuID0gbV9yZWFkeVBsYW5zW2ldOwogICAgICAgICBpZiAocGxhbi0+
dm0oKSAhPSAmdm0pCkBAIC0zNDMsNyArMzQzLDcgQEAgV29ya2xpc3Q6OlN0YXRlIFdvcmtsaXN0
Ojpjb21wbGV0ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYgdm0sIENvbXBpbGF0aW9uS2V5IHJlcXUK
ICAgICB9CiAgICAgCiAgICAgaWYgKCEhcmVxdWVzdGVkS2V5ICYmIHJlc3VsdGluZ1N0YXRlID09
IE5vdEtub3duKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBpZiAobV9wbGFucy5jb250YWlu
cyhyZXF1ZXN0ZWRLZXkpKQogICAgICAgICAgICAgcmVzdWx0aW5nU3RhdGUgPSBDb21waWxpbmc7
CiAgICAgfQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgV29ya2xpc3Q6OnZpc2l0V2Vha1JlZmVy
ZW5jZXMoVmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBWTSogdm0gPSAmdmlzaXRvci5oZWFwKCkt
PnZtKCk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yIChQbGFuTWFwOjppdGVy
YXRvciBpdGVyID0gbV9wbGFucy5iZWdpbigpOyBpdGVyICE9IG1fcGxhbnMuZW5kKCk7ICsraXRl
cikgewogICAgICAgICAgICAgUGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAg
ICAgICAgaWYgKHBsYW4tPnZtKCkgIT0gdm0pCkBAIC00MDMsNyArNDAzLDcgQEAgdGVtcGxhdGUg
dm9pZCBXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogdm9pZCBX
b3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKIHsKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9
OwogICAgICAgICBIYXNoU2V0PENvbXBpbGF0aW9uS2V5PiBkZWFkUGxhbktleXM7CiAgICAgICAg
IGZvciAoUGxhbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBt
X3BsYW5zLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52
YWx1ZS5nZXQoKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFk
UGxhbnMoVk0mIHZtKQogCiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVOb25Db21waWxpbmdQbGFuc0Zv
clZNKFZNJiB2bSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIEhhc2hTZXQ8Q29tcGlsYXRpb25LZXk+IGRlYWRQ
bGFuS2V5czsKICAgICBWZWN0b3I8UmVmUHRyPFBsYW4+PiBkZWFkUGxhbnM7CiAgICAgZm9yIChh
dXRvJiBlbnRyeSA6IG1fcGxhbnMpIHsKQEAgLTQ4MywxMyArNDgzLDEzIEBAIHZvaWQgV29ya2xp
c3Q6OnJlbW92ZU5vbkNvbXBpbGluZ1BsYW5zRm9yVk0oVk0mIHZtKQogCiBzaXplX3QgV29ya2xp
c3Q6OnF1ZXVlTGVuZ3RoKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIHJldHVybiBtX3F1ZXVlLnNpemUoKTsK
IH0KIAogdm9pZCBXb3JrbGlzdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2Nr
IH07CiAgICAgZHVtcChsb2NrZXIsIG91dCk7CiB9CiAKQEAgLTUwMywxMSArNTAzLDExIEBAIHZv
aWQgV29ya2xpc3Q6OmR1bXAoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogCiB1bnNpZ25lZCBXb3JrbGlzdDo6c2V0TnVtYmVyT2ZUaHJlYWRzKHVuc2lnbmVk
IG51bWJlck9mVGhyZWFkcywgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zdXNwZW5zaW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3VzcGVu
c2lvbkxvY2sgfTsKICAgICBhdXRvIGN1cnJlbnROdW1iZXJPZlRocmVhZHMgPSBtX3RocmVhZHMu
c2l6ZSgpOwogICAgIGlmIChudW1iZXJPZlRocmVhZHMgPCBjdXJyZW50TnVtYmVyT2ZUaHJlYWRz
KSB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGN1cnJlbnROdW1iZXJPZlRocmVhZHM7IGktLSA+IG51bWJlck9mVGhyZWFk
czspIHsKICAgICAgICAgICAgICAgICBpZiAobV90aHJlYWRzW2ldLT5tX3RocmVhZC0+aGFzVW5k
ZXJseWluZ1RocmVhZChsb2NrZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcXVldWUuYXBw
ZW5kKG51bGxwdHIpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHVuc2lnbmVkIFdvcmtsaXN0OjpzZXRO
dW1iZXJPZlRocmVhZHModW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlv
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJlbnROdW1iZXJPZlRocmVhZHM7IGktLSA+
IG51bWJlck9mVGhyZWFkczspIHsKICAgICAgICAgICAgIGJvb2wgaXNTdG9wcGVkID0gZmFsc2U7
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAg
ICAgICAgICBpc1N0b3BwZWQgPSBtX3RocmVhZHNbaV0tPm1fdGhyZWFkLT50cnlTdG9wKGxvY2tl
cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWlzU3RvcHBlZCkKQEAgLTUyOCw3
ICs1MjgsNyBAQCB1bnNpZ25lZCBXb3JrbGlzdDo6c2V0TnVtYmVyT2ZUaHJlYWRzKHVuc2lnbmVk
IG51bWJlck9mVGhyZWFkcywgaW50IHJlbGF0aXZlUHJpbwogICAgICAgICBtX3RocmVhZHMuc2hy
aW5rVG9GaXQoKTsKICAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzIDw9IG51
bWJlck9mVGhyZWFkcyk7CiAgICAgfSBlbHNlIGlmIChudW1iZXJPZlRocmVhZHMgPiBjdXJyZW50
TnVtYmVyT2ZUaHJlYWRzKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzOyBpIDwgbnVtYmVyT2ZUaHJlYWRzOyBpKyspCiAg
ICAgICAgICAgICBjcmVhdGVOZXdUaHJlYWQobG9ja2VyLCByZWxhdGl2ZVByaW9yaXR5KTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMuaApp
bmRleCBlNWY5MGI0MzhjN2I5NThiZGUyZmJiMGFiZTY3NTBkZmJhZmNhMDkyLi5jYzI2NmY2ZjM2
NTYxYWM2ZWM2NDI1MjUxYWRhOGQ2ZjQyZjIwMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV29ya2xpc3RJbmxpbmVzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBpdGVy
YXRlQ29kZUJsb2Nrc0ZvckdDKFZpc2l0b3ImIHZpc2l0b3IsIFZNJiB2bSwgY29uc3QgRnVuYyYg
ZnVuYykKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmMsIHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIFdv
cmtsaXN0OjppdGVyYXRlQ29kZUJsb2Nrc0ZvckdDKFZpc2l0b3ImIHZpc2l0b3IsIFZNJiB2bSwg
Y29uc3QgRnVuYyYgZnVuYykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIGZvciAoUGxhbk1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBtX3BsYW5zLmVuZCgpOyArK2l0ZXIpIHsK
ICAgICAgICAgUGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICBpZiAocGxh
bi0+dm0oKSAhPSAmdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNz
ZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggZjRmMWMzN2NjMzdhYTZiNTE3OTViYmU0OTJhOTU2
NDRkZWEzZGU5Zi4uNTVjMDVjODEyMjlmMzU5MzZmZjEzNDdjZGRmNDU0ZjNhZmI2YWM5MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVy
LmNwcApAQCAtNzcsMTQgKzc3LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGVucXVldWUo
c3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzaykKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAgICAgICAgIG1fY29u
ZGl0aW9uLm5vdGlmeUFsbCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIHdhaXRVbnRpbEVtcHR5
KCkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHko
KSB8fCBtX3dvcmtpbmcpCiAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7CiAg
ICAgfQpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKDs7KSB7CiAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrOwogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgICAgIG1fd29y
a2luZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIG1fY29uZGl0aW9uLm5vdGlmeUFsbCgpOwog
ICAgICAgICAgICAgICAgIHdoaWxlIChtX3F1ZXVlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAppbmRleCBiMWU5N2ZjNjVhNGVjYzBl
YzMyNWQ3ODM5NDQxNmIyOWQ4NWU2YjY0Li42YzI0MmI4NjNiY2VjZDczZTgzMGE2M2EzNWZlMjAw
MGQwYTIzNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2so
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgICAgICAgICBBU1NFUlQobV9iaXRzLm51
bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2Fw
YWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9iaXR2ZWN0b3JMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2JpdHZlY3RvckxvY2sgfTsKICAgICAgICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJp
dHMobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgICAgICBtX2JpdHMucmVzaXplKG1fYmxv
Y2tzLmNhcGFjaXR5KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKaW5kZXggMDU4MTA4ZjczYTRmYTgwNjliZmZkNTk0
YmVjMDdjNjllZjNjMWJhYy4uNTc1NDUwODJhMjBiZDM5ZjkzNWRkMjM0MWJjZjdlZTE3ODdjMjcz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGlu
ZXMuaApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNw
YWNlcyhWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVC
bG9jayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jayk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVS
b290cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5j
cHAKaW5kZXggNGYwOWE2M2VlMDU4ZDRhMThiYTNjNjExNWVhYmM2MDNlNmYxMmUyNi4uNTE4Mzg3
MGY0NmQyNDgyM2Q1Nzk5NzNmODNjMWU5Y2Y1YWZlMDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IHByaXZhdGU6CiB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjphZGQoCiAgICAgdm9pZCogYmVnaW4s
IHZvaWQqIGVuZCwgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2Nr
U2V0JiBjb2RlQmxvY2tzKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVCbG9ja3MuZ2V0
TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY29kZUJsb2Nrcy5nZXRMb2NrKCkgfTsKICAg
ICBDb21wb3NpdGVNYXJrSG9vayBtYXJrSG9vayhqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3Ms
IGxvY2tlcik7CiAgICAgZ2VuZXJpY0FkZFNwYW4oYmVnaW4sIGVuZCwgbWFya0hvb2spOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA2MWQyYjJkMmIxMDFjMzgyMjU5ZDY5
OGRiZTJmNzVjMTZjMzE5MWYzLi5jMWNmODY0Mjc3MDUxYmEwMjEwNThjZjUxNGFkMzcyZmJhNzQ4
MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBA
IEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBzaXplX3QgbWVtb3J5
QWJvdmVDcml0aWNhbFRocmVzaG9sZCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8
ZG91YmxlPihtX3JhbVNpemUpICogKDEuMCAtIE9wdGlvbnM6OmNyaXRpY2FsR0NNZW1vcnlUaHJl
c2hvbGQoKSkpOwogICAgIG1fbWF4RWRlblNpemVXaGVuQ3JpdGljYWwgPSBtZW1vcnlBYm92ZUNy
aXRpY2FsVGhyZXNob2xkIC8gNDsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgbV90aHJlYWQg
PSBhZG9wdFJlZihuZXcgSGVhcFRocmVhZChsb2NrZXIsICp0aGlzKSk7CiB9CiAKQEAgLTQwMSw3
ICs0MDEsNyBAQCB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKICAgICAKICAgICBp
ZiAobV9jb2xsZWN0Q29udGludW91c2x5VGhyZWFkKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2spOworICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2sgfTsKICAgICAgICAg
ICAgIG1fc2hvdWxkU3RvcENvbGxlY3RpbmdDb250aW51b3VzbHkgPSB0cnVlOwogICAgICAgICAg
ICAgbV9jb2xsZWN0Q29udGludW91c2x5Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICB9
CkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAg
ICAgLy8gQ2FyZWZ1bGx5IGJyaW5nIHRoZSB0aHJlYWQgZG93bi4KICAgICBib29sIHN0b3BwZWQg
PSBmYWxzZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBzdG9w
cGVkID0gbV90aHJlYWQtPnRyeVN0b3AobG9ja2VyKTsKICAgICAgICAgbV90aHJlYWRTaG91bGRT
dG9wID0gdHJ1ZTsKICAgICAgICAgaWYgKCFzdG9wcGVkKQpAQCAtMTExMSw3ICsxMTExLDcgQEAg
dm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMoR0NSZXF1ZXN0IHJlcXVlc3QpCiAKICAgICBib29sIGFs
cmVhZHlSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX3RocmVhZExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9
OwogICAgICAgICBmb3IgKGNvbnN0IEdDUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0IDogbV9yZXF1
ZXN0cykgewogICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3Vic3VtZWRCeShwcmV2aW91c1JlcXVl
c3QpKSB7CiAgICAgICAgICAgICAgICAgYWxyZWFkeVJlcXVlc3RlZCA9IHRydWU7CkBAIC0xMjUw
LDcgKzEyNTAsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5CZWdpblBoYXNlKEdDQ29u
ZHVjdG9yIGNvbm4pCiAgICAgbV9jdXJyZW50R0NTdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwogICAgICAgICBtX2N1cnJlbnRS
ZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOwogICAgIH0KQEAgLTEzMDEsNyArMTMwMSw3IEBA
IE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IgY29ubikK
ICAgICAgICAgW3RoaXNdICgpIHsKICAgICAgICAgICAgIFNsb3RWaXNpdG9yKiB2aXNpdG9yOwog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFyYWxs
ZWxTbG90VmlzaXRvckxvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Bh
cmFsbGVsU2xvdFZpc2l0b3JMb2NrIH07CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKCFtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmlzRW1wdHkoKSwg
IlBhcmFsbGVsIFNsb3RWaXNpdG9ycyBhcmUgYWxsb2NhdGVkIGFwcmlvcmkiKTsKICAgICAgICAg
ICAgICAgICB2aXNpdG9yID0gbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy50YWtlTGFz
dCgpOwogICAgICAgICAgICAgfQpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYXJh
bGxlbFNsb3RWaXNpdG9yTG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cGFyYWxsZWxTbG90VmlzaXRvckxvY2sgfTsKICAgICAgICAgICAgICAgICBtX2F2YWlsYWJsZVBh
cmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSk7CkBAIC0xODcyLDcgKzE4NzIsNyBAQCB2b2lkIEhlYXA6OndhaXRGb3JDb2xsZWN0b3Io
Y29uc3QgRnVuYyYgZnVuYykKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGJvb2wgZG9uZTsKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICAgICAg
ZG9uZSA9IGZ1bmMobG9ja2VyKTsKICAgICAgICAgICAgIGlmICghZG9uZSkgewogICAgICAgICAg
ICAgICAgIHNldE11dGF0b3JXYWl0aW5nKCk7CkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBIZWFwOjpU
aWNrZXQgSGVhcDo6cmVxdWVzdENvbGxlY3Rpb24oR0NSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQVNT
RVJUKHZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQodm0oKS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3Ry
aW5nVGFibGUoKSk7CiAgICAgCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAvLyBXZSBtYXkgYmUg
YWJsZSB0byBzdGVhbCB0aGUgY29ubi4gVGhhdCBvbmx5IHdvcmtzIGlmIHRoZSBjb2xsZWN0b3Ig
aXMgZGVmaW5pdGVseSBub3QgcnVubmluZwogICAgIC8vIHJpZ2h0IG5vdy4gVGhpcyBpcyBhbiBv
cHRpbWl6YXRpb24gdGhhdCBwcmV2ZW50cyB0aGUgY29sbGVjdG9yIHRocmVhZCBmcm9tIGV2ZXIg
c3RhcnRpbmcgaW4gbW9zdAogICAgIC8vIGNhc2VzLgpAQCAtMjk2OCw5ICsyOTY4LDkgQEAgdm9p
ZCBIZWFwOjpub3RpZnlJc1NhZmVUb0NvbGxlY3QoKQogICAgICAgICAgICAgICAgIE1vbm90b25p
Y1RpbWUgaW5pdGlhbFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgICAgICAg
ICBTZWNvbmRzIHBlcmlvZCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoT3B0aW9uczo6Y29s
bGVjdENvbnRpbnVvdXNseVBlcmlvZE1TKCkpOwogICAgICAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY29sbGVjdENvbnRp
bnVvdXNseUxvY2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xs
ZWN0Q29udGludW91c2x5TG9jayB9OwogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlcXVlc3RzLmFwcGVuZChXVEY6Om51bGxvcHQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdEdyYW50ZWRUaWNrZXQrKzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAppbmRleCA2ZjA0YzM0NzZlODc5ZWM0YTQ3
OWY4YjZlYTg5MWYyZjM5ZjNkN2IwLi5mOWExODMyM2M3MjgzMzQ3MTk4ZDk2ODg5ZGM1OWY3NDM3
OGYyMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCkBA
IC01NzgsNyArNTc4LDcgQEAgc2l6ZV90IFNsb3RWaXNpdG9yOjpwZXJmb3JtSW5jcmVtZW50T2ZE
cmFpbmluZyhzaXplX3QgYnl0ZXNSZXF1ZXN0ZWQpCiAKIGJvb2wgU2xvdFZpc2l0b3I6OmRpZFJl
YWNoVGVybWluYXRpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faGVhcC5tX21hcmtp
bmdNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1faGVhcC5tX21hcmtpbmdNdXRleCB9Owog
ICAgIHJldHVybiBkaWRSZWFjaFRlcm1pbmF0aW9uKGxvY2tlcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggN2ViNTFhZjMwZmRhODAyY2E4
MWE4YjEwZWNkN2U2ZWJlZTIyMTE3Yy4uYjJkOTlmYmE4OTIyNmQ0YzI0MGNkYWI4ZjViMDU3NTc4
MWJlOGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyhPcHRpb24KICAgICAgICAgVk0mIHZt
ID0gbV9lbnZpcm9ubWVudC5kZWJ1Z2dlcigpLnZtKCk7CiAgICAgICAgIFNhbXBsaW5nUHJvZmls
ZXImIHNhbXBsaW5nUHJvZmlsZXIgPSB2bS5lbnN1cmVTYW1wbGluZ1Byb2ZpbGVyKHN0b3B3YXRj
aCk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxlci5nZXRMb2Nr
KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc2FtcGxpbmdQcm9maWxlci5nZXRMb2NrKCkg
fTsKICAgICAgICAgc2FtcGxpbmdQcm9maWxlci5zZXRTdG9wV2F0Y2gobG9ja2VyLCBzdG9wd2F0
Y2gpOwogICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLm5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4
ZWN1dGlvblRocmVhZChsb2NrZXIpOwogICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLnN0YXJ0KGxv
Y2tlcik7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50Ojp0cmFja2luZ0NvbXBsZXRlKCkKICAgICAgICAgU2FtcGxpbmdQcm9maWxlciogc2FtcGxp
bmdQcm9maWxlciA9IHZtLnNhbXBsaW5nUHJvZmlsZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2FtcGxpbmdQcm9maWxlcik7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoc2FtcGxp
bmdQcm9maWxlci0+Z2V0TG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNhbXBsaW5n
UHJvZmlsZXItPmdldExvY2soKSB9OwogICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLT5wYXVzZShs
b2NrZXIpOwogICAgICAgICBWZWN0b3I8U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tUcmFjZT4gc3Rh
Y2tUcmFjZXMgPSBzYW1wbGluZ1Byb2ZpbGVyLT5yZWxlYXNlU3RhY2tUcmFjZXMobG9ja2VyKTsK
ICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGlu
ZygpCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFNhbXBsaW5nUHJvZmlsZXIqIHNh
bXBsaW5nUHJvZmlsZXIgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc2FtcGxpbmdQcm9maWxlcik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9m
aWxlci0+Z2V0TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2FtcGxpbmdQcm9maWxlci0+
Z2V0TG9jaygpIH07CiAgICAgc2FtcGxpbmdQcm9maWxlci0+cGF1c2UobG9ja2VyKTsKICAgICBz
YW1wbGluZ1Byb2ZpbGVyLT5jbGVhckRhdGEobG9ja2VyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5jcHAKaW5kZXggODk5OWYzMDc3YjczMjA1MTg1YzEwNGEwYjZiMzJiNGYy
OTA4N2NiMC4uZTA2ZmJkOTk5NWJhZWE2ZDU4NzBhM2NiYmI1MjY4NzNlYTk2YzZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6flJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCgpCiAKIGJvb2wg
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biwgYm9vbCBhdXRvbWF0aWNhbGx5UGF1c2UpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdGFy
Z2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAgICAgaWYg
KCFtX3RhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9
IG51bGxwdHI7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAgICAgICAgIGlmICgh
bV90YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRhcmdldCA9IG1fdGFyZ2V0
OwpAQCAtODgsNyArODgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1l
c3NhZ2VUb1RhcmdldChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB2b2lkIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldDo6Y2xvc2UoKQogewogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11
dGV4IH07CiAgICAgICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UoKQog
CiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFy
Z2V0TXV0ZXggfTsKICAgICBtX3RhcmdldCA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
Y3BwCmluZGV4IDNmMTlmMGI5ZThhNTk0M2VkOTlmODQ5NDY0ZWJhN2E0ZjYwMDM0NTAuLmQxZDk1
MmM5NDQ1OTY3YWE4YTExZjEyNDM4MmFiYTJhMmI5ZTczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNw
cApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQo
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUX0FSRyh0YXJn
ZXQsIHRhcmdldCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IG5leHRB
dmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7CiAgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlm
aWVyKHRhcmdldElkZW50aWZpZXIpOwpAQCAtODMsNyArODMsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkK
IHsKICAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKIAotICAgIExvY2tIb2xkZXIgbG9j
ayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgYXV0byB0
YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCF0
YXJnZXRJZGVudGlmaWVyKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Ojp1cGRhdGVUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCiB7CiAgICAg
QVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICghdXBkYXRlVGFy
Z2V0TWFwKHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAg
ICBtX2NsaWVudENhcGFiaWxpdGllcyA9IFdURjo6bnVsbG9wdDsKQEAgLTE2Niw3ICsxNjYsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50
KiBjbGllbnQpCiAgICAgQVNTRVJUKChtX2NsaWVudCAmJiAhY2xpZW50KSB8fCAoIW1fY2xpZW50
ICYmIGNsaWVudCkpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fY2xpZW50ID0g
Y2xpZW50OwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzZXRDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIp
OwogCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVk
KFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1
cENvbXBsZXRlZChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewotICAgIExvY2tIb2xkZXIg
bG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYg
KHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0
SWRlbnRpZmllcikKICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmNsaWVudENhcGFiaWxp
dGllc0RpZENoYW5nZSgpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
IAogICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQppbmRleCBkMDBjZmJjODhh
MDZlMjg0NGJkNWIxMjQ3YmU4OTA1NzMyMTkzMDM2Li44YjJhN2ZhMzhhYTA2OGU0NTM0M2YzNGE0
NzJjZjFhZTA1MGFlMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVU
YXJnZXRIYW5kbGVSdW5Tb3VyY2VHbG9iYWwodm9pZCopCiAKICAgICBSZW1vdGVUYXJnZXRRdWV1
ZSBxdWV1ZUNvcHk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2socndpUXVldWVNdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyByd2lRdWV1ZU11dGV4IH07CiAgICAgICAgIHN0
ZDo6c3dhcChxdWV1ZUNvcHksICpyd2lRdWV1ZSk7CiAgICAgfQogCkBAIC02OCw3ICs2OCw3IEBA
IHN0YXRpYyB2b2lkIFJlbW90ZVRhcmdldFF1ZXVlVGFza09uR2xvYmFsUXVldWUoRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICBBU1NFUlQocndpUXVldWUpOwogCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2socndpUXVldWVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyByd2lRdWV1ZU11dGV4IH07CiAgICAgICAgIHJ3aVF1ZXVlLT5hcHBlbmQoV1RGTW92ZShm
dW5jdGlvbikpOwogICAgIH0KIApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVU
YXJnZXRIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mbyh2b2lkKiBpbmZvKQogCiAgICAgUmVtb3RlVGFy
Z2V0UXVldWUgcXVldWVDb3B5OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGNvbm5l
Y3Rpb25Ub1RhcmdldC0+cXVldWVNdXRleCgpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNv
bm5lY3Rpb25Ub1RhcmdldC0+cXVldWVNdXRleCgpIH07CiAgICAgICAgIHF1ZXVlQ29weSA9IGNv
bm5lY3Rpb25Ub1RhcmdldC0+dGFrZVF1ZXVlKCk7CiAgICAgfQogCkBAIC0xNTgsNyArMTU4LDcg
QEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmRpc3BhdGNoQXN5bmNPblRhcmdldChG
dW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWMKIAogYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2FsbHlQ
YXVzZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKIAogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGlj
YQogICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52
YWx1ZU9yKDApOwogCiAgICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlzLCB0YXJnZXRJZGVu
dGlmaWVyLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGF1dG9tYXRpY2FsbHlQYXVzZSwgc3Ryb25n
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFy
Z2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogCiAg
ICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVDb250cm9sQWxsb3dlZCgp
KSB7CiAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVk
KHRhcmdldElkZW50aWZpZXIpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRv
bWF0aWNhCiAKIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRDbG9zZWQoKQog
ewotICAgIExvY2tIb2xkZXIgbG9jayhtX3RhcmdldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90YXJnZXRNdXRleCB9OwogCiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQpAQCAtMjAx
LDcgKzIwMSw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCiAgICAg
YXV0byB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJnZXQgPyBtX3RhcmdldC0+dGFyZ2V0SWRlbnRp
ZmllcigpIDogMDsKICAgICAKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoW3RoaXMsIHRhcmdl
dElkZW50aWZpZXIsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9jayhtX3RhcmdldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
dGFyZ2V0TXV0ZXggfTsKICAgICAgICAgaWYgKG1fdGFyZ2V0KSB7CiAgICAgICAgICAgICBpZiAo
bV9jb25uZWN0ZWQpCiAgICAgICAgICAgICAgICAgbV90YXJnZXQtPmRpc2Nvbm5lY3QoKnRoaXMp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5k
TWVzc2FnZVRvVGFyZ2V0KE5TU3RyaW5nICptZXNzYWdlKQogICAgIGRpc3BhdGNoQXN5bmNPblRh
cmdldChbdGhpcywgc3Ryb25nTWVzc2FnZSA9IHJldGFpblB0cihtZXNzYWdlKSwgc3Ryb25nVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSgpIHsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
KiB0YXJnZXQgPSBudWxscHRyOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV90YXJnZXRNdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRN
dXRleCB9OwogICAgICAgICAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB0YXJnZXQgPSBtX3RhcmdldDsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2
b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcChG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bgogICAgIEFTU0VSVChtX3J1bkxvb3ApOwogCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2sgeyBtX3F1ZXVlTXV0ZXggfTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShmdW5j
dGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQpp
bmRleCBkMWJmNzEzY2JjOTZjNDZjZjliMDY3YzNjOWZmZTllNTNmODFiNmRkLi43NWYzOTQzN2Jl
NWI5ZmM5MDViMGQyYWM2ZjA2ZDQzMGY4YmI2NTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJ
bnNwZWN0b3JDb2NvYS5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Ojp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQqCiB7CiAgICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICAgICAgaWYgKCF1cGRhdGVUYXJnZXRNYXAodGFyZ2V0KSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRl
QXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAg
ICAgICAvLyBJbiBjYXNlIGRlYnVnZ2VycyBmYWlsIHRvIHJlc3BvbmQsIG9yIHdlIGNhbm5vdCBj
b25uZWN0IHRvIHdlYmluc3BlY3RvcmQsIGF1dG9tYXRpY2FsbHkgY29udGludWUgYWZ0ZXIgYSBz
aG9ydCBwZXJpb2Qgb2YgdGltZS4KICAgICAgICAgaW50NjRfdCBkZWJ1Z2dlclRpbWVvdXREZWxh
eSA9IDEwOwogICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJ
TUVfTk9XLCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0g
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKG1fYXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0SWRlbnRpZmllcikgewogICAgICAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiU2tpcHBpbmcgQXV0b21hdGljIEluc3BlY3Rpb24gQ2Fu
ZGlkYXRlIHdpdGggcGFnZUlkKCV1KSBiZWNhdXNlIHdlIGZhaWxlZCB0byByZWNlaXZlIGEgcmVz
cG9uc2UgaW4gdGltZS4iLCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVu
dGlmaWVyKTsKICAgICAgICAgICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBm
YWxzZTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIHRh
cmdldC0+cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbigpOwogCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAKICAgICAgICAgQVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZVRhcmdldElkZW50aWZpZXIpOwogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRh
dGVUYXJnZXRJZGVudGlmaWVyID0gMDsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKIAogdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQgdGFyZ2V0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIExvY2tIb2xkZXIgbG9jayht
X211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX3Jl
bGF5Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElEIHRhcmdldElkZW50
aWZpZXIsIGNvbnN0IFN0cmluCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBpZiAobV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0yNzAsNyArMjcw
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJj
ZSkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKIAogICAgIGlmIChtX3JlbGF5Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpA
QCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rp
b25JZk5lZWRlZCgpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRQYXJlbnRQcm9jZXNzSW5m
b3JtYXRpb24ocGlkX3QgcGlkLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEpCiB7Ci0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBpZiAobV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB8fCBtX3BhcmVudFByb2Nl
c3NBdWRpdERhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgUmV0
YWluUHRyPENGRGF0YVJlZgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJl
Y2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1l
c3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogewotICAgIExvY2tIb2xkZXIgbG9j
ayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKFtt
ZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pIHsKICAgICAg
ICAgc3RvcEludGVybmFsKFN0b3BTb3VyY2U6OlhQQ01lc3NhZ2UpOwpAQCAtMzQ1LDcgKzM0NSw3
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGND
b25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qIHJlbGF5Q29ubmVj
dGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKIAogICAgIEFTU0VSVChyZWxheUNvbm5lY3Rpb24gPT0gbV9yZWxheUNv
bm5lY3Rpb24pOwogICAgIGlmIChyZWxheUNvbm5lY3Rpb24gIT0gbV9yZWxheUNvbm5lY3Rpb24p
CkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nv
b24oKQogCiAgICAgbV9wdXNoU2NoZWR1bGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9hZnRlcihk
aXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjIgKiBOU0VDX1BFUl9TRUMpLCBkaXNw
YXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDAp
LCBeewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCiAgICAgICAg
ICAgICBwdXNoTGlzdGluZ3NOb3coKTsKICAgICB9KTsKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbykKICAgICBkaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkV2l0aFdlYlRocmVhZExvY2tJ
Zk5lZWRlZCheewogICAgICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9IG51
bGxwdHI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICAgICAgICAgIGF1
dG8gZmluZFJlc3VsdCA9IG1fdGFyZ2V0TWFwLmZpbmQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAg
ICAgICAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3RhcmdldE1hcC5lbmQoKSkKQEAgLTYzOSw3ICs2
MzksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0
dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqKQogICAgICAgICAvLyBXYWl0IGEgYml0IGZvciB0aGUg
aW5mb3JtYXRpb24sIGJ1dCBnaXZlIHVwIGFmdGVyIGEgc2Vjb25kLgogICAgICAgICBtX3Nob3Vs
ZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24gPSB0cnVlOwogICAgICAgICBkaXNwYXRjaF9h
ZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAxICogTlNFQ19QRVJfU0VDKSwg
ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxU
LCAwKSwgXnsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBpZiAobV9zaG91bGRT
ZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKQogICAgICAgICAgICAgICAgIHN0b3BJbnRlcm5h
bChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Y29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQppbmRleCBiNTAyZTI5MzVmMGY4
NTZhYTFmMjJiZTUwNDI0YWMzYTc4NTcyMTI5Li40M2RmMjcwYWM4MjJmNGJmOWNkNjVkOWQ1MDBm
ODczZTJhYjFhZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KQEAgLTcxLDcgKzcxLDcgQEAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQogCiB2b2lkIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBjbG9zZUZyb21NZXNzYWdl
KCk7CiB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpjbG9zZUZyb21NZXNzYWdlKCkKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiAKICAgICBk
aXNwYXRjaF9hc3luYyhtX3F1ZXVlLmdldCgpLCBeewotICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIC8v
IFRoaXMgd2lsbCB0cmlnZ2VyIG9uZSBsYXN0IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQg
ZXZlbnQgb24gdGhlIHF1ZXVlIGFuZCBkZXJlZiB1cy4KICAgICAgICAgY2xvc2VPblF1ZXVlKCk7
CiAgICAgfSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKIAog
ICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVl
KG9iamVjdCwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
KTsKICAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkp
ICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9j
bGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3Nh
Z2UodGhpcywgb2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEyMCw3ICsxMjAsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmpl
Y3RfdCBvYmplY3QpCiB7CiAgICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBF
X0VSUk9SKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25GYWls
ZWQodGhpcyk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCiAgICAgICAgIGF1ZGl0
X3Rva2VuX3QgdG9rZW47CiAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbiht
X2Nvbm5lY3Rpb24uZ2V0KCksICZ0b2tlbik7CiAgICAgICAgIGlmICghV1RGOjpoYXNFbnRpdGxl
bWVudCh0b2tlbiwgImNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci53ZWJpbnNwZWN0b3Jk
IikpIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgdHJp
Z2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRoZSBx
dWV1ZSBhbmQgZGVyZWYgdXMuCiAgICAgICAgICAgICBjbG9zZU9uUXVldWUoKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCiAgICAgaWYgKHVzZXJJ
bmZvICYmICFbdXNlckluZm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGll
bnQtPnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UodGhpcywgbWVzc2FnZSwgdXNlckluZm8p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKaW5kZXggMDRhYmY1NTU0
YzQyYjM5NTBiYWI0MWJhMjU0NzQ3MmFhM2EwYmUxMi4uOGJiY2ZlMWJmZjYxZWIzMWNiZTJmNWI1
OWFlMTRjOGE4MjMyMGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkKIAog
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9t
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmIChtX2VuYWJs
ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBjb25zdCBTb2NrZXRDb25u
ZWN0aW9uOjpNZXNzYWdlSGFuZGxlcnMmIFJlbW90ZUluc3BlY3Rvcjo6bWVzc2FnZUhhbmRsZXJz
KCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwQ29ubmVjdGlvbihSZWY8U29ja2V0Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgQVNTRVJUKCFtX3NvY2tldENv
bm5lY3Rpb24pOwogICAgIG1fc29ja2V0Q29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7
CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nv
b24oKQogICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CiAKICAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9wdXNoU2No
ZWR1bGVkKQogICAgICAgICAgICAgcHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CkBAIC0yMjks
NyArMjI5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlTWVzc2FnZSgpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRv
UmVtb3RlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKICAgICBpZiAoIW1fc29ja2V0Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9S
ZW1vdGUoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UoKQogewotICAgIExvY2tI
b2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAg
IHB1c2hMaXN0aW5nc05vdygpOwogfQogCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwg
Y29uc3QgY2hhcioKIHsKICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25u
ZWN0aW9uVG9UYXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGNvbm5lY3Rpb25U
b1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CiAg
ICAgICAgIGlmICghY29ubmVjdGlvblRvVGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjYzLDcgKzI2Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENsb3NlTWVzc2Fn
ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ+IGNvbm5lY3Rpb25Ub1RhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAg
ICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQo
dGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCog
dGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0YXJnZXQgPSBtX3RhcmdldE1h
cC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1
cChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbm5lY3Rpb25Ub1RhcmdldCkpOwogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNz
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVj
dGlvbkNsaWVudC5jcHAKaW5kZXggNWExZDkyNDU3YTUzYWE4N2Q0Y2FjOWI0YjExMWNjMzQxODMx
Njk1NC4uNWUzODc5OGVhMGIxODU1NDkwYmU1YzZmOWMzODFhNWM1YTRlMmFkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNw
cApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6
OmRpZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLAogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fcGFyc2Vyc0xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlcnNMb2NrIH07CiAgICAgYXV0byByZXN1bHQg
PSBtX3BhcnNlcnMuZW5zdXJlKGNsaWVudElELCBbdGhpcywgY2xpZW50SURdIHsKICAgICAgICAg
cmV0dXJuIE1lc3NhZ2VQYXJzZXIoW3RoaXMsIGNsaWVudElEXShWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBldmVudCA9IFJlbW90ZUluc3BlY3RvckNvbm5l
Y3Rpb25DbGllbnQ6OmV4dHJhY3RFdmVudChjbGllbnRJRCwgV1RGTW92ZShkYXRhKSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXggNzM5NjczZWY4
Nzc0ZjYwZWQ4NzgxOTUzNTUzZDcwZmUzNzBiM2NkNS4uZTMwNThmNTAxZGM3MDlmYjI4ZTY4NjVi
Njk1MzNhNmI1OWM4NjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNv
Y2tldC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmRpZENsb3Nl
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklEKQogICAgIG1fY2xp
ZW50Q29ubmVjdGlvbiA9IFdURjo6bnVsbG9wdDsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbPV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIHN0b3BJbnRlcm5hbChTdG9wU291
cmNlOjpBUEkpOwogICAgIH0pOwogfQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c2VuZFdlYkluc3BlY3RvckV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCiAKIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAobV9lbmFibGVkKQog
ICAgICAgICByZXR1cm47CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnB1c2hMaXN0aW5nc1Nvb24oKQogICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CiAKICAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWz1dIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBp
ZiAobV9wdXNoU2NoZWR1bGVkKQogICAgICAgICAgICAgcHVzaExpc3RpbmdzTm93KCk7CiAgICAg
fSk7CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKFRhcmdl
dElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0
YXJnZXQ7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIHRhcmdldCA9IG1fdGFyZ2V0TWFw
LmdldCh0YXJnZXRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVw
KFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1v
dmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Np
b24oKTsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBJbnNw
ZWN0b3JDbGllbnQoY29uc3QgRXZlbnQmKQogCiAgICAgbV9yZWFkeVRvUHVzaExpc3RpbmdzID0g
dHJ1ZTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgIHB1c2hMaXN0aW5nc05vdygpOwogfQogCkBAIC0zMjYsNyArMzI2
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmZyb250ZW5kRGlkQ2xvc2UoY29uc3QgRXZlbnQm
IGV2ZW50KQogCiAgICAgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlv
blRvVGFyZ2V0OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqIHRhcmdldCA9IG1fdGFyZ2V0TWFwLmdldChldmVudC50YXJnZXRJRC52YWx1ZSgp
KTsKICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDgsNyAr
MzQ4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0
IEV2ZW50JiBldmVudCkKIAogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+IGNv
bm5lY3Rpb25Ub1RhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgY29ubmVjdGlv
blRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLmdldChldmVudC50YXJnZXRJRC52YWx1
ZSgpKTsKICAgICAgICAgaWYgKCFjb25uZWN0aW9uVG9UYXJnZXQpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0QXV0b21h
dGlvblNlc3Npb24oY29uc3QgRXZlbnQmIGV2ZW50KQogCiAgICAgbV9yZWFkeVRvUHVzaExpc3Rp
bmdzID0gdHJ1ZTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgIHB1c2hMaXN0aW5nc05vdygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRl
eCBhZTVlNmQ4YTFhZWFiMWEwNDU1NjZiMzdhM2U0Y2QwZWJkNjFmNGZjLi5hNTBjOTQyMDgyYWFl
NGFkNGE2NGQ0MzllNzliNzViZjE4NTBjYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y29ubmVj
dEluZXQoY29uc3QgY2hhciogc2UKIAogT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50
MTZfdCBwb3J0LCBMaXN0ZW5lciYgbGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1f
Y29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sg
fTsKICAgICBhdXRvIGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBtYWtlVW5pcXVlPExpc3RlbmVyQ29ubmVjdGlvbj4oaWQsIGxpc3RlbmVyLCBhZGRy
ZXNzLCBwb3J0KTsKICAgICBpZiAoIWNvbm5lY3Rpb24tPmlzTGlzdGVuaW5nKCkpCkBAIC0xMDIs
NyArMTAyLDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6bGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGQKIAogYm9vbCBSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGlkKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ0LDcgKzE0NCw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OndvcmtlclRocmVhZCgpCiAgICAg
ICAgIFZlY3RvcjxQb2xsaW5nRGVzY3JpcHRvcj4gcG9sbGZkczsKICAgICAgICAgVmVjdG9yPENv
bm5lY3Rpb25JRD4gaWRzOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9jb25uZWN0aW9uc0xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVj
dGlvbnNMb2NrIH07CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gOiBt
X2NsaWVudHMpIHsKICAgICAgICAgICAgICAgICBwb2xsZmRzLmFwcGVuZChjb25uZWN0aW9uLnZh
bHVlLT5wb2xsKTsKICAgICAgICAgICAgICAgICBpZHMuYXBwZW5kKGNvbm5lY3Rpb24ua2V5KTsK
QEAgLTIwMyw3ICsyMDMsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogewogICAgIEFTU0VS
VChTb2NrZXQ6OmlzVmFsaWQoc29ja2V0KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25u
ZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9Owog
ICAgIGF1dG8gaWQgPSBnZW5lcmF0ZUNvbm5lY3Rpb25JRCgpOwogICAgIGF1dG8gY29ubmVjdGlv
biA9IG1ha2VVbmlxdWU8Q2xpZW50Q29ubmVjdGlvbj4oaWQsIHNvY2tldCwgY2xpZW50KTsKICAg
ICBpZiAoIVNvY2tldDo6aXNWYWxpZChjb25uZWN0aW9uLT5zb2NrZXQpKQpAQCAtMjE3LDE3ICsy
MTcsMTcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdChDb25uZWN0aW9uSUQgaWQpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uc0xvY2sgfTsKIAogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9saXN0
ZW5lcnMuZ2V0KGlkKSkgewogICAgICAgICBtX2xpc3RlbmVycy5yZW1vdmUoaWQpOwogICAgICAg
ICBTb2NrZXQ6OmNsb3NlKGNvbm5lY3Rpb24tPnNvY2tldCk7Ci0gICAgICAgIGxvY2sudW5sb2Nr
RWFybHkoKTsKKyAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgIGNvbm5lY3Rp
b24tPmxpc3RlbmVyLmRpZENoYW5nZVN0YXR1cygqdGhpcywgaWQsIExpc3RlbmVyOjpTdGF0dXM6
OkNsb3NlZCk7CiAgICAgfSBlbHNlIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGll
bnRzLmdldChpZCkpIHsKICAgICAgICAgbV9jbGllbnRzLnJlbW92ZShpZCk7CiAgICAgICAgIFNv
Y2tldDo6Y2xvc2UoY29ubmVjdGlvbi0+c29ja2V0KTsKLSAgICAgICAgbG9jay51bmxvY2tFYXJs
eSgpOworICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgY29ubmVjdGlvbi0+
Y2xpZW50LmRpZENsb3NlKCp0aGlzLCBpZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIExPR19FUlJP
UigiRXJyb3I6IENhbm5vdCBkaXNjb25uZWN0OiBJbnZhbGlkIGlkIik7CkBAIC0yMzUsNyArMjM1
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdChDb25u
ZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFs
aWRhdGVDbGllbnQoQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBtX2NsaWVudHMucmVtb3ZlSWYoWyZjbGllbnRdKGF1dG8mIGtleVZhbHVlKSB7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBrZXlWYWx1ZS52YWx1ZTsKIApAQCAtMjUwLDcg
KzI1MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVD
bGllbnQoQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OmludmFsaWRhdGVMaXN0ZW5lcihMaXN0ZW5lciYgbGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uc0xvY2sgfTsKICAgICBtX2xpc3RlbmVycy5yZW1vdmVJZihbJmxpc3RlbmVyXShhdXRv
JiBrZXlWYWx1ZSkgewogICAgICAgICBjb25zdCBhdXRvJiBjb25uZWN0aW9uID0ga2V5VmFsdWUu
dmFsdWU7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjppbnZhbGlkYXRlTGlzdGVuZXIoTGlzdGVuZXImIGxpc3RlbmVyKQogCiBPcHRpb25h
bDx1aW50MTZfdD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVj
dGlvbklEIGlkKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNv
bnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2xpc3RlbmVycy5nZXQoaWQpKQogICAgICAgICByZXR1
cm4gU29ja2V0OjpnZXRQb3J0KGNvbm5lY3Rpb24tPnNvY2tldCk7CiAgICAgaWYgKGNvbnN0IGF1
dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0KGlkKSkKQEAgLTI3NiwxMyArMjc2LDEzIEBA
IE9wdGlvbmFsPHVpbnQxNl90PiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Z2V0UG9y
dChDb25uZWN0aW9uSUQgaWQpIGNvbnN0CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExvY2tIb2xkZXIg
bG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlv
bnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0
KGlkKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVjdkJ1ZmZlcihTb2NrZXQ6OkJ1ZmZl
clNpemUpOwogICAgICAgICBpZiAoYXV0byByZWFkU2l6ZSA9IFNvY2tldDo6cmVhZChjb25uZWN0
aW9uLT5zb2NrZXQsIHJlY3ZCdWZmZXIuZGF0YSgpLCByZWN2QnVmZmVyLnNpemUoKSkpIHsKICAg
ICAgICAgICAgIGlmICgqcmVhZFNpemUgPiAwKSB7CiAgICAgICAgICAgICAgICAgcmVjdkJ1ZmZl
ci5zaHJpbmsoKnJlYWRTaXplKTsKLSAgICAgICAgICAgICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7
CisgICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi0+Y2xpZW50LmRpZFJlY2VpdmUoKnRoaXMsIGlkLCBXVEZNb3ZlKHJlY3ZCdWZm
ZXIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTEsMTQg
KzI5MSwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFi
bGVkKENvbm5lY3Rpb25JRCBpZCkKICAgICAgICAgU29ja2V0OjpjbG9zZShjb25uZWN0aW9uLT5z
b2NrZXQpOwogICAgICAgICBtX2NsaWVudHMucmVtb3ZlKGlkKTsKIAotICAgICAgICBsb2NrLnVu
bG9ja0Vhcmx5KCk7CisgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwogICAgICAgICBjb25u
ZWN0aW9uLT5jbGllbnQuZGlkQ2xvc2UoKnRoaXMsIGlkKTsKICAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlk
KQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5l
Y3Rpb24gPSBtX2NsaWVudHMuZ2V0KGlkKSkgewogICAgICAgICBTb2NrZXQ6OmNsZWFyV2FpdGlu
Z1dyaXRhYmxlKGNvbm5lY3Rpb24tPnBvbGwpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQg
aWQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29ubmVjdGlv
bklEIGlkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5l
Y3Rpb25zTG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRz
LmdldChpZCkpIHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgICAgIGlmIChjb25u
ZWN0aW9uLT5zZW5kQnVmZmVyLmlzRW1wdHkoKSkgewpAQCAtMzQ5LDExICszNDksMTEgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5ldFNvY2tldElmRW5hYmxl
ZChDb25uZWN0aW9uSUQgaWQpCiB7CiAgICAgQVNTRVJUKGlzTGlzdGVuaW5nKGlkKSk7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0g
bV9saXN0ZW5lcnMuZ2V0KGlkKSkgewogICAgICAgICBpZiAoYXV0byBzb2NrZXQgPSBTb2NrZXQ6
OmFjY2VwdChjb25uZWN0aW9uLT5zb2NrZXQpKSB7CiAgICAgICAgICAgICAvLyBOZWVkIHRvIHVu
bG9jayBiZWZvcmUgY2FsbGluZyBjcmVhdGVDbGllbnQgYXMgaXQgYWxzbyBhdHRlbXB0cyB0byBs
b2NrLgotICAgICAgICAgICAgbG9jay51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgbG9ja2Vy
LnVubG9ja0Vhcmx5KCk7CiAgICAgICAgICAgICBpZiAoY29ubmVjdGlvbi0+bGlzdGVuZXIuZG9B
Y2NlcHQoKnRoaXMsIHNvY2tldC52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcApp
bmRleCAzYzkzYWI4ZWJlNWFiMmM5NmUzNGMwMTlhMmI3ZjIwNDEzZjgwOGExLi44MTlkM2UzZWM0
MTNlOWM4MjhhMTIzN2NkYTRkYzc4ZmE0NzE3OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ0xvb3BTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCBDTG9vcFN0YWNrOjpyZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKQogCiB2b2lkIENMb29wU3RhY2s6
OmFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcgYnl0ZUNvdW50KQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGljc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3Rh
Y2tTdGF0aXN0aWNzTXV0ZXggfTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8bG9uZz4oY29tbWl0
dGVkQnl0ZXNDb3VudCkgKyBieXRlQ291bnQgPiAtMSk7CiAgICAgY29tbWl0dGVkQnl0ZXNDb3Vu
dCArPSBieXRlQ291bnQ7CiB9CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBDTG9vcFN0YWNrOjpp
c1NhZmVUb1JlY3Vyc2UoKSBjb25zdAogCiBzaXplX3QgQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0
ZUNvdW50KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IHN0YWNrU3RhdGlzdGljc011dGV4IH07CiAgICAgcmV0dXJu
IGNvbW1pdHRlZEJ5dGVzQ291bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IDU0MzNjNzFjNzM3Yjk1YWRmYTZiYjc2
ZjdlOGM1MDM1MGU1MDI1YzYuLjljZDUyNTI1ZTZjNzIyZjcwZDg4ZTRlNjkzYjE1Yjk2Y2Q3MTEw
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZv
aWQqIGRzdCwgY29uc3Qgdm9pZCogc3JjLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgYnVmZmVyID0g
Yml0d2lzZV9jYXN0PHVpbnQ4X3QqPihtYWxsb2MoYnVmZmVyU2l6ZSkpOwogICAgICAgICBmbHVz
aFF1ZXVlLmNvbnN0cnVjdChXb3JrUXVldWU6OmNyZWF0ZSgianNjLmR1bXBKSVRNZW1vcnkucXVl
dWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQp
KTsKICAgICAgICAgc3RkOjphdGV4aXQoW10gewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoZHVtcEpJVE1lbW9yeUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGR1bXBK
SVRNZW1vcnlMb2NrIH07CiAgICAgICAgICAgICBmbHVzaChsb2NrZXIpOwogICAgICAgICAgICAg
Y2xvc2UoZmQpOwogICAgICAgICAgICAgZmQgPSAtMTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZv
aWQgZHVtcEpJVE1lbW9yeShjb25zdCB2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90
IHNpemUpCiAKICAgICAgICAgbmVlZHNUb0ZsdXNoID0gdHJ1ZTsKICAgICAgICAgZmx1c2hRdWV1
ZS5nZXQoKS0+ZGlzcGF0Y2hBZnRlcihTZWNvbmRzKE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlGbHVz
aEludGVydmFsKCkpLCBbXSB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihkdW1wSklU
TWVtb3J5TG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZHVtcEpJVE1lbW9yeUxv
Y2sgfTsKICAgICAgICAgICAgIGlmICghbmVlZHNUb0ZsdXNoKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGZsdXNoKGxvY2tlcik7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2
b2lkIGR1bXBKSVRNZW1vcnkoY29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVf
dCBzaXplKQogICAgICAgICBlbnF1ZXVlRmx1c2gobG9ja2VyKTsKICAgICB9OwogCi0gICAgTG9j
a0hvbGRlciBsb2NrZXIoZHVtcEpJVE1lbW9yeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBk
dW1wSklUTWVtb3J5TG9jayB9OwogICAgIHVpbnQ2NF90IHRpbWUgPSBtYWNoX2Fic29sdXRlX3Rp
bWUoKTsKICAgICB1aW50NjRfdCBkc3Q2NCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGRzdCk7
CiAgICAgdWludDY0X3Qgc2l6ZTY0ID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3Rh
dHMuY3BwCmluZGV4IDgxMzViNGZkZWU2MmY3OGU5ZGM2YjQ2MmQ2Y2VlY2E0ZmQxYzYwNjYuLjdk
MWE3NDRkZjc2Y2U1ZWY1OTA1MjZkNTBjNTA0MmU4NWIxMWZjYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9JQ1N0YXRzLmNwcApAQCAtNjYsNyArNjYsNyBAQCBJQ1N0YXRzOjpJQ1N0YXRzKCkK
ICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKAogICAgICAgICAiSlNDIElDU3RhdHMiLAog
ICAgICAgICBbdGhpc10gKCkgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGZv
ciAoOzspIHsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0Rm9yKAogICAgICAgICAg
ICAgICAgICAgICBtX2xvY2ssIFNlY29uZHMoMSksIFt0aGlzXSAoKSAtPiBib29sIHsgcmV0dXJu
IG1fc2hvdWxkU3RvcDsgfSk7CkBAIC04NCw3ICs4NCw3IEBAIElDU3RhdHM6OklDU3RhdHMoKQog
SUNTdGF0czo6fklDU3RhdHMoKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX3No
b3VsZFN0b3AgPSB0cnVlOwogICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMzI1NTM0ZWI5NmZj
ZmFiMTI4NGRhYTg1NDg3ZDM4M2NlOGI4MmI1OS4uMzE5YjUwZDk0MmQ1YTk0ZDllOWJkMGZmNDJl
NTNkY2E3MzEyYmU3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApA
QCAtMTMxLDcgKzEzMSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4g
SklUVGh1bmtzOjpjdGlJbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZNCiAKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTdHViKFZNJiB2bSwgVGh1
bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIENUSVN0dWJNYXA6OkFkZFJlc3Vs
dCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+KCkpOwogICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CiAgICAg
ICAgIC8vIENvbXBpbGF0aW9uIHRocmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRy
aWVzLgpAQCAtMTQzLDcgKzE0Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUVGh1bmtzOjpjdGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IKIAogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmV4aXN0aW5nQ1RJU3R1
YihUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGV4aXN0aW5n
Q1RJU3R1YihnZW5lcmF0b3IsIE5vTG9ja2luZ05lY2Vzc2FyeSk7CiB9CiAKQEAgLTE1OSw3ICsx
NTksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6
ZXhpc3RpbmdDVElTdHViKFRodW5rR2VuZXJhdG9yCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0s
IFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvIGtl
eSA9IGJpdHdpc2VfY2FzdDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CiAgICAg
Q1RJU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChrZXksIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4oKSk7CiAgICAgaWYgKGVudHJ5LmlzTmV3
RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xp
c3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKaW5kZXgg
NTM5YjZmYTljYWE4MzI5MTU0NGM4YWQzNzlkMjI2MDI4NDc0YjU5NC4uYTcwNTJlNzlmMGE3NDM2
N2ZlM2ZkYzVhM2NmNmQ1MzhlNjkzMjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRXb3JrbGlzdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
bV9qaXQuY29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgICAgICAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX2lzRmluaXNoZWRDb21waWxp
bmcgPSB0cnVlOwogICAgIH0KICAgICAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgaXNGaW5pc2hlZENvbXBpbGluZygpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgIHJldHVybiBtX2lzRmluaXNoZWRDb21waWxpbmc7CiAgICAgfQogICAgIApAQCAtMTM4LDEz
ICsxMzgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIG1haW4gdGhyZWFkIHJlYWxpemVzIHRoYXQgd2UganVzdCBjb21waWxlZCBz
b21ldGhpbmcuIE5vdGlmeWluZwogICAgICAgICAgICAgLy8gYSBjb25kaXRpb24gaXMgYmFzaWNh
bGx5IGZyZWUgaWYgbm9ib2R5IGlzIHdhaXRpbmcuCi0gICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcigqbV93b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICpt
X3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICAgICAgbV93b3JrbGlzdC5tX2NvbmRpdGlvbi0+
bm90aWZ5QWxsKGxvY2tlcik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fbXlQbGFu
cy5jbGVhcigpOwogICAgICAgICAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xp
c3QubV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9
OwogICAgICAgICBtX3dvcmtsaXN0Lm1fbnVtQXZhaWxhYmxlVGhyZWFkcysrOwogICAgICAgICBy
ZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIEpJ
VFdvcmtsaXN0OjpKSVRXb3JrbGlzdCgpCiAgICAgOiBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUo
KSkKICAgICAsIG1fY29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
ICptX2xvY2sgfTsKICAgICBtX3RocmVhZCA9IG5ldyBUaHJlYWQobG9ja2VyLCAqdGhpcyk7CiB9
CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBib29sIEpJVFdvcmtsaXN0Ojpjb21wbGV0ZUFsbEZvclZN
KFZNJiB2bSkKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDMy
PiBteVBsYW5zOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9s
b2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAg
ICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBkaWRGaW5kVW5maW5pc2hlZFBsYW4g
PSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX3BsYW5zLnJlbW92ZUFsbE1hdGNoaW5nKApAQCAt
MjIzLDcgKzIyMyw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OnBvbGwoVk0mIHZtKQogICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBQbGFucyBteVBsYW5zOwogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9s
b2NrIH07CiAgICAgICAgIG1fcGxhbnMucmVtb3ZlQWxsTWF0Y2hpbmcoCiAgICAgICAgICAgICBb
Jl0gKFJlZlB0cjxQbGFuPiYgcGxhbikgewogICAgICAgICAgICAgICAgIGlmICgmcGxhbi0+dm0o
KSAhPSAmdm0pCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZUxh
dGVyKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUIKICAg
ICBjb2RlQmxvY2stPmppdFNvb24oKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAg
IAogICAgICAgICBpZiAobV9wbGFubmVkLmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6ZmluYWxpemVQ
bGFucyhQbGFucyYgbXlQbGFucykKICAgICBmb3IgKFJlZlB0cjxQbGFuPiYgcGxhbiA6IG15UGxh
bnMpIHsKICAgICAgICAgcGxhbi0+ZmluYWxpemUodHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xv
Y2sgfTsKICAgICAgICAgbV9wbGFubmVkLnJlbW92ZShwbGFuLT5jb2RlQmxvY2soKSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92
aWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNw
cAppbmRleCAwM2U1NWVlM2QxZmYyMDI1ODZhZjJiZWE4ZDc5MWQ1MTUzYTE4N2IwLi42MDZlNWYx
NzQ0YWYwZjYxMGRkY2NlNzYxYmM5M2UzMjIzYjk1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0
aWMgTG9jayBwcm92aWRlcklkTG9jazsKIAogdm9pZCBTb3VyY2VQcm92aWRlcjo6Z2V0SUQoKQog
ewotICAgIExvY2tIb2xkZXIgbG9jaygmcHJvdmlkZXJJZExvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBwcm92aWRlcklkTG9jayB9OwogICAgIGlmICghbV9pZCkgewogICAgICAgICBzdGF0aWMg
aW50cHRyX3QgbmV4dFByb3ZpZGVySUQgPSAwOwogICAgICAgICBtX2lkID0gKytuZXh0UHJvdmlk
ZXJJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckRhdGFiYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmNwcAppbmRleCA3NTIxYTFkN2FiYTM4N2I0YTFkYzhiZTZmNjIyMWMxNGIyZjFiZmIw
Li4yZDI2ZWUxYTBkNzYzNjJhOTdhY2FiZWZjMjNjZGFiYjU4N2Y5OTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQogCiBCeXRlY29kZXMqIERhdGFiYXNl
OjplbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
cmV0dXJuIGVuc3VyZUJ5dGVjb2Rlc0Zvcihsb2NrZXIsIGNvZGVCbG9jayk7CiB9CiAKQEAgLTgw
LDcgKzgwLDcgQEAgQnl0ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgQ29kZUJsb2NrKiBjb2RlQmwKIAogdm9pZCBEYXRhYmFzZTo6bm90
aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAg
bV9ieXRlY29kZXNNYXAucmVtb3ZlKGNvZGVCbG9jayk7CiAgICAgbV9jb21waWxhdGlvbk1hcC5y
ZW1vdmUoY29kZUJsb2NrKTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5
RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAKIHZvaWQgRGF0YWJhc2U6OmFkZENv
bXBpbGF0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBSZWY8Q29tcGlsYXRpb24+JiYgY29tcGls
YXRpb24pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogCiAg
ICAgbV9jb21waWxhdGlvbnMuYXBwZW5kKGNvbXBpbGF0aW9uLmNvcHlSZWYoKSk7CkBAIC0xNzQs
NyArMTc0LDcgQEAgdm9pZCBEYXRhYmFzZTo6cmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29uc3QgY2hh
ciogZmlsZW5hbWUpCiAKIHZvaWQgRGF0YWJhc2U6OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBjaGFyKiBzdW1tYXJ5LCBjb25zdCBDU3RyaW5nJiBkZXRhaWwpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgCiAgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMgPSBlbnN1cmVCeXRlY29kZXNGb3IobG9j
a2VyLCBjb2RlQmxvY2spOwogICAgIENvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IG1fY29tcGls
YXRpb25NYXAuZ2V0KGNvZGVCbG9jayk7CkBAIC0xODYsMTQgKzE4NiwxNCBAQCB2b2lkIERhdGFi
YXNlOjphZGREYXRhYmFzZVRvQXRFeGl0KCkKICAgICBpZiAoKytkaWRSZWdpc3RlckF0RXhpdCA9
PSAxKQogICAgICAgICBhdGV4aXQoYXRFeGl0Q2FsbGJhY2spOwogICAgIAotICAgIExvY2tIb2xk
ZXIgaG9sZGVyKHJlZ2lzdHJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3Ry
YXRpb25Mb2NrIH07CiAgICAgbV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlID0gZmlyc3REYXRhYmFz
ZTsKICAgICBmaXJzdERhdGFiYXNlID0gdGhpczsKIH0KIAogdm9pZCBEYXRhYmFzZTo6cmVtb3Zl
RGF0YWJhc2VGcm9tQXRFeGl0KCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRp
b25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAgIGZv
ciAoRGF0YWJhc2UqKiBjdXJyZW50ID0gJmZpcnN0RGF0YWJhc2U7ICpjdXJyZW50OyBjdXJyZW50
ID0gJigqY3VycmVudCktPm1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZSkgewogICAgICAgICBpZiAo
KmN1cnJlbnQgIT0gdGhpcykKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEyLDcgKzIxMiw3
IEBAIHZvaWQgRGF0YWJhc2U6OnBlcmZvcm1BdEV4aXRTYXZlKCkgY29uc3QKIAogRGF0YWJhc2Uq
IERhdGFiYXNlOjpyZW1vdmVGaXJzdEF0RXhpdERhdGFiYXNlKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0
aW9uTG9jayB9OwogICAgIERhdGFiYXNlKiByZXN1bHQgPSBmaXJzdERhdGFiYXNlOwogICAgIGlm
IChyZXN1bHQpIHsKICAgICAgICAgZmlyc3REYXRhYmFzZSA9IHJlc3VsdC0+bV9uZXh0UmVnaXN0
ZXJlZERhdGFiYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyVUlELmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
clVJRC5jcHAKaW5kZXggODdjOTdjZmQ4YjUwNGZjNzZmOTFjMDQ3NmZkYjcxYzdjODhmYWUyMC4u
ZjAwMGM5ODg4M2Y2MGQ0OTUzYWFmMzI0ODM1ZTk3NWRmZGQxMmU2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCkBAIC0zNyw3ICszNyw3IEBA
IFVJRCBVSUQ6OmNyZWF0ZSgpCiAgICAgc3RhdGljIExvY2sgbG9jazsKICAgICBzdGF0aWMgdWlu
dDY0X3QgY291bnRlcjsKICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgIFVJRCByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fdWlk
ID0gKytjb3VudGVyOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggMjlkNWRmZTc4YWIy
OTQ3ZTM5YmNlNjk3NzA0Mjk3N2ZkYTEyMjQ0NS4uMWYyZGJlYWZjNGQ2MWFmNDhlNjM5ZmM1OWJm
ZDI0ZDQ1YWUwZGRkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGVmZXJyZWRXb3JrVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgRGVmZXJyZWRX
b3JrVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2Vs
bCogZGVwZW5kCiAKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oVGlj
a2V0IHRpY2tldCwgVGFzayYmIHRhc2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNr
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBtX3Rhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgaWYgKCFp
c1NjaGVkdWxlZCgpICYmICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQogICAgICAgICBzZXRUaW1l
VW50aWxGaXJlKDBfcyk7CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBEZWZlcnJlZFdvcmtUaW1l
cjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKIHZvaWQgRGVmZXJyZWRXb3JrVGlt
ZXI6OmRpZFJlc3VtZVNjcmlwdEV4ZWN1dGlvbk93bmVyKCkKIHsKICAgICBBU1NFUlQoIW1fY3Vy
cmVudGx5UnVubmluZ1Rhc2spOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgp
ICYmIG1fdGFza3Muc2l6ZSgpKQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3Bw
CmluZGV4IDVmZjU4N2VlOTQwMTU4ZTY0ZWU5ZDE2MGJmNjAwNDRhMWI2OWRmNDMuLmQ3MWYzZWMx
OWZmMzY3NDY3NzA3ZmU1MmI4ODAyNGM1NjI3YTE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0zMjQsNyArMzI0LDcg
QEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjp0aW1lckxvb3AoKQogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIFNlY29uZHMgc3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lID0gMF9zOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1faXNT
aHV0RG93bikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NzEsMTMgKzY3MSwxMyBA
QCB0ZW1wbGF0ZSB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnZpc2l0KFNsb3RWaXNpdG9yJik7CiAK
IHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6c2h1dGRvd24oKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1faXNTaHV0
RG93biA9IHRydWU7CiB9CiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6c3RhcnQoKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIHN0YXJ0KGxvY2tlcik7CiB9CiAKQEAgLTcwMywxOSArNzAzLDE5IEBAIHZvaWQgU2Ft
cGxpbmdQcm9maWxlcjo6bm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGNv
bnN0IEFic3RyYWN0TG9jCiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlQ3VycmVudFRo
cmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBub3RpY2VDdXJyZW50VGhy
ZWFkQXNKU0NFeGVjdXRpb25UaHJlYWQobG9ja2VyKTsKIH0KIAogdm9pZCBTYW1wbGluZ1Byb2Zp
bGVyOjpub3RpY2VKU0xvY2tBY3F1aXNpdGlvbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbm90aWNlQ3VycmVu
dFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiB9CiAKIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6bm90aWNlVk1FbnRyeSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKG1fdm0uZW50cnlT
Y29wZSk7CiAgICAgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tl
cik7CiAgICAgbV9sYXN0VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwpAQCAtOTkx
LDcgKzk5MSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVnaXN0ZXJGb3JSZXBvcnRBdEV4
aXQoKQogICAgIHN0YXRpYyBMb2NrIHJlZ2lzdHJhdGlvbkxvY2s7CiAgICAgc3RhdGljIEhhc2hT
ZXQ8UmVmUHRyPFNhbXBsaW5nUHJvZmlsZXI+PiogcHJvZmlsZXNUb1JlcG9ydDsKIAotICAgIExv
Y2tIb2xkZXIgaG9sZGVyKHJlZ2lzdHJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBy
ZWdpc3RyYXRpb25Mb2NrIH07CiAKICAgICBpZiAoIXByb2ZpbGVzVG9SZXBvcnQpIHsKICAgICAg
ICAgcHJvZmlsZXNUb1JlcG9ydCA9IG5ldyBIYXNoU2V0PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVy
Pj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAppbmRleCA0
ZjVkNWM0ZTQ1MWJhMTYxMTdhMjdhMWY3Nzk0ODE3MmU1OTYzNGFmLi40ZGFjNWUxOTg4MDI2Yzdl
ZWE5YmQyNDg0MTQ0NzRlYTUzNGEyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XYXRjaGRvZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RhcnRU
aW1lcihTZWNvbmRzIHRpbWVMaW1pdCkKICAgICAvLyB2aWEgd2lsbERlc3Ryb3lWTSgpIGJlZm9y
ZSBpdCBnb2VzIGF3YXkuCiAgICAgUmVmUHRyPFdhdGNoZG9nPiBwcm90ZWN0ZWRUaGlzID0gdGhp
czsKICAgICBtX3RpbWVyUXVldWUtPmRpc3BhdGNoQWZ0ZXIodGltZUxpbWl0LCBbdGhpcywgcHJv
dGVjdGVkVGhpc10gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX3ZtKQogICAgICAgICAg
ICAgbV92bS0+bm90aWZ5TmVlZFdhdGNoZG9nQ2hlY2soKTsKICAgICB9KTsKQEAgLTE1OSw3ICsx
NTksNyBAQCB2b2lkIFdhdGNoZG9nOjpzdG9wVGltZXIoKQogCiB2b2lkIFdhdGNoZG9nOjp3aWxs
RGVzdHJveVZNKFZNKiB2bSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlRfVU5VU0VEKHZtLCBtX3ZtID09
IHZtKTsKICAgICBtX3ZtID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IGVkODhmZjJjNzRhZjI1YzIzOTAxZTZlZTY0ODk3ZTc5
ZmNiMmEzNzAuLmU0OWRhZTFlMWJjOWRkNzBjOWViMjAyZDg3NzA5ZmNjNmNhNjcwOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtMTI3LDcgKzEy
Nyw3IEBAIGF1dG8gVk1JbnNwZWN0b3I6OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IFZN
SW5zcGVjdG9yOjpMb2NrZXImLCB2b2lkKiBtYWNoCiAgICAgICAgICAgICByZXR1cm4gRnVuY3Rv
clN0YXR1czo6Q29udGludWU7IC8vIFNraXAgdGhpcyBWTS4KICAgICAgICAgfQogCi0gICAgICAg
IExvY2tIb2xkZXIgZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlcihsb2NrKTsKKyAgICAgICAgTG9j
a2VyIGV4ZWN1dGFibGVBbGxvY2F0b3JMb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGlmIChhbGxv
Y2F0b3IuaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciwg
bWFjaGluZVBDKSkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgcmV0
dXJuIEZ1bmN0b3JTdGF0dXM6OkRvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAKaW5kZXggMzZlZjY0ZGEzMzVjNzQ4ZWM1NzQ3YTIxYWMwZTI3MGM5YzM1NmUx
Mi4uZjc4ZWQyNTU0NjQxNDMzOTU3YWJkYmM4YWJhNzBkYzM5YTZhYjUzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIC8vIGFs
d2F5cyBjYWxsIHRoZSBmYXN0ZXN0IGNvZGUuIEFueSBmdW5jdGlvbiBsaW5rZWQgYWZ0ZXIgdXMg
d2lsbCBzZWUgb3VyIG5ldyBjb2RlIGFuZCB0aGUgbmV3IGNhbGxzaXRlcywgd2hpY2ggdGhleQog
ICAgICAgICAvLyB3aWxsIHVwZGF0ZS4gSXQncyBhbHNvIG9rIGlmIHRoZXkgcHVibGlzaCB0aGVp
ciBjb2RlIGJlZm9yZSB3ZSByZXNldCB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGVzIGJlY2F1c2UgYWZ0
ZXIgd2UgcmVsZWFzZQogICAgICAgICAvLyB0aGUgbG9jayBvdXIgY29kZSBpcyByZWFkeSB0byBi
ZSBwdWJsaXNoZWQgdG9vLgotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29kZUJsb2NrLT5tX2xvY2sgfTsK
IAogICAgICAgICBtX2NvZGVCbG9jay0+bV9iYnFDYWxsZWVzW21fZnVuY3Rpb25JbmRleF0gPSBj
YWxsZWUuY29weVJlZigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRy
eVBsYW4uY3BwCmluZGV4IDlkMmMyNGQ4ZWEwMjlhMGE5NWU0MjU4YWEyMDlmMGYzYzg3MTU1OTku
LjZmZWIxNTc3MzRkZmM5ZmJiOGIyYWY0Y2E2M2M3ZWFjMGYwNDNhYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBA
QCBwdWJsaWM6CiAgICAgVGhyZWFkQ291bnRIb2xkZXIoRW50cnlQbGFuJiBwbGFuKQogICAgICAg
ICA6IG1fcGxhbihwbGFuKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wbGFu
Lm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYW4ubV9sb2NrIH07CiAgICAg
ICAgIG1fcGxhbi5tX251bWJlck9mQWN0aXZlVGhyZWFkcysrOwogICAgIH0KIAogICAgIH5UaHJl
YWRDb3VudEhvbGRlcigpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BsYW4u
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhbi5tX2xvY2sgfTsKICAgICAg
ICAgbV9wbGFuLm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzLS07CiAKICAgICAgICAgaWYgKCFtX3Bs
YW4ubV9udW1iZXJPZkFjdGl2ZVRocmVhZHMgJiYgIW1fcGxhbi5oYXNXb3JrKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggOGMyMzg4YjE2ZjBjZTE0
OGQ3ZDhhMTM1NjI2ZGE2ZjVkMzRlOTRjYi4uZWRmZDY4YWZjNGE2NmRmZTA2MDMwNzZkZjFlYTM5
ZmZmOTVkNWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9y
dCkKICAgICAgICAgLy8gYWx3YXlzIGNhbGwgdGhlIGZhc3Rlc3QgY29kZS4gQW55IGZ1bmN0aW9u
IGxpbmtlZCBhZnRlciB1cyB3aWxsIHNlZSBvdXIgbmV3IGNvZGUgYW5kIHRoZSBuZXcgY2FsbHNp
dGVzLCB3aGljaCB0aGV5CiAgICAgICAgIC8vIHdpbGwgdXBkYXRlLiBJdCdzIGFsc28gb2sgaWYg
dGhleSBwdWJsaXNoIHRoZWlyIGNvZGUgYmVmb3JlIHdlIHJlc2V0IHRoZSBpbnN0cnVjdGlvbiBj
YWNoZXMgYmVjYXVzZSBhZnRlciB3ZSByZWxlYXNlCiAgICAgICAgIC8vIHRoZSBsb2NrIG91ciBj
b2RlIGlzIHJlYWR5IHRvIGJlIHB1Ymxpc2hlZCB0b28uCi0gICAgICAgIExvY2tIb2xkZXIgaG9s
ZGVyKG1fY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2Rl
QmxvY2stPm1fbG9jayB9OwogCiAgICAgICAgIG1fY29kZUJsb2NrLT5tX29tZ0NhbGxlZXNbbV9m
dW5jdGlvbkluZGV4XSA9IGNhbGxlZS5jb3B5UmVmKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21QbGFuLmNwcAppbmRleCBjNmE5MDRkNjg0NDExZDIwNmVhMGZhOTRkMzk4ZmUwNzEy
MTdlNmJmLi5mNzM1YjQwOTJkY2Y3OGY3ODY2MzYzYjgwZTJjMmQ2NWIyODkwNjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
UGxhbjo6cnVuQ29tcGxldGlvblRhc2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIAogdm9pZCBQ
bGFuOjphZGRDb21wbGV0aW9uVGFzayhDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYm
IHRhc2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpCiAgICAgICAgIG1fY29tcGxl
dGlvblRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb250ZXh0LCBXVEZNb3ZlKHRhc2spKSk7
CiAgICAgZWxzZQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFBsYW46OmFkZENvbXBsZXRpb25UYXNr
KENvbnRleHQqIGNvbnRleHQsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKIAogdm9pZCBQbGFuOjp3
YWl0Rm9yQ29tcGxldGlvbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpIHsKICAg
ICAgICAgbV9jb21wbGV0ZWQud2FpdChtX2xvY2spOwogICAgIH0KQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBQbGFuOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAKIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlQ29u
dGV4dEFuZENhbmNlbElmTGFzdChDb250ZXh0JiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYg
KEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21wbGV0
aW9uIHRhc2sgdG8gbm90IGhhdmUgYSBDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRleCA2MjQ1YTMxZDAwYzFlMDFlNzQ3ODBlNzBiMTA5
YTBlNzVkNmRkNjI3Li42YjIwZDA4OTQ1NDIwNjc5ZTc2MjdlZTBjOGRjMTliZGM5ODY3Yjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMTY3
LDcgKzE2Nyw3IEBAIHN0cnVjdCBQYXJhbWV0ZXJUeXBlcyB7CiBSZWZQdHI8U2lnbmF0dXJlPiBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZlY3RvcjxUeXBlLCAxPiYg
cmVzdWx0cywgY29uc3QgVmVjdG9yPFR5cGU+JiBhcmdzKQogewogICAgIFNpZ25hdHVyZUluZm9y
bWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgaW5mby5tX2xvY2sgfTsKIAogICAgIGF1dG8gYWRk
UmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZVNldC50ZW1wbGF0ZSBhZGQ8UGFyYW1ldGVyVHlwZXM+
KFBhcmFtZXRlclR5cGVzIHsgcmVzdWx0cywgYXJncyB9KTsKICAgICByZXR1cm4gbWFrZVJlZigq
YWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIFJlZlB0cjxTaWdu
YXR1cmU+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaWduYXR1cmVGb3IoY29uc3QgVmVjdG9yPFR5
cGUsIDE+JiByZXN1CiB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKIHsK
ICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tI
b2xkZXIgbG9jayhpbmZvLm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2Nr
IH07CiAKICAgICBpbmZvLm1fc2lnbmF0dXJlU2V0LnJlbW92ZUlmKFsmXSAoYXV0byYgaGFzaCkg
ewogICAgICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUgPSBoYXNoLmtleTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCmluZGV4IDBjYzZlZmZiZDc5NDhjYzBk
M2NlODQxYTg5MzVmNmQ1NzllYjUwZjguLjViYWQwZDkwYTU2MmUyNWRkZTgxN2I1ODJjMDYwNjY1
NmM5MDZlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3Jr
bGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKCFwbGFuLT5o
YXNXb3JrKCkgfHwgcGxhbi0+bXVsdGlUaHJlYWRlZCgpKTsKICAgICAgICAgaWYgKHBsYW4tPmhh
c1dvcmsoKSAmJiAhd2FzTXVsdGlUaHJlYWRlZCAmJiBwbGFuLT5tdWx0aVRocmVhZGVkKCkpIHsK
LSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCp3b3JrbGlzdC5tX2xvY2spOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICp3b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGVs
ZW1lbnQuc2V0VG9OZXh0UHJpb3JpdHkoKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcXVldWUu
ZW5xdWV1ZShXVEZNb3ZlKGVsZW1lbnQpKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcGxhbkVu
cXVldWVkLT5ub3RpZnlBbGwobG9ja2VyKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdvcmts
aXN0OjpRdWV1ZUVsZW1lbnQ6OnNldFRvTmV4dFByaW9yaXR5KCkKIAogdm9pZCBXb3JrbGlzdDo6
ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFC
TEVEKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fcXVldWUpCkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikKIHZv
aWQgV29ya2xpc3Q6OmNvbXBsZXRlUGxhblN5bmNocm9ub3VzbHkoUGxhbiYgcGxhbikKIHsKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBtX3F1ZXVlLmRlY3JlYXNlS2V5KFsmXSAoUXVl
dWVFbGVtZW50JiBlbGVtZW50KSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5wbGFuID09ICZw
bGFuKSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5wcmlvcml0eSA9IFByaW9yaXR5OjpTeW5j
aHJvbm91czsKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFdvcmtsaXN0Ojpjb21wbGV0ZVBsYW5T
eW5jaHJvbm91c2x5KFBsYW4mIHBsYW4pCiAKIHZvaWQgV29ya2xpc3Q6OnN0b3BBbGxQbGFuc0Zv
ckNvbnRleHQoQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIFZlY3RvcjxRdWV1ZUVs
ZW1lbnQ+IGVsZW1lbnRzOwogICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgUXVldWVFbGVtZW50IGVsZW1lbnQgPSBtX3F1ZXVlLmRlcXVldWUoKTsKQEAgLTIxOCw3ICsy
MTgsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mQ29t
cGlsYXRpb25UaHJlYWRzID0gT3B0aW9uczo6dXNlQ29uY3VycmVudEpJVCgpID8ga2VyblRDU01B
d2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMoKSA6IDE7CiAgICAgbV90aHJlYWRzLnJlc2VydmVD
YXBhY2l0eShudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFkcyk7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKICAgICAg
ICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+
KGxvY2tlciwgKnRoaXMpKTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBXb3JrbGlzdDo6V29ya2xp
c3QoKQogV29ya2xpc3Q6On5Xb3JrbGlzdCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAg
ICAgICAgbV9xdWV1ZS5lbnF1ZXVlKHsgUHJpb3JpdHk6OlNodXRkb3duLCBuZXh0VGlja2V0KCks
IG51bGxwdHIgfSk7CiAgICAgICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwobG9ja2VyKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5j
cHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggYjIwZGQ3
ZTcxMzYxMjBmMWUwOWQ1MTZlNWYyMzQyYWMzMWNlNDExNi4uMDE0NDAyMDI5MTUzZWRmMTZhOWMz
ZTUxMjYyZDJlYTU4MjYxNzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tTcGVlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0
LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteU51bUl0ZXJh
dGlvbnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG51bUl0ZXJhdGlvbnNMb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBudW1JdGVyYXRpb25zTG9jayB9OwogICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtSXRlcmF0aW9ucyArPSBteU51bUl0ZXJhdGlvbnM7CiAgICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQXV0b21hdGljVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5j
cHAKaW5kZXggODdiOTFmMTA1YzcyZDA0NjBkNjE3ZTM4NTU3M2NlY2VjYjI3Y2E1NC4uZjRlYTc4
ZDEzZTFjZGRiNjE5YjgyMjg2OGQzM2M3MjdjOWYyZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQXV0b21hdGljVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNU
aHJlYWQuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgQXV0b21hdGljVGhyZWFkOjp+QXV0b21hdGlj
VGhyZWFkKCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVy
KHRoaXMpLCAiOiBEZWxldGluZyBBdXRvbWF0aWNUaHJlYWQuXG4iKTsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIAog
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSdyZSBpbiBhIHdhaXRpbmcgc3RhdGUgd2l0aCB0
aGUgdGhyZWFkIHNodXQgZG93bi4gVGhpcyBpcyBhIGdvb2Z5IHdheSB0bwogICAgIC8vIGRpZSwg
YnV0IGl0IGNvdWxkIGhhcHBlbi4KQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIEF1dG9tYXRpY1Ro
cmVhZDo6bm90aWZ5KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAKIHZvaWQgQXV0b21h
dGljVGhyZWFkOjpqb2luKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIHdoaWxlIChtX2lzUnVubmluZykKICAg
ICAgICAgbV9pc1J1bm5pbmdDb25kaXRpb24ud2FpdCgqbV9sb2NrKTsKIH0KQEAgLTE3OCw3ICsx
NzgsNyBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KQogICAgICAgICAgICAgdGhyZWFkLT50aHJlYWREaWRTdGFydCgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1f
bG9jayB9OwogICAgICAgICAgICAgICAgIEFTU0VSVChtX2NvbmRpdGlvbi0+Y29udGFpbnMobG9j
a2VyLCB0aGlzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsxOTks
NyBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgICAgICAg
ICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICAgICAgUG9sbFJlc3VsdCByZXN1bHQg
PSBwb2xsKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFBv
bGxSZXN1bHQ6OldvcmspCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6
OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9ja2VyJikKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBXb3JrUmVzdWx0IHJlc3VsdCA9IHdvcmsoKTsKICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0ID09IFdvcmtSZXN1bHQ6OlN0b3ApIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyAqbV9sb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdG9wUGVybWFuZW50bHko
bG9ja2VyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0ID09IFdvcmtSZXN1bHQ6OkNvbnRpbnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0F1dG9tYXRpY1RocmVhZC5oIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFk
LmgKaW5kZXggNmQ1NTdiYzNiNmNkOTRjMzE0YzJmMDk0MDlkZjk3MjBjNmQ5YjhkOC4uOGQ3YzJi
NTE2ODBhM2VhNjcyOGU1MTc0ZmM4MTgwNjhkZWU5NWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQXV0b21hdGljVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhy
ZWFkLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAvLwogLy8gICAgIGZvciAo
OzspIHsKIC8vICAgICAgICAgewotLy8gICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKy8vICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIC8vICAgICAg
ICAgICAgIGZvciAoOzspIHsKIC8vICBbMV0gICAgICAgICAgICBzdHVmZiB0aGF0IGNvdWxkIGJy
ZWFrLCByZXR1cm4sIG9yIGZhbGwgdGhyb3VnaDsKIC8vICAgICAgICAgICAgICAgICBtX2NvbmRp
dGlvbi53YWl0KG1fbG9jayk7CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJvdGVjdGVkOgogICAgIC8v
IHsKICAgICAvLyAgICAgZm9yICg7OykgewogICAgIC8vICAgICAgICAgewotICAgIC8vICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgLy8gICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIC8vICAgICAgICAgICAgIGZvciAoOzspIHsKICAg
ICAvLyAgICAgICAgICAgICAgICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKCk7CiAgICAgLy8g
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUG9sbFJlc3VsdDo6V29yaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dURi93dGYvTWV0
YUFsbG9jYXRvci5jcHAKaW5kZXggZDdjOGVkZWNlYjljMTEyYWI1MDM4NDBkYjRmZjU2YmY3N2E1
MmEzMi4uZWVmODliNzdlN2JkZGZjZDY3NjVkNjczYWE1NjVhMDY3N2NkNzBhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
TWV0YUFsbG9jYXRvci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9ySGFu
ZGxlOjpzaHJpbmsoc2l6ZV90IG5ld1NpemVJbkJ5dGVzKQogICAgIEFTU0VSVChuZXdTaXplSW5C
eXRlcyA8PSBzaXplSW5CeXRlcyk7CiAKICAgICBNZXRhQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSB0
aGlzLT5hbGxvY2F0b3IoKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigmYWxsb2NhdG9yLm1fbG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGFsbG9jYXRvci5tX2xvY2sgfTsKIAogICAgIG5ld1Np
emVJbkJ5dGVzID0gYWxsb2NhdG9yLnJvdW5kVXAobmV3U2l6ZUluQnl0ZXMpOwogICAgIApAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgTWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNlRnJvbVJlbGVh
c2VkSGFuZGxlKEZyZWVTcGFjZVB0ciBzdGFydCwgc2l6ZV90IHNpCiB2b2lkIE1ldGFBbGxvY2F0
b3I6OmFkZEZyZXNoRnJlZVNwYWNlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiB7
CiAgICAgQ29uZmlnOjpBc3NlcnROb3RGcm96ZW5TY29wZSBhc3NlcnROb3RGcm96ZW5TY29wZTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgbV9ieXRlc1Jlc2VydmVkICs9IHNpemVJbkJ5dGVzOwogICAgIGFkZEZyZWVT
cGFjZShGcmVlU3BhY2VQdHI6Om1ha2VGcm9tUmF3UG9pbnRlcihzdGFydCksIHNpemVJbkJ5dGVz
KTsKIH0KQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJl
ZVNwYWNlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiBzaXplX3QgTWV0YUFsbG9j
YXRvcjo6ZGVidWdGcmVlU3BhY2VTaXplKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIoJm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAg
IHNpemVfdCByZXN1bHQgPSAwOwogICAgIGZvciAoRnJlZVNwYWNlTm9kZSogbm9kZSA9IG1fZnJl
ZVNwYWNlU2l6ZU1hcC5maXJzdCgpOyBub2RlOyBub2RlID0gbm9kZS0+c3VjY2Vzc29yKCkpCiAg
ICAgICAgIHJlc3VsdCArPSBub2RlLT5zaXplSW5CeXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGFyYWxsZWxIZWxwZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVs
SGVscGVyUG9vbC5jcHAKaW5kZXggN2MwNTZiYTE1MTIwMGY3NjlkYzZiYzkyNDQxOWNjMzY4Yzcy
MTg2NS4uNDQzZDczMTNlNmJhZDAyODQzNDllNjEwN2YyMDM5N2Y5M2Y0M2E4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxIZWxwZXJQb29sLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QYXJhbGxlbEhlbHBlclBvb2wuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgbmFtZXNwYWNl
IFdURiB7CiBQYXJhbGxlbEhlbHBlckNsaWVudDo6UGFyYWxsZWxIZWxwZXJDbGllbnQoUmVmUHRy
PFBhcmFsbGVsSGVscGVyUG9vbD4mJiBwb29sKQogICAgIDogbV9wb29sKFdURk1vdmUocG9vbCkp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9vbC0+
bV9pc0R5aW5nKTsKICAgICBtX3Bvb2wtPm1fY2xpZW50cy5hcHBlbmQodGhpcyk7CiB9CiAKIFBh
cmFsbGVsSGVscGVyQ2xpZW50Ojp+UGFyYWxsZWxIZWxwZXJDbGllbnQoKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bv
b2wtPm1fbG9jayB9OwogICAgIGZpbmlzaChsb2NrZXIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3Bvb2wtPm1fY2xpZW50cy5zaXplKCk7ICsraSkgewpAQCAtNTQsNyArNTQsNyBA
QCBQYXJhbGxlbEhlbHBlckNsaWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KCkKIAogdm9pZCBQ
YXJhbGxlbEhlbHBlckNsaWVudDo6c2V0VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4m
JiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7ICptX3Bvb2wtPm1fbG9jayB9OwogICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3Rhc2spOwogICAgIG1fdGFzayA9IFdURk1vdmUodGFzayk7CiAgICAgbV9wb29sLT5kaWRNYWtl
V29ya0F2YWlsYWJsZShsb2NrZXIpOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFBhcmFsbGVsSGVs
cGVyQ2xpZW50OjpzZXRUYXNrKFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiYmIHRhc2spCiAK
IHZvaWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OmZpbmlzaCgpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9s
b2NrIH07CiAgICAgZmluaXNoKGxvY2tlcik7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBQ
YXJhbGxlbEhlbHBlckNsaWVudDo6ZG9Tb21lSGVscGluZygpCiB7CiAgICAgUmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZCAoKT4+IHRhc2s7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9wb29sLT5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2Nr
IH07CiAgICAgICAgIHRhc2sgPSBjbGFpbVRhc2sobG9ja2VyKTsKICAgICAgICAgaWYgKCF0YXNr
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUGFyYWxsZWxI
ZWxwZXJDbGllbnQ6OnJ1blRhc2soY29uc3QgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+JiB0
YXNrKQogICAgIHRhc2stPnJ1bigpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV9wb29sLT5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9s
b2NrIH07CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbnVtQWN0aXZlKTsKICAgICAgICAgLy8g
Tm8gbmV3IHRhc2sgY291bGQgaGF2ZSBiZWVuIGluc3RhbGxlZCwgc2luY2Ugd2Ugd2VyZSBzdGls
bCBhY3RpdmUuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2sgfHwgbV90YXNrID09IHRh
c2spOwpAQCAtMTMzLDcgKzEzMyw3IEBAIFBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVs
cGVyUG9vbCgpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9jbGllbnRzLmlzRW1wdHkoKSk7CiAgICAg
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9pc0R5aW5nID0gdHJ1ZTsKICAgICAg
ICAgbV93b3JrQXZhaWxhYmxlQ29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CkBA
IC0xNDQsNyArMTQ0LDcgQEAgUGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29s
KCkKIAogdm9pZCBQYXJhbGxlbEhlbHBlclBvb2w6OmVuc3VyZVRocmVhZHModW5zaWduZWQgbnVt
VGhyZWFkcykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogICAgIGlmIChudW1UaHJlYWRzIDwgbV9udW1UaHJlYWRzKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9udW1UaHJlYWRzID0gbnVtVGhyZWFkczsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2b2lkIFBhcmFsbGVsSGVscGVyUG9vbDo6ZG9Tb21lSGVscGluZygpCiAgICAg
UGFyYWxsZWxIZWxwZXJDbGllbnQqIGNsaWVudDsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lk
ICgpPj4gdGFzazsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBjbGllbnQgPSBnZXRD
bGllbnRXaXRoVGFzayhsb2NrZXIpOwogICAgICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwIGIvU291cmNl
L1dURi93dGYvU2Vjb25kcy5jcHAKaW5kZXggNWE4MWYwOWQ5YjdkZTRkZDhmMzBlODk0YjkyZjU5
MjIzMTZkZmI5NC4uZDYwN2M5NzI5YWYxNjdmZmI3YWQyYTY2NmExNjQ3MGI3ZGZiNDkxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
U2Vjb25kcy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBzbGVlcChTZWNvbmRzIHZhbHVlKQog
CiAgICAgTG9jayBmYWtlTG9jazsKICAgICBDb25kaXRpb24gZmFrZUNvbmRpdGlvbjsKLSAgICBM
b2NrSG9sZGVyIGZha2VMb2NrZXIoZmFrZUxvY2spOworICAgIExvY2tlciBmYWtlTG9ja2VyIHsg
ZmFrZUxvY2sgfTsKICAgICBmYWtlQ29uZGl0aW9uLndhaXRGb3IoZmFrZUxvY2ssIHZhbHVlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBl
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKaW5kZXgg
YzdiOWVkMmU2MmUwNjc0ZTdjYTUzYjg1YjEzMjkxY2IwMzhkMTk0ZS4uMmI1MGRlMWEzMWE1Y2Q5
MzExYzgyMjQyYjQ3NWUxNDZkZmY0NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5
bmFtaWNDbG9ja1R5cGUuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBzbGVlcChjb25zdCBU
aW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRpbWUpCiB7CiAgICAgTG9jayBmYWtlTG9jazsKICAg
ICBDb25kaXRpb24gZmFrZUNvbmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VMb2NrZXIoZmFr
ZUxvY2spOworICAgIExvY2tlciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAgICBmYWtlQ29u
ZGl0aW9uLndhaXRVbnRpbChmYWtlTG9jaywgdGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtlclBvb2wuY3BwIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAK
aW5kZXggNDJjOWUxMzVhYTllYjkxYzhjMGJmNGQ0ODIzMzRlNTlkZGZlYzYyMy4uOGE5YzFmZGE3
NGE3M2IyYzVhYjVjZGEyZDhlNDYwOWFiZTgwYTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvV29ya2VyUG9vbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIGZpbmFs
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV9wb29sLm1fbG9jayB9OwogICAgICAgICBtX3Bvb2wubV9u
dW1iZXJPZkFjdGl2ZVdvcmtlcnMrKzsKICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgV29ya2Vy
UG9vbDo6V29ya2VyUG9vbChBU0NJSUxpdGVyYWwgbmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZXb3Jr
ZXJzLCBTZWNvbmRzIHRpbWUKICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQogICAgICwgbV9uYW1l
KG5hbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZX
b3JrZXJzOyArK2kpCiAgICAgICAgIG1fd29ya2Vycy5hcHBlbmQoYWRvcHRSZWYoKm5ldyBXb3Jr
ZXIobG9ja2VyLCAqdGhpcywgbV9sb2NrLCBtX2NvbmRpdGlvbi5jb3B5UmVmKCksIHRpbWVvdXQp
KSk7CiB9CkBAIC05NSw3ICs5NSw3IEBAIFdvcmtlclBvb2w6OldvcmtlclBvb2woQVNDSUlMaXRl
cmFsIG5hbWUsIHVuc2lnbmVkIG51bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lCiBXb3JrZXJQ
b29sOjp+V29ya2VyUG9vbCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV93b3JrZXJzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG1fdGFz
a3MuYXBwZW5kKG51bGxwdHIpOyAvLyBVc2UgbnVsbCB0YXNrIHRvIGluZGljYXRlIHRoYXQgd2Ug
d2FudCB0aGUgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KICAgICAgICAgbV9jb25kaXRpb24tPm5vdGlm
eUFsbChsb2NrZXIpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgV29ya2VyUG9vbDo6c2hvdWxk
U2xlZXAoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogCiB2b2lkIFdvcmtlclBvb2w6OnBvc3RUYXNr
KEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgbV90YXNrcy5hcHBlbmQo
V1RGTW92ZSh0YXNrKSk7CiAgICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwIGIvU291
cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCmluZGV4IDM0ODEyN2RiNjg0YmJi
YWIzNDQyYTkxN2EwOGIzMTZlZTk3ZTE2MDcuLjU5MTdiMzc5ZjEyYWZmNWZmNDJkMTM0N2ZiZGNi
MWYyMDhhMDcwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKQEAg
LTM4Myw3ICszODMsNyBAQCBhdXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQs
IFBsYXRmb3JtU3VzcGVuZEVycm9yPgogICAgIC8vIFlvdXIgaXNzdWluZyB0aHJlYWQgKEEpIGF0
dGVtcHRzIHRvIHN1c3BlbmQgdGhlIHRhcmdldCB0aHJlYWQgKEIpLiBUaGVuLCB5b3Ugd2lsbCBz
dXNwZW5kIHRoZSB0aHJlYWQgKEMpIGFkZGl0aW9uYWxseS4KICAgICAvLyBUaGlzIGNhc2UgZnJl
cXVlbnRseSBoYXBwZW5zIGlmIHlvdSBzdG9wIHRocmVhZHMgdG8gcGVyZm9ybSBzdGFjayBzY2Fu
bmluZy4gQnV0IHRocmVhZCAoQikgbWF5IGhvbGQgdGhlIGxvY2sgb2YgdGhyZWFkIChDKS4KICAg
ICAvLyBJbiB0aGF0IGNhc2UsIGRlYWQgbG9jayBoYXBwZW5zLiBVc2luZyBnbG9iYWwgbG9jayBo
ZXJlIGF2b2lkcyB0aGlzIGRlYWQgbG9jay4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxT
dXNwZW5kTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAj
aWYgT1MoREFSV0lOKQogICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3N1c3BlbmQo
bV9wbGF0Zm9ybVRocmVhZCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCkBAIC00
MTQsNyArNDE0LDcgQEAgYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQ
bGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHZvaWQgVGhyZWFkOjpyZXN1bWUoKQogewogICAgIC8vIER1
cmluZyByZXN1bWUsIHN1c3BlbmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJv
bSB0aGUgb3RoZXIgdGhyZWFkcy4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5k
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1Mo
REFSV0lOKQogICAgIHRocmVhZF9yZXN1bWUobV9wbGF0Zm9ybVRocmVhZCk7CiAjZWxzZQpAQCAt
NDcyLDcgKzQ3Miw3IEBAIHN0YXRpYyBUaHJlYWRTdGF0ZU1ldGFkYXRhIHRocmVhZFN0YXRlTWV0
YWRhdGEoKQogCiBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVycykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lO
KQogICAgIGF1dG8gbWV0YWRhdGEgPSB0aHJlYWRTdGF0ZU1ldGFkYXRhKCk7CiAgICAga2Vybl9y
ZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRfZ2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG1ldGFk
YXRhLmZsYXZvciwgKHRocmVhZF9zdGF0ZV90KSZyZWdpc3RlcnMsICZtZXRhZGF0YS51c2VyQ291
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcAppbmRleCA1NTlkYWFiMmE0YWI0ODU1
YjNjNjRiOGZkMmQ2ZTBlN2YwZWIzMDNmLi41YTFhYjRjYmRjN2IzNDFlODQ0ZjY1ZmQ3M2M5NWQ3
ZDFjN2UyNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcApAQCAtNDksNyArNDks
NyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3ltYm9scyhIQU5ETEUgaFByb2MpCiAKIGJvb2wg
U3ltRnJvbUFkZHJlc3MoSEFORExFIGhQcm9jLCBEV09SRDY0IGFkZHJlc3MsIERXT1JENjQqIGRp
c3BsYWNlbWVudCwgU1lNQk9MX0lORk8qIHN5bWJvbEluZm8pCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrKGNhbGxNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNhbGxNdXRleCB9OwogICAgIGlu
aXRpYWxpemVTeW1ib2xzKGhQcm9jKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IDo6U3ltRnJvbUFk
ZHIoaFByb2MsIGFkZHJlc3MsIGRpc3BsYWNlbWVudCwgc3ltYm9sSW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDY2NzhhZWJlZjcwOWZjNDBiM2FlNTEzY2ZkZTc2NDFj
MDJlYWU4NGQuLjRiMzcyNDdmOTkwNzIzZTMyOGU3ZGM5MmRlMjViNWMzMDg2YWU5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBUaHJl
YWQ6OmRldGFjaCgpCiBhdXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBs
YXRmb3JtU3VzcGVuZEVycm9yPgogewogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSh0
aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRpbmcg
dGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9i
YWxTdXNwZW5kTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07
CiAgICAgRFdPUkQgcmVzdWx0ID0gU3VzcGVuZFRocmVhZChtX2hhbmRsZSk7CiAgICAgaWYgKHJl
c3VsdCAhPSAoRFdPUkQpLTEpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMjQsMTMgKzIyNCwx
MyBAQCBhdXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3Vz
cGVuZEVycm9yPgogLy8gRHVyaW5nIHJlc3VtZSwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5v
dCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0aHJlYWRzLgogdm9pZCBUaHJlYWQ6OnJlc3Vt
ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBnbG9iYWxTdXNwZW5kTG9jayB9OwogICAgIFJlc3VtZVRocmVhZChtX2hh
bmRsZSk7CiB9CiAKIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVnaXN0ZXJzKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3VzcGVuZExvY2sgfTsKICAgICByZWdpc3Rl
cnMuQ29udGV4dEZsYWdzID0gQ09OVEVYVF9JTlRFR0VSIHwgQ09OVEVYVF9DT05UUk9MOwogICAg
IEdldFRocmVhZENvbnRleHQobV9oYW5kbGUsICZyZWdpc3RlcnMpOwogICAgIHJldHVybiBzaXpl
b2YoQ09OVEVYVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGZhZDVjOWQ2YjRiMTcyZDcyMmI2YTliMzdkMmUw
ZTgzZGM1NzMyZWMuLjk3NWNmYzNlY2Q1NzIzMmFiZTc3M2I5ZDFiYzRkMDQ0YjNjNWVlODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jQXVk
aW9EZWNvZGVyOjpBc3luY0F1ZGlvRGVjb2RlcigpCiB7CiAgICAgLy8gU3RhcnQgd29ya2VyIHRo
cmVhZC4KLSAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgbV90aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiQXVkaW8gRGVjb2RlciIsIFt0aGlzXSB7CiAgICAgICAgIHJ1bkxvb3Ao
KTsKICAgICB9LCBUaHJlYWRUeXBlOjpBdWRpbyk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQXN5
bmNBdWRpb0RlY29kZXI6OnJ1bkxvb3AoKQogCiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciB1
bnRpbCB3ZSBoYXZlIG1fdGhyZWFkIGVzdGFibGlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgcnVu
IGxvb3AuCi0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgfQog
CiAgICAgLy8gS2VlcCBydW5uaW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5k
ZXggM2E0Y2Q4NWU1ZWMxMDBjODcxMzI4NzYzODQ0OTk1NTI5MGNkYzNkNC4uNmJiODA4ODk2ZDdh
Y2YxNGM5ZGFiNDBiYjUxNTNhNjZkNzAwNDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIERh
dGFiYXNlOjpwZXJmb3JtQ2xvc2UoKQogICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgpLmdldFRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogCiAgICAgICAgIC8vIENs
ZWFuIHVwIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gc2NoZWR1bGVkIHlldDoKICAg
ICAgICAgLy8gVHJhbnNhY3Rpb24gcGhhc2UgMSBjbGVhbnVwLiBTZWUgY29tbWVudCBvbiAiV2hh
dCBoYXBwZW5zIGlmIGEKQEAgLTU0NCwxNCArNTQ0LDE0IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVk
dWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBE
YXRhYmFzZTo6aW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBib29s
IERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzIHx8ICFtX3RyYW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpOwogfQogCkBAIC02ODEs
NyArNjgxLDcgQEAgdm9pZCBEYXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIHZvaWQgRGF0YWJh
c2U6OnJ1blRyYW5zYWN0aW9uKFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxi
YWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ss
IFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25XcmFwcGVyPiYmIHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NN
dXRleCB9OwogICAgIGlmICghbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKSB7CiAgICAgICAg
IGlmIChlcnJvckNhbGxiYWNrKSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LT5ldmVudExvb3Ao
KS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgW2Vycm9yQ2FsbGJhY2sgPSBtYWtl
UmVmKCplcnJvckNhbGxiYWNrKV0oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IGZjZmYxMDRjNTJlMmM3ODQz
OTUzNTkzNDI4MTI2OTdkZmM3YTdjNzMuLmU2ZDdkNjZhMDhkOGFjNzU4Mzg2N2MwNzBiMTNjNDNi
MTY2OTlmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIERhdGFiYXNlVGhyZWFkOjp+
RGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9OwogCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAg
ICByZXR1cm47CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNl
VGhyZWFkKCkKIHsKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIERhdGFiYXNlVGhyZWFkOjpz
dGFydCgpIHRvIGNvbXBsZXRlLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVh
dGlvbk11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRl
eCB9OwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAi
LCB0aGlzKTsKICAgICB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFk
OjpkYXRhYmFzZVRocmVhZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4K
ICAgICBEYXRhYmFzZVNldCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
b3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNp
emUoKSA+IDApIHsKICAgICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9k
aWZ5IHRoZSBvcmlnaW5hbCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVy
LgogICAgICAgICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2
b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNl
KQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9OwogCiAgICAgQVNTRVJUKG1f
dGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFz
ZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lk
IERhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2Up
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CiAKICAgICBBU1NFUlQobV90
aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQo
KSB8fCBtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsx
NzIsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRh
YmFzZSYgZGF0YWJhc2UpCiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFz
ZUFjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VT
ZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsK
ICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAg
aWYgKGRhdGFiYXNlLT5oYXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQ
ZW5kaW5nVHJhbnNhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IGEwMzgyMzRiNzU1NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTguLjgzNGFjODI3
YzJiMWU1ZjdlMjAzZDE1MzBiMzVjNjhkMWY0YTA5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTE1OSw3
ICsxNTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6Omhhc0FkZXF1YXRl
UXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaQogCiBFeGNlcHRpb25Pcjx2b2lkPiBE
YXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXplKQogewotICAg
IExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxv
Y2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIC8vIEZJWE1FOiBX
aGF0IGd1YXJhbnRlZXMgdGhpcyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkgaXMgbm9uLW51bGw/
CiAgICAgYXV0byBvcmlnaW4gPSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CkBAIC0yMDcsNyAr
MjA3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hE
YXRhYmFzZShEYXRhYmFzZUNvbnRleHQmIGNvbnRleHQKIC8vIGhlbmNlIHNob3VsZCBub3QgYmUg
YSBwZXJmb3JtYW5jZSBjcml0aWNhbCBwYXRoIGFueXdheS4gCiBFeGNlcHRpb25Pcjx2b2lkPiBE
YXRhYmFzZVRyYWNrZXI6OnJldHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IGVzdGltYXRlZFNpemUpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2Nr
ZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgLy8gRklY
TUU6IFdoYXQgZ3VhcmFudGVlcyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkgaXMgbm9uLW51bGw/
CiAgICAgYXV0byBvcmlnaW4gPSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CkBAIC0yNzEsNyAr
MjcxLDcgQEAgdWludDY0X3QgRGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6ZShEYXRhYmFzZSYg
ZGF0YWJhc2UpCiB7CiAgICAgLy8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYSBkYXRhYmFzZSBpcyB0
aGUgZnVsbCBxdW90YSBmb3IgaXRzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0
aGluIHRoZSBvcmlnaW4sCiAgICAgLy8gcGx1cyB0aGUgY3VycmVudCB1c2FnZSBvZiB0aGUgZ2l2
ZW4gZGF0YWJhc2UKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OworICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAg
ICAgYXV0byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgYXV0byBx
dW90YSA9IHF1b3RhTm9Mb2NrKG9yaWdpbik7CkBAIC0zNjAsMTMgKzM2MCwxMyBAQCBTdHJpbmcg
RGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZwogCiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRh
dGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0
YWJhc2VNYXBHdWFyZCB9OwogICAgIHJldHVybiBmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKG9y
aWdpbiwgbmFtZSwgY3JlYXRlSWZOb3RFeGlzdHMpLmlzb2xhdGVkQ29weSgpOwogfQogCiBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKQogewotICAg
IExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxv
Y2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIG9wZW5UcmFja2Vy
RGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCkBAIC00MjEsNyArNDIxLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2VUcmFj
a2VyOjpkYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
RGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7
IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgbmFtZXMgPSBkYXRhYmFzZU5hbWVz
Tm9Mb2NrKG9yaWdpbik7CiAgICAgfQogICAgIHJldHVybiBpc29sYXRlZENvcHkobmFtZXMpOwpA
QCAtNDM0LDcgKzQzNCw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFp
bHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uCiAgICAgaW50NjRfdCBl
eHBlY3RlZFVzYWdlOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0
YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAt
NDY5LDcgKzQ2OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAgICAgU3RyaW5nIG9yaWdp
bklkZW50aWZpZXIgPSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAgaW50NjRfdCBn
dWlkID0gMDsKIAotICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAog
ICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoQ3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIGlmICgh
bV9kYXRhYmFzZS5pc09wZW4oKSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
LCBjb25zdAogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZUNyZWF0aW5nRGF0YWJhc2UoRGF0
YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJh
c2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3Vh
cmQgfTsKICAgICBkb25lQ3JlYXRpbmdEYXRhYmFzZShkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigp
LCBkYXRhYmFzZS5zdHJpbmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCkpOwogfQogCkBAIC01Mjcs
NyArNTI3LDcgQEAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRh
dGFiYXNlcygpCiB7CiAgICAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJh
c2VNYXBHdWFyZCk7CisgICAgICAgIExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVu
RGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiBuYW1lTWFwIDogbV9vcGVuRGF0YWJhc2VNYXAtPnZhbHVl
cygpKSB7CkBAIC01NDMsNyArNTQzLDcgQEAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNl
VHJhY2tlcjo6b3BlbkRhdGFiYXNlcygpCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tIb2xkZXIgb3BlbkRhdGFi
YXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAgICBMb2NrZXIgb3BlbkRhdGFi
YXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIGlmICghbV9vcGVu
RGF0YWJhc2VNYXApCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRh
YmFzZU9yaWdpbk1hcD4oKTsKQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9j
a0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAg
IExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owog
CiAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3Bl
bkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIAogUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFi
YXNlVHJhY2tlcjo6b3JpZ2luTG9ja0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAg
IExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAgICAgU3Ry
aW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIAog
ICAgIC8vIFRoZSBvcmlnaW5Mb2NrTWFwIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgRGF0YWJh
c2VUaHJlYWRzIHNpbmNlCkBAIC02ODgsMTMgKzY4OCwxMyBAQCB1aW50NjRfdCBEYXRhYmFzZVRy
YWNrZXI6OnF1b3RhTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiB1
aW50NjRfdCBEYXRhYmFzZVRyYWNrZXI6OnF1b3RhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luKQogewotICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAg
ICByZXR1cm4gcXVvdGFOb0xvY2sob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnNldFF1b3RhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCB1aW50NjRfdCBxdW90
YSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAg
IExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07CiAKICAgICBp
ZiAocXVvdGFOb0xvY2sob3JpZ2luKSA9PSBxdW90YSkKICAgICAgICAgcmV0dXJuOwpAQCAtODI0
LDcgKzgyNCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gZGF0YWJhc2VOYW1lczsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNl
KG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5E
YXRhYmFzZU1hcEd1YXJkIH07CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODc2LDcgKzg3Niw3IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERl
bGV0aW9uTW9kCiAgICAgfQogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFz
ZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVu
RGF0YWJhc2VNYXBHdWFyZCB9OwogICAgICAgICBkZWxldGVPcmlnaW5Mb2NrRm9yKG9yaWdpbik7
CiAgICAgICAgIGRvbmVEZWxldGluZ09yaWdpbihvcmlnaW4pOwogCkBAIC0xMDYzLDcgKzEwNjMs
NyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFi
YXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3Vh
cmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFy
ZCB9OwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlz
dCk7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwNzgsMTIgKzEwNzgsMTIgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRl
bGV0ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIK
ICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tzIGR1cmlu
ZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCiAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZh
bHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6
RGVmYXVsdCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9y
IGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRh
dGFiYXNlSWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNl
IHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogICAgICAgICBkb25lRGVsZXRpbmdEYXRhYmFz
ZShvcmlnaW4sIG5hbWUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTG9j
a0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0Rh
dGFiYXNlIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVS
RSBvcmlnaW49PyBBTkQgbmFtZT0/Il9zKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewpAQCAtMTEy
MSw3ICsxMTIxLDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QKIAogI2lmbmRlZiBOREVCVUcK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIH07
CiAgICAgICAgIEFTU0VSVChpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5h
bWUpKTsKICAgICB9CiAjZW5kaWYKQEAgLTExMzIsNyArMTEzMiw3IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmln
aW4sIGNvbnN0CiAgICAgLy8gRGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5j
ZSB0aGF0IGNhbiBjYXVzZSBhIGRlYWRsb2NrCiAgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91
cyBEYXRhYmFzZVRocmVhZCBjYWxsIGl0IHRyaWdnZXJzLgogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAg
ICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsK
ICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlTWFwKSB7CiAgICAgICAgICAgICBpZiAoYXV0byog
bmFtZU1hcCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQob3JpZ2luKSkgewogICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBkYXRhYmFzZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKSkgewpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWRE
YXRhYmFzZXMoKQogICAgIAogICAgIHsKICAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jayBiZWZv
cmUgY2FsbGluZyBvcGVuVHJhY2tlckRhdGFiYXNlLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsg
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERv
bnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
Ly8gRGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNhbiBjYXVz
ZSBhIGRlYWRsb2NrCiAgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRhYmFzZVRocmVh
ZCBjYWxsIGl0IHRyaWdnZXJzLgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJh
c2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRh
dGFiYXNlTWFwTG9jayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgaWYgKG1f
b3BlbkRhdGFiYXNlTWFwKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9wZW5EYXRhYmFzZSA6
ICptX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IG9w
ZW5EYXRhYmFzZS5rZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAppbmRleCBkMGQxMjgwOTZiYWIwYTZhMGY3YzJk
YmYxMDNjMjJkNDA4MzlmZjBhLi4yNzIxNDQxMzc1MjU5M2VkMDhhMjY2Mjk0MGZjYTg3YTkyNDM2
YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENh
bGxiYWNrV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMQ2FsbGJhY2tXcmFwcGVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyOwogICAgICAg
ICBUKiBjYWxsYmFjazsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAg
ICAgICAgaWYgKCFtX2NhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFQ+IHVud3JhcCgpCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gV1RGTW92ZShtX2NhbGxiYWNrKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5j
cHAKaW5kZXggZWRkY2U4MWJkZDBlYThmNjRlOWMyMjg1M2I3ZjE4YTNhY2QzN2I2MS4uZTc0MjFj
NzdjNTMyNzAxMWY1OGJmMTI2MTZmOWUwNGRiNTFiNjY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE0NCw3
ICsxNDQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjYWxsRXJyb3JDYWxsYmFja0R1ZVRvSW50
ZXJydXB0aW9uKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0YXRlbWVudChzdGQ6
OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBzdGF0ZW1lbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50
TXV0ZXggfTsKICAgICBtX3N0YXRlbWVudFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHN0YXRlbWVudCkp
OwogfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRI
YW5kbGVDbG9zZWREYXRhYmFzZSgpCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBzdG9wcGVk
LCBkb24ndCBkbyBhbnl0aGluZyBhbmQgY2FuY2VsIHF1ZXVlZCB3b3JrCiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxpbmcg
d29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
dGF0ZW1lbnRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsK
ICAgICBtX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CiAgICAgbV9uZXh0U3RlcCA9IG51bGxwdHI7
CiAKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVt
ZW50KCkKIHsKICAgICBtX2N1cnJlbnRTdGF0ZW1lbnQgPSBudWxscHRyOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3Rh
dGVtZW50TXV0ZXggfTsKICAgICBpZiAoIW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgpKQogICAg
ICAgICBtX2N1cnJlbnRTdGF0ZW1lbnQgPSBtX3N0YXRlbWVudFF1ZXVlLnRha2VGaXJzdCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGQwMGVjMWQ5NDI0OGJmOWFkNTE1NDkxOTBj
YmZjZDljNWYwMGRlMTEuLmEwNDNmN2NhMzI2YmU4YzBlOWJjOTgzYmMzN2JiZjQ1MThlOTA2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKCkKIAogICAgIG1fZnJvbnRlbmQucmVsZWFzZU9y
aWdpbkxvY2tJZk5lZWRlZCgpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9mcm9udGVuZC5t
X3N0YXRlbWVudE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVuZC5tX3N0YXRl
bWVudE11dGV4IH07CiAgICAgbV9mcm9udGVuZC5tX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAKaW5kZXggM2Y4M2U4ZTY3MDZiYTQ1NzQzNGMyYTMxZmQyNDg5NmE3OWQ5NjJhMS4u
OWZjMzg3ZTQ1Y2EyNTg1ODJlMzk5MjFmNTZjY2U5ZTdkMDEwNGE0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpjbGVhcigp
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX2F4T2JqZWN0Q2FjaGUgPSBudWxs
cHRyOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nU3VidHJlZVJl
bW92YWxzLmFwcGVuZChtX3Jvb3ROb2RlLT5vYmplY3RJRCgpKTsKICAgICBtX3Jvb3ROb2RlID0g
bnVsbHB0cjsKICAgICBtX25vZGVNYXAuY2xlYXIoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IEFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwg
QVhDb3JlT2JqZWN0KiBheFBhcgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG9iamVjdCA9
IGNyZWF0ZVN1YnRyZWUoYXhPYmplY3QsIGF4UGFyZW50ID8gYXhQYXJlbnQtPm9iamVjdElEKCkg
OiBJbnZhbGlkQVhJRCwgYXR0YWNoV3JhcHBlcik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBt
X2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07
CiAgICAgaWYgKCFheFBhcmVudCkKICAgICAgICAgc2V0Um9vdE5vZGUob2JqZWN0LnB0cigpKTsK
ICAgICBlbHNlIGlmIChheFBhcmVudC0+b2JqZWN0SUQoKSAhPSBJbnZhbGlkQVhJRCkgLy8gTmVl
ZCB0byBjaGVjayBmb3IgdGhlIG9iamVjdElEIG9mIGF4UGFyZW50IGFnYWluIGJlY2F1c2UgaXQg
bWF5IGhhdmUgYmVlbiBkZXRhY2hlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlLgpAQCAtMjI0
LDcgKzIyNCw3IEBAIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRl
U3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElECiAgICAgfQogCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgICAgIG1fcGVuZGluZ0FwcGVuZHMu
YXBwZW5kKFdURk1vdmUobm9kZUNoYW5nZSkpOwogICAgICAgICB1cGRhdGVDaGlsZHJlbklEcyhv
YmplY3QtPm9iamVjdElEKCksIFdURk1vdmUoY2hpbGRyZW5JRHMpKTsKICAgICB9CkBAIC0yNDUs
NyArMjQ1LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmplY3Qm
IGF4T2JqZWN0KQogICAgIGF1dG8gbmV3T2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRl
KGF4T2JqZWN0LCB0aGlzLCBwYXJlbnRJRCk7CiAgICAgbmV3T2JqZWN0LT5tX2NoaWxkcmVuSURz
ID0gYXhPYmplY3QuY2hpbGRyZW5JRHMoKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9j
aGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owog
ICAgIC8vIFJlbW92ZSB0aGUgb2xkIG9iamVjdCBhbmQgc2V0IHRoZSBuZXcgb25lIHRvIGJlIHVw
ZGF0ZWQgb24gdGhlIEFYIHRocmVhZC4KICAgICBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMuYXBwZW5k
KGF4SUQpOwogICAgIG1fcGVuZGluZ0FwcGVuZHMuYXBwZW5kKHsgbmV3T2JqZWN0LCBheE9iamVj
dC53cmFwcGVyKCkgfSk7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6
dXBkYXRlTm9kZVByb3BlcnR5KGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYUHJvcGVy
dHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9j
aGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owog
ICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQoeyBheE9iamVjdC5vYmplY3RJRCgp
LCBwcm9wZXJ0eU1hcCB9KTsKIH0KIApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAKICAgICBpZiAo
dXBkYXRlZENoaWxkIHx8IHJlbW92YWxzLnNpemUoKSkgewogICAgICAgICAvLyBNYWtlIHRoZSBj
aGlsZHJlbiBJRHMgb2YgdGhlIGlzb2xhdGVkIG9iamVjdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUg
QVhPYmplY3Qncy4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sg
fTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgICAgICB1
cGRhdGVDaGlsZHJlbklEcyhheEFuY2VzdG9yLT5vYmplY3RJRCgpLCBXVEZNb3ZlKGF4Q2hpbGRy
ZW5JRHMpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RoaW5nIHdhcyB1cGRhdGVkLiBB
cyBhIGxhc3QgcmVzb3J0LCB1cGRhdGUgdGhlIHN1YnRyZWUuCkBAIC0zNjIsNyArMzYyLDcgQEAg
UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSgpCiAg
ICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmZvY3VzZWROb2RlIik7CiAgICAgLy8gQXBwbHkg
cGVuZGluZyBjaGFuZ2VzIGluIGNhc2UgZm9jdXMgaGFzIGNoYW5nZWQgYW5kIGhhc24ndCBiZWVu
IHVwZGF0ZWQuCiAgICAgYXBwbHlQZW5kaW5nQ2hhbmdlcygpOwotICAgIExvY2tIb2xkZXIgbG9j
a2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9n
TG9jayB9OwogICAgIEFYTE9HKG1ha2VTdHJpbmcoImZvY3VzZWROb2RlSUQgIiwgbV9mb2N1c2Vk
Tm9kZUlEKSk7CiAgICAgQVhMT0coImZvY3VzZWQgbm9kZToiKTsKICAgICBBWExPRyhub2RlRm9y
SUQobV9mb2N1c2VkTm9kZUlEKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgUmVmUHRyPEFYSXNvbGF0
ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSgpCiBSZWZQdHI8QVhJc29sYXRl
ZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OnJvb3ROb2RlKCkKIHsKICAgICBBWFRSQUNFKCJBWElz
b2xhdGVkVHJlZTo6cm9vdE5vZGUiKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdl
TG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICBy
ZXR1cm4gbV9yb290Tm9kZTsKIH0KIApAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElEKQogICAgIEFYTE9HKG1ha2VTdHJpbmco
ImF4SUQgIiwgYXhJRCkpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBt
X2NoYW5nZUxvZ0xvY2sgfTsKICAgICBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEID0gYXhJRDsKIAog
ICAgIEFYUHJvcGVydHlNYXAgcHJvcGVydHlNYXA7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZShBWElEIGF4SUQpCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIG1fbm9kZU1hcC5yZW1vdmUoYXhJRCk7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VM
b2dMb2NrIH07CiAgICAgbV9wZW5kaW5nTm9kZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KIApA
QCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUoQVhJ
RCBheElEKQogICAgICAgICB9CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2No
YW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAg
ICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChheElEKTsKIH0KIApAQCAtNDQzLDcg
KzQ0Myw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAg
IGlmIChtX3VzZWRPbkFYVGhyZWFkICYmIGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKIAogICAgIGlmIChtX3BlbmRpbmdGb2N1c2Vk
Tm9kZUlEICE9IG1fZm9jdXNlZE5vZGVJRCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJm
b2N1c2VkTm9kZUlEICIsIG1fZm9jdXNlZE5vZGVJRCwgIiBwZW5kaW5nRm9jdXNlZE5vZGVJRCAi
LCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IGJiMDU3ZWY2YTAwNjI2
MWJkNGU2YTYxNWNhZjFlMDE4MTk1ZWI0MWYuLjAxNjRkNTMyNDYyNDFjYmFmMTg3NWFlZTc5OTZi
MWU1MzI5NTgyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgUmVmUHRyPFNjcm9s
bGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdUcmVlTWFjOjpzY3JvbGxpbmdOb2RlRm9yUG9pbnQoRmxv
YXRQb2ludCBwb2kKICAgICBpZiAoIXJvb3RTY3JvbGxpbmdOb2RlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xheWVySGl0VGVzdE11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXllckhpdFRlc3RNdXRleCB9OwogCiAgICAgYXV0
byByb290Q29udGVudHNMYXllciA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMqPihyb290U2Nyb2xsaW5nTm9kZSktPnJvb3RDb250ZW50c0xheWVyKCk7CiAg
ICAgRmxvYXRQb2ludCBzY3JvbGxPcmlnaW4gPSByb290U2Nyb2xsaW5nTm9kZS0+c2Nyb2xsT3Jp
Z2luKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgT3B0aW9uU2V0PEV2ZW50TGlzdGVuZXJSZWdpb25U
eXBlPiBTY3JvbGxpbmdUcmVlTWFjOjpldmVudExpc3RlbmVyUmVnaW9uVHlwZXNGb3IKICAgICBp
ZiAoIXJvb3RTY3JvbGxpbmdOb2RlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgTG9ja0hv
bGRlciBsb2NrSG9sZGVyKG1fbGF5ZXJIaXRUZXN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xheWVySGl0VGVzdE11dGV4IH07CiAKICAgICBhdXRvIHJvb3RDb250ZW50c0xheWVyID0g
c3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyo+KHJvb3RTY3Jv
bGxpbmdOb2RlKS0+cm9vdENvbnRlbnRzTGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAppbmRleCA3NGM3ZTBlODUzMmUxNGUzNzlkMmNmOTYy
MmM1MjFjOWY4NzgzZGVkLi44MjY5OWRlNjBmMDU2NTFkNmM3MDgxNjFhOGEzOGFjNzE5MjlhNjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAt
OTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwor
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAgIG1fYWJv
cnRpbmcgPSB0cnVlOwogICAgICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKICAgICAgICAgfQpA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBBU1NFUlQobV9hYm9ydGlu
Zyk7CiAgICAgICAgIG1fYWJvcnRpbmcgPSBmYWxzZTsKICAgICB9CkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTQzLDE0ICsxNDMsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBEb24ndCBk
ZWFkbG9jayB0aGUgbWFpbiB0aHJlYWQgd2l0aCBpdHNlbGYuCiAgICAgICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fYWJvcnRp
bmcpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PFI+IHJlc3BvbnNlID0gV1RGOjpudWxsb3B0OwogICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJl
c3BvbnNlLCAmbWFpblRocmVhZFRhc2tIYW5kbGVyXSgpIHsKICAgICAgICAgICAgIFIgcmVzcG9u
c2VWYWx1ZSA9IG1haW5UaHJlYWRUYXNrSGFuZGxlcigpOwotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICAgICAgICAgIGlmICghbV9hYm9ydGluZykKICAgICAgICAgICAgICAgICByZXNw
b25zZSA9IFdURk1vdmUocmVzcG9uc2VWYWx1ZSk7CiAgICAgICAgICAgICBtX2Fib3J0ZWRPclJl
c3BvbnNlU2V0Lm5vdGlmeUFsbCgpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBpZiAoaXNDYW5jZWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3Rhc2tRdWV1ZS0+bV9tdXRleCk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9jayB7IG1fdGFza1F1ZXVlLT5tX211dGV4IH07CiAgICAgICAgICAgICBB
U1NFUlQodGhpcyA9PSBtX3Rhc2tRdWV1ZS0+bV9jaGFubmVsLmZpcnN0KCkucHRyKCkpOwogICAg
ICAgICAgICAgbV90YXNrUXVldWUtPm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOwogICAgICAgICAg
ICAgbG9jay51bmxvY2tFYXJseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggNTI2NmI1ZmNhNWM1NTIyOGQwNDA1
Mjc2OTg3MGEyMmExZjc0MjhkYS4uYTU4MWNmNjU1NmY5OTc1Njg3Y2M1MDUxZGFlZjkzZTJjMzJi
ODliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FS
aW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9D
QVJpbmdCdWZmZXIuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBDQVJpbmdCdWZmZXJTdG9y
YWdlVmVjdG9yOjphbGxvY2F0ZShzaXplX3QgYnl0ZUNvdW50LCBjb25zdCBDQUF1ZGlvU3RyZWFt
RGUKIAogdm9pZCBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yOjpmbHVzaCgpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrIH07CiAgICAgZm9yIChhdXRvJiB0aW1lQm91
bmRzIDogbV90aW1lQm91bmRzUXVldWUpIHsKICAgICAgICAgdGltZUJvdW5kcy5tX3N0YXJ0RnJh
bWUgPSAwOwogICAgICAgICB0aW1lQm91bmRzLm1fZW5kRnJhbWUgPSAwOwpAQCAtMzA1LDcgKzMw
NSw3IEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjpzZXRDdXJyZW50RnJhbWVCb3VuZHModWludDY0X3Qg
c3RhcnRUaW1lLCB1aW50NjRfdCBlbmRUaW1lKQogCiB2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VW
ZWN0b3I6OnNldEN1cnJlbnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydFRpbWUsIHVpbnQ2NF90
IGVuZFRpbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9jdXJyZW50RnJhbWVCb3VuZHNM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jdXJyZW50RnJhbWVCb3VuZHNMb2NrIH07CiAg
ICAgdWludDMyX3QgbmV4dFB0ciA9IG1fdGltZUJvdW5kc1F1ZXVlUHRyLmxvYWQoKSArIDE7CiAg
ICAgdWludDMyX3QgaW5kZXggPSBuZXh0UHRyICYga0dlbmVyYWxSaW5nVGltZUJvdW5kc1F1ZXVl
TWFzazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggOGNkNWMyODc0MjdkY2ZlNjA5YmQ5OGY2NmY5
YWFhMDk0Y2Y5YzU4OS4uNDM2OTY4OGUxOWE0MjdlYzhhZTRmNjFkNTAyN2FlNzNiMmU0ZmFmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBIYXNoTWFwPHVpbnRwdHJf
dCwgQVZGV3JhcHBlcio+JiBBVkZXcmFwcGVyOjptYXAoKQogCiB2b2lkIEFWRldyYXBwZXI6OmFk
ZFRvTWFwKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlr
ZSBhIGtleSBvZiAwLCBhbmQgYWxzbyBtYWtlIHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcg
YW4gb2JqZWN0IElEIHRoYXQncyBhbHJlYWR5IGluIHVzZS4KQEAgLTE0NDYsNyArMTQ0Niw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlh
LCAiQVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1hcExvY2soKSB9OwogICAgIG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKIH0KIApAQCAtMTY1
MCw3ICsxNjUwLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKIAogdm9p
ZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYs
IENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3Jh
cHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAg
aWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnBlcmlvZGljVGlt
ZU9ic2VydmVyQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE2ODIsNyArMTY4Miw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc05vdGlmaWNhdGlvbih2b2lkKiBjb250ZXh0KQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4gbm90aWZpY2F0aW9u
RGF0YSB7IHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSo+KGNvbnRleHQpIH07
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBtYXBMb2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxi
YWNrQ29udGV4dChub3RpZmljYXRpb25EYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikg
ewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uIGlu
dm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihjb250ZXh0KSk7CkBAIC0xNzM3LDcgKzE3MzcsNyBAQCB2b2lkIEFWRldyYXBwZXI6Om5v
dGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZl
ciwgQwogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayhB
VkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFw
TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBl
ciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYg
KCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNv
bXBsZXRpb25DYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTc2NCw3ICsxNzY0LDcgQEAg
dm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIAogdm9pZCBBVkZXcmFwcGVyOjps
b2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1hcExvY2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2Fs
bGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBm
b3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNv
bnRleHQpKTsKQEAgLTE3ODQsNyArMTc4NCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6YmVnaW5Mb2Fk
aW5nTWV0YWRhdGEoKQogCiB2b2lkIEFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayhB
VkNGUGxheWVySXRlbVJlZiwgQm9vbGVhbiBmaW5pc2hlZCwgdm9pZCogY29udGV4dCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBM
b2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29u
dGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3Jh
cHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODI4
LDcgKzE4MjgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91dHB1dERh
dGEocmVpbnRlcnByZXRfY2FzdDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNvbnRleHQpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExv
Y2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250
ZXh0KGxlZ2libGVPdXRwdXREYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAg
ICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlIGludm9rZWQgZm9yIGRlbGV0
ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7
CkBAIC0xODQ0LDcgKzE4NDQsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCog
Y29udGV4dCkKIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFy
cmF5UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMs
IENNVGltZSBpdGVtVGltZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2Nr
KCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4
dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3Jh
cHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBl
ciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODgzLDcg
KzE4ODMsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2Uodm9pZCogY29udGV4dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2FkUmVxdWVz
dERhdGE+IGxvYWRSZXF1ZXN0RGF0YShyZWludGVycHJldF9jYXN0PExvYWRSZXF1ZXN0RGF0YSo+
KGNvbnRleHQpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFw
cGVyRm9yQ2FsbGJhY2tDb250ZXh0KGxvYWRSZXF1ZXN0RGF0YS0+bV9jb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIg
JWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTkzOCw3ICsx
OTM4LDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVz
b3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFz
c2V0UmVzb3VyY2VMb2FkZXJSZWYgcmVzb3VyY2VMb2FkZXIsIEFWQ0ZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3RSZWYgbG9hZGluZ1JlcXVlc3QsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgIT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVl
dWUoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JD
YWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhN
ZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJl
cXVlc3RlZFJlc291cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCBlOTdkMDA0Y2M5NDdkNmRjMWY3NTEwMWMw
ZTczYjI3NTMwM2FmNDg2Li41MmY5MThmMWVhYmJiMDczZWI0OTI4NWExZjI2YjYyZGVjMTg3NTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAg
LTk3LDcgKzk3LDcgQEAgLSAoTlNEYXRhKilkYXRhCiAKIC0gKHZvaWQpc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZToobG9uZyBsb25nKWV4cGVjdGVkQ29udGVudFNpemUKIHsKLSAgICBMb2NrSG9sZGVy
IGhvbGRlciB7IF9kYXRhTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBfZGF0YUxvY2sgfTsK
ICAgICBfZXhwZWN0ZWRDb250ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNpemU7CiAKICAgICBb
c2VsZiBmdWxmaWxsUGVuZGluZ1JlcXVlc3RzXTsKQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lk
KXNldEV4cGVjdGVkQ29udGVudFNpemU6KGxvbmcgbG9uZylleHBlY3RlZENvbnRlbnRTaXplCiAK
IC0gKHZvaWQpdXBkYXRlRGF0YTooTlNEYXRhICopZGF0YSBjb21wbGV0ZTooQk9PTCljb21wbGV0
ZQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IF9kYXRhTG9jayB9OwogICAgIF9kYXRhID0gZGF0YTsKICAgICBfY29tcGxldGUgPSBj
b21wbGV0ZTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIC0gKHZvaWQpZnVsZmlsbFJlcXVlc3Q6KEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopcmVxdWVzdAogCiAtIChCT09MKXJlc291cmNl
TG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0ICopbG9hZGluZ1JlcXVlc3QKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IF9kYXRhTG9j
ayB9OworICAgIExvY2tlciBsb2NrZXIgeyBfZGF0YUxvY2sgfTsKIAogICAgIFVOVVNFRF9QQVJB
TShyZXNvdXJjZUxvYWRlcik7CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCAtIChCT09MKXJlc291cmNl
TG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0
Rm9yTG9hZAogCiAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIg
KilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDooQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdAogewotICAgIExvY2tIb2xkZXIgaG9sZGVy
IHsgX2RhdGFMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IF9kYXRhTG9jayB9OwogCiAgICAg
VU5VU0VEX1BBUkFNKHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVxdWVzdHMucmVtb3ZlQWxsKGxv
YWRpbmdSZXF1ZXN0KTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9i
akM6OnNldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiAgICAgICAgIHJldHVybjsKICAgICBt
X3RyYWNrID0gdHJhY2s7CiAKLSAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJh
dG9yTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsK
ICAgICBtX3NhbXBsZURhdGEuY2xlYXIoKTsKICAgICBtX3NpemUucmVzZXQoKTsKICAgICBtX2N1
cnNvciA9IG1fc2FtcGxlRGF0YS5kZWNvZGVPcmRlcigpLmVuZCgpOwpAQCAtNTYxLDcgKzU2MSw3
IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzCiAKIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgaG9s
ZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Ft
cGxlR2VuZXJhdG9yTG9jayB9OwogCiAgICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5k
ZXgoaW5kZXgpOwogICAgIGlmICghc2FtcGxlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKaW5kZXggMzUwMzhhZjU5ODNjMWQyM2NhYzdjNDBkNzEwN2FhYTMwMGIy
MDAxNi4uNjQxMGMyOWQyMGE1Njk0ZmJhOGFiOWFiM2M2M2JjYTQ5MWRmMjBlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB1bnNp
Z25lZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbAogCiBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsg
bV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlR2Vu
ZXJhdG9yTG9jayB9OwogCiAgICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5k
ZXgpOwogICAgIGlmICghc2FtcGxlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBhOGVlZjUyYTEzYTc3ZWVkNzdjZjE0
ZTk4NzM2NzgwYWI5OWZlMDQ2Li5lYThlMTA3MmE5NzFmNzEyMTcxNzBiNjEzZTdhZTc2OGJhZWRm
ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6ZGlzY29ubmVjdCgpCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgICAgICBtX3BlbmRpbmdTYW1wbGVzLmFwcGVuZChz
YW1wbGUpOwogICAgIH0KIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7CiAgICAgVmVjdG9yPEdS
ZWZQdHI8R3N0U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4
IH07CiAgICAgICAgIG1fcGVuZGluZ1NhbXBsZXMuc3dhcChzYW1wbGVzKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWlu
VGhyZWFkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAppbmRleCBhODg1OTI4OWM4NTUzMmQ5ZTY2M2RlNDcw
YjYxMzFiYzlkYjA4ZmE3Li44ZDk0MjQwYmIwNmVjNDFiN2Q3NzVjMmY0MDM1M2FjY2M1MjQ2MjY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWFpblRocmVhZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdOb3RpZmljYXRpb25zKHVuc2lnbmVkIG1hc2sgPSAw
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faXNWYWxpZC5sb2FkKCkpOwotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayB9OwogICAgICAgICBpZiAobWFz
aykKICAgICAgICAgICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMgJj0gfm1hc2s7CiAgICAgICAg
IGVsc2UKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBhZGRQZW5kaW5n
Tm90aWZpY2F0aW9uKFQgbm90aWZpY2F0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fcGVuZGluZ05vdGlmaWNhdGlvbnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGVuZGluZ05vdGlmaWNhdGlvbnNMb2NrIH07CiAgICAgICAgIGlmIChub3RpZmlj
YXRpb25UeXBlICYgbV9wZW5kaW5nTm90aWZpY2F0aW9ucykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgbV9wZW5kaW5nTm90aWZpY2F0aW9ucyB8PSBub3RpZmljYXRpb25UeXBl
OwpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlbW92ZVBlbmRpbmdO
b3RpZmljYXRpb24oVCBub3RpZmljYXRpb25UeXBlKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2sgfTsKICAgICAgICAgaWYgKG5vdGlmaWNh
dGlvblR5cGUgJiBtX3BlbmRpbmdOb3RpZmljYXRpb25zKSB7CiAgICAgICAgICAgICBtX3BlbmRp
bmdOb3RpZmljYXRpb25zICY9IH5ub3RpZmljYXRpb25UeXBlOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IGFmNTEyOTkwYjZiNDBhYzFlODA0NGE5YjcwOWU2MzllZmQxMTcyMzIuLjc1YTIxYzFi
NGRkODUwNGZlMDI3Y2YyOTM4MjBkMmY4N2UwNDhmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNTUxLDcgKzM1NTEsNyBAQCBJbml0
RGF0YSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVj
dGlvbk1lc3NhZ2UoR3N0TWVzcwogCiAgICAgSW5pdERhdGEgaW5pdERhdGE7CiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9wcm90ZWN0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wcm90ZWN0aW9uTXV0ZXggfTsKICAgICAgICAgUHJvdGVjdGlvblN5c3RlbUV2
ZW50cyBwcm90ZWN0aW9uU3lzdGVtRXZlbnRzKG1lc3NhZ2UpOwogICAgICAgICBHU1RfVFJBQ0Vf
T0JKRUNUKHBpcGVsaW5lKCksICJmb3VuZCAlenUgcHJvdGVjdGlvbiBldmVudHMsICV6dSBkZWNy
eXB0b3JzIGF2YWlsYWJsZSIsIHByb3RlY3Rpb25TeXN0ZW1FdmVudHMuZXZlbnRzKCkuc2l6ZSgp
LCBwcm90ZWN0aW9uU3lzdGVtRXZlbnRzLmF2YWlsYWJsZVN5c3RlbXMoKS5zaXplKCkpOwogCkBA
IC0zNjY2LDcgKzM2NjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXR0
ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbEluc3RhbmNlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogewogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcHJvdGVjdGlvbk11dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcHJvdGVjdGlvbk11dGV4IH07CiAgICAgICAgIGlmIChtX2hhbmRs
ZWRQcm90ZWN0aW9uRXZlbnRzLmNvbnRhaW5zKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQpKSkgewog
ICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiZXZlbnQgJXUgYWxyZWFk
eSBoYW5kbGVkIiwgR1NUX0VWRU5UX1NFUU5VTShldmVudCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGQ2
MGNhZTgwODFjZDNhOTA1ZTY5NmFiMzM1Yzc5Yzc4ODY0Y2Q0OTQuLjYwMGE2N2ZkZjc0ZjY5MWM4
NTcxMDgxZGI4MzA4NDNmYzJhNTQyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKIAogICAgIEdTVF9ERUJVRygiSW5zcGVjdGluZyB0
cmFjayBhdCBpbmRleCAlZCB3aXRoIHRhZ3M6ICUiIEdTVF9QVFJfRk9STUFULCBtX2luZGV4LCB0
YWdzLmdldCgpKTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RhZ011dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFnTXV0ZXggfTsKICAgICAgICAgbV90YWdzLnN3
YXAodGFncyk7CiAgICAgfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKQogCiAgICAgR1JlZlB0cjxH
c3RUYWdMaXN0PiB0YWdzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFnTXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YWdNdXRleCB9OwogICAgICAgICB0YWdz
LnN3YXAobV90YWdzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAK
aW5kZXggZjQxMzliNzZhN2ZiZTJkZTBmN2Y2ZTY0Y2M1MzI2MGRmMDJkZDJhNS4uMTFiZWExMmI2
NmRjNTQ2MjVhODI5ZjkwNzRhOTJjMDM3NGNlMjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHAKQEAgLTcxLDI2ICs3MSwyNiBAQCBjbGFzcyBWaWRlb1JlbmRlclJlcXVlc3RT
Y2hlZHVsZXIgewogcHVibGljOgogICAgIHZvaWQgc3RhcnQoKQogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3NhbXBsZU11dGV4IH07CiAgICAgICAgIG1fdW5sb2NrZWQgPSBmYWxzZTsKICAgICB9CiAKICAg
ICB2b2lkIHN0b3AoKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYW1wbGVN
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAg
IG1fc2FtcGxlID0gbnVsbHB0cjsKICAgICAgICAgbV91bmxvY2tlZCA9IHRydWU7CiAgICAgfQog
CiAgICAgdm9pZCBkcmFpbigpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nh
bXBsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAg
ICAgICAgbV9zYW1wbGUgPSBudWxscHRyOwogICAgIH0KIAogICAgIGJvb2wgcmVxdWVzdFJlbmRl
cihXZWJLaXRWaWRlb1NpbmsqIHNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zYW1wbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIGlmIChtX3VubG9ja2VkKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCmluZGV4IDE4MGUy
NjBmOThlYzA2MDZkYzg0OWM0NGFhMzJiNTk3Njg5YjZhMDYuLjMyMDE3NGQ1YmZlODc2ZGI4YzE0
MjM1OWE4ZTFhMDFhYTg2YzBmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAt
MTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0
QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVybiBH
U1RfRkxPV19PSzsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPm11dGV4IH07CiAKICAgICBpZiAocHJpdi0+aXNG
bHVzaGluZykgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJEZWNyeXB0aW9uIGFi
b3J0ZWQgYmVjYXVzZSBvZiBmbHVzaCIpOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBHc3RG
bG93UmV0dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVm
ZmVyKiBidWZmZXIpCiAgICAgR1NUX1RSQUNFX09CSkVDVChzZWxmLCAiZGVjcnlwdGluZyIpOwog
CiAgICAgLy8gVGVtcG9yYXJpbHkgcmVsZWFzZSB0aGUgbG9jayB3aGlsZSB3ZSBkb24ndCBuZWVk
IHRvIGFjY2VzcyBwcml2LiBUaGUgbG93ZXIgbGV2ZWwgQVBJIGlzIHVzZWQKLSAgICAvLyBpbiBv
cmRlciB0byBhdm9pZCBjcmVhdGluZyBzZXZlcmFsIHNjb3BlcyB3aXRoIGRpZmZlcmVudCBMb2Nr
SG9sZGVyIGluc3RhbmNlcyBpbiBlYWNoIG9uZS4KKyAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBj
cmVhdGluZyBzZXZlcmFsIHNjb3BlcyB3aXRoIGRpZmZlcmVudCBMb2NrZXIgaW5zdGFuY2VzIGlu
IGVhY2ggb25lLgogICAgIHByaXYtPm11dGV4LnVubG9jaygpOwogCiAgICAgYm9vbCBkaWREZWNy
eXB0aW9uU3VjY2VlZCA9IGtsYXNzLT5kZWNyeXB0KHNlbGYsIGl2QnVmZmVyLCBrZXlJREJ1ZmZl
ciwgYnVmZmVyLCBzdWJTYW1wbGVDb3VudCwgc3ViU2FtcGxlc0J1ZmZlcik7CkBAIC0zOTMsNyAr
MzkzLDcgQEAgc3RhdGljIGdib29sZWFuIHNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9y
bSogdHJhbnMsIEdzdEV2ZW50KiBldmVudCkKICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVEFS
VDoKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRmx1c2gtc3RhcnQiKTsKICAgICAg
ICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPm11dGV4IH07CiAgICAgICAgICAgICBib29sIGlz
Q2RtUHJveHlBdHRhY2hlZCA9IHByaXYtPmNkbVByb3h5OwogICAgICAgICAgICAgcHJpdi0+aXNG
bHVzaGluZyA9IHRydWU7CiAgICAgICAgICAgICBpZiAoaXNDZG1Qcm94eUF0dGFjaGVkKSB7CkBA
IC00MDYsNyArNDA2LDcgQEAgc3RhdGljIGdib29sZWFuIHNpbmtFdmVudEhhbmRsZXIoR3N0QmFz
ZVRyYW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50KiBldmVudCkKICAgICBjYXNlIEdTVF9FVkVOVF9G
TFVTSF9TVE9QOgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJGbHVzaC1zdG9wIik7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgICAgICAgICAg
cHJpdi0+aXNGbHVzaGluZyA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAt
NDIwLDcgKzQyMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzaW5rRXZlbnRIYW5kbGVyKEdzdEJhc2VU
cmFuc2Zvcm0qIHRyYW5zLCBHc3RFdmVudCogZXZlbnQpCiBib29sIHdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRJc0ZsdXNoaW5nKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHQqIHNlbGYpCiB7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFBy
aXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYp
OwotICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgcHJpdi0+bXV0ZXggfTsKICAgICByZXR1cm4gcHJpdi0+aXNGbHVzaGluZzsKIH0KIApAQCAt
NDU5LDcgKzQ1OSw3IEBAIHN0YXRpYyB2b2lkIHNldENvbnRleHQoR3N0RWxlbWVudCogZWxlbWVu
dCwgR3N0Q29udGV4dCogY29udGV4dCkKIAogICAgIGlmIChnc3RfY29udGV4dF9oYXNfY29udGV4
dF90eXBlKGNvbnRleHQsICJkcm0tY2RtLXByb3h5IikpIHsKICAgICAgICAgY29uc3QgR1ZhbHVl
KiB2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1
cmUoY29udGV4dCksICJjZG0tcHJveHkiKTsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJp
di0+bXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXggfTsKICAgICAg
ICAgcHJpdi0+Y2RtUHJveHkgPSB2YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNUHJveHkqPihn
X3ZhbHVlX2dldF9wb2ludGVyKHZhbHVlKSkgOiBudWxscHRyOwogICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHNlbGYsICJyZWNlaXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1Qcm94
eS5nZXQoKSk7CiAgICAgICAgIGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYsIHByaXYtPmNk
bVByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCmluZGV4IDk0OWJjZmE4NzQ1NTA0NWMxZTUzYWVk
MjQzZjA3OGNlYThlZmM1ZmIuLmM3OTE1ZmI1NWRlMzNmNjZjYmZhYTkyMTM2MGIxOTk1NjQyZDlj
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcApAQCAtNTAsMTQgKzUwLDE0IEBAIEJ1ZmZlcjo6fkJ1
ZmZlcigpID0gZGVmYXVsdDsKIAogdm9pZCBCdWZmZXI6OmJlZ2luUGFpbnRpbmcoKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcGFpbnRpbmcubG9jayB9OwogICAgIEFTU0VSVChtX3BhaW50aW5nLnN0YXRlID09IFBhaW50
aW5nU3RhdGU6OkNvbXBsZXRlKTsKICAgICBtX3BhaW50aW5nLnN0YXRlID0gUGFpbnRpbmdTdGF0
ZTo6SW5Qcm9ncmVzczsKIH0KIAogdm9pZCBCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcoKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFpbnRpbmcubG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fcGFpbnRpbmcubG9jayB9OwogICAgIEFTU0VSVChtX3BhaW50aW5nLnN0YXRlID09IFBh
aW50aW5nU3RhdGU6OkluUHJvZ3Jlc3MpOwogICAgIG1fcGFpbnRpbmcuc3RhdGUgPSBQYWludGlu
Z1N0YXRlOjpDb21wbGV0ZTsKICAgICBtX3BhaW50aW5nLmNvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBCdWZmZXI6OmNvbXBsZXRlUGFpbnRpbmcoKQogCiB2b2lk
IEJ1ZmZlcjo6d2FpdFVudGlsUGFpbnRpbmdDb21wbGV0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9wYWludGluZy5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5s
b2NrIH07CiAgICAgbV9wYWludGluZy5jb25kaXRpb24ud2FpdChtX3BhaW50aW5nLmxvY2ssCiAg
ICAgICAgIFt0aGlzXSB7IHJldHVybiBtX3BhaW50aW5nLnN0YXRlID09IFBhaW50aW5nU3RhdGU6
OkNvbXBsZXRlOyB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCA2NDBh
MDQyMWJjZWI2MWE5ODhiNjFmZmY4ZjlhYjRjNmQ5NTFhZDMzLi45YjZhYzBkYmJkOTU5ZWI0MWY4
YTY2MmZlOWY3ZjRkYTA0NTNiZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBA
IC01OCwxMyArNTgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTY2VuZUludGVncmF0aW9u
KFJlZlB0cjxTY2VuZUludGVncmF0aW9uPiYmIHNjZW5lSW50ZWdyYXRpb24pCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIG1fc3RhdGUuc2NlbmVJbnRlZ3JhdGlvbiA9
IFdURk1vdmUoc2NlbmVJbnRlZ3JhdGlvbik7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3BlPiBjcmVhdGVVcGRhdGVTY29wZSgpCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIGlmIChtX3N0YXRlLnNjZW5lSW50
ZWdyYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gbV9zdGF0ZS5zY2VuZUludGVncmF0aW9uLT5j
cmVhdGVVcGRhdGVTY29wZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwOCwxNCAr
MjA4LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgdXBk
YXRlU3RhdGUoY29uc3QgVCYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2sgfTsKICAgICAgICAgZnVuY3RvcihtX3N0YXRl
LnBlbmRpbmcpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBm
bHVzaFN0YXRlKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIGF1dG8mIHBlbmRpbmcg
PSBtX3N0YXRlLnBlbmRpbmc7CiAgICAgICAgIGF1dG8mIHN0YWdpbmcgPSBtX3N0YXRlLnN0YWdp
bmc7CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICB2b2lkIGNvbW1pdFN0YXRlKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAg
IG1fc3RhdGUuY29tbWl0dGVkID0gbV9zdGF0ZS5zdGFnaW5nOwogICAgICAgICBtX3N0YXRlLnN0
YWdpbmcuZGVsdGEgPSB7IH07CiAKQEAgLTMwMywxNCArMzAzLDE0IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWNjZXNzUGVuZGluZyhjb25zdCBUJiBmdW5j
dG9yKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9z
dGF0ZS5sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3Rh
dGUubG9jayB9OwogICAgICAgICBmdW5jdG9yKG1fc3RhdGUucGVuZGluZyk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFjY2Vzc0NvbW1pdHRlZChjb25zdCBU
JiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXll
cjo6bV9zdGF0ZS5sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6
Om1fc3RhdGUubG9jayB9OwogICAgICAgICBmdW5jdG9yKG1fc3RhdGUuY29tbWl0dGVkKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVNjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFTY2VuZS5oCmluZGV4IDZmMjgxZGNiM2M5YTQ5ZjBiNDRlNDhkN2E2MzRjZGUz
MTc2N2UyNTguLjYzMWM4NDczOGRmMDEyZDEyYWQ5MjJjZDhjMGI3Yjg4MjIxOGUxMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNj
ZW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhU2NlbmUuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRj4KICAgICB2b2lkIGFjY2Vzc1N0YXRlKGNvbnN0IEYmIGZ1bmN0b3IpCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjZW5lLmxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zY2VuZS5sb2NrIH07CiAgICAgICAgIGZ1bmN0b3IobV9zY2VuZS5zdGF0ZSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDM3NDNh
YjQwNGU5NTQ2NGQzNDAyYWY3ZTAzMzNkZTk3NDQzMTk5ZWQuLmRlM2ZkMjcxZDAyZGRjMDg3NWYz
YTQ3OGUzYzlhNjE1ZWI2ODg3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRp
b24uY3BwCkBAIC00NywyMCArNDcsMjAgQEAgU2NlbmVJbnRlZ3JhdGlvbjo6flNjZW5lSW50ZWdy
YXRpb24oKQogCiB2b2lkIFNjZW5lSW50ZWdyYXRpb246OnNldENsaWVudChDbGllbnQmIGNsaWVu
dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jbGllbnQubG9jayB9OwogICAgIG1fY2xpZW50Lm9iamVjdCA9ICZjbGllbnQ7
CiB9CiAKIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9jbGllbnQubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50
LmxvY2sgfTsKICAgICBtX2NsaWVudC5zY2VuZSA9IG51bGxwdHI7CiAgICAgbV9jbGllbnQub2Jq
ZWN0ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0VXBkYXRl
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jbGllbnQubG9jayB9OwogICAgIGlmIChtX2NsaWVudC5vYmplY3QpCiAgICAg
ICAgIG1fY2xpZW50Lm9iamVjdC0+cmVxdWVzdFVwZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggYjljNzBkYWExNTQyMzFjZDUyODdjMWQ5YjUxY2JiOWZmYjM5M2RkYi4uODdm
OTE1YWM0ZDRjY2ZlN2FjZTFmYWM2Y2UzOTUxYTRmYzYzODI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Zmx1c2hVcGRhdGUoKQogCiAgICAgLy8gSW5jcmVtZW50YWxseSBzdG9yZSB1cGRhdGVz
IGFzIHRoZXkgYXJlIGJlaW5nIGZsdXNoZWQgZnJvbSB0aGUgbGF5ZXItc2lkZS4KICAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdXBkYXRlLmxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogICAgICAgICBtX3VwZGF0ZS5wZW5kaW5nLnRpbGVz
VG9DcmVhdGUuYXBwZW5kVmVjdG9yKG1fbGF5ZXJTdGF0ZS51cGRhdGUudGlsZXNUb0NyZWF0ZSk7
CiAgICAgICAgIG1fdXBkYXRlLnBlbmRpbmcudGlsZXNUb1VwZGF0ZS5hcHBlbmRWZWN0b3IobV9s
YXllclN0YXRlLnVwZGF0ZS50aWxlc1RvVXBkYXRlKTsKICAgICAgICAgbV91cGRhdGUucGVuZGlu
Zy50aWxlc1RvUmVtb3ZlLmFwcGVuZFZlY3RvcihtX2xheWVyU3RhdGUudXBkYXRlLnRpbGVzVG9S
ZW1vdmUpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGw6OmZsdXNoVXBkYXRlKCkKIAogYXV0byBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bDo6dGFrZVVwZGF0ZSgpIC0+IFRpbGVVcGRhdGUKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3VwZGF0ZS5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9jayB9OwogICAg
IHJldHVybiBXVEZNb3ZlKG1fdXBkYXRlLnBlbmRpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
LmNwcAppbmRleCBmODFlNDhjNzU1NzM3OGI0YTBiZDgzY2UzMWI0YzhlN2ExZDI4N2U5Li5mNjIz
ZTYzNDI1NDVhODg5ZDJlMDRhZGI5OGVhMWNkYWQ3ZTk2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5jcHAKQEAgLTUyLDI2ICs1MiwyNiBAQCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwoQ2xpZW50JiBjbGllbnQpCiBDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbDo6fkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsKCkKIHsK
ICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgQVNTRVJUKCFtX2Ns
aWVudC5jbGllbnQpOwogI2VuZGlmCiB9CiAKIHZvaWQgQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw6OmludmFsaWRhdGVDbGllbnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xp
ZW50LmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgbV9j
bGllbnQuY2xpZW50ID0gbnVsbHB0cjsKIH0KIAogYm9vbCBDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbDo6Zmx1c2hVcGRhdGUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50
LmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UobV9jbGllbnQucGVuZGluZ1VwZGF0ZSwgZmFsc2UpOwogfQogCiB2b2lk
IENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jbGllbnQubG9jayB9OwogICAgIGlmIChtX2NsaWVudC5jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LmNsaWVudC0+c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggMWE4ZTY5ODM0NDhkNjIxMmUyOWViMjA2MDYwMGQ0YTNiNmM5NDRlNi4uOTgz
ZjMxZmRhN2ZlMWNjNjgwMjJkNmJjY2Y3MmVkNTE5NTFhNjYyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjp+
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgSW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKCkKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3VwZGF0ZS5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV91cGRhdGUubG9j
ayB9OwogCiAgICAgLy8gSWYgdGhlIHVwZGF0ZSBoYXBwZW5zIGZvciB0aGUgc2FtZSBpbWFnZSBh
bmQgdGhlcmUncyBubyBidWZmZXIsIGtlZXAgdGhlIGN1cnJlbnQgb25lCiAgICAgLy8gc28gaXQg
Y2FuIGJlIHJlY2VpdmVkIGJ5IHRoZSBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuIEluIHRoYXQg
Y2FzZSB3ZSBvbmx5IG5lZWQgdG8gdXBkYXRlCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKCkKIAogYXV0byBJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbDo6dGFrZVVwZGF0ZSgpIC0+IFVwZGF0ZQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fdXBkYXRlLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3VwZGF0
ZS5sb2NrIH07CiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRhdGUudXBkYXRlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAppbmRleCA4NTlh
MDQ1YjcwYzIyZjY4MzZhM2UzNzEzNTYyMjcyNjY2YzFhNDI1Li5mOGIxMjViNTI0OGI5MDZjNTNh
YThhNTI4OTgwOWQ5YTI5Y2Y0OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdD
R0xQbGF0Zm9ybUxheWVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
Q0dMUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgVGV4dHVyZU1hcHBl
ckdMOjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAo
bV9jb250ZXh0Lm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDog
MCk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclBy
b3h5LT5sb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGF0Zm9ybUxheWVyUHJv
eHktPmxvY2soKSB9OwogICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZm
ZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0
Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50
ZXJuYWxDb2xvckZvcm1hdCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBmNjc5ZjY0ZWYwMTBmMDE4MDU0OTJhYzQ4NDhi
ZjE3NWQ3M2VjOTA3Li5hNDU5NzUzZjE3M2UxYjZiNTBkOTMyYzg0ZWJhZjZiYzIxNTViZWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAt
MTU0LDcgKzE1NCw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c1R5cGUoY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jYWNoZWROYXR1cmFsU2l6ZUxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jYWNoZWROYXR1cmFsU2l6ZUxvY2sgfTsKICAgICAgICAg
bV9jYWNoZWROYXR1cmFsU2l6ZSA9IEZsb2F0U2l6ZSgpOwogICAgIH0KIApAQCAtMTkxLDcgKzE5
MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c0Z1
bGxzY3JlZW4oKSBjb25zdAogCiBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9j
YWNoZWROYXR1cmFsU2l6ZUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NhY2hlZE5hdHVy
YWxTaXplTG9jayB9OwogICAgIHJldHVybiBtX2NhY2hlZE5hdHVyYWxTaXplOwogfQogCkBAIC02
NDUsMjEgKzY0NSwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
aW52YWxpZGF0ZUZyYW1lVmlldygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjphZGRMaXN0ZW5lcihNZWRpYVBsYXllckxpc3RlbmVyKiBsaXN0ZW5lcikKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4TGlzdGVuZXJzKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleExpc3RlbmVycyB9OwogCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlbW92ZUxpc3Rl
bmVyKE1lZGlhUGxheWVyTGlzdGVuZXIqIGxpc3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4TGlzdGVu
ZXJzIH07CiAKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVsZXRlZCgpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9tdXRleExpc3RlbmVycyk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbXV0ZXhMaXN0ZW5lcnMgfTsKIAogICAgIGZvciAoSGFzaFNldDxNZWRpYVBsYXllckxpc3Rl
bmVyKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9saXN0ZW5lcnMuYmVnaW4oKTsgaXQgIT0gbV9s
aXN0ZW5lcnMuZW5kKCk7ICsraXQpCiAgICAgICAgICgqaXQpLT5vbk1lZGlhUGxheWVyRGVsZXRl
ZCgpOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpub3RpZnlEZWxldGVkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OnNldE5hdHVyYWxTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2NhY2hlZE5hdHVyYWxTaXplTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY2FjaGVkTmF0dXJhbFNpemVMb2NrIH07CiAgICAgbV9jYWNoZWROYXR1cmFsU2l6
ZSA9IHNpemU7CiB9CiAKQEAgLTkxMCw3ICs5MTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6R2V0
UAogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6SW52b2tlKF9fUlBDX19pbl9vcHQgSU1GQXN5bmNSZXN1
bHQgKnBBc3luY1Jlc3VsdCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX21lZGlhUGxheWVyKQog
ICAgICAgICByZXR1cm4gU19PSzsKQEAgLTkyNSw3ICs5MjUsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFj
azo6SW52bwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmND
YWxsYmFjazo6b25NZWRpYVBsYXllckRlbGV0ZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBtX21lZGlh
UGxheWVyID0gbnVsbHB0cjsKIH0KQEAgLTk5OSw3ICs5OTksNyBAQCBVTE9ORyBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpSZWxlYXNlKCkK
IAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVv
UHJlc2VudGVyOjpPbkNsb2NrU3RhcnQoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIExPTkdMT05HIGxs
Q2xvY2tTdGFydE9mZnNldCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8vIEFmdGVyIHNodXRkb3duLCB3ZSBj
YW5ub3Qgc3RhcnQuCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1dGRvd24oKTsKQEAgLTEwMjIs
NyArMTAyMiw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpD
dXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0YXJ0KE1GCiAKIEhSRVNVTFQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1N0
b3AoTUZUSU1FIGhuc1N5c3RlbVRpbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hl
Y2tTaHV0ZG93bigpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
SFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJl
c2VudGVyOjpPbkNsb2NrU3RvcChNRlQKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1c2UoTUZUSU1FIGhu
c1N5c3RlbVRpbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAvLyBBZnRlciBzaHV0ZG93biwgd2UgY2Fubm90
IHBhdXNlLgogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CkBAIC0xMDUyLDcgKzEw
NTIsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9t
VmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tQYXVzZShNRgogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tSZXN0YXJ0
KE1GVElNRSBobnNTeXN0ZW1UaW1lKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VMVCBociA9IGNoZWNr
U2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTEwNjksNyArMTA2OSw3IEBAIEhS
RVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6T25DbG9ja1Jlc3RhcnQoCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1NldFJhdGUoTUZUSU1FIGhu
c1N5c3RlbVRpbWUsIGZsb2F0IHJhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hl
Y2tTaHV0ZG93bigpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtMTA4NCw3ICsxMDg0LDcgQEAg
SFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJl
c2VudGVyOjpPbkNsb2NrU2V0UmF0ZSgKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpQcm9jZXNzTWVzc2FnZShNRlZQX01F
U1NBR0VfVFlQRSBlTWVzc2FnZSwgVUxPTkdfUFRSIHVsUGFyYW0pCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBI
UkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtMTEy
Nyw3ICsxMTI3LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpQcm9jZXNzTWVzc2FnZSgKIAogSFJFU1VMVCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRDdXJy
ZW50TWVkaWFUeXBlKF9PdXRwdHJfICBJTUZWaWRlb01lZGlhVHlwZSAqKnBwTWVkaWFUeXBlKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgaWYgKCFwcE1lZGlhVHlwZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKQEAgLTExNTgsNyArMTE1OCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6SW5pdFNlcnZpY2VQb2luCiAKICAgICBI
UkVTVUxUIGhyID0gU19PSzsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKGlzQWN0aXZlKCkpCiAgICAgICAg
IHJldHVybiBNRl9FX0lOVkFMSURSRVFVRVNUOwpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgSFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpJbml0U2VydmljZVBvaW4KIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpSZWxlYXNlU2VydmljZVBvaW50ZXJzKCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKIAogICAgIG1fcmVuZGVyU3RhdGUgPSBSZW5kZXJTdGF0ZVNodXRkb3duOwogCkBAIC0x
MjUxLDcgKzEyNTEsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNodXRkb3duT2JqZWN0KAogCiBIUkVTVUxUIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZp
ZGVvV2luZG93KEhXTkQgaHduZFZpZGVvKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFJc1dpbmRvdyho
d25kVmlkZW8pKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwpAQCAtMTI3MSw3ICsxMjcx
LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZp
ZGVvUHJlc2VudGVyOjpTZXRWaWRlb1dpbmRvdygKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1dpbmRvdyhI
V05EKiBwaHduZFZpZGVvKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFwaHduZFZpZGVvKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgc3RhdGljIEhSRVNVTFQg
c2V0TWl4ZXJTb3VyY2VSZWN0KElNRlRyYW5zZm9ybSogbWl4ZXIsIGNvbnN0IE1GVmlkZW9Ob3Jt
YWxpemVkUmUKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1
c3RvbVZpZGVvUHJlc2VudGVyOjpTZXRWaWRlb1Bvc2l0aW9uKGNvbnN0IE1GVmlkZW9Ob3JtYWxp
emVkUmVjdCogcG5yY1NvdXJjZSwgY29uc3QgTFBSRUNUIHByY0Rlc3QpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAg
ICAvLyBGaXJzdCwgY2hlY2sgdGhhdCB0aGUgcGFyYW1ldGVycyBhcmUgdmFsaWQuCiAKQEAgLTEz
NjYsNyArMTM2Niw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3NpdGlvCiAKIEhSRVNVTFQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6R2V0Vmlk
ZW9Qb3NpdGlvbihNRlZpZGVvTm9ybWFsaXplZFJlY3QqIHBucmNTb3VyY2UsIExQUkVDVCBwcmNE
ZXN0KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFwbnJjU291cmNlIHx8ICFwcmNEZXN0KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgSFJFU1VMVCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRl
b1Bvc2l0aW8KIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1
c3RvbVZpZGVvUHJlc2VudGVyOjpSZXBhaW50VmlkZW8oKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VM
VCBociA9IGNoZWNrU2h1dGRvd24oKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKQEAgLTIxOTUsNyAr
MjE5NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6bm90aWZ5RXZlbnQobG9uZyBFCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmdldFNhbXBsZShDT01QdHI8
SU1GU2FtcGxlPiYgc2FtcGxlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVkKQog
ICAgICAgICByZXR1cm4gTUZfRV9OT1RfSU5JVElBTElaRUQ7CkBAIC0yMjE1LDcgKzIyMTUsNyBA
QCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQ
b29sOjpyZXR1cm5TYW1wbGUoSU1GU2FtcAogICAgIGlmICghc2FtcGxlKQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIW1faW5pdGlhbGl6ZWQpCiAgICAgICAg
IHJldHVybiBNRl9FX05PVF9JTklUSUFMSVpFRDsKQEAgLTIyMjcsNyArMjIyNyw3IEBAIEhSRVNV
TFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OnJl
dHVyblNhbXBsZShJTUZTYW1wCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAg
IGlmICghbV9pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjIzNyw3ICsy
MjM3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2Ft
cGxlUG9vbDo6YXJlU2FtcGxlc1BlbmRpbmcoKQogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjppbml0aWFsaXplKFZpZGVvU2FtcGxl
TGlzdCYgc2FtcGxlcykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmIChtX2luaXRpYWxpemVkKQogICAgICAg
ICByZXR1cm4gTUZfRV9JTlZBTElEUkVRVUVTVDsKQEAgLTIyNTQsNyArMjI1NCw3IEBAIEhSRVNV
TFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6Omlu
aXRpYWxpemUoVmlkZW9TYW1wCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmNsZWFyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIG1fdmlkZW9TYW1w
bGVRdWV1ZS5jbGVhcigpOwogICAgIG1faW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTIzMzMsNyAr
MjMzMyw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRl
b1NjaGVkdWxlcjo6c3RvcFNjaGVkdWxlcigpCiAgICAgLy8gV2FpdCBmb3IgdGhlIHNjaGVkdWxl
ciB0aHJlYWQgdG8gZmluaXNoLgogICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdChtX3NjaGVkdWxl
clRocmVhZC5nZXQoKSwgSU5GSU5JVEUpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBtX3NjaGVkdWxlZFNhbXBs
ZXMuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlclRocmVhZC5jbGVhcigpOwpAQCAtMjM4NCw3ICsy
Mzg0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVv
U2NoZWR1bGVyOjpzY2hlZHVsZVNhbXBsZShJTUZTYW0KICAgICAgICAgbV9wcmVzZW50ZXItPnBy
ZXNlbnRTYW1wbGUoc2FtcGxlLCAwKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU3VibWl0IHRo
ZSBzYW1wbGUgZm9yIHNjaGVkdWxpbmcuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9zY2hlZHVs
ZWRTYW1wbGVzLmFwcGVuZChzYW1wbGUpOwogCiAgICAgICAgIDo6UG9zdFRocmVhZE1lc3NhZ2Uo
bV90aHJlYWRJRCwgRXZlbnRTY2hlZHVsZSwgMCwgMCk7CkBAIC0yNDA0LDcgKzI0MDQsNyBAQCBI
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6
OnByb2Nlc3NTYW1wbGVzSW5RdWV1ZQogICAgICAgICBDT01QdHI8SU1GU2FtcGxlPiBzYW1wbGU7
CiAKICAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAg
ICBpZiAobV9zY2hlZHVsZWRTYW1wbGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIHNhbXBsZSA9IG1fc2NoZWR1bGVkU2FtcGxlcy50YWtlRmlyc3QoKTsK
QEAgLTI0OTAsNyArMjQ5MCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpWaWRlb1NjaGVkdWxlcjo6cHJvY2Vzc1NhbXBsZShJTUZTYW1wCiAgICAgICAgIGhy
ID0gbV9wcmVzZW50ZXItPnByZXNlbnRTYW1wbGUoc2FtcGxlLCBwcmVzZW50YXRpb25UaW1lKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gUmV0dXJuIHRoZSBzYW1wbGUgdG8gdGhlIHF1ZXVlLCBz
aW5jZSBpdCBpcyBub3QgcmVhZHkuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9zY2hlZHVsZWRT
YW1wbGVzLnByZXBlbmQoc2FtcGxlKTsKICAgICB9CiAKQEAgLTI1NDAsNyArMjU0MCw3IEBAIERX
T1JEIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNj
aGVkdWxlclRocmVhZFByb2NQcml2CiAKICAgICAgICAgICAgIGNhc2UgRXZlbnRGbHVzaDoKICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2xv
Y2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkU2FtcGxlcy5jbGVhcigpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB3YWl0ID0gSU5GSU5JVEU7CkBAIC0yNjQ4LDcgKzI2NDgs
NyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQ
cmVzZW50ZXI6OnNldFZpZGVvV2luZG93KEhXTgogICAgIEFTU0VSVChod25kICE9IG1faHduZCk7
CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9od25kID0gaHduZDsKICAgICB9CiAK
QEAgLTI2NjAsNyArMjY2MCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6c2V0RGVzdGluYXRpb25SZWN0CiAgICAgaWYgKEVx
dWFsUmVjdCgmcmNEZXN0LCAmbV9kZXN0UmVjdCkpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICBtX2Rlc3RSZWN0ID0gcmNEZXN0OwogCkBAIC0yNjgyLDcgKzI2ODIsNyBAQCBI
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50
ZXI6OmNyZWF0ZVZpZGVvU2FtcGxlcwogICAgICAgICByZXR1cm4gTUZfRV9VTkVYUEVDVEVEOwog
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKIAogICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKIApAQCAtMjcyMyw3ICsyNzIzLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2Vu
dGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpjaGVja0RldmljZVN0YXRlKERldmljZVN0
YXRlJiBzdGF0ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIEhSRVNVTFQgaHIgPSBtX2RldmljZS0+Q2hlY2tE
ZXZpY2VTdGF0ZShtX2h3bmQpOwogCkBAIC0yNzY0LDcgKzI3NjQsNyBAQCBIUkVTVUxUIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnByZXNlbnRT
YW1wbGUoSU1GUwogewogICAgIEhSRVNVTFQgaHIgPSBTX09LOwogCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBDT01Q
dHI8SURpcmVjdDNEU3VyZmFjZTk+IHN1cmZhY2U7CiAKQEAgLTI4MjIsNyArMjgyMiw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6
cGFpbnRDdXJyZW50RnJhbWUoV2ViCiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghbV9tZW1TdXJmYWNlKQogICAgICAgICByZXR1
cm47CkBAIC0yODg3LDcgKzI4ODcsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSgpCiAgICAgSFJF
U1VMVCBociA9IFNfT0s7CiAgICAgVUlOVCBhZGFwdGVySUQgPSBEM0RBREFQVEVSX0RFRkFVTFQ7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKIAogICAgIGlmICghbV9kaXJlY3QzRDkgfHwgIW1fZGV2aWNlTWFuYWdlcikKICAg
ICAgICAgcmV0dXJuIE1GX0VfTk9UX0lOSVRJQUxJWkVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDIxYzFjMjc4NjllMzdlYjllMjg4OWJhYzRjOGE3NTZiMGZkMjdiNTEuLmYy
Y2ViMDAwYWQ0MDdjNGViNjIzNTdjY2EwYzAyMmE1YjcxYTU5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBSZWZQdHI8U2NhbGFibGVJbWFnZURl
Y29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bAogCiBib29sIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZUJ1ZmZlckNhY2hlLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODAsNyAr
MTgwLDcgQEAgYm9vbCBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0CiAKIGJvb2wgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBp
ZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAKIHVuc2lnbmVkIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5z
aXplKCkgPD0gaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIEZJWE1FOiBVc2UgdGhl
IGRpbWVuc2lvbiBvZiB0aGUgcmVxdWVzdGVkIGZyYW1lLgpAQCAtMjAxLDcgKzIwMSw3IEBAIHVu
c2lnbmVkIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiAKIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IDBfczsKIApAQCAtMjIxLDcgKzIyMSw3IEBAIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIAogUGxhdGZvcm1JbWFn
ZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewotICAg
IExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OwogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9y
IHNvbWUgcG9ydHMuIElmIHdlIGhhdmUgYW4gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJh
aWwuCiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTYxNTdlZjNhODc0ZmNjZjMyMDBlOWFmNzQw
NmVlNDg3OTg4Y2FmMy4uZmNmMGE2MTE1ZGQ4NmMxNDc1OWIyYjIxYTdjNzFjNzhlOWY0Y2Y0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9lbmNv
ZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lm1tCmluZGV4IGYxMTE3ZmYyNDcwY2ZjMjdmNDU5MTNhNzQ4MjYyNWUwOWU3M2VlY2YuLjkyZGUx
ZGM1ZjYwNTZkNjFhOWIzMmYyNjI5N2RiN2RhZWFmNDM4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZv
aWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRUaWxlc09wYXF1ZShib29sIG9wYXF1ZSkKICAgICBpZiAo
bV90aWxlc09wYXF1ZSA9PSBvcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXgg
fTsKIAogICAgIG1fdGlsZXNPcGFxdWUgPSBvcGFxdWU7CiAgICAgbV96b29tZWRPdXRUaWxlR3Jp
ZC0+dXBkYXRlVGlsZU9wYWNpdHkoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIExlZ2FjeVRp
bGVDYWNoZTo6ZG9MYXlvdXRUaWxlcygpCiAgICAgaWYgKGlzVGlsZUNyZWF0aW9uU3VzcGVuZGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBMZWdhY3lUaWxlR3Jp
ZCogYWN0aXZlR3JpZCA9IGFjdGl2ZVRpbGVHcmlkKCk7CiAgICAgLy8gRXZlbiB0aG91Z2ggd2Ug
YXJlbid0IGFjdHVhbGx5IGNyZWF0aW5nIHRpbGVzIGluIHRoZSBpbmFjdGl2ZSBncmlkLCB3ZQog
ICAgIC8vIHN0aWxsIG5lZWQgdG8gZHJvcCBpbnZhbGlkIHRpbGVzIGluIHJlc3BvbnNlIHRvIGEg
bGF5b3V0LgpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRDdXJy
ZW50U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkgJiYg
IWlzVGlsZUludmFsaWRhdGlvblN1c3BlbmRlZCgpKSB7CiAgICAgICAgIC8vIFRpbGUgaW52YWxp
ZGF0aW9uIGlzIG5vcm1hbGx5IHN1c3BlbmRlZCBkdXJpbmcgem9vbWluZyBieSBVSUtpdCBidXQg
c29tZSBhcHBsaWNhdGlvbnMKICAgICAgICAgLy8gdXNpbmcgY3VzdG9tIHNjcm9sbHZpZXdzIG1h
eSB6b29tIHdpdGhvdXQgdHJpZ2dlcmluZyB0aGUgY2FsbGJhY2tzLiBJbnZhbGlkYXRlIHRoZSB0
aWxlcyBleHBsaWNpdGx5LgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgICAgICBhY3RpdmVU
aWxlR3JpZCgpLT5kcm9wQWxsVGlsZXMoKTsKICAgICAgICAgYWN0aXZlVGlsZUdyaWQoKS0+Y3Jl
YXRlVGlsZXMoQ292ZXJWaXNpYmxlT25seSk7CiAgICAgfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgTGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSgpCiAgICAgQVNTRVJUKG1fcGVu
ZGluZ1pvb21lZE91dFNjYWxlIHx8IG1fcGVuZGluZ1NjYWxlKTsKICAgICBBU1NFUlQobV90aWxp
bmdNb2RlICE9IERpc2FibGVkKTsKICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAKICAgICBpZiAobV9w
ZW5kaW5nWm9vbWVkT3V0U2NhbGUpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0
U2NhbGUobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQg
TGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vdygpCiAgICAgaWYgKG1fdGlsaW5nTW9kZSA9
PSBab29taW5nKQogICAgICAgICBtX3RpbGluZ01vZGUgPSBNaW5pbWFsOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRl
eCB9OwogICAgIExlZ2FjeVRpbGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsK
ICAgICBpZiAoYWN0aXZlR3JpZC0+Y2hlY2tEb1NpbmdsZVRpbGVMYXlvdXQoKSkgewogICAgICAg
ICBtX3RpbGluZ01vZGUgPSBzYXZlZFRpbGluZ01vZGU7CkBAIC0zMTEsMTQgKzMxMSwxNCBAQCB2
b2lkIExlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3coKQogdm9pZCBMZWdhY3lUaWxlQ2Fj
aGU6OmxheW91dFRpbGVzTm93Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogCiAg
ICAgYWN0aXZlVGlsZUdyaWQoKS0+YWRkVGlsZXNDb3ZlcmluZ1JlY3QocmVjdCk7CiB9CiAKIHZv
aWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMoKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxl
TXV0ZXggfTsKICAgICByZW1vdmVBbGxOb25WaXNpYmxlVGlsZXNJbnRlcm5hbCgpOwogfQogCkBA
IC0zNDAsNyArMzQwLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZpc2li
bGVUaWxlc0ludGVybmFsKCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVz
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdGlsZU11dGV4IH07CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+ZHJvcEFsbFRp
bGVzKCk7CiAgICAgaWYgKG1fem9vbWVkSW5UaWxlR3JpZCkKICAgICAgICAgbV96b29tZWRJblRp
bGVHcmlkLT5kcm9wQWxsVGlsZXMoKTsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIExlZ2FjeVRp
bGVDYWNoZTo6cmVtb3ZlQWxsVGlsZXMoKQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3Zl
Rm9yZWdyb3VuZFRpbGVzKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAgICAgaWYgKCFrZWVwc1pvb21l
ZE91dFRpbGVzKCkpCiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPmRyb3BBbGxUaWxlcygp
OwogICAgIGlmIChtX3pvb21lZEluVGlsZUdyaWQpCkBAIC0zNTcsMTMgKzM1NywxMyBAQCB2b2lk
IExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKCkKIAogdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OnNldENvbnRlbnRSZXBsYWNlbWVudEltYWdlKFJldGFpblB0cjxDR0ltYWdlUmVm
PiBjb250ZW50UmVwbGFjZW1lbnRJbWFnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Nv
bnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NvbnRl
bnRSZXBsYWNlbWVudEltYWdlTXV0ZXggfTsKICAgICBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdl
ID0gY29udGVudFJlcGxhY2VtZW50SW1hZ2U7CiB9CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBM
ZWdhY3lUaWxlQ2FjaGU6OmNvbnRlbnRSZXBsYWNlbWVudEltYWdlKCkgY29uc3QKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXggfTsKICAgICByZXR1
cm4gbV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZTsKIH0KIApAQCAtNDEwLDcgKzQxMCw3IEBAIHZv
aWQgTGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKCkKIHsKICAgICBpZiAo
aXNUaWxlQ3JlYXRpb25TdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXgg
fTsKICAgICBjcmVhdGVUaWxlc0luQWN0aXZlR3JpZChDb3ZlclNwZWN1bGF0aXZlKTsKIH0KIApA
QCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZUZvclBlbmRpbmdSZXBhaW50KCkKIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldE5l
ZWRzRGlzcGxheUluUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zYXZlZERpc3BsYXlSZWN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3NhdmVkRGlzcGxheVJlY3RNdXRleCB9OwogICAgIGJvb2wgYWRkZWRGaXJzdFJlY3QgPSBt
X3NhdmVkRGlzcGxheVJlY3RzLmlzRW1wdHkoKTsKICAgICBtX3NhdmVkRGlzcGxheVJlY3RzLmFw
cGVuZChkaXJ0eVJlY3QpOwogICAgIGlmICghYWRkZWRGaXJzdFJlY3QpCkBAIC02ODMsNyArNjgz
LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnVwZGF0ZVRpbGluZ01vZGUoKQogICAgICAgICBp
ZiAobV90aWxpbmdNb2RlID09IERpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAgICAgICAgIGNyZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENvdmVy
VmlzaWJsZU9ubHkpOwogCiAgICAgICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5
KCkpCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01v
ZGUoVGlsaW5nTW9kZSB0aWxpbmdNb2RlKQogICAgIGlmICgobV9wZW5kaW5nWm9vbWVkT3V0U2Nh
bGUgfHwgbV9wZW5kaW5nU2NhbGUpICYmIG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCkKICAgICAg
ICAgY29tbWl0U2NhbGVDaGFuZ2UoKTsKICAgICBlbHNlIGlmICh3YXNab29taW5nKSB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAgICAgICAgIGJyaW5nQWN0aXZlVGlsZUdyaWRUb0Zyb250KCk7
CiAgICAgfQogCkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmRvUGVu
ZGluZ1JlcGFpbnRzKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc1RpbGVJbnZhbGlkYXRp
b25TdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBmbHVz
aFNhdmVkRGlzcGxheVJlY3RzKCk7CiB9CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIExlZ2Fj
eVRpbGVDYWNoZTo6Zmx1c2hTYXZlZERpc3BsYXlSZWN0cygpCiAKICAgICBWZWN0b3I8SW50UmVj
dD4gcmVjdHM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhdmVkRGlzcGxh
eVJlY3RNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhdmVkRGlzcGxheVJlY3RN
dXRleCB9OwogICAgICAgICBtX3NhdmVkRGlzcGxheVJlY3RzLnN3YXAocmVjdHMpOwogICAgIH0K
ICAgICBzaXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsKQEAgLTc3OCw3ICs3NzgsNyBAQCB2b2lk
IExlZ2FjeVRpbGVDYWNoZTo6cHJlcGFyZVRvRHJhdygpCiAgICAgW1ttX3dpbmRvdyBjb250ZW50
Vmlld10gdmlld1dpbGxEcmF3XTsKIAogICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICAgICAgZmx1c2hTYXZlZERpc3Bs
YXlSZWN0cygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVMYXllclBvb2wubW0KaW5kZXggYWM4YzY0OGQ2YjNmMTYzNDYxNDFkZTZhNGRm
MTk2OTliNjVlZmRlNy4uMmY0NTI1NmY0ODAzOTAyYmM4MWQyZTk5YzdjZDg0YTcyOGQzYTIxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wubW0KQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjphZGRMYXll
cihjb25zdCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiYgbGF5ZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sYXllclBvb2xNdXRleCB9OwogICAgIGxpc3RPZkxheWVyc1dp
dGhTaXplKGxheWVyU2l6ZSkucHJlcGVuZChsYXllcik7CiAgICAgbV90b3RhbEJ5dGVzICs9IGJ5
dGVzQmFja2luZ0xheWVyV2l0aFBpeGVsU2l6ZShsYXllclNpemUpOwogCkBAIC05NCw3ICs5NCw3
IEBAIFJldGFpblB0cjxMZWdhY3lUaWxlTGF5ZXI+IExlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VM
YXllcldpdGhTaXplKGNvbnN0IEludFNpemUmCiB7CiAgICAgaWYgKCFjYW5SZXVzZUxheWVyV2l0
aFNpemUoc2l6ZSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sYXllclBvb2xNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXgg
fTsKICAgICBMYXllckxpc3QmIHJldXNlTGlzdCA9IGxpc3RPZkxheWVyc1dpdGhTaXplKHNpemUs
IE1hcmtBc1VzZWQpOwogICAgIGlmIChyZXVzZUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtMTA0LDcgKzEwNCw3IEBAIFJldGFpblB0cjxMZWdhY3lUaWxlTGF5ZXI+IExl
Z2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKGNvbnN0IEludFNpemUmCiAKIHZv
aWQgTGVnYWN5VGlsZUxheWVyUG9vbDo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7
Ci0gICAgTG9ja0hvbGRlciByZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2Nr
ZXIgcmV1c2VMb2NrZXIgeyBtX2xheWVyUG9vbE11dGV4IH07CiAgICAgaWYgKGNhcGFjaXR5IDwg
bV9jYXBhY2l0eSkKICAgICAgICAgc2NoZWR1bGVQcnVuZSgpOwogICAgIG1fY2FwYWNpdHkgPSBj
YXBhY2l0eTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnNj
aGVkdWxlUHJ1bmUoKQogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sYXllclBvb2xNdXRleCB9OwogICAgIEFTU0VSVChtX25lZWRzUHJ1bmUpOwogICAgIG1f
bmVlZHNQcnVuZSA9IGZhbHNlOwogICAgIHVuc2lnbmVkIHNocmlua1RvID0gZGVjYXllZENhcGFj
aXR5KCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpwcnVu
ZSgpCiAKIHZvaWQgTGVnYWN5VGlsZUxheWVyUG9vbDo6ZHJhaW4oKQogewotICAgIExvY2tIb2xk
ZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgTG9ja2VyIHJldXNlTG9ja2Vy
IHsgbV9sYXllclBvb2xNdXRleCB9OwogICAgIG1fcmV1c2VMaXN0cy5jbGVhcigpOwogICAgIG1f
c2l6ZXNJblBydW5lT3JkZXIuY2xlYXIoKTsKICAgICBtX3RvdGFsQnl0ZXMgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQppbmRleCA2Y2FlMDhiYTNi
OTYzZDI1OTcxZGZhM2M0M2FhZGQxMTFjMTU1NWQxLi42ZTVkODMzMzAzMTA4NDNiM2YyZDA5MTRm
Zjk0NzMyYjU4NGU4ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1dpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dB
S1dpbmRvdy5tbQpAQCAtMzg0LDE0ICszODQsMTQgQEAgLSAodm9pZClzZW5kTW91c2VNb3ZlRXZl
bnQ6KFdlYkV2ZW50ICopZXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdlICopYUMK
IAogLSAodm9pZClzZXRFeHBvc2VkU2Nyb2xsVmlld1JlY3Q6KENHUmVjdClleHBvc2VkU2Nyb2xs
Vmlld1JlY3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigmX2V4cG9zZWRTY3JvbGxWaWV3UmVj
dExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayB9
OwogICAgIF9leHBvc2VkU2Nyb2xsVmlld1JlY3QgPSBleHBvc2VkU2Nyb2xsVmlld1JlY3Q7CiB9
CiAKIC0gKENHUmVjdClleHBvc2VkU2Nyb2xsVmlld1JlY3QKIHsKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCZfZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayB9OwogICAgICAgICBpZiAo
IUNHUmVjdElzTnVsbChfZXhwb3NlZFNjcm9sbFZpZXdSZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBfZXhwb3NlZFNjcm9sbFZpZXdSZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCAxOWZmZGVlYjUxZDZmODcxZWQ3
YTZjZTljNTVjZDk0NGQ2YjI0MTFmLi4wMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0
MTc5YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tCkBAIC02NjgsNyArNjY4LDcgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2
b2lkKikKICAgICBwZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZCA9IF9DRlJ1bkxvb3BT
ZXRQZXJDYWxsb3V0QXV0b3JlbGVhc2Vwb29sRW5hYmxlZChZRVMpOwogCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihzdGFydHVwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBzdGFydHVwTG9jayB9OwogICAgICAgICBzdGFydHVwQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwog
ICAgIH0KIApAQCAtNzIyLDcgKzcyMiw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkK
IAogICAgIC8vIFdhaXQgZm9yIHRoZSB3ZWIgdGhyZWFkIHRvIHN0YXJ0dXAgY29tcGxldGVseSBi
ZWZvcmUgd2UgY29udGludWUuCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihzdGFy
dHVwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzdGFydHVwTG9jayB9OwogCiAgICAg
ICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gd29ya2VycyAmIHRoZSB3
ZWIgdGhyZWFkLgogICAgICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigp
LnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKaW5kZXggNWMy
NjJiNDI2ZmM1ZjQzODllYTQ2ZmI2ZTkxOGE1NzJhYWI3ZTQwNS4uM2I5MDk1ODU4ZjVmZWE0Zjhl
ZDZkNGQyZmEyMGEyZWI1YjFhODAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldl
YlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OmF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fYWRhcHRlck11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fYWRhcHRlck11dGV4IH07CiAgICAgICAgIGNvbnN0IGF1dG8mIHNhbXBsZSA9IGRhdGEuZ2V0
U2FtcGxlKCk7CiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihz
YW1wbGUuZ2V0KCkpOwogICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1fYWRhcHRlci5nZXQoKSwg
Z3N0X2J1ZmZlcl9yZWYoYnVmZmVyKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEoKQogICAgIHNpemVf
dCBvdXRDaHVua1NhbXBsZUNvdW50ID0gTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxl
Q291bnQ7CiAgICAgc2l6ZV90IG91dEJ1ZmZlclNpemUgPSBvdXRDaHVua1NhbXBsZUNvdW50ICog
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5icGY7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2FkYXB0ZXJNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CiAg
ICAgc2l6ZV90IGluQ2h1bmtTYW1wbGVDb3VudCA9IGdzdF9hdWRpb19jb252ZXJ0ZXJfZ2V0X2lu
X2ZyYW1lcyhtX3NhbXBsZUNvbnZlcnRlci5nZXQoKSwgb3V0Q2h1bmtTYW1wbGVDb3VudCk7CiAg
ICAgc2l6ZV90IGluQnVmZmVyU2l6ZSA9IGluQ2h1bmtTYW1wbGVDb3VudCAqIG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbi5icGY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGNjZDZhYzU2MjIz
MWZmOGMyOThmZDZjNDUzNDE2MDk5ZTFkMThkMzYuLmE2ZjJiNzNjMTdkZmNmODYyODRjOGM1ZGU1
NjIwNmE5YTUwODc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBA
IHN0YXRpYyBib29sIG9wZW5OZXh0U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiB7CiAg
ICAgLy8gQ0ZSZWFkU3RyZWFtT3BlbigpIGNhbiBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJl
LWVudGVyZWQgZnJvbSBhbm90aGVyIHRocmVhZCBiZWZvcmUgaXQgcmV0dXJucy4KICAgICAvLyBP
bmUgZXhhbXBsZSB3aGVuIHRoaXMgY2FuIG9jY3VyIGlzIHdoZW4gdGhlIHN0cmVhbSBiZWluZyBv
cGVuZWQgaGFzIG5vIGRhdGEuIFNlZSA8cmRhcjovL3Byb2JsZW0vMjM1NTAyNjk+LgotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2Nr
IH07CiAKICAgICAvLyBTa2lwIG92ZXIgYW55IHN0cmVhbXMgd2UgY2FuJ3Qgb3Blbi4KICAgICBp
ZiAoIWFkdmFuY2VDdXJyZW50U3RyZWFtKGZvcm0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRp
YyB2b2lkIGZvcm1GaW5hbGl6ZShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0
KQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbZm9ybV0gewogICAgICAgICB7Ci0gICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2Nr
KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVk
T3JDbG9zZWRMb2NrIH07CiAgICAgICAgICAgICBjbG9zZUN1cnJlbnRTdHJlYW0oZm9ybSk7CiAg
ICAgICAgIH0KICAgICAgICAgZGVsZXRlIGZvcm07CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGlj
IEJvb2xlYW4gZm9ybUNhblJlYWQoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4
dCkKIHN0YXRpYyB2b2lkIGZvcm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQp
CiB7CiAgICAgRm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1G
aWVsZHMqPihjb250ZXh0KTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihmb3JtLT5zdHJlYW1Jc0Jl
aW5nT3BlbmVkT3JDbG9zZWRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZm9ybS0+c3RyZWFt
SXNCZWluZ09wZW5lZE9yQ2xvc2VkTG9jayB9OwogCiAgICAgY2xvc2VDdXJyZW50U3RyZWFtKGZv
cm0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKaW5kZXggZDlhMzE5NGFhZGI2Y2Y3OWUxMDgzODgxNzI4MmI3YWMyNGJm
ZDFlYS4uMTc3MjYwY2Y0MTJmMmRiNzlhOWQwZDVhZDhjMTk2ZmRhYjcxMmQ4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y29tcGxldGVEaWRSZWNlaXZl
UmVzcG9uc2UoKQogdm9pZCBDdXJsUmVxdWVzdDo6c2V0UmVxdWVzdFBhdXNlZChib29sIHBhdXNl
ZCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3BhdXNlU3RhdGVNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OwogCiAgICAgICAg
IGF1dG8gc2F2ZWRTdGF0ZSA9IHNob3VsZEJlUGF1c2VkKCk7CiAgICAgICAgIG1fc2hvdWxkU3Vz
cGVuZCA9IG1faXNQYXVzZWRPZlJlcXVlc3QgPSBwYXVzZWQ7CkBAIC02NTcsNyArNjU3LDcgQEAg
dm9pZCBDdXJsUmVxdWVzdDo6c2V0UmVxdWVzdFBhdXNlZChib29sIHBhdXNlZCkKIHZvaWQgQ3Vy
bFJlcXVlc3Q6OnNldENhbGxiYWNrUGF1c2VkKGJvb2wgcGF1c2VkKQogewogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGF1c2VTdGF0ZU11dGV4IH07CiAKICAgICAgICAgYXV0byBzYXZlZFN0YXRlID0g
c2hvdWxkQmVQYXVzZWQoKTsKICAgICAgICAgbV9pc1BhdXNlZE9mQ2FsbGJhY2sgPSBwYXVzZWQ7
CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6cGF1c2VkU3RhdHVzQ2hhbmdl
ZCgpCiAKICAgICAgICAgYm9vbCBuZWVkQ2FuY2VsIHsgZmFsc2UgfTsKICAgICAgICAgewotICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3BhdXNlU3RhdGVNdXRleCB9OwogICAgICAgICAgICAgYm9vbCBw
YXVzZWQgPSBzaG91bGRCZVBhdXNlZCgpOwogCiAgICAgICAgICAgICBpZiAoaXNIYW5kbGVQYXVz
ZWQoKSA9PSBwYXVzZWQpCkBAIC03NDIsMjAgKzc0MiwyMCBAQCBOZXR3b3JrTG9hZE1ldHJpY3Mg
Q3VybFJlcXVlc3Q6Om5ldHdvcmtMb2FkTWV0cmljcygpCiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmVu
YWJsZURvd25sb2FkVG9GaWxlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2Fk
TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKICAgICBtX2lz
RW5hYmxlZERvd25sb2FkVG9GaWxlID0gdHJ1ZTsKIH0KIAogY29uc3QgU3RyaW5nJiBDdXJsUmVx
dWVzdDo6Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2Rvd25sb2FkTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsK
ICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0Ojp3
cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgICAgICBp
ZiAoIW1faXNFbmFibGVkRG93bmxvYWRUb0ZpbGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03
NzAsNyArNzcwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJ
ZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAKIHZvaWQgQ3VybFJlcXVlc3Q6
OmNsb3NlRG93bmxvYWRGaWxlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2Fk
TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgIGlm
IChtX2Rvd25sb2FkRmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICAgICByZXR1cm47CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBDdXJsUmVx
dWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVhbnVwRG93
bmxvYWRGaWxlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKIAogICAgIGlmICghbV9kb3du
bG9hZEZpbGVQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fZG93bmxvYWRGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKaW5kZXggMmNmOWM4NzcxZGRkOGY1MmIy
ZTAwMjljNGY5M2E3ZGExMWUzZmQwNS4uYWU4NmQyYjEyZGIyZWRlNTQ1MmQ4YjJiYTVhYjIyN2Ni
ZmQ5MDUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMSGFuZGxlLmNwcApAQCAtNjMsMjggKzYzLDI4IEBAIHZvaWQgQ3VybFNTTEhh
bmRsZTo6Y2xlYXJDQUNlcnRJbmZvKCkKIAogdm9pZCBDdXJsU1NMSGFuZGxlOjphbGxvd0FueUhU
VFBTQ2VydGlmaWNhdGVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgTG9ja0hv
bGRlciBtdXRleChtX2FsbG93ZWRIb3N0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Fs
bG93ZWRIb3N0c0xvY2sgfTsKIAogICAgIG1fYWxsb3dlZEhvc3RzLmFkZFZvaWQoaG9zdCk7CiB9
CiAKIGJvb2wgQ3VybFNTTEhhbmRsZTo6Y2FuSWdub3JlQW55SFRUUFNDZXJ0aWZpY2F0ZXNGb3JI
b3N0KGNvbnN0IFN0cmluZyYgaG9zdCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIG11dGV4KG1f
YWxsb3dlZEhvc3RzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWxsb3dlZEhvc3RzTG9j
ayB9OwogCiAgICAgcmV0dXJuIG1fYWxsb3dlZEhvc3RzLmNvbnRhaW5zKGhvc3QpOwogfQogCiB2
b2lkIEN1cmxTU0xIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcm
IGhvc3ROYW1lLCBjb25zdCBTdHJpbmcmIGNlcnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGtleSkK
IHsKLSAgICBMb2NrSG9sZGVyIG11dGV4KG1fYWxsb3dlZENsaWVudEhvc3RzTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fYWxsb3dlZENsaWVudEhvc3RzTG9jayB9OwogCiAgICAgbV9hbGxv
d2VkQ2xpZW50SG9zdHMuc2V0KGhvc3ROYW1lLCBDbGllbnRDZXJ0aWZpY2F0ZSB7IGNlcnRpZmlj
YXRlLCBrZXkgfSk7CiB9CiAKIE9wdGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVudENlcnRpZmlj
YXRlPiBDdXJsU1NMSGFuZGxlOjpnZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
IGhvc3ROYW1lKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2VkQ2xpZW50
SG9zdHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hbGxvd2VkQ2xpZW50SG9zdHNMb2Nr
IH07CiAKICAgICBhdXRvIGl0ID0gbV9hbGxvd2VkQ2xpZW50SG9zdHMuZmluZChob3N0TmFtZSk7
CiAgICAgaWYgKGl0ID09IG1fYWxsb3dlZENsaWVudEhvc3RzLmVuZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZWE0NTMxMTBhMTgz
OTczN2Q5NzVmYjM1ZTFlODIwOWM4ZWEyMDI5Zi4uMTU3N2FhNjFiMmY1NjliMmQxNjcyY2IyNzE3
M2MyYTg2ZGU0ZTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xv
c2UoKQogICAgICAgICAvLyBBU1NFUlQobV9vcGVuaW5nVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAgICAgICAgIHNxbGl0ZTMqIGRiID0gbV9kYjsKICAgICAgICAgewotICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9OwogICAgICAgICAgICAg
bV9kYiA9IDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fdXNlV0FMKSB7CkBAIC0yNzMsNyAr
MjczLDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6bWF4aW11bVNpemUoKQogICAgIGludDY0
X3QgbWF4UGFnZUNvdW50ID0gMDsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJM
b2NrIH07CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBhdXRvIHN0
YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCJfcyk7CiAg
ICAgICAgIG1heFBhZ2VDb3VudCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50NjQo
MCkgOiAwOwpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGlt
dW1TaXplKGludDY0X3Qgc2l6ZSkKICAgICBBU1NFUlQoY3VycmVudFBhZ2VTaXplIHx8ICFtX2Ri
KTsKICAgICBpbnQ2NF90IG5ld01heFBhZ2VDb3VudCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUg
LyBjdXJyZW50UGFnZVNpemUgOiAwOwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0
aG9yaXplckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAg
ICAgZW5hYmxlQXV0aG9yaXplcihmYWxzZSk7CiAKICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBh
cmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5l
d01heFBhZ2VDb3VudCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6
cGFnZVNpemUoKQogICAgIC8vIFNpbmNlIHRoZSBwYWdlIHNpemUgb2YgYSBkYXRhYmFzZSBpcyBs
b2NrZWQgaW4gYXQgY3JlYXRpb24gYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgZHluYW1pYywgCiAg
ICAgLy8gd2UgY2FuIGNhY2hlIHRoZSB2YWx1ZSBmb3IgZnV0dXJlIHVzZQogICAgIGlmIChtX3Bh
Z2VTaXplID09IC0xKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9OwogICAgICAg
ICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGF1dG8gc3RhdGVt
ZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiUFJBR01BIHBhZ2Vfc2l6ZSJfcyk7CkBAIC0zMjYsNyAr
MzI2LDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6ZnJlZVNwYWNlU2l6ZSgpCiAgICAgaW50
NjRfdCBmcmVlbGlzdENvdW50ID0gMDsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6
ZXJMb2NrIH07CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICAvLyBO
b3RlOiBmcmVlbGlzdF9jb3VudCB3YXMgYWRkZWQgaW4gU1FMaXRlIDMuNC4xLgogICAgICAgICBh
dXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdNQSBmcmVlbGlzdF9jb3VudCJf
cyk7CkBAIC0zNDIsNyArMzQyLDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXpl
KCkKICAgICBpbnQ2NF90IHBhZ2VDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9h
dXRob3JpemVyTG9jayB9OwogICAgICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAg
ICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgcGFnZV9jb3VudCJf
cyk7CiAgICAgICAgIHBhZ2VDb3VudCA9IHN0YXRlbWVudCA/IHN0YXRlbWVudC0+Y29sdW1uSW50
NjQoMCkgOiAwOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6cnVuVmFj
dXVtQ29tbWFuZCgpCiAKIGludCBTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1D
b21tYW5kKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9OwogICAgIGVuYWJsZUF1dGhvcml6
ZXIoZmFsc2UpOwogCiAgICAgaWYgKCFleGVjdXRlQ29tbWFuZCgiUFJBR01BIGluY3JlbWVudGFs
X3ZhY3V1bSJfcykpCkBAIC00MzUsNyArNDM1LDcgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpydW5J
bmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1
cHQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlQ2xvc2luZ011dGV4IH07CiAgICAgaWYgKG1f
ZGIpCiAgICAgICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1fZGIpOwogfQpAQCAtNTU3LDcgKzU1Nyw3
IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVy
JiBhdXRob3JpemVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXV0aG9yaXpl
ckxvY2sgfTsKIAogICAgIG1fYXV0aG9yaXplciA9ICZhdXRob3JpemVyOwogICAgIApAQCAtNjQx
LDcgKzY0MSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnJlbGVhc2VNZW1vcnkoKQogCiBzdGF0
aWMgRXhwZWN0ZWQ8c3FsaXRlM19zdG10KiwgaW50PiBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVt
ZW50KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgY29uc3QgY2hhciogcXVlcnksIHNpemVfdCBx
dWVyeUxlbmd0aCkKIHsKLSAgICBMb2NrSG9sZGVyIGRhdGFiYXNlTG9jayhkYXRhYmFzZS5kYXRh
YmFzZU11dGV4KCkpOworICAgIExvY2tlciBkYXRhYmFzZUxvY2sgeyBkYXRhYmFzZS5kYXRhYmFz
ZU11dGV4KCkgfTsKICAgICBMT0coU1FMRGF0YWJhc2UsICJTUUwgLSBwcmVwYXJlIC0gJXMiLCBx
dWVyeSk7CiAKICAgICAvLyBQYXNzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbmNsdWRpbmcg
dGhlIG51bGwgY2hhcmFjdGVyIHRvIHNxbGl0ZTNfcHJlcGFyZV92MjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYTkyZDNhYzVlNTg2
NTZmMGIzMzYxMTU0ODI3YWI4NzJhNTdkZWUzYS4uNmQ4ZGM3MmVkY2JkNDI4ODdlNjc3NWExNjAy
ODU0N2E5N2M2MzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU1FMaXRlU3RhdGVtZW50Ojp+U1FMaXRl
U3RhdGVtZW50KCkKIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7Ci0gICAgTG9ja0hv
bGRlciBkYXRhYmFzZUxvY2sobV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkpOworICAgIExvY2tl
ciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCiAgICAgaW50
IGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FM
SVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmluZGV4IDAyOGNi
NTM3OGFlMjQ2NzFjZDYyYTYxNGVmOTcwM2NjNjYxNDJiNDQuLjkxYjg4OTQxYTc2YTgwNzFkMzBk
N2ZlZDc0MTYzZmIwOWY3Yjg3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBX
ZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBXZQogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xh
dGVkQ29weSgpLCBzcGFjZVJlcXVlc3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3ZlKHNwYWNl
UmVxdWVzdGVyKSwgbV9zZXJ2ZXJMb2NrKTsKICAgICB9KTsKIH0KQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6OmdldE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNo
U2V0PFdlYkNvcmU6OlNlY3VyaXR5T3IKICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9
IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAg
cG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHRva2VuID0gV1RGTW92ZSh0b2tlbiksIG9yaWdpbnMgPSBjcm9zc1RocmVhZENvcHkobV9z
ZXJ2ZXItPmdldE9yaWdpbnMoKSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKG9yaWdpbnMpKTsKICAgICAgICAgfSkpOwpAQCAtODEsNyArODEsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1l
IG1vZGlmaWNhdGlvblRpbQogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG1vZGlmaWNhdGlvblRpbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHRva2VuID0gbV9kYXRhVGFza0NvdW50ZXIuY291bnQoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgICAgICBtX3NlcnZlci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNl
KG1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFz
ayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBXVEZNb3ZlKHRva2VuKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlY3VyCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luRGF0YXMgPSBvcmlnaW5EYXRhcy5pc29sYXRlZENvcHko
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBtX2RhdGFUYXNrQ291bnRl
ci5jb3VudCgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y2xvc2VB
bmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFzKTsKICAgICAgICAgcG9zdFRh
c2tSZXBseShDcm9zc1RocmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRv
a2VuID0gV1RGTW92ZSh0b2tlbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjaygp
OwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvCiAgICAgcG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2xkT3JpZ2luID0gb2xk
T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuZXdPcmlnaW4gPSBuZXdPcmlnaW4uaXNvbGF0ZWRDb3B5
KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRhVGFza0NvdW50
ZXIuY291bnQoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFt
ZU9yaWdpbihvbGRPcmlnaW4sIG5ld09yaWdpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jv
c3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1v
dmUodG9rZW4pXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2Uo
cmVxdWVzdERhdGEpOwogfQogCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgIG1fc2VydmVyLT5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTE2
Myw3ICsxNjMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmFib3J0
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTcxLDcgKzE3MSw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rp
b24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSW5mbyk7CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2Nr
IH07CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZU5hbWUpOwogfQogCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJl
bmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgIG1fc2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKIH0KIApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5jbGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogfQogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwg
aW5kZXhJbmZvKTsKIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpk
ZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sg
fTsKICAgICBtX3NlcnZlci0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgaW5kZXhOYW1lKTsKIH0KIApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgV2ViSURC
U2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIHVpbnQ2CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nl
cnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKIH0KIApAQCAtMjQz
LDcgKzI0Myw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+cHV0T3JB
ZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyV3JpdGVNb2RlKTsKIH0KIApAQCAt
MjUxLDcgKzI1MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0
UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKIH0KIApAQCAtMjU5LDcgKzI1OSw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3Jkcyhy
ZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogfQogCkBAIC0yNjcsNyArMjY3LDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgV2UKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKIH0KIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEpOwogfQogCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5D
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdAog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAg
ICAgbV9zZXJ2ZXItPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGN1cnNvckluZm8pOwogfQogCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb24KIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5p
dGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBpdGVyYXRlQ3Vyc29yRGF0YSk7CiB9CiAKQEAgLTI5
OSw3ICsyOTksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgYwogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmVzdGFi
bGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SW5mbyk7CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAg
ICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBXZWJJ
REJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAK
QEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXIt
PmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
cmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOwogfQogCkBAIC0zMzksNyArMzM5
LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjCiAgICAgYXV0byogd2ViSURCQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKICAgICBBU1NFUlQod2ViSURCQ29ubmVj
dGlvbik7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VO
YW1lc0FuZFZlcnNpb25zKHdlYklEQkNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgcmVxdWVzdElk
ZW50aWZpZXIsIG9yaWdpbik7CiB9CiAKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6YWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6
OlByb2Nlc3NJZAogCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRy
eSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+cmVnaXN0
ZXJDb25uZWN0aW9uKGl0ZXItPnZhbHVlLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CiAgICAgfSk7
CiAgICAgbV9jb25uZWN0aW9ucy5hZGQoJmNvbm5lY3Rpb24pOwpAQCAtMzg2LDcgKzM4Niw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKIAogICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7CiAKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24oY29ubmVj
dGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0pOwogCkBAIC00MjMsNyArNDIzLDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlKCkKICAgICBwb3N0VGFzayhbdGhpc10oKSBtdXRh
YmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uTWFwLmNsZWFyKCk7CiAKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlciA9IG51bGxwdHI7CiAgICAgICAgIENyb3NzVGhy
ZWFkVGFza0hhbmRsZXI6OmtpbGwoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA5
YTFhMjA4NjQwZmVkODExM2RhMzdiNjQ0ZDBiNzRiOWZiZmZiMzMwLi4yYWNlNTFjNjEwOGUyMzVm
ODA2MWRjMmU4ODk5YmQ1NmJkNzgyMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC01MzQsNyAr
NTM0LDcgQEAgdm9pZCBFbmdpbmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCB1
aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjwKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29s
YXRlZENvcHkoKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6
ZUZpbGVMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9
OwogICAgICAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKIAogICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSkgewpAQCAtNTU0LDcgKzU1NCw3IEBAIE9wdGlv
bmFsPHVpbnQ2NF90PiBFbmdpbmU6OnJlYWRTaXplRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihnbG9iYWxTaXplRmlsZUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTaXplRmls
ZUxvY2sgfTsKICAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGF1dG8gY2xvc2VGaWxlSGFu
ZGxlID0gbWFrZVNjb3BlRXhpdChbJl0gewogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CkBAIC02OTgsNyArNjk4LDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2Fj
aGVzRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbcGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBn
bG9iYWxTaXplRmlsZUxvY2sgfTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCkpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwog
ICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRoKSA9PSBGaWxlU3lz
dGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KQpAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgRW5naW5l
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcm
IHBhdGgsIENvbXBsCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9R
dWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KHBhdGgpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcAppbmRleCBkOGVhMzM2ODVlYTJiOGViNmNjZWI0M2Fk
MzhlMDYwYzQzYTg5NTk0Li4yNGRhMzg4NzljYjA0MjZlMTlmNGZiYzcxZGE5MmU4MzE0ZmZjYjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgRE5TQ2FjaGU6OkROU0NhY2hlTWFwJiBETlNDYWNoZTo6bWFwRm9y
VHlwZShUeXBlIHR5cGUpCiAKIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+
PiBETlNDYWNoZTo6bG9va3VwKGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5cGUgdHlwZSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKICAgICBhdXRvJiBtYXAgPSBtYXBGb3JUeXBlKHR5cGUpOwogICAgIGF1dG8gaXQgPSBtYXAu
ZmluZChob3N0KTsKICAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQpAQCAtODEsNyArODEsNyBAQCBP
cHRpb25hbDxWZWN0b3I8R1JlZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChj
b25zdCBDU3RyaW5nJiBob3N0LCBUeQogCiB2b2lkIEROU0NhY2hlOjp1cGRhdGUoY29uc3QgQ1N0
cmluZyYgaG9zdCwgVmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4mJiBhZGRyZXNzTGlzdCwg
VHlwZSB0eXBlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgIGF1dG8mIG1hcCA9IG1hcEZvclR5cGUodHlwZSk7CiAg
ICAgQ2FjaGVkUmVzcG9uc2UgcmVzcG9uc2UgPSB7IFdURk1vdmUoYWRkcmVzc0xpc3QpLCBNb25v
dG9uaWNUaW1lOjpub3coKSArIGV4cGlyZUludGVydmFsIH07CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtYXAuc2V0KGhvc3QsIFdURk1vdmUocmVzcG9uc2UpKTsKQEAgLTExOSw3ICsxMTksNyBAQCB2
b2lkIEROU0NhY2hlOjpwcnVuZVJlc3BvbnNlc0luTWFwKEROU0NhY2hlTWFwJiBtYXApCiAKIHZv
aWQgRE5TQ2FjaGU6OnJlbW92ZUV4cGlyZWRSZXNwb25zZXNGaXJlZCgpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
cmVtb3ZlRXhwaXJlZFJlc3BvbnNlc0luTWFwKG1fZG5zTWFwKTsKICNpZiBHTElCX0NIRUNLX1ZF
UlNJT04oMiwgNTksIDApCiAgICAgcmVtb3ZlRXhwaXJlZFJlc3BvbnNlc0luTWFwKG1faXB2NE1h
cCk7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBETlNDYWNoZTo6cmVtb3ZlRXhwaXJlZFJlc3Bv
bnNlc0ZpcmVkKCkKIAogdm9pZCBETlNDYWNoZTo6Y2xlYXIoKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1fZG5z
TWFwLmNsZWFyKCk7CiAjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsIDU5LCAwKQogICAgIG1faXB2
NE1hcC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXggYjJhNGZkZDZmZmM2ZmVlMzEzNTI2YmZhZjRm
OWIyZGY1OTFmOWZmMi4uNTc5MTM3OTJmZTQ4ZWQ4YWVlNDUyNzQzOTczZmM2N2U2NWRhODY5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGlu
Z1J1bkxvb3AuY3BwCkBAIC05NiwxNCArOTYsMTQgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6
OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogCiB2b2lkIENv
bXBvc2l0aW5nUnVuTG9vcDo6c3VzcGVuZCgpCiB7Ci0gICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tl
cihtX3N0YXRlLmxvY2spOworICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGUubG9jayB9
OwogICAgIG1fc3RhdGUuaXNTdXNwZW5kZWQgPSB0cnVlOwogICAgIG1fdXBkYXRlVGltZXIuc3Rv
cCgpOwogfQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6cmVzdW1lKCkKIHsKLSAgICBMb2Nr
SG9sZGVyIHN0YXRlTG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgbV9zdGF0ZS5sb2NrIH07CiAgICAgbV9zdGF0ZS5pc1N1c3BlbmRlZCA9IGZhbHNlOwogICAg
IGlmIChtX3N0YXRlLnVwZGF0ZSA9PSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkKQogICAgICAgICBt
X3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
Q29tcG9zaXRpbmdSdW5Mb29wOjpyZXN1bWUoKQogCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6
c2NoZWR1bGVVcGRhdGUoKQogewotICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5s
b2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICBzY2hl
ZHVsZVVwZGF0ZShzdGF0ZUxvY2tlcik7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIENv
bXBvc2l0aW5nUnVuTG9vcDo6c3RvcFVwZGF0ZXMoKQogewogICAgIC8vIFN0b3AgZXZlcnl0aGlu
Zy4KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgIG1fdXBkYXRlVGltZXIuc3RvcCgpOwogICAgIG1f
c3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OklkbGU7CiAgICAgbV9zdGF0ZS5wZW5kaW5nVXBk
YXRlID0gZmFsc2U7CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6
OnVwZGF0ZVRpbWVyRmlyZWQoKQogewogICAgIHsKICAgICAgICAgLy8gU2NlbmUgdXBkYXRlIGlz
IG5vdyBpbiBwcm9ncmVzcy4KLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGUubG9jayB9OwogICAgICAgICBpZiAo
bV9zdGF0ZS5pc1N1c3BlbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9zdGF0
ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDM2NjU5
ZTQ2N2ZlYzNlM2U5N2I4MTI3YWVlOWJjOTBhMjMyMzQ0MWUuLmM4YjliOGNjOTExNjA3NTY0OGI2
ODY1ODQwNDI5ZGM5Y2YxOWQ4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNjAsNyArNjAsNyBAQCBUaHJl
YWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNsaWVudCwgVGhyZWFk
ZWREaXNwbGF5UmVmcmVzaE1vbgogewogICAgIHsKICAgICAgICAgLy8gTG9ja2luZyBpc24ndCBy
ZWFsbHkgbmVjZXNzYXJ5IGhlcmUsIGJ1dCBpdCdzIGRvbmUgZm9yIGNvbnNpc3RlbmN5LgotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OwogICAgICAgICBtX2F0dHJpYnV0ZXMudmll
d3BvcnRTaXplID0gdmlld3BvcnRTaXplOwogICAgICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0
b3IgPSBzY2FsZUZhY3RvcjsKICAgICAgICAgbV9hdHRyaWJ1dGVzLm5lZWRzUmVzaXplID0gIXZp
ZXdwb3J0U2l6ZS5pc0VtcHR5KCk7CkBAIC0xMzgsMTQgKzEzOCwxNCBAQCB2b2lkIFRocmVhZGVk
Q29tcG9zaXRvcjo6cmVzdW1lKCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFNjYWxl
RmFjdG9yKGZsb2F0IHNjYWxlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRl
cy5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICBt
X2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgc2NhbGUp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OwogICAgIG1fYXR0cmlidXRlcy5zY3JvbGxQ
b3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwogICAgIG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvciA9
IHNjYWxlOwogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAt
MTUzLDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRTY3JvbGxQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGZsb2F0CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBm
bG9hdCBzY2FsZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CiAgICAgbV9hdHRyaWJ1
dGVzLnZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBtX2F0dHJpYnV0ZXMuc2NhbGVG
YWN0b3IgPSBzY2FsZTsKICAgICBtX2F0dHJpYnV0ZXMubmVlZHNSZXNpemUgPSB0cnVlOwpAQCAt
MTkzLDcgKzE5Myw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUo
KQogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsK
IAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICAgICAgdmll
d3BvcnRTaXplID0gbV9hdHRyaWJ1dGVzLnZpZXdwb3J0U2l6ZTsKICAgICAgICAgc2Nyb2xsUG9z
aXRpb24gPSBtX2F0dHJpYnV0ZXMuc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIHNjYWxlRmFjdG9y
ID0gbV9hdHRyaWJ1dGVzLnNjYWxlRmFjdG9yOwpAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBU
aHJlYWRlZENvbXBvc2l0b3I6OnNjZW5lVXBkYXRlRmluaXNoZWQoKQogICAgIGJvb2wgc2hvdWxk
RGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxiYWNrIHsgZmFsc2UgfTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9hdHRyaWJ1dGVzLmxvY2sgfTsKICAgICAgICAgc2hvdWxkRGlzcGF0Y2hEaXNw
bGF5UmVmcmVzaENhbGxiYWNrID0gbV9hdHRyaWJ1dGVzLmNsaWVudFJlbmRlcnNOZXh0RnJhbWUK
ICAgICAgICAgICAgIHx8IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yLT5yZXF1aXJlc0Rpc3BsYXlS
ZWZyZXNoQ2FsbGJhY2soKTsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1f
Y29tcG9zaXRpbmdSdW5Mb29wLT5zdGF0ZUxvY2soKSk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXRlTG9jaygpIH07CiAKICAgICAvLyBTY2hlZHVs
ZSB0aGUgRGlzcGxheVJlZnJlc2hNb25pdG9yIGNhbGxiYWNrLCBpZiBuZWNlc3NhcnkuCiAgICAg
aWYgKHNob3VsZERpc3BhdGNoRGlzcGxheVJlZnJlc2hDYWxsYmFjaykKQEAgLTI3MCw3ICsyNzAs
NyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2NlbmVVcGRhdGVGaW5pc2hlZCgpCiAKIHZv
aWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1
dGVzLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OwogICAg
IG1fYXR0cmlidXRlcy5zdGF0ZXMuYXBwZW5kKHN0YXRlKTsKICAgICBtX2NvbXBvc2l0aW5nUnVu
TG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGE4YTc4OWZjMTJjNDE4NmEwOWYwMmM5
MmQ0M2VlZDE0NTFlMDQxMDAuLmQ3NGE0NzNlMjBjOTAxOGZlMzZkNWFiNmRmZDhhYTUyYjVhNjlh
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBh
Z2VVUkxUb0ljb25VUkxNYXAoKQogICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gcXVlcnktPnN0
ZXAoKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAg
ICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgbV9wYWdlVVJMVG9JY29u
VVJMTWFwLnNldChxdWVyeS0+Y29sdW1uVGV4dCgwKSwgcXVlcnktPmNvbHVtblRleHQoMSkpOwog
ICAgICAgICByZXN1bHQgPSBxdWVyeS0+c3RlcCgpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpjbGVhckxvYWRlZEljb25zVGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblJ1bkxvb3AoKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJ
Y29uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAg
IGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gaWNv
bnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8gaXRlciA6IG1fbG9hZGVkSWNvbnMpIHsKQEAgLTQ5
Miw3ICs0OTIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVS
TElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29ucwogICAgICAgICAgICAgYm9vbCBl
eHBpcmVkID0gZmFsc2U7CiAgICAgICAgICAgICBTdHJpbmcgY2FjaGVkSWNvblVSTDsKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJM
VG9JY29uVVJMTWFwTG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFn
ZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAgICBjYWNoZWRJY29uVVJMID0g
bV9wYWdlVVJMVG9JY29uVVJMTWFwLmdldChwYWdlVVJMKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChjYWNoZWRJY29uVVJMID09IGljb25VUkwpCkBAIC01MDYsNyArNTA2LDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25z
dCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNh
bldyaXRlVG9EYXRhYmFzZSB8fCBzZXRJY29uSURGb3JQYWdlVVJMKGljb25JRC52YWx1ZSgpLCBw
YWdlVVJMKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVy
KG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5zZXQocGFnZVVSTCwgaWNvblVSTCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtNTE0LDEzICs1MTQsMTMgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVS
TEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIWNhbldyaXRlVG9EYXRhYmFzZSkgewogICAgICAgICAgICAgICAg
IGJvb2wgZm91bmRJbk1lbW9yeUNhY2hlOwogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2NrIH07CiAgICAg
ICAgICAgICAgICAgICAgIGZvdW5kSW5NZW1vcnlDYWNoZSA9IG1fbG9hZGVkSWNvbnMuY29udGFp
bnMoaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kSW5NZW1vcnlDYWNoZSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29u
VVJMTWFwTG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VV
UkxUb0ljb25VUkxNYXBMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNv
blVSTE1hcC5zZXQocGFnZVVSTCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTU0MiwxNCArNTQyLDE0IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBB
bGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGljb25EYXRhOwogICAg
ICAgICBTdHJpbmcgaWNvblVSTDsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgIGljb25V
UkwgPSBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuZ2V0KHBhZ2VVUkwpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2RiLmlzT3BlbigpICYmICFpY29uVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgYm9vbCBleHBpcmVkOwogICAgICAgICAgICAgaWNvbklEID0gaWNvbklERm9ySWNvblVSTChp
Y29uVVJMLCBleHBpcmVkKTsKICAgICAgICAgICAgIGlmIChpY29uSUQpIHsKLSAgICAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOworICAgICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICAgICAg
ICAgIGlmICghbV9sb2FkZWRJY29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAg
ICAgICAgICBpY29uRGF0YSA9IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8
UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CkBAIC01NjYs
MTMgKzU2NiwxMyBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIo
bV9sb2FkZWRJY29uc0xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVk
SWNvbnNMb2NrIH07CiAgICAgICAgICAgICBhdXRvIGl0ID0gbV9sb2FkZWRJY29ucy5maW5kKGlj
b25VUkwpOwogICAgICAgICAgICAgaWYgKGl0ICE9IG1fbG9hZGVkSWNvbnMuZW5kKCkgJiYgaXQt
PnZhbHVlLmZpcnN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBpY29uID0gaXQtPnZhbHVlLmZp
cnN0OwogICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5zZWNvbmQgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICAgICAgICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1lcigpOwotICAg
ICAgICAgICAgICAgIGxvY2tIb2xkZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgICAgICBs
b2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGljb24pKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBA
IC01OTYsNyArNTk2LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogCiAgICAgICAgICAgICBh
dXRvIGljb24gPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OwogICAgICAgICAgICAg
c3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKLSAgICAgICAgICAgIGxvY2tIb2xkZXIudW5s
b2NrRWFybHkoKTsKKyAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpY29uKSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpAQCAtNjA2LDcgKzYwNiw3IEBAIFN0cmluZyBJY29uRGF0YWJhc2U6Omljb25VUkxGb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKIAotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAg
IHJldHVybiBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuZ2V0KHBhZ2VVUkwpOwogfQogCkBAIC02MTgs
NyArNjE4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICBpZiAobV9hbGxvd0RhdGFi
YXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpObyB8fCBhbGxvd0RhdGFiYXNlV3JpdGUg
PT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpObykgewogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZElj
b25zTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJY29uc0xvY2sg
fTsKICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVS
TCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0
ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZTsKQEAgLTYzMiw3ICs2MzIsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1l
cigpOwogICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0LCBpY29uVVJMID0gaWNvblVSTC5pc29sYXRlZENvcHko
KSwgcGFnZVVSTCA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1h
cExvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0ljb25V
UkxNYXBMb2NrIH07CiAgICAgICAgICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChw
YWdlVVJMLCBpY29uVVJMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcmVzdWx0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqCiAgICAgICAgICAgICBpZiAoaWNvbklEKSB7CiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoc2V0SWNvbklERm9yUGFnZVVSTChp
Y29uSUQudmFsdWUoKSwgcGFnZVVSTCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgICAgICAgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgICAg
ICAgICAgICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25VUkwp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY3OCwxMiArNjc4LDEyIEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKICAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICBtX2xvYWRlZElj
b25zLmNsZWFyKCk7CiAgICAgfQogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgICAg
ICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLmNsZWFyKCk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRl
eCBiMjM3YTZjYzY5Y2ZlYjM2NTNjOGJhNjVkZTllY2I0N2RjNDFmZjhhLi5hYjBlOTA5ODhiNDlk
MDM5NTJiMWU3ZTU4MjI2N2NhMTFhNmU5MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgZAogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9IGRhdGFiYXNlRGlyZWN0
b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgc3BhY2VSZXF1ZXN0ZXIgPSBzdG9yYWdlUXVvdGFNYW5h
Z2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0
aGlzKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyID0gbWFr
ZVVuaXF1ZTxJREJTZXJ2ZXI6OklEQlNlcnZlcj4oc2Vzc2lvbklELCBkaXJlY3RvcnksIFdURk1v
dmUoc3BhY2VSZXF1ZXN0ZXIpLCBtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+cmVn
aXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0NsaWVudCk7CiAgICAgfSk7CkBAIC0xMjMs
NyArMTIzLDcgQEAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2Uo
cmVxdWVzdERhdGEpOwogICAgIH0pOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVz
dERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAg
ICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlc291cmNlSWRlbnRpZmllciA9IHJlc291cmNlSWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAg
IG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7
CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJgogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIg
PSByZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVy
TG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJgogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIgPSB0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXN1bHREYXRhLCBjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mIGluZm8pCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGEgPSByZXN1bHREYXRhLmlzb2xhdGVkQ29w
eSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2Nr
IH07CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZv
KTsKICAgICB9KTsKIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlc3Vs
dAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVj
dFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVj
dFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogICAgIH0pOwogfQpAQCAtMzA1
LDcgKzMwNSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnJl
bmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05h
bWUpOwogICAgIH0pOwogfQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAg
bV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRp
Zmllcik7CiAgICAgfSk7CiB9CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykK
IHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8u
aXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3Nl
cnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMzI5
LDcgKzMyOSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSA9IGluZGV4TmFtZS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0pOwog
fQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGlu
ZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJl
cXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRl
bnRpZmllciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICB9
KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1l
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3Jp
dGVNb2RlKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlE
YXRhID0ga2V5RGF0YS5pc29sYXRlZENvcHkoKSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHko
KSwgb3ZlcndyaXRlTW9kZV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1f
c2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1v
ZGUpOwogICAgIH0pOwogfQpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVj
b3JkRGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZ2V0
UmVjb3JkRGF0YSA9IGdldFJlY29yZERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBn
ZXRSZWNvcmREYXRhKTsKICAgICB9KTsKIH0KQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgYwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxS
ZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERh
dGEuaXNvbGF0ZWRDb3B5KCksIGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxsUmVjb3Jkc0RhdGEu
aXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3Nl
cnZlci0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAg
IH0pOwogfQpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRB
bGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0g
a2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICAgICAgbV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwog
ICAgIH0pOwogfQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpn
ZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGtleVJhbmdl
RGF0YSA9IGtleVJhbmdlRGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJM
b2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJh
bmdlRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5m
bykKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGlu
Zm8uaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07
CiAgICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9
KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1
cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewog
ICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gZGF0YS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVy
LT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKTsKICAgICB9KTsKIH0KQEAgLTQwMSw3
ICs0MDEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAgICAgfSk7CiB9CkBAIC00MzcsNyAr
NDM3LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9j
a2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBA
IC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3QKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rp
b25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC00
NTMsNyArNDUzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGUKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCld
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+YWJvcnRPcGVu
QW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlv
bklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQp
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyID0gcmVx
dWVzdElkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNvbm5lY3Rpb25DbG9zZWRdIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwg
Y29ubmVjdGlvbkNsb3NlZCk7CiAgICAgfSk7CiB9CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9z
ZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJl
cXVlc3REYXRhKTsKICAgICB9KTsKIH0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcgogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBkaXNwYXRjaFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IG1f
Y29ubmVjdGlvblRvU2VydmVyLT5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmln
aW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGlkZW50aWZp
ZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pOwogICAgIH0pOwogfQpAQCAtNDkyLDcgKzQ5
Miw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIG1vZGlmaWNhdGlv
blRpbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG1vZGlmaWNhdGlvblRpbWVdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgICAgICBtX3NlcnZlci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1v
ZGlmaWNhdGlvblRpbWUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCA5MWI0ZjdhYzM0NjMzMTNlMTBlYTdmMzIy
YWU4ODdhOGU4NDRlNGViLi5mNmE2ZTk3NTdiNGFmY2FiODk4NGFiYTFmNTI4MGI3OThiOWFhNDc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNw
cApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJl
ZCgpCiAKICAgICBib29sIHBhcnRpYWxTeW5jID0gZmFsc2U7CiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3lu
Y0xvY2sgfTsKIAogICAgICAgICAvLyBEbyBub3Qgc2NoZWR1bGUgYW5vdGhlciBzeW5jIGlmIHdl
J3JlIHN0aWxsIHRyeWluZyB0byBjb21wbGV0ZSB0aGUKICAgICAgICAgLy8gcHJldmlvdXMgb25l
LiBCdXQsIGlmIHdlJ3JlIHNodXR0aW5nIGRvd24sIHNjaGVkdWxlIGl0IGFueXdheS4KQEAgLTQ2
OSw3ICs0NjksNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogICAgIGJv
b2wgY2xlYXJJdGVtczsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtczsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zeW5jTG9jayB9OwogCiAgICAgICAgIEFTU0VSVChtX3N5bmNTY2hlZHVsZWQp
OwogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5j
KCkKICAgICBzeW5jKGNsZWFySXRlbXMsIGl0ZW1zKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zeW5jTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N5bmNM
b2NrIH07CiAgICAgICAgIG1fc3luY0luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDQ5YTMz
MmUyMWE0ODU5OGRkNDU3NDczZDE1M2Y5YmVhZjA2ZWQwOWIuLjFkZThlNDY4ODFmY2MxMTNhNmJm
YmJlNDBhODlkYjRlNWY0MDY1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OmltcG9ydE9yaWdpbklkZW50aWZpZXJzKCkKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6Zmlu
aXNoZWRJbXBvcnRpbmdPcmlnaW5JZGVudGlmaWVycygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4
IH07CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGlu
Z09yaWdpbnMoKTsKIH0KQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpz
eW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAKICAgICAgICAgLy8g
RG9uJ3QgZm9yY2UgY3JlYXRpb24gb2YgU3RvcmFnZVRyYWNrZXIncyBkYiBqdXN0IGJlY2F1c2Ug
YSB0cmFja2VyCiAgICAgICAgIC8vIHdhcyBpbml0aWFsaXplZC4gSXQgd2lsbCBiZSBjcmVhdGVk
IGlmIGxvY2FsIHN0b3JhZ2UgZGJzIGFyZSBmb3VuZApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAgICAgICAgICAg
ICBpbnQgcmVzdWx0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrT3JpZ2lucyhtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAgICAg
ICAgICBMb2NrZXIgbG9ja09yaWdpbnMgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgICAg
ICAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQtPnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykK
ICAgICAgICAgICAgICAgICAgICAgbV9vcmlnaW5TZXQuYWRkKHN0YXRlbWVudC0+Y29sdW1uVGV4
dCgwKS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgICAgICB9CkBAIC0yMTMsMTAgKzIxMywxMCBA
QCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogICAg
IHN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCk7CiAgICAgCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY2xpZW50TXV0ZXggfTsKIAogICAgICAgICBpZiAobV9jbGllbnQpIHsKLSAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAgICAgICAgICAgIE9yaWdpblNldDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9vcmlnaW5TZXQuZW5kKCk7CiAgICAgICAgICAgICBmb3Ig
KE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29yaWdpblNldC5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5
T3JpZ2luKCppdCk7CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogCiAgICAgVmVjdG9yPFN0cmluZz4gZmls
ZU5hbWVzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgICAgICBm
aWxlTmFtZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBh
dGgpOwogICAgIH0KIApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5
bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICAvLyBkZWxldGlvbnMgZnJvbSBk
aXNrIGFuZCBmcm9tIG1fb3JpZ2luU2V0LgogICAgIE9yaWdpblNldCBvcmlnaW5TZXRDb3B5Owog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIGZvciAoT3Jp
Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2luU2V0LmJlZ2luKCksIGVuZCA9IG1f
b3JpZ2luU2V0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBvcmlnaW5TZXRD
b3B5LmFkZCgoKml0KS5pc29sYXRlZENvcHkoKSk7CiAgICAgfQpAQCAtMjg1LDcgKzI4NSw3IEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAKICAgICAgICAgaWYgKG1fb3JpZ2luU2V0LmNv
bnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcg
KzMwOSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJh
c2VNdXRleCB9OwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsKICAgICAKQEAgLTMy
OSwxMyArMzI5LDEzIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxz
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAnJXMnIGluIHRoZSB0cmFja2VyIiwgb3JpZ2lu
SWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmln
aW5TZXRNdXRleCB9OwogICAgICAgICBpZiAoIW1fb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbklk
ZW50aWZpZXIpKQogICAgICAgICAgICAgbV9vcmlnaW5TZXQuYWRkKG9yaWdpbklkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnRNdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudE11dGV4IH07CiAgICAgICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgVmVjdG9yPFNl
Y3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZVRyYWNrZXI6Om9yaWdpbnMoKQogICAgIGlmICghbV9p
c0FjdGl2ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
b3JpZ2luU2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07
CiAKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9vcmlnaW5TZXQuc2l6ZSgpKTsKQEAgLTM3Myw3ICszNzMs
NyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAgICAgICAg
d2lsbERlbGV0ZUFsbE9yaWdpbnMoKTsKICAgICAgICAgbV9vcmlnaW5TZXQuY2xlYXIoKTsKICAg
ICB9CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFs
bE9yaWdpbnMoKQogCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIg
dHJhbnNhY3Rpb25Db3VudGVyOwogICAgIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJh
c2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgIAog
ICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09w
ZW4oKSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRl
QWxsT3JpZ2lucygpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3RhdGVtZW50LT5j
b2x1bW5UZXh0KDEpKTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2NsaWVudE11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudE11
dGV4IH07CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKHN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CiAg
ICAgICAgIH0KQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAgU3RyaW5nIG9yaWdp
bklkID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIAogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIHdpbGxEZWxldGVPcmlnaW4ob3JpZ2lu
SWQpOwogICAgICAgICBtX29yaWdpblNldC5yZW1vdmUob3JpZ2luSWQpOwogICAgIH0KQEAgLTUw
MSw3ICs1MDEsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRl
eCB9OwogICAgIAogICAgIGlmICghY2FuRGVsZXRlT3JpZ2luKG9yaWdpbklkZW50aWZpZXIpKSB7
CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdGVkIHRvIGRlbGV0ZSBvcmlnaW4gJyVzJyB3aGls
ZSBpdCB3YXMgYmVpbmcgY3JlYXRlZFxuIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEo
KSk7CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAgICAgCiAgICAgYm9vbCBzaG91
bGREZWxldGVUcmFja2VyRmlsZXMgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmln
aW5TZXRNdXRleCB9OwogICAgICAgICBtX29yaWdpblNldC5yZW1vdmUob3JpZ2luSWRlbnRpZmll
cik7CiAgICAgICAgIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IG1fb3JpZ2luU2V0LmlzRW1w
dHkoKTsKICAgICB9CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y0RlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAgICAgfQogCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fY2xpZW50TXV0ZXggfTsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbklkZW50
aWZpZXIpOwogICAgIH0KQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjp3
aWxsRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIGJvb2wgU3Rv
cmFnZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9v
cmlnaW5TZXRNdXRleCB9OwogICAgIHJldHVybiBtX29yaWdpbnNCZWluZ0RlbGV0ZWQuY29udGFp
bnMob3JpZ2luSWRlbnRpZmllcik7CiB9CiAKQEAgLTU4OCw5ICs1ODgsOSBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpjYW5jZWxEZWxldGluZ09yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Rh
dGFiYXNlTXV0ZXggfTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2lu
U2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9Owog
ICAgICAgICBpZiAoIW1fb3JpZ2luc0JlaW5nRGVsZXRlZC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQucmVtb3ZlKG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0K
QEAgLTYzNCw3ICs2MzQsNyBAQCB1aW50NjRfdCBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogCiAgICAgU3RyaW5nIHBh
dGggPSBkYXRhYmFzZVBhdGhGb3JPcmlnaW4ob3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2NWRmOGUzNzJjMzQ4NTk3MWY1ZjVlZDI5MjAyYmY0
ZTA2ZDVkZTczLi4zMDEwYTZhODhiOTU3YzkwNzc5MTQ2ODg4YzY2ODkzYzRiNWQ3YjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zOTU3LDcgKzM5
NTcsNyBAQCAtICh2b2lkKV9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0
CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IG5ld1JlY3Q7CiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdE11dGV4IH07CiAgICAgICAgIGlmIChDR1JlY3RJc051bGwoX3ByaXZhdGUtPnBl
bmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIG5ld1JlY3QgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KF9wcml2YXRlLT5wZW5kaW5n
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3QpOwpAQCAtMzk3MSw3ICszOTcxLDcgQEAgLSAodm9pZClf
c3luY2hyb25pemVDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdAogLSAodm9pZClfc2V0Q3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RJbldlYlRocmVhZDooQ0dSZWN0KXJlY3Qgc3luY2hy
b25pemU6KEJPT0wpc3luY2hyb25pemUKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0TXV0ZXggfTsKICAgICAgICAgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0
UmVjdCA9IHJlY3Q7CiAgICAgfQogICAgIGlmICghc3luY2hyb25pemUpCkBAIC0zOTg1LDcgKzM5
ODUsNyBAQCAtICh2b2lkKV9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooQ0dSZWN0
KXJlY3QKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7CiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdGaXhl
ZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4IH07CiAgICAgICAgIF9wcml2YXRlLT5wZW5kaW5nRml4
ZWRQb3NpdGlvbkxheW91dFJlY3QgPSByZWN0OwogICAgIH0KICAgICBbc2VsZiBfc3luY2hyb25p
emVDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdF07CkBAIC0zOTkzLDcgKzM5OTMsNyBAQCAt
ICh2b2lkKV9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooQ0dSZWN0KXJlY3QKIAog
LSAoQk9PTClfZmV0Y2hDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooTlNSZWN0KilyZWN0
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgX3ByaXZhdGUtPnBlbmRpbmdG
aXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4IH07CiAgICAgaWYgKENHUmVjdElzTnVsbChfcHJp
dmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAppbmRleCA0ZWNjMzBkYzdlNzk2MTc5YTEw
MWRkMDM5MjYyNjQ3MTU3NTQ3OGUwLi4wOTI2NjZiZDU0ODRiODcxNDk5MTA3MmNlMjI0ZGQ1MmQw
ODUxYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcigpCiAKIHZv
aWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKE5QUCBucHAsIE1haW5U
aHJlYWRGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVNdXRleCB9
OwogCiAgICAgQ2FsbFF1ZXVlTWFwOjppdGVyYXRvciBpdCA9IG1fY2FsbFF1ZXVlTWFwLmZpbmQo
bnBwKTsKICAgICBpZiAoaXQgPT0gbV9jYWxsUXVldWVNYXAuZW5kKCkpCkBAIC02MCw3ICs2MCw3
IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKE5QUCBucHAs
IE1haW5UaHJlYWRGdW5jdGlvbiBmdW5jdGlvCiAKIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6cmVnaXN0ZXJQbHVnaW4oTlBQIG5wcCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9x
dWV1ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CiAKICAgICBB
U1NFUlQoIW1fY2FsbFF1ZXVlTWFwLmNvbnRhaW5zKG5wcCkpOwogICAgIG1fY2FsbFF1ZXVlTWFw
LnNldChucHAsIERlcXVlPENhbGw+KCkpOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI6OnJlZ2lzdGVyUGx1Z2luKE5QUCBucHApCiAKIHZvaWQgUGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlcjo6dW5yZWdpc3RlclBsdWdpbihOUFAgbnBwKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVl
TXV0ZXggfTsKIAogICAgIEFTU0VSVChtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHApKTsKICAg
ICBtX2NhbGxRdWV1ZU1hcC5yZW1vdmUobnBwKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQbHVn
aW5NYWluVGhyZWFkU2NoZWR1bGVyOjpkaXNwYXRjaENhbGxzRm9yUGx1Z2luKE5QUCBucHAsIGNv
bnN0IERlcXVlPENhbGwKICAgICBmb3IgKGF1dG8mIGNhbGwgOiBjYWxscykgewogICAgICAgICAv
LyBDaGVjayBpZiB0aGUgcGx1Zy1pbiBoYXMgYmVlbiBkZXN0cm95ZWQuCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcXVldWVNdXRleCB9OwogICAgICAgICAgICAgaWYgKCFtX2NhbGxRdWV1
ZU1hcC5jb250YWlucyhucHApKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBkZTEw
OWQxN2ZjOTRhYzhmNjVmNWYyYzk0YTRiNGNmZTc3YmU3YWUuLjQ1MGUwZmY5OTZmMGFhNjg1Nzcx
YWQwYTNhZTNkMmNhYTU0OTMwYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sK
KyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2Ug
dGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6RGV0ZXJtaW5pc3RpY1NjaGVkdWxlcjo6VGhyZWFkQ29udGV4dDo6d2FpdE15VHVy
bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJl
YWRDb250ZXh0Ojp5aWVsZFRvVGhyZWFkKToKKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgaG9sZExvY2soKSBpbiBXZWJL
aXQvV2ViS2l0TGVnYWN5L1Rvb2xzIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcg
dGhyZWFkIHNhZmV0eSBhbmFseXNpcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV29ya1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dv
cmtRdWV1ZS5jcHAKaW5kZXggNTZlMGEwNjJiM2QwYzhiYWRhYTEyZWQwNDk3YzE1ZDg4MTZjZWU1
ZS4uZWY5OTc1NzUyMmRkOWRhNjEwOWNkYjk1YzdlMzdhZTFmNGQzYTU2NiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRF
U1QoV1RGX1dvcmtRdWV1ZSwgU2ltcGxlKQogICAgIGludCBpbml0aWFsUmVmQ291bnQgPSBxdWV1
ZS0+cmVmQ291bnQoKTsKICAgICBFWFBFQ1RfRVEoMSwgaW5pdGlhbFJlZkNvdW50KTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBtX2Z1bmN0aW9uQ2Fs
bE9yZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOwogICAgICAgICBjYWxsZWRTaW1wbGVUZXN0
ID0gdHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCiAg
ICAgfSk7CiAKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZCh0aGlyZFRlc3RMYWJlbCk7CiAgICAg
ICAgIGNhbGxlZFRoaXJkVGVzdCA9IHRydWU7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBURVNUKFdU
Rl9Xb3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICBFWFBFQ1RfRVEoMVUsIHF1ZXVlMS0+cmVmQ291
bnQoKSk7CiAgICAgRVhQRUNUX0VRKDFVLCBxdWV1ZTItPnJlZkNvdW50KCkpOwogCi0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgcXVldWUxLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBtX2Z1bmN0aW9u
Q2FsbE9yZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFRF
U1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAgIHF1ZXVlMi0+ZGlzcGF0Y2goWyZdKHZv
aWQpIHsKICAgICAgICAgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKDUwbXMpOwogCi0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKIAogICAgICAgICAvLyBXaWxsIGZhaWwgaWYgcXVldWUyIHRvb2sgdGhlIG11dGV4
IGJlZm9yZSBxdWV1ZTEuCiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7CkBA
IC0xMzUsNyArMTM1LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgfSk7
CiAKICAgICBxdWV1ZTEtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAg
ICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQodGhpcmRUZXN0TGFiZWwpOwogICAgICAgICBj
YWxsZWRUaGlyZFRlc3QgPSB0cnVlOwogICAgICAgICAKQEAgLTE3MSwxNyArMTcxLDE3IEBAIFRF
U1QoV1RGX1dvcmtRdWV1ZSwgRGlzcGF0Y2hBZnRlcikKIAogICAgIGF1dG8gcXVldWUgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5UZXN0LmRpc3BhdGNoQWZ0ZXIiKTsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogCiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAg
ICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKICAgICAg
ICAgY2FsbGVkU2ltcGxlVGVzdCA9IHRydWU7CiAgICAgICAgIG1fdGVzdENvbXBsZXRlZC5ub3Rp
ZnlPbmUoKTsKICAgICB9KTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaEFmdGVyKDUwMF9tcywgWyZd
KHZvaWQpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVu
ZChkaXNwYXRjaEFmdGVyTGFiZWwpOwogICAgICAgICBjYWxsZWREaXNwYXRjaEFmdGVyVGVzdCA9
IHRydWU7CiAgICAgICAgIG1fZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0ZWQubm90aWZ5T25lKCk7
CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBURVNUKFdURl9Xb3JrUXVldWUsIERlc3Ryb3lPblNlbGYp
CiAgICAgYm9vbCBjb21wbGV0ZWQgPSBmYWxzZTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAg
IHsKICAgICAgICAgICAgIGF1dG8gcXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5UZXN0LmRpc3BhdGNoQWZ0ZXIiKTsKICAgICAgICAgICAgIHF1ZXVlLT5kaXNwYXRj
aEFmdGVyKDUwMF9tcywgWyZdKHZvaWQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihsb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAg
ICAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJUZXN0U3RhcnRlZC53YWl0KGxvY2ssIFsmXSB7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGFydGVkOwogICAgICAgICAgICAgICAgIH0pOwpA
QCAtMjI3LDcgKzIyNyw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgRGVzdHJveU9uU2VsZikKICAg
ICAgICAgZGlzcGF0Y2hBZnRlclRlc3RTdGFydGVkLm5vdGlmeU9uZSgpOwogICAgIH0KICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbG9jayB9OwogICAgICAgICBkaXNwYXRjaEFmdGVyVGVzdENvbXBsZXRlZC53YWl0KGxvY2ss
IFsmXSB7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGVkOwogICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdMaWIuY3Bw
CmluZGV4IDk5MjNkNjU4MDBlZDcxNGJhNjgwNmIxM2Y3ZTUxZmVlNTgwMzVhZDAuLjA3YTJhY2Qy
N2Q4YWZmMmY0NzI0OWFiZTNhMDM3NGVjNjEwZTU3OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtNTEsNyArNTEs
NyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBj
dXJyZW50RGlyZWN0b3J5KGdfZ2V0X2N1cnJlbnRfZGlyKCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChjdXJyZW50RGlyZWN0b3J5Lmdl
dCgpKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihjb250ZXh0Lm1fbG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IGNvbnRleHQubV9sb2NrIH07CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2
b2lkKSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVm
YXVsdCgpKTsKICAgICAgICAgRVhQRUNUX1RSVUUoZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9k
ZWZhdWx0KCkgIT0gY29udGV4dC5tX21haW5Db250ZXh0KTsKQEAgLTU5LDcgKzU5LDcgQEAgVEVT
VChXVEZfV29ya1F1ZXVlLCBBc3luY0lPKQogICAgICAgICBnX2ZpbGVfcXVlcnlfaW5mb19hc3lu
YyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIEdfRklMRV9RVUVS
WV9JTkZPX05PTkUsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwKICAgICAgICAgICAgIFtd
KEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICAg
ICAgICAgIFRlc3RpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8VGVzdGluZ0NvbnRl
eHQqPih1c2VyRGF0YSk7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoY29udGV4
dC0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC0+bV9s
b2NrIH07CiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGdfbWFpbl9jb250ZXh0X2dldF90aHJl
YWRfZGVmYXVsdCgpLCBjb250ZXh0LT5tX21haW5Db250ZXh0KTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5tX3Rlc3RDb21wbGV0ZWQubm90aWZ5T25lKCk7CiAgICAgICAgICAgICB9LCAmY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJv
cnRhYmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9B
Ym9ydGFibGVUYXNrUXVldWUuY3BwCmluZGV4IDdiNTYzZDM2YjUyZjcyM2M4NGU3N2IxOWVlMDJi
YzAzNjg0NWI5MWIuLjExNDc5MWIzNmFhOTVmZGMxODZkYWI1NmQwOGUxMjlmNTRlNTU2YTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNr
UXVldWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFi
bGVUYXNrUXVldWUuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZv
aWQgd2FpdE15VHVybigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayht
X3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NjaGVk
dWxlci5tX211dGV4IH07CiAgICAgICAgICAgICBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWRD
aGFuZ2VkLndhaXQobV9zY2hlZHVsZXIubV9tdXRleCwgW3RoaXNdKCkgewogICAgICAgICAgICAg
ICAgIHJldHVybiBtX3NjaGVkdWxlci5tX2N1cnJlbnRUaHJlYWQgPT0gbV90aGlzVGhyZWFkOwog
ICAgICAgICAgICAgfSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZv
aWQgeWllbGRUb1RocmVhZChUaHJlYWRFbnVtIG5leHRUaHJlYWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NjaGVkdWxlci5tX211dGV4KTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3NjaGVkdWxlci5tX211dGV4IH07CiAgICAgICAgICAgICBtX3Nj
aGVkdWxlci5tX2N1cnJlbnRUaHJlYWQgPSBuZXh0VGhyZWFkOwogICAgICAgICAgICAgbV9zY2hl
ZHVsZXIubV9jdXJyZW50VGhyZWFkQ2hhbmdlZC5ub3RpZnlBbGwoKTsKICAgICAgICAgfQo=
</data>
<flag name="commit-queue"
          id="450603"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429412</attachid>
            <date>2021-05-22 08:30:15 -0700</date>
            <delta_ts>2021-05-22 09:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226133-20210522083014.patch</filename>
            <type>text/plain</type>
            <size>284253</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Njc3N2YzZDM2MTI5NjUxYjRhZGM1MjM5OWVlYWIxODBiNWMxYzdmLi44ZjY3MTE3MDhhODUyMGY5
MDcyMjIzNDExNThhODk2NDgzZjU5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjIgQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
MzMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNl
IExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9ydGVy
IGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBlYXNp
bHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3IgTG9j
a2VyPFQ+LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2YXRl
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRl
UHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChoYW5kZXJGb3JTdHJ1Y3RUYWcpOgor
ICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmNwcDoKKyAgICAgICAgKHRlc3RDQVBJVmlhQ3Bw
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjpydW4p
OgorICAgICAgICAqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMS5j
cHA6CisgICAgICAgIChydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2Fj
aGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToKKyAg
ICAgICAgKEpTQzo6RGlyZWN0RXZhbENvZGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpE
aXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N1cGVyU2FtcGxlci5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTdXBlclNhbXBs
ZXIpOgorICAgICAgICAoSlNDOjpyZXNldFN1cGVyU2FtcGxlclN0YXRlKToKKyAgICAgICAgKEpT
Qzo6cHJpbnRTdXBlclNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChKU0M6OmVuYWJsZVN1cGVyU2Ft
cGxlcik6CisgICAgICAgIChKU0M6OmRpc2FibGVTdXBlclNhbXBsZXIpOgorICAgICAgICAqIGRm
Zy9ERkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjppbnZh
bGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjp+Q29tbW9uRGF0YSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6aW5zdGFsbFZNVHJhcEJyZWFrcG9pbnRzKToK
KyAgICAgICAgKEpTQzo6REZHOjpjb2RlQmxvY2tGb3JWTVRyYXBQQyk6CisgICAgICAgICogZGZn
L0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNsZWFuTXVzdEhhbmRsZVZh
bHVlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorICAgICAgICAoSlNDOjpERkc6Oldv
cmtsaXN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6Omlz
QWN0aXZlRm9yVk0gY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1ZXVl
KToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFkeSk6
CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFsbFJlYWR5UGxhbnNGb3JWTSk6
CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZN
KToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAgIChK
U0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZU5vbkNvbXBpbGluZ1BsYW5zRm9yVk0pOgorICAgICAg
ICAoSlNDOjpERkc6OldvcmtsaXN0OjpxdWV1ZUxlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6
V29ya2xpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpzZXRO
dW1iZXJPZlRocmVhZHMpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyk6CisgICAg
ICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9CbG9j
a0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayk6
CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9ja1NldDo6aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAgICogaGVhcC9D
b25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjph
ZGQpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXAp
OgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkJlZ2luUGhh
c2UpOgorICAgICAgICAoSlNDOjpIZWFwOjp3YWl0Rm9yQ29sbGVjdG9yKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpub3RpZnlJ
c1NhZmVUb0NvbGxlY3QpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpTbG90VmlzaXRvcjo6ZGlkUmVhY2hUZXJtaW5hdGlvbik6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRyYWNr
aW5nQ29tcGxldGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZyk6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c3RvcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlVGFyZ2V0UXVldWVUYXNrT25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldCk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2YXRl
UnVuTG9vcCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVB
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdGFydCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29vbik6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1l
c3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJv
eHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6
ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90
ZUluc3BlY3RvckdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbm5l
Y3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5n
c1Nvb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdl
VG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
R2V0VGFyZ2V0TGlzdE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NTb29uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
c2V0dXBJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OmZyb250ZW5kRGlkQ2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yOjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlzdGVu
aW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6
OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlkYXRlQ2xpZW50KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVMaXN0
ZW5lcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
OjpnZXRQb3J0IGNvbnN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJZkVu
YWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjpDTG9vcFN0YWNrOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChKU0M6
OkNMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgICogaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpkdW1wSklUTWVtb3J5KToKKyAgICAgICAg
KiBqaXQvSUNTdGF0cy5jcHA6CisgICAgICAgIChKU0M6OklDU3RhdHM6OklDU3RhdHMpOgorICAg
ICAgICAoSlNDOjpJQ1N0YXRzOjp+SUNTdGF0cyk6CisgICAgICAgICogaml0L0pJVFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6ZXhpc3RpbmdDVElTdHViKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlT
bG93UGF0aEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAgICAg
IChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjppc0ZpbmlzaGVkQ29tcGlsaW5nKToKKyAgICAgICAg
KEpTQzo6SklUV29ya2xpc3Q6OkpJVFdvcmtsaXN0KToKKyAgICAgICAgKEpTQzo6SklUV29ya2xp
c3Q6OmNvbXBsZXRlQWxsRm9yVk0pOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6cG9sbCk6
CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIpOgorICAgICAgICAoSlND
OjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldElEKToKKyAgICAg
ICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmls
ZXI6OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAgICAgICAoSlNDOjpQcm9maWxl
cjo6RGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6
OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbik6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRh
YmFzZTo6bG9nRXZlbnQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFkZERh
dGFiYXNlVG9BdEV4aXQpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OnJlbW92
ZURhdGFiYXNlRnJvbUF0RXhpdCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpEYXRhYmFzZTo6
cmVtb3ZlRmlyc3RBdEV4aXREYXRhYmFzZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJV
SUQuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6VUlEOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdv
cmtUaW1lcjo6c2NoZWR1bGVXb3JrU29vbik6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1Rp
bWVyOjpkaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcik6CisgICAgICAgICogcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6dGlt
ZXJMb29wKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6c2h1dGRvd24pOgorICAg
ICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpzdGFydCk6CisgICAgICAgIChKU0M6OlNhbXBs
aW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZCk6Cisg
ICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUpTTG9ja0FjcXVpc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6bm90aWNlVk1FbnRyeSk6CisgICAgICAg
IChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KToKKyAgICAg
ICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnN0YXJ0
VGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6d2lsbERlc3Ryb3lWTSk6CisgICAgICAg
ICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6aXNW
YWxpZEV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21F
bnRyeVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OlRocmVhZENvdW50
SG9sZGVyOjpUaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgIChKU0M6Oldhc206OkVudHJ5UGxh
bjo6VGhyZWFkQ291bnRIb2xkZXI6On5UaHJlYWRDb3VudEhvbGRlcik6CisgICAgICAgICogd2Fz
bS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46OndvcmspOgor
ICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjph
ZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OndhaXRGb3JDb21w
bGV0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENh
bmNlbElmTGFzdCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUZvcik6CisgICAgICAg
IChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKToKKyAgICAgICAg
KiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0Ojpl
bnF1ZXVlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmNvbXBsZXRlUGxhblN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6c3RvcEFsbFBsYW5zRm9y
Q29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6CisgICAg
ICAgIChKU0M6Oldhc206OldvcmtsaXN0Ojp+V29ya2xpc3QpOgorCiAyMDIxLTA1LTIyICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3NzkxMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMGQwNDI0MzQxOTRjMGRkMTdlOGVlOGRlYzMwZDBk
YTI4MzY3MWY2YS4uYTc2MmVlOTMzYTgyMTQyNzA0ZTdjNGQ3NmI2ZDVkZDFhYWY0ZmU1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2
YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJl
cGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNo
b3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3Jl
IGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZv
ciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOgor
ICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0
aWNUaHJlYWQ6On5BdXRvbWF0aWNUaHJlYWQpOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJl
YWQ6OmpvaW4pOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAg
ICAgKiB3dGYvQXV0b21hdGljVGhyZWFkLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3Iu
Y3BwOgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmspOgorICAgICAg
ICAoV1RGOjpNZXRhQWxsb2NhdG9yOjphZGRGcmVzaEZyZWVTcGFjZSk6CisgICAgICAgIChXVEY6
Ok1ldGFBbGxvY2F0b3I6OmRlYnVnRnJlZVNwYWNlU2l6ZSk6CisgICAgICAgICogd3RmL1BhcmFs
bGVsSGVscGVyUG9vbC5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpQ
YXJhbGxlbEhlbHBlckNsaWVudCk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50
Ojp+UGFyYWxsZWxIZWxwZXJDbGllbnQpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNs
aWVudDo6c2V0VGFzayk6CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpmaW5p
c2gpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEhlbHBlckNsaWVudDo6ZG9Tb21lSGVscGluZyk6
CisgICAgICAgIChXVEY6OlBhcmFsbGVsSGVscGVyQ2xpZW50OjpydW5UYXNrKToKKyAgICAgICAg
KFdURjo6UGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKToKKyAgICAgICAg
KFdURjo6UGFyYWxsZWxIZWxwZXJQb29sOjplbnN1cmVUaHJlYWRzKToKKyAgICAgICAgKFdURjo6
UGFyYWxsZWxIZWxwZXJQb29sOjpkb1NvbWVIZWxwaW5nKToKKyAgICAgICAgKiB3dGYvU2Vjb25k
cy5jcHA6CisgICAgICAgIChXVEY6OnNsZWVwKToKKyAgICAgICAgKiB3dGYvVGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6c2xlZXApOgorICAgICAgICAqIHd0Zi9X
b3JrZXJQb29sLmNwcDoKKyAgICAgICAgKFdURjo6V29ya2VyUG9vbDo6V29ya2VyUG9vbCk6Cisg
ICAgICAgIChXVEY6OldvcmtlclBvb2w6On5Xb3JrZXJQb29sKToKKyAgICAgICAgKFdURjo6V29y
a2VyUG9vbDo6cG9zdFRhc2spOgorICAgICAgICAqIHd0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6cmVzdW1lKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpnZXRSZWdpc3RlcnMpOgorICAgICAg
ICAqIHd0Zi93aW4vRGJnSGVscGVyV2luLmNwcDoKKyAgICAgICAgKFdURjo6RGJnSGVscGVyOjpT
eW1Gcm9tQWRkcmVzcyk6CisgICAgICAgICogd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwOgorICAg
ICAgICAoV1RGOjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnJlc3Vt
ZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKToKKwogMjAyMS0wNS0yMiAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFhYmQyZjMwMjE4MjJjYmIw
OTlmNmUxMjhmOTVkYTEwMGUwYmJkYy4uMTk4YWQ5YjhiMjg5M2ZiZGI3MDRlNTdhNzMzNTRmYThk
MDM5MjdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MSBAQAorMjAyMS0wNS0yMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3
aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2Nh
bCB2YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFsbG93cyBzd2l0Y2hpbmcgdGhlIGxv
Y2sKKyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0aGUgY29tcGlsZXIgd2l0aCBkZWR1
Y2UgdGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVk
aW9EZWNvZGVyOjpBc3luY0F1ZGlvRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1
ZGlvRGVjb2Rlcjo6cnVuTG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVj
b3JkRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZUNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFz
UGVuZGluZ0RhdGFiYXNlQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpyZXRyeUNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRh
dGFiYXNlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZXRhaWxz
Rm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNl
dERhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRv
bmVDcmVhdGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
b3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxv
Y2tGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpxdW90YSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1FMQ2FsbGJhY2tXcmFwcGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFj
a1dyYXBwZXI6OnVud3JhcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0
YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5k
bGVDbG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Z2V0
TmV4dFN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5k
Ojpkb0NsZWFudXApOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjpmb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6cm9vdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEZvY3Vz
ZWROb2RlSUQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAo
U2Nyb2xsaW5nVHJlZU1hYzo6c2Nyb2xsaW5nTm9kZUZvclBvaW50KToKKyAgICAgICAgKFNjcm9s
bGluZ1RyZWVNYWM6OmV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5n
QnVmZmVyU3RvcmFnZVZlY3Rvcjo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXApOgorICAg
ICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAg
KC1bV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgc2V0RXhwZWN0ZWRD
b250ZW50U2l6ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9h
ZGVyRGVsZWdhdGUgdXBkYXRlRGF0YTpjb21wbGV0ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNo
YXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlU2hh
cmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpkaWRDYW5jZWxM
b2FkaW5nUmVxdWVzdDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6
OnNldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Omhh
bmRsZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9t
UHJvdGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdz
Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHA6CisgICAgICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OnN0
YXJ0KToKKyAgICAgICAgKFZpZGVvUmVuZGVyUmVxdWVzdFNjaGVkdWxlcjo6c3RvcCk6CisgICAg
ICAgIChWaWRlb1JlbmRlclJlcXVlc3RTY2hlZHVsZXI6OmRyYWluKToKKyAgICAgICAgKFZpZGVv
UmVuZGVyUmVxdWVzdFNjaGVkdWxlcjo6cmVxdWVzdFJlbmRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAoc2lu
a0V2ZW50SGFuZGxlcik6CisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNy
eXB0SXNGbHVzaGluZyk6CisgICAgICAgIChzZXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6
QnVmZmVyOjpiZWdpblBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OkJ1ZmZlcjo6Y29tcGxl
dGVQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpCdWZmZXI6OndhaXRVbnRpbFBhaW50aW5n
Q29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBs
YXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OlBsYXRmb3JtTGF5ZXI6OnNldFNjZW5l
SW50ZWdyYXRpb24pOgorICAgICAgICAoTmljb3NpYTo6UGxhdGZvcm1MYXllcjo6Y3JlYXRlVXBk
YXRlU2NvcGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6dXBkYXRlU3Rh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6Zmx1c2hTdGF0ZSk6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpjb21taXRTdGF0ZSk6CisgICAgICAg
IChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjphY2Nlc3NQZW5kaW5nKToKKyAgICAgICAgKE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmFjY2Vzc0NvbW1pdHRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaDoKKyAgICAgICAgKE5pY29zaWE6
OlNjZW5lOjphY2Nlc3NTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUlu
dGVncmF0aW9uOjpzZXRDbGllbnQpOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlv
bjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpyZXF1
ZXN0VXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3Np
YTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmZsdXNoVXBkYXRlKToKKyAgICAgICAg
KE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCk6CisgICAg
ICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6aW52YWxpZGF0ZUNs
aWVudCk6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6
Zmx1c2hVcGRhdGUpOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hV
cGRhdGUpOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6
OnRha2VVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDR0xQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246Om5hdHVyYWxTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpzZXROYXR1cmFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Okludm9rZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkFzeW5jQ2FsbGJhY2s6Om9uTWVk
aWFQbGF5ZXJEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZp
ZGVvUHJlc2VudGVyOjpPbkNsb2NrU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUGF1
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1Jlc3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRl
cjo6T25DbG9ja1NldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6UHJvY2Vzc01lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0
b21WaWRlb1ByZXNlbnRlcjo6R2V0Q3VycmVudE1lZGlhVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpJbml0U2VydmljZVBvaW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlJlbGVhc2VTZXJ2aWNl
UG9pbnRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6R2V0VmlkZW9XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9Qb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVz
ZW50ZXI6OlJlcGFpbnRWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6Z2V0U2FtcGxlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQ
b29sOjpyZXR1cm5TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OmFyZVNhbXBsZXNQZW5kaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9T
YW1wbGVQb29sOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVy
OjpzdG9wU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlU2FtcGxlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVs
ZXI6OnByb2Nlc3NTYW1wbGVzSW5RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2FtcGxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Vmlk
ZW9TY2hlZHVsZXI6OnNjaGVkdWxlclRocmVhZFByb2NQcml2YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6
OnNldFZpZGVvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnNldERlc3RpbmF0aW9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVj
dDNEUHJlc2VudGVyOjpjcmVhdGVWaWRlb1NhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y2hlY2tE
ZXZpY2VTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpwcmVzZW50U2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50
ZXI6OnBhaW50Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNyZWF0ZUQzRERldmljZSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29k
ZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGVzT3BhcXVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZG9MYXlvdXRUaWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3cpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vd0ZvclJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldENvbnRlbnRSZXBsYWNlbWVudEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Y29udGVudFJlcGxhY2VtZW50SW1hZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25U
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6dXBkYXRl
VGlsaW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGlu
Z01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkb1BlbmRpbmdSZXBh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNw
bGF5UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9E
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OmFkZExheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnRha2VMYXllcldpdGhTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnNldENhcGFjaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVRpbGVMYXllclBvb2w6OmRyYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2Fr
L1dBS1dpbmRvdy5tbToKKyAgICAgICAgKC1bV0FLV2luZG93IHNldEV4cG9zZWRTY3JvbGxWaWV3
UmVjdDpdKToKKyAgICAgICAgKC1bV0FLV2luZG93IGV4cG9zZWRTY3JvbGxWaWV3UmVjdF0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1
bldlYlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldl
YlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VM
aWJXZWJSVEM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1bGxBdWRpb0RhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtRmluYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVl
c3Q6OnNldFJlcXVlc3RQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNl
dENhbGxiYWNrUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpwYXVzZWRT
dGF0dXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjplbmFibGVEb3du
bG9hZFRvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRl
ZEZpbGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2xv
c2VEb3dubG9hZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmNsZWFudXBE
b3dubG9hZEZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmFsbG93QW55SFRUUFND
ZXJ0aWZpY2F0ZXNGb3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTU0xIYW5kbGU6OmNh
bklnbm9yZUFueUhUVFBTQ2VydGlmaWNhdGVzRm9ySG9zdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsU1NMSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6Om1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpz
ZXRNYXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cGFnZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0
ZXApOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXggMSBpcyAxLjAwMDAw
MCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4wMDAwMDAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggY2U3YjliMzgwODZiMzM1YWMxZjUyZWMzOTc3ZTEzNmNiYmRhNGMxMC4uZTIwZjQ0MjRi
MmMwY2QyMjgxYTVlNmViYjdiZjkyODhmOTJlYWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBA
QAorMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRl
ciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMuIEl0IGlzIHNob3J0ZXIgYW5kIGl0IGFs
bG93cyBzd2l0Y2hpbmcgdGhlIGxvY2sKKyAgICAgICAgdHlwZSBtb3JlIGVhc2lseSBzaW5jZSB0
aGUgY29tcGlsZXIgd2l0aCBkZWR1Y2UgdGhlIGxvY2sgdHlwZSBUIGZvciBMb2NrZXI8VD4uCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bV9jbG9zZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyOjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjbG9z
ZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphYm9ydFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjb21taXRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxl
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRSZWNvcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJz
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5k
aW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWJvcnRPcGVuQW5k
VXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6b3BlbkRC
UmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW1vdmVD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpjbG9zZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRlU2l6ZUZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVhZFNpemVGaWxlKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2spOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnlPbkJhY2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2dsaWIv
RE5TQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpETlNDYWNoZTo6bG9va3VwKToKKyAgICAg
ICAgKFdlYktpdDo6RE5TQ2FjaGU6OnVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkROU0NhY2hl
OjpyZW1vdmVFeHBpcmVkUmVzcG9uc2VzRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpETlNDYWNo
ZTo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21w
b3NpdGluZ1J1bkxvb3A6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1
bkxvb3A6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6c2No
ZWR1bGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnN0b3BV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9kaXNw
bGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6
OnNldFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpz
ZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6
c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpy
ZW5kZXJMYXllclRyZWUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnNj
ZW5lVXBkYXRlRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6
OnVwZGF0ZVNjZW5lU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnBvcHVsYXRlUGFnZVVS
TFRvSWNvblVSTE1hcCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6Y2xlYXJMb2Fk
ZWRJY29uc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNoZWNr
SWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRh
YmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
OjppY29uVVJMRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6c2V0
SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNsZWFyKToK
KwogMjAyMS0wNS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CmluZGV4IDJlY2FkM2JmY2RjYmM5YWNiZTE1MTM1MTQ5NDJjMWI5NGZmNGFmZmMuLjczNmNlN2Iz
MzNlYjJmZmUxMzE0NzkxMGQ0ZWQ4NDY2MmQ0MTM4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFy
aWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzLiBJdCBpcyBzaG9y
dGVyIGFuZCBpdCBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBsb2NrCisgICAgICAgIHR5cGUgbW9yZSBl
YXNpbHkgc2luY2UgdGhlIGNvbXBpbGVyIHdpdGggZGVkdWNlIHRoZSBsb2NrIHR5cGUgVCBmb3Ig
TG9ja2VyPFQ+LgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRU
cmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxl
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpyZW5hbWVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRk
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVj
b3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJv
Y2Vzc0lEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6
CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYVN5bmM6OnN5bmNUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFTeW5jOjpwZXJmb3JtU3luYyk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9y
dGluZ09yaWdpbklkZW50aWZpZXJzKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6
OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tl
cjo6ZGVsZXRlQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpz
eW5jRGVsZXRlQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpk
ZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0
ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpjYW5EZWxldGVPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6Y2FuY2VsRGVsZXRpbmdPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2lu
KToKKwogMjAyMS0wNS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNmI1MjQ4MzViNzQ4ZDY4NGZhMjg2Y2ExZWQ4OWZhMjUyODkzYzMx
Yy4uYmQxNTE4ZjkxZTA3YWU3ZGUwN2MzNGM2Y2Q5OGJkZjc1YmNhMzY3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGgg
TG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZh
cmlhYmxlcy4gSXQgaXMgc2hvcnRlciBhbmQgaXQgYWxsb3dzIHN3aXRjaGluZyB0aGUgbG9jawor
ICAgICAgICB0eXBlIG1vcmUgZWFzaWx5IHNpbmNlIHRoZSBjb21waWxlciB3aXRoIGRlZHVjZSB0
aGUgbG9jayB0eXBlIFQgZm9yIExvY2tlcjxUPi4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc3luY2hyb25pemVDdXN0b21GaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRDdXN0b21GaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdEluV2ViVGhyZWFkOnN5bmNocm9uaXplOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBfZmV0Y2hDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDpdKToKKwogMjAyMS0wNS0yMiAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
ZjFlNjI4OWI5MDJjMzJhY2RiNjZhN2YyOWNlYTUzMGU5MjUxYzQ4Yy4uNzBhMjE1YjM1NWM1NmUw
NzhlN2Y1YWRhMDJjZGI3YmYxOGM5YjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZh
cmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVw
bGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcy4gSXQgaXMgc2hv
cnRlciBhbmQgaXQgYWxsb3dzIHN3aXRjaGluZyB0aGUgbG9jaworICAgICAgICB0eXBlIG1vcmUg
ZWFzaWx5IHNpbmNlIHRoZSBjb21waWxlciB3aXRoIGRlZHVjZSB0aGUgbG9jayB0eXBlIFQgZm9y
IExvY2tlcjxUPi4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hl
ZHVsZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6
cmVnaXN0ZXJQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6dW5yZWdpc3RlclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyOjpkaXNwYXRjaENhbGxzRm9yUGx1Z2luKToKKwogMjAyMS0wNS0yMiAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNzc5MTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCmluZGV4IDNkMjg1ZjNkMjI1NjJlYzA2MjljZDM2OWFhOTEwNGFmMjFlY2I5
MzIuLmIzNDMzZGUwZTIyMWRjZjEzYjQ1ZGFhOTdhZWIxZTQ5YjNlZmQ4ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC05NSwyMSArOTUsMjEg
QEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7CiAgICAgICAgICAgICBtX3Byb3BlcnR5TWFwLmFk
ZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuaXRlcmF0b3ItPnZhbHVlLnNldCh2bSwgb3du
ZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBkZWxldGVQcml2
YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgbV9wcm9wZXJ0eU1hcC5yZW1vdmUocHJv
cGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oVmlzaXRvciYgdmlzaXRvcikK
ICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGZvciAoYXV0byYg
cGFpciA6IG1fcHJvcGVydHlNYXApIHsKICAgICAgICAgICAgICAgICBpZiAocGFpci52YWx1ZSkK
ICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocGFpci52YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggYWMwOWY2NTQ1MDdjM2RiZDQ5NjBmZDY3MTMz
MmJiM2YxMWY5MDYyNS4uMjFmOTE5MDY3MTFkZjY0YWY4Yzc1YjI5MjM2ZTU3ODg5MTcyNzY1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMTIwOSw3ICsxMjA5LDcgQEAg
c3RhdGljIFN0cnVjdEhhbmRsZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKIHN0YXRpYyBT
dHJ1Y3RUYWdIYW5kbGVyKiBoYW5kZXJGb3JTdHJ1Y3RUYWcoY29uc3QgY2hhciogZW5jb2RlZFR5
cGUpCiB7CiAgICAgc3RhdGljIExvY2sgaGFuZGVyRm9yU3RydWN0VGFnTG9jazsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tIb2xkZXIoJmhhbmRlckZvclN0cnVjdFRhZ0xvY2spOworICAgIExvY2tlciBs
b2NrSG9sZGVyIHsgaGFuZGVyRm9yU3RydWN0VGFnTG9jayB9OwogCiAgICAgc3RhdGljIFN0cnVj
dEhhbmRsZXJzKiBzdHJ1Y3RIYW5kbGVycyA9IGNyZWF0ZVN0cnVjdEhhbmRsZXJNYXAoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAKaW5kZXggOGMxOWY1
M2Q0YjY0NDliMjZiMTc5MjI2ZTI0NWZlOWY3NjNkODA3Ni4uNWQ3NTMzNTAwNTQyNjg4MmE2Njdm
ZTUxN2U0ZTI2NDFmMTMzZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgaW50IHRlc3RDQVBJVmlhQ3BwKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoVGVzdEFQSSYpPj4gdGFzazsKICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9Owog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgPSB0
YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggYjFiMjY4M2ViYjEzNjRiZGU5Yzc2ZGZiNDg5Y2MwZTdlYmRhZDQxMS4u
MTkxZDE4MjkzNWFjMWE2ZTZmMGI1MGI3YTMxM2JkOTg4N2FkYTQyMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTI3MjQsNyArMjcyNCw3IEBA
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgICAgICAgICAgICAgZm9yICg7
OykgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4g
dGFzazsKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrID0gdGFza3MudGFrZUZpcnN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCBlNWM4NjIyZDQ1
MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzLi5iZTRkYmY5Mzg4NDdlNTgxMDk1NmQ2ZWZl
MTM4MWMwMTQxNGVkYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIGxvYWRDb25zdGFudEltcGwoQmFzaWNCbG9jayog
YmxvY2ssIFQgdmFsdWUsIEIzOjpBaXI6Ok9wY29kZSBtb3ZlLCBUbXAgdG1wLAogICAgIHN0YXRp
YyBMb2NrIGxvY2s7CiAgICAgc3RhdGljIFN0ZE1hcDxULCBUKj4qIG1hcDsgLy8gSSdtIG5vdCBt
ZXNzaW5nIHdpdGggSGFzaE1hcCdzIHByb2JsZW1zIHdpdGggaW50ZWdlcnMuCiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgIGlm
ICghbWFwKQogICAgICAgICBtYXAgPSBuZXcgU3RkTWFwPFQsIFQqPigpOwogCkBAIC0yNDY5LDcg
KzI0NjksNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQoKT4+IHRhc2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayA9IHRhc2tzLnRh
a2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18x
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKaW5kZXggZTUyZTZk
YWJjMzM0M2RiYTE0MTYyNDU0ZThmY2E4Njc0NmYzYzA3NC4uMmJlODgzMjg2MWZkMGQ1YTY1MDMz
MjlkM2EzZTdiOWNkZjNiN2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18xLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3Bw
CkBAIC04NjcsNyArODY3LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAg
ICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkVGFzazx2b2lkKCk+PiB0YXNrOwogICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGxvY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sg
PSB0YXNrcy50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAppbmRleCA5NGNiYzIzYTY2OTAxZDUxYTg5
Yzg3ZGNkNGYwY2QxM2RjOWJlNWRkLi4wYTg4YTZjOGE1MGViYzk4MDlmZTY3MjgyYzViNzAyMGQ3
YWIwZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0
RXZhbENvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rp
cmVjdEV2YWxDb2RlQ2FjaGUuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAgdm9pZCBEaXJlY3RFdmFs
Q29kZUNhY2hlOjpzZXRTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3duZXIsIGMKICAgICBpZiAoIWV2YWxFeGVjdXRhYmxlLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX2NhY2hlTWFwLnNldChDYWNoZUtleShl
dmFsU291cmNlLCBjYWxsU2l0ZUluZGV4KSwgV3JpdGVCYXJyaWVyPERpcmVjdEV2YWxFeGVjdXRh
YmxlPihnbG9iYWxPYmplY3QtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOwogfQogCiB2
b2lkIERpcmVjdEV2YWxDb2RlQ2FjaGU6OmNsZWFyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX2NhY2hlTWFw
LmNsZWFyKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIERpcmVjdEV2
YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9jYWNoZU1hcC5lbmQoKTsKICAg
ICBmb3IgKEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgcHRyID0gbV9jYWNoZU1hcC5iZWdpbigpOyBw
dHIgIT0gZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyLT52YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCmluZGV4
IGMzYTVjNDJhZDIxZjY5NDkxN2E0YjUwMzNmNTM2NjY4YTIzZjliOWQuLmE0MjY0MGYyODYzMjY5
NzI3OWRjNDlhM2NlNTFlZmMzOWVjMWEzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgaW5pdGlh
bGl6ZVN1cGVyU2FtcGxlcigpCiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBtcyArPSBzbGVlcFF1YW50
dW0pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdfc3VwZXJTYW1wbGVyRW5hYmxlZCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGdfc3VwZXJTYW1wbGVyQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4rKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTcwLDcgKzcwLDcg
QEAgdm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCkKIAogdm9pZCByZXNldFN1cGVyU2FtcGxl
clN0YXRlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbG9jayB9OwogICAgIGluID0gMDsKICAgICBvdXQgPSAwOwogfQpAQCAtODAsNyArODAs
NyBAQCB2b2lkIHByaW50U3VwZXJTYW1wbGVyU3RhdGUoKQogICAgIGlmICghT3B0aW9uczo6dXNl
U3VwZXJTYW1wbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgZG91YmxlIHBlcmNlbnRh
Z2UgPSAxMDAuMCAqIGluIC8gKGluICsgb3V0KTsKICAgICBpZiAocGVyY2VudGFnZSAhPSBwZXJj
ZW50YWdlKQogICAgICAgICBwZXJjZW50YWdlID0gMC4wOwpAQCAtODksMTMgKzg5LDEzIEBAIHZv
aWQgcHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgpCiAKIHZvaWQgZW5hYmxlU3VwZXJTYW1wbGVyKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9j
ayB9OwogICAgIGdfc3VwZXJTYW1wbGVyRW5hYmxlZCA9IHRydWU7CiB9CiAKIHZvaWQgZGlzYWJs
ZVN1cGVyU2FtcGxlcigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICBnX3N1cGVyU2FtcGxlckVuYWJsZWQgPSBmYWxzZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKaW5kZXgg
ZmZiMDgzNWU2MTM0N2Q4NDM0YWQzNDNlY2M5ZGM1NTkxODZhNGEyNy4uMjdlZGYxYzgxYTUzODM4
ZjFiOGI2Y2U5MDAzZWM0NmQ3MzQ5YjU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbkRhdGEuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgQ29tbW9uRGF0YTo6aW52
YWxpZGF0ZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChVTkxJS0VMWShoYXNW
TVRyYXBzQnJlYWtwb2ludHNJbnN0YWxsZWQpKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KHBjQ29kZUJsb2NrTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwY0NvZGVCbG9j
a01hcExvY2sgfTsKICAgICAgICAgYXV0byYgbWFwID0gcGNDb2RlQmxvY2tNYXAobG9ja2VyKTsK
ICAgICAgICAgZm9yIChhdXRvJiBqdW1wUmVwbGFjZW1lbnQgOiBtX2p1bXBSZXBsYWNlbWVudHMp
CiAgICAgICAgICAgICBtYXAucmVtb3ZlKGp1bXBSZXBsYWNlbWVudC5kYXRhTG9jYXRpb24oKSk7
CkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgQ29tbW9uRGF0YTo6aW52YWxpZGF0ZSgpCiBDb21tb25E
YXRhOjp+Q29tbW9uRGF0YSgpCiB7CiAgICAgaWYgKFVOTElLRUxZKGhhc1ZNVHJhcHNCcmVha3Bv
aW50c0luc3RhbGxlZCkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocGNDb2RlQmxvY2tN
YXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBjQ29kZUJsb2NrTWFwTG9jayB9Owog
ICAgICAgICBhdXRvJiBtYXAgPSBwY0NvZGVCbG9ja01hcChsb2NrZXIpOwogICAgICAgICBmb3Ig
KGF1dG8mIGp1bXBSZXBsYWNlbWVudCA6IG1fanVtcFJlcGxhY2VtZW50cykKICAgICAgICAgICAg
IG1hcC5yZW1vdmUoanVtcFJlcGxhY2VtZW50LmRhdGFMb2NhdGlvbigpKTsKQEAgLTg2LDcgKzg2
LDcgQEAgQ29tbW9uRGF0YTo6fkNvbW1vbkRhdGEoKQogCiB2b2lkIENvbW1vbkRhdGE6Omluc3Rh
bGxWTVRyYXBCcmVha3BvaW50cyhDb2RlQmxvY2sqIG93bmVyKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKHBjQ29kZUJsb2NrTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHBjQ29kZUJs
b2NrTWFwTG9jayB9OwogICAgIGlmICghaXNTdGlsbFZhbGlkIHx8IGhhc1ZNVHJhcHNCcmVha3Bv
aW50c0luc3RhbGxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIGhhc1ZNVHJhcHNCcmVha3BvaW50
c0luc3RhbGxlZCA9IHRydWU7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDb21tb25EYXRhOjpp
bnN0YWxsVk1UcmFwQnJlYWtwb2ludHMoQ29kZUJsb2NrKiBvd25lcikKIENvZGVCbG9jayogY29k
ZUJsb2NrRm9yVk1UcmFwUEModm9pZCogcGMpCiB7CiAgICAgQVNTRVJUKGlzSklUUEMocGMpKTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihwY0NvZGVCbG9ja01hcExvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBwY0NvZGVCbG9ja01hcExvY2sgfTsKICAgICBhdXRvJiBtYXAgPSBwY0NvZGVCbG9j
a01hcChsb2NrZXIpOwogICAgIGF1dG8gcmVzdWx0ID0gbWFwLmZpbmQocGMpOwogICAgIGlmIChy
ZXN1bHQgPT0gbWFwLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5k
ZXggMzg2ZjVmYjhmZDQ4Mjc2YWU2NTlkYjZhOGMyYzZkMjY0MDAxNjc1OC4uNzlhYTZjNmJlODI4
Y2ZjYjI5ODYwYWZhYzZhMThlODMyYTYwNDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBQbGFuOjpjYW5jZWwoKQogCiB2b2lk
IFBsYW46OmNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX211c3RIYW5kbGVWYWx1ZUNsZWFuaW5nTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXVzdEhhbmRsZVZhbHVlQ2xlYW5pbmdMb2NrIH07CiAKICAgICBpZiAoIW1fbXVz
dEhhbmRsZVZhbHVlc01heUluY2x1ZGVHYXJiYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGE5OTZjNTVjZGRjMjVjY2Mx
NmIyYWJhNDU2YmJjNzQ3NjNhNzAyODkuLjRkMjI4Y2ZlODdhZDk4MTkzNmMwN2MwOWQ0MWI3Mjc1
MTU1OTRhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICB+V29ya1Njb3BlKCkK
ICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkLm1fd29y
a2xpc3QubV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWQubV93
b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIG1fdGhyZWFkLm1fcGxhbiA9IG51bGxwdHI7
CiAgICAgICAgICAgICBtX3RocmVhZC5tX3dvcmtsaXN0Lm1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRz
LS07CiAgICAgICAgIH0KQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IFdvcmtTY29wZSB3b3JrU2NvcGUoKnRoaXMpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fZGF0YS5tX3JpZ2h0VG9SdW4pOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhLm1f
cmlnaHRUb1J1biB9OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV93b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmts
aXN0Lm1fbG9jayB9OwogICAgICAgICAgICAgaWYgKG1fcGxhbi0+c3RhZ2UoKSA9PSBQbGFuOjpD
YW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwog
ICAgICAgICAgICAgbV9wbGFuLT5ub3RpZnlDb21waWxpbmcoKTsKQEAgLTEyMSw3ICsxMjEsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV93b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICAgICAgaWYgKG1fcGxhbi0+
c3RhZ2UoKSA9PSBQbGFuOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdvcmtS
ZXN1bHQ6OkNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xODgsNyArMTg4LDcgQEAgV29ya2xp
c3Q6OldvcmtsaXN0KENTdHJpbmcmJiB0aWVyTmFtZSkKIFdvcmtsaXN0Ojp+V29ya2xpc3QoKQog
ewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGhy
ZWFkcy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBtX3F1ZXVlLmFwcGVuZChudWxscHRyKTsg
Ly8gVXNlIG51bGwgcGxhbiB0byBpbmRpY2F0ZSB0aGF0IHdlIHdhbnQgdGhlIHRocmVhZCB0byB0
ZXJtaW5hdGUuCiAgICAgICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwobG9ja2VyKTsKQEAg
LTIwMSw3ICsyMDEsNyBAQCBXb3JrbGlzdDo6fldvcmtsaXN0KCkKIHZvaWQgV29ya2xpc3Q6OmZp
bmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50IHJlbGF0aXZlUHJpb3Jp
dHkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobnVtYmVyT2ZUaHJlYWRzKTsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAg
IGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mVGhyZWFkczsgaS0tOykgewogICAgICAgICBjcmVh
dGVOZXdUaHJlYWQobG9ja2VyLCByZWxhdGl2ZVByaW9yaXR5KTsKICAgICB9CkBAIC0yMjMsNyAr
MjIzLDcgQEAgUmVmPFdvcmtsaXN0PiBXb3JrbGlzdDo6Y3JlYXRlKENTdHJpbmcmJiB0aWVyTmFt
ZSwgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQKIAogYm9vbCBXb3JrbGlzdDo6aXNBY3Rp
dmVGb3JWTShWTSYgdm0pIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBQbGFuTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3BsYW5zLmVuZCgpOwogICAgIGZvciAoUGxhbk1hcDo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAg
ICBpZiAoaXRlci0+dmFsdWUtPnZtKCkgPT0gJnZtKQpAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wg
V29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogCiB2b2lkIFdvcmtsaXN0Ojpl
bnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxvY2tlciwgV1RGOjpkYXRh
RmlsZSgpKTsKICAgICAgICAgZGF0YUxvZygiOiBFbnF1ZXVlaW5nIHBsYW4gdG8gb3B0aW1pemUg
IiwgcGxhbi0+a2V5KCksICJcbiIpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgV29ya2xpc3Q6
OmVucXVldWUoUmVmPFBsYW4+JiYgcGxhbikKIAogV29ya2xpc3Q6OlN0YXRlIFdvcmtsaXN0Ojpj
b21waWxhdGlvblN0YXRlKENvbXBpbGF0aW9uS2V5IGtleSkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIFBsYW5N
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlciA9PSBt
X3BsYW5zLmVuZCgpKQogICAgICAgICByZXR1cm4gTm90S25vd247CkBAIC0yNzAsNyArMjcwLDcg
QEAgdm9pZCBXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFyZVJlYWR5KFZNJiB2bSkK
ICAgICAvLyBBZnRlciB3ZSByZWxlYXNlIHRoaXMgbG9jaywgd2Uga25vdyB0aGF0IGFsdGhvdWdo
IG90aGVyIFZNcyBtYXkgc3RpbGwKICAgICAvLyBiZSBhZGRpbmcgcGxhbnMsIG91ciBWTSB3aWxs
IG5vdCBiZS4KICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29t
cGlsYXRpb25RdWV1ZSgpKSB7CiAgICAgICAgIGR1bXAobG9ja2VyLCBXVEY6OmRhdGFGaWxlKCkp
OwpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgV29ya2xpc3Q6OndhaXRVbnRpbEFsbFBsYW5zRm9y
Vk1BcmVSZWFkeShWTSYgdm0pCiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVBbGxSZWFkeVBsYW5zRm9y
Vk0oVk0mIHZtLCBWZWN0b3I8UmVmUHRyPFBsYW4+LCA4PiYgbXlSZWFkeVBsYW5zKQogewogICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9yZWFkeVBsYW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxQbGFuPiBw
bGFuID0gbV9yZWFkeVBsYW5zW2ldOwogICAgICAgICBpZiAocGxhbi0+dm0oKSAhPSAmdm0pCkBA
IC0zNDMsNyArMzQzLDcgQEAgV29ya2xpc3Q6OlN0YXRlIFdvcmtsaXN0Ojpjb21wbGV0ZUFsbFJl
YWR5UGxhbnNGb3JWTShWTSYgdm0sIENvbXBpbGF0aW9uS2V5IHJlcXUKICAgICB9CiAgICAgCiAg
ICAgaWYgKCEhcmVxdWVzdGVkS2V5ICYmIHJlc3VsdGluZ1N0YXRlID09IE5vdEtub3duKSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgKm1fbG9jayB9OwogICAgICAgICBpZiAobV9wbGFucy5jb250YWlucyhyZXF1ZXN0ZWRLZXkp
KQogICAgICAgICAgICAgcmVzdWx0aW5nU3RhdGUgPSBDb21waWxpbmc7CiAgICAgfQpAQCAtMzc3
LDcgKzM3Nyw3IEBAIHZvaWQgV29ya2xpc3Q6OnZpc2l0V2Vha1JlZmVyZW5jZXMoVmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBWTSogdm0gPSAmdmlzaXRvci5oZWFwKCktPnZtKCk7CiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yIChQbGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9w
bGFucy5iZWdpbigpOyBpdGVyICE9IG1fcGxhbnMuZW5kKCk7ICsraXRlcikgewogICAgICAgICAg
ICAgUGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgaWYgKHBsYW4t
PnZtKCkgIT0gdm0pCkBAIC00MDMsNyArNDAzLDcgQEAgdGVtcGxhdGUgdm9pZCBXb3JrbGlzdDo6
dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogdm9pZCBXb3JrbGlzdDo6cmVtb3Zl
RGVhZFBsYW5zKFZNJiB2bSkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCpt
X2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBIYXNo
U2V0PENvbXBpbGF0aW9uS2V5PiBkZWFkUGxhbktleXM7CiAgICAgICAgIGZvciAoUGxhbk1hcDo6
aXRlcmF0b3IgaXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBtX3BsYW5zLmVuZCgpOyAr
K2l0ZXIpIHsKICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKQEAg
LTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQog
CiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVOb25Db21waWxpbmdQbGFuc0ZvclZNKFZNJiB2bSkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1f
bG9jayB9OwogICAgIEhhc2hTZXQ8Q29tcGlsYXRpb25LZXk+IGRlYWRQbGFuS2V5czsKICAgICBW
ZWN0b3I8UmVmUHRyPFBsYW4+PiBkZWFkUGxhbnM7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1f
cGxhbnMpIHsKQEAgLTQ4MywxMyArNDgzLDEzIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92ZU5vbkNv
bXBpbGluZ1BsYW5zRm9yVk0oVk0mIHZtKQogCiBzaXplX3QgV29ya2xpc3Q6OnF1ZXVlTGVuZ3Ro
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgKm1fbG9jayB9OwogICAgIHJldHVybiBtX3F1ZXVlLnNpemUoKTsKIH0KIAogdm9pZCBXb3Jr
bGlzdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgZHVtcChs
b2NrZXIsIG91dCk7CiB9CiAKQEAgLTUwMywxMSArNTAzLDExIEBAIHZvaWQgV29ya2xpc3Q6OmR1
bXAoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogCiB1bnNp
Z25lZCBXb3JrbGlzdDo6c2V0TnVtYmVyT2ZUaHJlYWRzKHVuc2lnbmVkIG51bWJlck9mVGhyZWFk
cywgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdXNw
ZW5zaW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKICAg
ICBhdXRvIGN1cnJlbnROdW1iZXJPZlRocmVhZHMgPSBtX3RocmVhZHMuc2l6ZSgpOwogICAgIGlm
IChudW1iZXJPZlRocmVhZHMgPCBjdXJyZW50TnVtYmVyT2ZUaHJlYWRzKSB7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1
cnJlbnROdW1iZXJPZlRocmVhZHM7IGktLSA+IG51bWJlck9mVGhyZWFkczspIHsKICAgICAgICAg
ICAgICAgICBpZiAobV90aHJlYWRzW2ldLT5tX3RocmVhZC0+aGFzVW5kZXJseWluZ1RocmVhZChs
b2NrZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcXVldWUuYXBwZW5kKG51bGxwdHIpOwpA
QCAtNTE4LDcgKzUxOCw3IEBAIHVuc2lnbmVkIFdvcmtsaXN0OjpzZXROdW1iZXJPZlRocmVhZHMo
dW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGN1cnJlbnROdW1iZXJPZlRocmVhZHM7IGktLSA+IG51bWJlck9mVGhyZWFk
czspIHsKICAgICAgICAgICAgIGJvb2wgaXNTdG9wcGVkID0gZmFsc2U7CiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgICAgICBpc1N0b3Bw
ZWQgPSBtX3RocmVhZHNbaV0tPm1fdGhyZWFkLT50cnlTdG9wKGxvY2tlcik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoIWlzU3RvcHBlZCkKQEAgLTUyOCw3ICs1MjgsNyBAQCB1bnNp
Z25lZCBXb3JrbGlzdDo6c2V0TnVtYmVyT2ZUaHJlYWRzKHVuc2lnbmVkIG51bWJlck9mVGhyZWFk
cywgaW50IHJlbGF0aXZlUHJpbwogICAgICAgICBtX3RocmVhZHMuc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZBY3RpdmVUaHJlYWRzIDw9IG51bWJlck9mVGhyZWFkcyk7
CiAgICAgfSBlbHNlIGlmIChudW1iZXJPZlRocmVhZHMgPiBjdXJyZW50TnVtYmVyT2ZUaHJlYWRz
KSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50TnVt
YmVyT2ZUaHJlYWRzOyBpIDwgbnVtYmVyT2ZUaHJlYWRzOyBpKyspCiAgICAgICAgICAgICBjcmVh
dGVOZXdUaHJlYWQobG9ja2VyLCByZWxhdGl2ZVByaW9yaXR5KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdElubGluZXMuaAppbmRleCBlNWY5MGI0Mzhj
N2I5NThiZGUyZmJiMGFiZTY3NTBkZmJhZmNhMDkyLi5jYzI2NmY2ZjM2NTYxYWM2ZWM2NDI1MjUx
YWRhOGQ2ZjQyZjIwMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dvcmtsaXN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29y
a2xpc3RJbmxpbmVzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBpdGVyYXRlQ29kZUJsb2Nrc0Zv
ckdDKFZpc2l0b3ImIHZpc2l0b3IsIFZNJiB2bSwgY29uc3QgRnVuYyYgZnVuYykKIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmMsIHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIFdvcmtsaXN0OjppdGVyYXRl
Q29kZUJsb2Nrc0ZvckdDKFZpc2l0b3ImIHZpc2l0b3IsIFZNJiB2bSwgY29uc3QgRnVuYyYgZnVu
YykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgKm1fbG9jayB9OwogICAgIGZvciAoUGxhbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcGxhbnMu
YmVnaW4oKTsgaXRlciAhPSBtX3BsYW5zLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUGxhbiog
cGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICBpZiAocGxhbi0+dm0oKSAhPSAmdm0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2Vt
Ymxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxl
ci5jcHAKaW5kZXggZjRmMWMzN2NjMzdhYTZiNTE3OTViYmU0OTJhOTU2NDRkZWEzZGU5Zi4uNTVj
MDVjODEyMjlmMzU5MzZmZjEzNDdjZGRmNDU0ZjNhZmI2YWM5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtNzcsMTQg
Kzc3LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGVucXVldWUoc3RkOjp1bmlxdWVfcHRy
PERpc2Fzc2VtYmx5VGFzaz4gdGFzaykKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9x
dWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAgICAgICAgIG1fY29uZGl0aW9uLm5vdGlmeUFs
bCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIHdhaXRVbnRpbEVtcHR5KCkKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICAgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSB8fCBtX3dvcmtpbmcp
CiAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7CiAgICAgfQpAQCAtOTUsNyAr
OTUsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrOwogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgICAgIG1fd29ya2luZyA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIG1fY29uZGl0aW9uLm5vdGlmeUFsbCgpOwogICAgICAgICAgICAgICAg
IHdoaWxlIChtX3F1ZXVlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrRGlyZWN0b3J5LmNwcAppbmRleCBiMWU5N2ZjNjVhNGVjYzBlYzMyNWQ3ODM5NDQxNmIy
OWQ4NWU2YjY0Li42YzI0MmI4NjNiY2VjZDczZTgzMGE2M2EzNWZlMjAwMGQwYTIzNzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0xMzQs
NyArMTM0LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spCiAgICAgICAgICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBvbGRD
YXBhY2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENh
cGFjaXR5KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9i
aXR2ZWN0b3JMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2JpdHZlY3Rvckxv
Y2sgfTsKICAgICAgICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMobV9ibG9ja3MuY2Fw
YWNpdHkoKSk7CiAgICAgICAgICAgICBtX2JpdHMucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2Rl
QmxvY2tTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXRJbmxpbmVzLmgKaW5kZXggMDU4MTA4ZjczYTRmYTgwNjliZmZkNTk0YmVjMDdjNjllZjNjMWJh
Yy4uNTc1NDUwODJhMjBiZDM5ZjkzNWRkMjM0MWJjZjdlZTE3ODdjMjczOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaApAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyhWTSYgdm0sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBD
b2RlQmxvY2tTZXQ6Oml0ZXJhdGVDdXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IG1fY3VycmVu
dGx5RXhlY3V0aW5nKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jayk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKaW5kZXggNGYwOWE2
M2VlMDU4ZDRhMThiYTNjNjExNWVhYmM2MDNlNmYxMmUyNi4uNTE4Mzg3MGY0NmQyNDgyM2Q1Nzk5
NzNmODNjMWU5Y2Y1YWZlMDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbnNlcnZhdGl2ZVJvb3RzLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiB2b2lk
IENvbnNlcnZhdGl2ZVJvb3RzOjphZGQoCiAgICAgdm9pZCogYmVnaW4sIHZvaWQqIGVuZCwgSklU
U3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tz
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVCbG9ja3MuZ2V0TG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgY29kZUJsb2Nrcy5nZXRMb2NrKCkgfTsKICAgICBDb21wb3NpdGVNYXJr
SG9vayBtYXJrSG9vayhqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MsIGxvY2tlcik7CiAgICAg
Z2VuZXJpY0FkZFNwYW4oYmVnaW4sIGVuZCwgbWFya0hvb2spOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAppbmRleCA2MWQyYjJkMmIxMDFjMzgyMjU5ZDY5OGRiZTJmNzVjMTZjMzE5
MWYzLi5jMWNmODY0Mjc3MDUxYmEwMjEwNThjZjUxNGFkMzcyZmJhNzQ4MjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIEhlYXA6OkhlYXAoVk0m
IHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBzaXplX3QgbWVtb3J5QWJvdmVDcml0aWNhbFRo
cmVzaG9sZCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3JhbVNp
emUpICogKDEuMCAtIE9wdGlvbnM6OmNyaXRpY2FsR0NNZW1vcnlUaHJlc2hvbGQoKSkpOwogICAg
IG1fbWF4RWRlblNpemVXaGVuQ3JpdGljYWwgPSBtZW1vcnlBYm92ZUNyaXRpY2FsVGhyZXNob2xk
IC8gNDsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgbV90aHJlYWQgPSBhZG9wdFJlZihuZXcg
SGVhcFRocmVhZChsb2NrZXIsICp0aGlzKSk7CiB9CiAKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lk
IEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKICAgICAKICAgICBpZiAobV9jb2xsZWN0Q29u
dGludW91c2x5VGhyZWFkKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2sgfTsKICAgICAgICAgICAgIG1fc2hvdWxkU3Rv
cENvbGxlY3RpbmdDb250aW51b3VzbHkgPSB0cnVlOwogICAgICAgICAgICAgbV9jb2xsZWN0Q29u
dGludW91c2x5Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICB9CkBAIC00NDMsNyArNDQz
LDcgQEAgdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgLy8gQ2FyZWZ1bGx5
IGJyaW5nIHRoZSB0aHJlYWQgZG93bi4KICAgICBib29sIHN0b3BwZWQgPSBmYWxzZTsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBzdG9wcGVkID0gbV90aHJlYWQt
PnRyeVN0b3AobG9ja2VyKTsKICAgICAgICAgbV90aHJlYWRTaG91bGRTdG9wID0gdHJ1ZTsKICAg
ICAgICAgaWYgKCFzdG9wcGVkKQpAQCAtMTExMSw3ICsxMTExLDcgQEAgdm9pZCBIZWFwOjpjb2xs
ZWN0QXN5bmMoR0NSZXF1ZXN0IHJlcXVlc3QpCiAKICAgICBib29sIGFscmVhZHlSZXF1ZXN0ZWQg
PSBmYWxzZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBmb3Ig
KGNvbnN0IEdDUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0IDogbV9yZXF1ZXN0cykgewogICAgICAg
ICAgICAgaWYgKHJlcXVlc3Quc3Vic3VtZWRCeShwcmV2aW91c1JlcXVlc3QpKSB7CiAgICAgICAg
ICAgICAgICAgYWxyZWFkeVJlcXVlc3RlZCA9IHRydWU7CkBAIC0xMjUwLDcgKzEyNTAsNyBAQCBO
RVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5CZWdpblBoYXNlKEdDQ29uZHVjdG9yIGNvbm4pCiAg
ICAgbV9jdXJyZW50R0NTdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1
ZXN0cy5maXJzdCgpOwogICAgIH0KQEAgLTEzMDEsNyArMTMwMSw3IEBAIE5FVkVSX0lOTElORSBi
b29sIEhlYXA6OnJ1bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICAgICAgW3RoaXNd
ICgpIHsKICAgICAgICAgICAgIFNsb3RWaXNpdG9yKiB2aXNpdG9yOwogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGFyYWxsZWxTbG90VmlzaXRvckxv
Y2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcmFsbGVsU2xvdFZpc2l0
b3JMb2NrIH07CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFt
X2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmlzRW1wdHkoKSwgIlBhcmFsbGVsIFNsb3RW
aXNpdG9ycyBhcmUgYWxsb2NhdGVkIGFwcmlvcmkiKTsKICAgICAgICAgICAgICAgICB2aXNpdG9y
ID0gbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy50YWtlTGFzdCgpOwogICAgICAgICAg
ICAgfQpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVn
aW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYXJhbGxlbFNsb3RWaXNpdG9y
TG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGFyYWxsZWxTbG90Vmlz
aXRvckxvY2sgfTsKICAgICAgICAgICAgICAgICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0
b3JzLmFwcGVuZCh2aXNpdG9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CkBAIC0xODcy
LDcgKzE4NzIsNyBAQCB2b2lkIEhlYXA6OndhaXRGb3JDb2xsZWN0b3IoY29uc3QgRnVuYyYgZnVu
YykKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGJvb2wgZG9uZTsKICAgICAgICAgewotICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICAgICAgZG9uZSA9IGZ1bmMobG9j
a2VyKTsKICAgICAgICAgICAgIGlmICghZG9uZSkgewogICAgICAgICAgICAgICAgIHNldE11dGF0
b3JXYWl0aW5nKCk7CkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBIZWFwOjpUaWNrZXQgSGVhcDo6cmVx
dWVzdENvbGxlY3Rpb24oR0NSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQVNTRVJUKHZtKCkuY3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5hdG9t
U3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CiAg
ICAgCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAvLyBXZSBtYXkgYmUgYWJsZSB0byBzdGVhbCB0
aGUgY29ubi4gVGhhdCBvbmx5IHdvcmtzIGlmIHRoZSBjb2xsZWN0b3IgaXMgZGVmaW5pdGVseSBu
b3QgcnVubmluZwogICAgIC8vIHJpZ2h0IG5vdy4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdGhh
dCBwcmV2ZW50cyB0aGUgY29sbGVjdG9yIHRocmVhZCBmcm9tIGV2ZXIgc3RhcnRpbmcgaW4gbW9z
dAogICAgIC8vIGNhc2VzLgpAQCAtMjk2OCw5ICsyOTY4LDkgQEAgdm9pZCBIZWFwOjpub3RpZnlJ
c1NhZmVUb0NvbGxlY3QoKQogICAgICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgaW5pdGlhbFRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgICAgICAgICBTZWNvbmRzIHBlcmlv
ZCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoT3B0aW9uczo6Y29sbGVjdENvbnRpbnVvdXNs
eVBlcmlvZE1TKCkpOwogICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY29sbGVjdENvbnRpbnVvdXNseUxvY2spOwor
ICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xsZWN0Q29udGludW91c2x5
TG9jayB9OwogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlcXVlc3RzLmFwcGVuZChXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbGFzdEdyYW50ZWRUaWNrZXQrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmNwcAppbmRleCA2ZjA0YzM0NzZlODc5ZWM0YTQ3OWY4YjZlYTg5MWYyZjM5
ZjNkN2IwLi5mOWExODMyM2M3MjgzMzQ3MTk4ZDk2ODg5ZGM1OWY3NDM3OGYyMDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCkBAIC01NzgsNyArNTc4LDcg
QEAgc2l6ZV90IFNsb3RWaXNpdG9yOjpwZXJmb3JtSW5jcmVtZW50T2ZEcmFpbmluZyhzaXplX3Qg
Ynl0ZXNSZXF1ZXN0ZWQpCiAKIGJvb2wgU2xvdFZpc2l0b3I6OmRpZFJlYWNoVGVybWluYXRpb24o
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faGVhcC5tX21hcmtpbmdNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1faGVhcC5tX21hcmtpbmdNdXRleCB9OwogICAgIHJldHVybiBkaWRS
ZWFjaFRlcm1pbmF0aW9uKGxvY2tlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggN2ViNTFhZjMwZmRhODAyY2E4MWE4YjEwZWNkN2U2ZWJl
ZTIyMTE3Yy4uYjJkOTlmYmE4OTIyNmQ0YzI0MGNkYWI4ZjViMDU3NTc4MWJlOGRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudDo6c3RhcnRUcmFja2luZyhPcHRpb24KICAgICAgICAgVk0mIHZtID0gbV9lbnZpcm9ubWVu
dC5kZWJ1Z2dlcigpLnZtKCk7CiAgICAgICAgIFNhbXBsaW5nUHJvZmlsZXImIHNhbXBsaW5nUHJv
ZmlsZXIgPSB2bS5lbnN1cmVTYW1wbGluZ1Byb2ZpbGVyKHN0b3B3YXRjaCk7CiAKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxlci5nZXRMb2NrKCkpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgc2FtcGxpbmdQcm9maWxlci5nZXRMb2NrKCkgfTsKICAgICAgICAgc2Ft
cGxpbmdQcm9maWxlci5zZXRTdG9wV2F0Y2gobG9ja2VyLCBzdG9wd2F0Y2gpOwogICAgICAgICBz
YW1wbGluZ1Byb2ZpbGVyLm5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1dGlvblRocmVhZChs
b2NrZXIpOwogICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLnN0YXJ0KGxvY2tlcik7CkBAIC0yMTcs
NyArMjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Ojp0cmFja2luZ0Nv
bXBsZXRlKCkKICAgICAgICAgU2FtcGxpbmdQcm9maWxlciogc2FtcGxpbmdQcm9maWxlciA9IHZt
LnNhbXBsaW5nUHJvZmlsZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2FtcGxpbmdQcm9m
aWxlcik7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxlci0+Z2V0
TG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNhbXBsaW5nUHJvZmlsZXItPmdldExv
Y2soKSB9OwogICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLT5wYXVzZShsb2NrZXIpOwogICAgICAg
ICBWZWN0b3I8U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZXMgPSBzYW1w
bGluZ1Byb2ZpbGVyLT5yZWxlYXNlU3RhY2tUcmFjZXMobG9ja2VyKTsKICAgICAgICAgbG9ja2Vy
LnVubG9ja0Vhcmx5KCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50OjpzdG9wU2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZygpCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIFNhbXBsaW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJvZmlsZXIg
PSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2FtcGxpbmdQcm9m
aWxlcik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygpIH07CiAg
ICAgc2FtcGxpbmdQcm9maWxlci0+cGF1c2UobG9ja2VyKTsKICAgICBzYW1wbGluZ1Byb2ZpbGVy
LT5jbGVhckRhdGEobG9ja2VyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5j
cHAKaW5kZXggODk5OWYzMDc3YjczMjA1MTg1YzEwNGEwYjZiMzJiNGYyOTA4N2NiMC4uZTA2ZmJk
OTk5NWJhZWE2ZDU4NzBhM2NiYmI1MjY4NzNlYTk2YzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldDo6flJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCgpCiAKIGJvb2wgUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0
aWNhbGx5UGF1c2UpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAgICAgaWYgKCFtX3RhcmdldCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9IG51bGxwdHI7CiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAgICAgICAgIGlmICghbV90YXJnZXQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIHRhcmdldCA9IG1fdGFyZ2V0OwpAQCAtODgsNyArODgs
NyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb1RhcmdldChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xv
c2UoKQogewogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRN
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CiAgICAgICAg
IGlmICghbV90YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEwNSw3ICsxMDUsNyBA
QCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UoKQogCiB2b2lkIFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2so
bV90YXJnZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsKICAg
ICBtX3RhcmdldCA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCmluZGV4IDNmMTlm
MGI5ZThhNTk0M2VkOTlmODQ5NDY0ZWJhN2E0ZjYwMDM0NTAuLmQxZDk1MmM5NDQ1OTY3YWE4YTEx
ZjEyNDM4MmFiYTJhMmI5ZTczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNjAsNyArNjAs
NyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxh
YmxlVGFyZ2V0KiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKIAogICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVUYXJnZXRJ
ZGVudGlmaWVyKCk7CiAgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlmaWVyKHRhcmdldElkZW50
aWZpZXIpOwpAQCAtODMsNyArODMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3Rl
clRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKIHsKICAgICBBU1NFUlRf
QVJHKHRhcmdldCwgdGFyZ2V0KTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgYXV0byB0YXJnZXRJZGVudGlmaWVy
ID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVy
KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXQo
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUX0FSRyh0YXJn
ZXQsIHRhcmdldCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICghdXBkYXRlVGFyZ2V0TWFwKHRhcmdldCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CiAKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICBtX2NsaWVudENhcGFi
aWxpdGllcyA9IFdURjo6bnVsbG9wdDsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c2V0Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCiAgICAg
QVNTRVJUKChtX2NsaWVudCAmJiAhY2xpZW50KSB8fCAoIW1fY2xpZW50ICYmIGNsaWVudCkpOwog
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fY2xpZW50ID0gY2xpZW50OwogICAgIH0K
IApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQoUmVt
b3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
dHVwRmFpbGVkKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBtX3Rh
cmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwogCkBAIC0xOTEsNyAr
MTkxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKFRhcmdldElEIHRhcmdl
dElkZW50aWZpZXIpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKHRhcmdldElkZW50aWZp
ZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKICAg
ICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7CkBAIC0yMTEsNyArMjEx
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgp
CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIHN0b3BJbnRl
cm5hbChTdG9wU291cmNlOjpBUEkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQppbmRleCBkMDBjZmJjODhhMDZlMjg0NGJkNWIxMjQ3
YmU4OTA1NzMyMTkzMDM2Li44YjJhN2ZhMzhhYTA2OGU0NTM0M2YzNGE0NzJjZjFhZTA1MGFlMDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2Nv
YS5tbQpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5T
b3VyY2VHbG9iYWwodm9pZCopCiAKICAgICBSZW1vdGVUYXJnZXRRdWV1ZSBxdWV1ZUNvcHk7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2socndpUXVldWVNdXRleCk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyByd2lRdWV1ZU11dGV4IH07CiAgICAgICAgIHN0ZDo6c3dhcChxdWV1ZUNv
cHksICpyd2lRdWV1ZSk7CiAgICAgfQogCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIFJl
bW90ZVRhcmdldFF1ZXVlVGFza09uR2xvYmFsUXVldWUoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbikKICAgICBBU1NFUlQocndpUXVldWUpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2socndpUXVldWVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyByd2lRdWV1ZU11
dGV4IH07CiAgICAgICAgIHJ3aVF1ZXVlLT5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAg
IH0KIApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5T
b3VyY2VXaXRoSW5mbyh2b2lkKiBpbmZvKQogCiAgICAgUmVtb3RlVGFyZ2V0UXVldWUgcXVldWVD
b3B5OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGNvbm5lY3Rpb25Ub1RhcmdldC0+
cXVldWVNdXRleCgpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNvbm5lY3Rpb25Ub1Rhcmdl
dC0+cXVldWVNdXRleCgpIH07CiAgICAgICAgIHF1ZXVlQ29weSA9IGNvbm5lY3Rpb25Ub1Rhcmdl
dC0+dGFrZVF1ZXVlKCk7CiAgICAgfQogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBSZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQ6OmRpc3BhdGNoQXN5bmNPblRhcmdldChGdW5jdGlvbjx2b2lkICgp
PiYmIGNhbGxiYWMKIAogYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2FsbHlQYXVzZSkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFy
Z2V0TXV0ZXggfTsKIAogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAo
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYQogICAgIGF1dG8gdGFy
Z2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOwogCiAg
ICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KFt0aGlzLCB0YXJnZXRJZGVudGlmaWVyLCBpc0F1dG9t
YXRpY0luc3BlY3Rpb24sIGF1dG9tYXRpY2FsbHlQYXVzZSwgc3Ryb25nVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSgpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFyZ2V0TXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogCiAgICAgICAgIGlmICghbV90
YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVDb250cm9sQWxsb3dlZCgpKSB7CiAgICAgICAgICAg
ICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZp
ZXIpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpz
ZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAKIHZvaWQg
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRDbG9zZWQoKQogewotICAgIExvY2tIb2xk
ZXIgbG9jayhtX3RhcmdldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRl
eCB9OwogCiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZv
aWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCiAgICAgYXV0byB0YXJnZXRJZGVu
dGlmaWVyID0gbV90YXJnZXQgPyBtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpIDogMDsKICAg
ICAKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoW3RoaXMsIHRhcmdldElkZW50aWZpZXIsIHN0
cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayht
X3RhcmdldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFyZ2V0TXV0ZXggfTsK
ICAgICAgICAgaWYgKG1fdGFyZ2V0KSB7CiAgICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQpCiAg
ICAgICAgICAgICAgICAgbV90YXJnZXQtPmRpc2Nvbm5lY3QoKnRoaXMpOwpAQCAtMjE4LDcgKzIx
OCw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KE5TU3RyaW5nICptZXNzYWdlKQogICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgc3Ry
b25nTWVzc2FnZSA9IHJldGFpblB0cihtZXNzYWdlKSwgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSgpIHsKICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxs
cHRyOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90YXJnZXRNdXRl
eCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwogICAgICAg
ICAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB0YXJnZXQgPSBtX3RhcmdldDsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldDo6cXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcChGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bgogICAgIEFTU0VSVChtX3J1bkxvb3ApOwogCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3F1ZXVlTXV0
ZXggfTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCBkMWJmNzEzY2Jj
OTZjNDZjZjliMDY3YzNjOWZmZTllNTNmODFiNmRkLi43NWYzOTQzN2JlNWI5ZmM5MDViMGQyYWM2
ZjA2ZDQzMGY4YmI2NTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqCiB7CiAgICAgQVNT
RVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICAgICAg
aWYgKCF1cGRhdGVUYXJnZXRNYXAodGFyZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2
Myw3ICsxNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVj
dGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgICAgICAvLyBJbiBjYXNl
IGRlYnVnZ2VycyBmYWlsIHRvIHJlc3BvbmQsIG9yIHdlIGNhbm5vdCBjb25uZWN0IHRvIHdlYmlu
c3BlY3RvcmQsIGF1dG9tYXRpY2FsbHkgY29udGludWUgYWZ0ZXIgYSBzaG9ydCBwZXJpb2Qgb2Yg
dGltZS4KICAgICAgICAgaW50NjRfdCBkZWJ1Z2dlclRpbWVvdXREZWxheSA9IDEwOwogICAgICAg
ICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWJ1Z2dl
clRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUo
RElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogICAgICAgICAgICAgaWYgKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdl
dElkZW50aWZpZXIgPT0gdGFyZ2V0SWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiU2tpcHBpbmcgQXV0b21hdGljIEluc3BlY3Rpb24gQ2FuZGlkYXRlIHdpdGggcGFn
ZUlkKCV1KSBiZWNhdXNlIHdlIGZhaWxlZCB0byByZWNlaXZlIGEgcmVzcG9uc2UgaW4gdGltZS4i
LCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKTsKICAgICAg
ICAgICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIHRhcmdldC0+cGF1c2VXYWl0
aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbigpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAg
ICAgICAgQVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZp
ZXIpOwogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlm
aWVyID0gMDsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1
dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKIAogdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX3JlbGF5Q29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0
cmluCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAo
bV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAg
IGlmIChtX3JlbGF5Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjk0LDcgKzI5NCw3
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkX3Qg
cGlkLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAo
bV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB8fCBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGEpCiAg
ICAgICAgIHJldHVybjsKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgUmV0YWluUHRyPENGRGF0YVJl
ZgogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0Rp
Y3Rpb25hcnkgKnVzZXJJbmZvKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKFttZXNzYWdlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pIHsKICAgICAgICAgc3RvcEludGVybmFs
KFN0b3BTb3VyY2U6OlhQQ01lc3NhZ2UpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24qCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uRmFpbGVk
KFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qIHJlbGF5Q29ubmVjdGlvbikKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
IAogICAgIEFTU0VSVChyZWxheUNvbm5lY3Rpb24gPT0gbV9yZWxheUNvbm5lY3Rpb24pOwogICAg
IGlmIChyZWxheUNvbm5lY3Rpb24gIT0gbV9yZWxheUNvbm5lY3Rpb24pCkBAIC00ODQsNyArNDg0
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24oKQogCiAgICAgbV9w
dXNoU2NoZWR1bGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCAwLjIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCiAgICAgICAgICAgICBwdXNoTGlzdGlu
Z3NOb3coKTsKICAgICB9KTsKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBk
aXNwYXRjaEFzeW5jT25NYWluVGhyZWFkV2l0aFdlYlRocmVhZExvY2tJZk5lZWRlZCheewogICAg
ICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9IG51bGxwdHI7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICAgICAgICAgIGF1dG8gZmluZFJlc3VsdCA9
IG1fdGFyZ2V0TWFwLmZpbmQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgICAgICBpZiAoZmlu
ZFJlc3VsdCA9PSBtX3RhcmdldE1hcC5lbmQoKSkKQEAgLTYzOSw3ICs2MzksNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdlKE5TRGlj
dGlvbmFyeSAqKQogICAgICAgICAvLyBXYWl0IGEgYml0IGZvciB0aGUgaW5mb3JtYXRpb24sIGJ1
dCBnaXZlIHVwIGFmdGVyIGEgc2Vjb25kLgogICAgICAgICBtX3Nob3VsZFNlbmRQYXJlbnRQcm9j
ZXNzSW5mb3JtYXRpb24gPSB0cnVlOwogICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90
aW1lKERJU1BBVENIX1RJTUVfTk9XLCAxICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2ds
b2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBpZiAobV9zaG91bGRTZW5kUGFyZW50UHJvY2Vz
c0luZm9ybWF0aW9uKQogICAgICAgICAgICAgICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpY
UENNZXNzYWdlKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbQppbmRleCBiNTAyZTI5MzVmMGY4NTZhYTFmMjJiZTUwNDI0
YWMzYTc4NTcyMTI5Li40M2RmMjcwYWM4MjJmNGJmOWNkNjVkOWQ1MDBmODczZTJhYjFhZDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0K
QEAgLTcxLDcgKzcxLDcgQEAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OmNsb3NlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBjbG9zZUZyb21NZXNzYWdlKCk7CiB9CiAKQEAgLTgx
LDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZUZyb21N
ZXNzYWdlKCkKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiAKICAgICBkaXNwYXRjaF9hc3luYyht
X3F1ZXVlLmdldCgpLCBeewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cmln
Z2VyIG9uZSBsYXN0IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgZXZlbnQgb24gdGhlIHF1
ZXVlIGFuZCBkZXJlZiB1cy4KICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CiAgICAgfSk7CkBAIC0x
MDQsNyArMTA0LDcgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKIAogICAgIHhwY19vYmplY3Rf
dCB4cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5KTsKICAgICBpZiAoIXhw
Y0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJ
Q1RJT05BUlkpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UodGhpcywgb2JqZWN0
KTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCiB7
CiAgICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25GYWlsZWQodGhpcyk7CiAKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRs
ZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCiAgICAgICAgIGF1ZGl0X3Rva2VuX3QgdG9rZW47
CiAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihtX2Nvbm5lY3Rpb24uZ2V0
KCksICZ0b2tlbik7CiAgICAgICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudCh0b2tlbiwgImNv
bS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci53ZWJpbnNwZWN0b3JkIikpIHsKLSAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBvbmUgbGFzdCBY
UENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRoZSBxdWV1ZSBhbmQgZGVyZWYg
dXMuCiAgICAgICAgICAgICBjbG9zZU9uUXVldWUoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRs
ZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCiAgICAgaWYgKHVzZXJJbmZvICYmICFbdXNlcklu
Zm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsK
IAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rp
b25SZWNlaXZlZE1lc3NhZ2UodGhpcywgbWVzc2FnZSwgdXNlckluZm8pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNw
ZWN0b3JHbGliLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKaW5kZXggMDRhYmY1NTU0YzQyYjM5NTBiYWI0MWJh
MjU0NzQ3MmFhM2EwYmUxMi4uOGJiY2ZlMWJmZjYxZWIzMWNiZTJmNWI1OWFlMTRjOGE4MjMyMGMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkKIAogdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnN0YXJ0KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmIChtX2VuYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBjb25zdCBTb2NrZXRDb25uZWN0aW9uOjpNZXNzYWdl
SGFuZGxlcnMmIFJlbW90ZUluc3BlY3Rvcjo6bWVzc2FnZUhhbmRsZXJzKCkKIAogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwQ29ubmVjdGlvbihSZWY8U29ja2V0Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OwogCiAgICAgQVNTRVJUKCFtX3NvY2tldENvbm5lY3Rpb24pOwogICAg
IG1fc29ja2V0Q29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7CkBAIC0yMTEsNyArMjEx
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24oKQogICAgIG1fcHVz
aFNjaGVkdWxlZCA9IHRydWU7CiAKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXNdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQogICAgICAg
ICAgICAgcHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CkBAIC0yMjksNyArMjI5LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2Fn
ZSgpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKFRhcmdldElE
IHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBp
ZiAoIW1fc29ja2V0Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzgsNyArMjM4
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQg
dGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIHB1c2hMaXN0aW5nc05v
dygpOwogfQogCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkRGF0YU1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgY2hhcioKIHsK
ICAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFy
Z2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgIGlmICghY29u
bmVjdGlvblRvVGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjYzLDcgKzI2Myw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENsb3NlTWVzc2FnZShUYXJnZXRJRCB0YXJn
ZXRJZGVudGlmaWVyKQogewogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+IGNv
bm5lY3Rpb25Ub1RhcmdldDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQodGFyZ2V0SWRlbnRpZmll
cik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgwLDcg
KzI4MCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJnZXRJRCB0YXJnZXRJZGVu
dGlmaWVyKQogewogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0OwogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQodGFyZ2V0SWRl
bnRpZmllcik7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjkzLDcgKzI5Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cChUYXJnZXRJRCB0YXJn
ZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja0hvbGRlciBs
b2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgbV90YXJn
ZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb25U
b1RhcmdldCkpOwogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAK
aW5kZXggNWExZDkyNDU3YTUzYWE4N2Q0Y2FjOWI0YjExMWNjMzQxODMxNjk1NC4uNWUzODc5OGVh
MGIxODU1NDkwYmU1YzZmOWMzODFhNWM1YTRlMmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rp
b25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcApAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUoUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fcGFyc2Vyc0xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3BhcnNlcnNMb2NrIH07CiAgICAgYXV0byByZXN1bHQgPSBtX3BhcnNlcnMuZW5z
dXJlKGNsaWVudElELCBbdGhpcywgY2xpZW50SURdIHsKICAgICAgICAgcmV0dXJuIE1lc3NhZ2VQ
YXJzZXIoW3RoaXMsIGNsaWVudElEXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byBldmVudCA9IFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmV4
dHJhY3RFdmVudChjbGllbnRJRCwgV1RGTW92ZShkYXRhKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXggNzM5NjczZWY4Nzc0ZjYwZWQ4NzgxOTUz
NTUzZDcwZmUzNzBiM2NkNS4uZTMwNThmNTAxZGM3MDlmYjI4ZTY4NjViNjk1MzNhNmI1OWM4NjVk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmRpZENsb3NlKFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklEKQogICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9
IFdURjo6bnVsbG9wdDsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbPV0gewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CiAgICAgICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOwogICAg
IH0pOwogfQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZFdlYklu
c3BlY3RvckV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBs
b2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAobV9lbmFibGVkKQogICAgICAgICByZXR1cm47
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nv
b24oKQogICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CiAKICAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goWz1dIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1
bGVkKQogICAgICAgICAgICAgcHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CkBAIC0yMzMsNyAr
MjMzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKFRhcmdldElEIHRhcmdldElkZW50
aWZpZXIpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQ7CiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CiAgICAgICAgIHRhcmdldCA9IG1fdGFyZ2V0TWFwLmdldCh0YXJnZXRJZGVu
dGlmaWVyKTsKICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
NDYsNyArMjQ2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKFRhcmdldElEIHRhcmdl
dElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBtX3Rhcmdl
dENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRv
VGFyZ2V0KSk7CiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKQEAgLTMwMyw3
ICszMDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBJbnNwZWN0b3JDbGllbnQoY29u
c3QgRXZlbnQmKQogCiAgICAgbV9yZWFkeVRvUHVzaExpc3RpbmdzID0gdHJ1ZTsKIAotICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgIHB1c2hMaXN0aW5nc05vdygpOwogfQogCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OmZyb250ZW5kRGlkQ2xvc2UoY29uc3QgRXZlbnQmIGV2ZW50KQogCiAgICAg
UmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRvVGFyZ2V0OwogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OwogICAgICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdl
dCA9IG1fdGFyZ2V0TWFwLmdldChldmVudC50YXJnZXRJRC52YWx1ZSgpKTsKICAgICAgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IEV2ZW50JiBldmVudCkK
IAogICAgIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+IGNvbm5lY3Rpb25Ub1Rhcmdl
dDsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90
YXJnZXRDb25uZWN0aW9uTWFwLmdldChldmVudC50YXJnZXRJRC52YWx1ZSgpKTsKICAgICAgICAg
aWYgKCFjb25uZWN0aW9uVG9UYXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zODMsNyAr
MzgzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24oY29u
c3QgRXZlbnQmIGV2ZW50KQogCiAgICAgbV9yZWFkeVRvUHVzaExpc3RpbmdzID0gdHJ1ZTsKIAot
ICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogICAgIHB1c2hMaXN0aW5nc05vdygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCBhZTVlNmQ4YTFhZWFi
MWEwNDU1NjZiMzdhM2U0Y2QwZWJkNjFmNGZjLi5hNTBjOTQyMDgyYWFlNGFkNGE2NGQ0MzllNzli
NzViZjE4NTBjYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlv
bklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y29ubmVjdEluZXQoY29uc3QgY2hh
ciogc2UKIAogT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludDo6bGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBMaXN0
ZW5lciYgbGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBhdXRvIGlk
ID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5p
cXVlPExpc3RlbmVyQ29ubmVjdGlvbj4oaWQsIGxpc3RlbmVyLCBhZGRyZXNzLCBwb3J0KTsKICAg
ICBpZiAoIWNvbm5lY3Rpb24tPmlzTGlzdGVuaW5nKCkpCkBAIC0xMDIsNyArMTAyLDcgQEAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlzdGVu
SW5ldChjb25zdCBjaGFyKiBhZGQKIAogYm9vbCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExvY2tIb2xkZXIgbG9jayht
X2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2Nr
IH07CiAgICAgaWYgKG1fbGlzdGVuZXJzLmNvbnRhaW5zKGlkKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ6OndvcmtlclRocmVhZCgpCiAgICAgICAgIFZlY3RvcjxQb2xs
aW5nRGVzY3JpcHRvcj4gcG9sbGZkczsKICAgICAgICAgVmVjdG9yPENvbm5lY3Rpb25JRD4gaWRz
OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xv
Y2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gOiBtX2NsaWVudHMpIHsKICAg
ICAgICAgICAgICAgICBwb2xsZmRzLmFwcGVuZChjb25uZWN0aW9uLnZhbHVlLT5wb2xsKTsKICAg
ICAgICAgICAgICAgICBpZHMuYXBwZW5kKGNvbm5lY3Rpb24ua2V5KTsKQEAgLTIwMyw3ICsyMDMs
NyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogewogICAgIEFTU0VSVChTb2NrZXQ6OmlzVmFs
aWQoc29ja2V0KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgIGF1dG8gaWQgPSBn
ZW5lcmF0ZUNvbm5lY3Rpb25JRCgpOwogICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8
Q2xpZW50Q29ubmVjdGlvbj4oaWQsIHNvY2tldCwgY2xpZW50KTsKICAgICBpZiAoIVNvY2tldDo6
aXNWYWxpZChjb25uZWN0aW9uLT5zb2NrZXQpKQpAQCAtMjE3LDE3ICsyMTcsMTcgQEAgT3B0aW9u
YWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xp
ZW50KFBsYXRmb3JtU29ja2UKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
ZGlzY29ubmVjdChDb25uZWN0aW9uSUQgaWQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
IAogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9saXN0ZW5lcnMuZ2V0KGlkKSkg
ewogICAgICAgICBtX2xpc3RlbmVycy5yZW1vdmUoaWQpOwogICAgICAgICBTb2NrZXQ6OmNsb3Nl
KGNvbm5lY3Rpb24tPnNvY2tldCk7Ci0gICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKKyAgICAg
ICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgIGNvbm5lY3Rpb24tPmxpc3RlbmVyLmRp
ZENoYW5nZVN0YXR1cygqdGhpcywgaWQsIExpc3RlbmVyOjpTdGF0dXM6OkNsb3NlZCk7CiAgICAg
fSBlbHNlIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpIHsK
ICAgICAgICAgbV9jbGllbnRzLnJlbW92ZShpZCk7CiAgICAgICAgIFNvY2tldDo6Y2xvc2UoY29u
bmVjdGlvbi0+c29ja2V0KTsKLSAgICAgICAgbG9jay51bmxvY2tFYXJseSgpOworICAgICAgICBs
b2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgY29ubmVjdGlvbi0+Y2xpZW50LmRpZENsb3Nl
KCp0aGlzLCBpZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIExPR19FUlJPUigiRXJyb3I6IENhbm5v
dCBkaXNjb25uZWN0OiBJbnZhbGlkIGlkIik7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6ZGlzY29ubmVjdChDb25uZWN0aW9uSUQgaWQpCiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVDbGllbnQoQ2xp
ZW50JiBjbGllbnQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICBtX2NsaWVudHMu
cmVtb3ZlSWYoWyZjbGllbnRdKGF1dG8mIGtleVZhbHVlKSB7CiAgICAgICAgIGNvbnN0IGF1dG8m
IGNvbm5lY3Rpb24gPSBrZXlWYWx1ZS52YWx1ZTsKIApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVDbGllbnQoQ2xpZW50JiBj
bGllbnQpCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmludmFsaWRhdGVM
aXN0ZW5lcihMaXN0ZW5lciYgbGlzdGVuZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsK
ICAgICBtX2xpc3RlbmVycy5yZW1vdmVJZihbJmxpc3RlbmVyXShhdXRvJiBrZXlWYWx1ZSkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjb25uZWN0aW9uID0ga2V5VmFsdWUudmFsdWU7CiAKQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjppbnZhbGlk
YXRlTGlzdGVuZXIoTGlzdGVuZXImIGxpc3RlbmVyKQogCiBPcHRpb25hbDx1aW50MTZfdD4gUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVjdGlvbklEIGlkKSBjb25z
dAogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5l
Y3Rpb24gPSBtX2xpc3RlbmVycy5nZXQoaWQpKQogICAgICAgICByZXR1cm4gU29ja2V0OjpnZXRQ
b3J0KGNvbm5lY3Rpb24tPnNvY2tldCk7CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24g
PSBtX2NsaWVudHMuZ2V0KGlkKSkKQEAgLTI3NiwxMyArMjc2LDEzIEBAIE9wdGlvbmFsPHVpbnQx
Nl90PiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Z2V0UG9ydChDb25uZWN0aW9uSUQg
aWQpIGNvbnN0CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVu
YWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rp
b25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAg
aWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVudHMuZ2V0KGlkKSkgewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gcmVjdkJ1ZmZlcihTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgICAg
ICBpZiAoYXV0byByZWFkU2l6ZSA9IFNvY2tldDo6cmVhZChjb25uZWN0aW9uLT5zb2NrZXQsIHJl
Y3ZCdWZmZXIuZGF0YSgpLCByZWN2QnVmZmVyLnNpemUoKSkpIHsKICAgICAgICAgICAgIGlmICgq
cmVhZFNpemUgPiAwKSB7CiAgICAgICAgICAgICAgICAgcmVjdkJ1ZmZlci5zaHJpbmsoKnJlYWRT
aXplKTsKLSAgICAgICAgICAgICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAg
ICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y2xp
ZW50LmRpZFJlY2VpdmUoKnRoaXMsIGlkLCBXVEZNb3ZlKHJlY3ZCdWZmZXIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTEsMTQgKzI5MSwxNCBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKENvbm5lY3Rpb25J
RCBpZCkKICAgICAgICAgU29ja2V0OjpjbG9zZShjb25uZWN0aW9uLT5zb2NrZXQpOwogICAgICAg
ICBtX2NsaWVudHMucmVtb3ZlKGlkKTsKIAotICAgICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7Cisg
ICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwogICAgICAgICBjb25uZWN0aW9uLT5jbGllbnQu
ZGlkQ2xvc2UoKnRoaXMsIGlkKTsKICAgICB9CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewotICAgIExvY2tI
b2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29u
bmVjdGlvbnNMb2NrIH07CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2NsaWVu
dHMuZ2V0KGlkKSkgewogICAgICAgICBTb2NrZXQ6OmNsZWFyV2FpdGluZ1dyaXRhYmxlKGNvbm5l
Y3Rpb24tPnBvbGwpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiAKIHZvaWQgUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29ubmVjdGlvbklEIGlkLCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25u
ZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9Owog
ICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpIHsKICAg
ICAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgICAgIGlmIChjb25uZWN0aW9uLT5zZW5kQnVm
ZmVyLmlzRW1wdHkoKSkgewpAQCAtMzQ5LDExICszNDksMTEgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5ldFNvY2tldElmRW5hYmxlZChDb25uZWN0aW9uSUQg
aWQpCiB7CiAgICAgQVNTRVJUKGlzTGlzdGVuaW5nKGlkKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2sobV9jb25uZWN0aW9uc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25z
TG9jayB9OwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9saXN0ZW5lcnMuZ2V0
KGlkKSkgewogICAgICAgICBpZiAoYXV0byBzb2NrZXQgPSBTb2NrZXQ6OmFjY2VwdChjb25uZWN0
aW9uLT5zb2NrZXQpKSB7CiAgICAgICAgICAgICAvLyBOZWVkIHRvIHVubG9jayBiZWZvcmUgY2Fs
bGluZyBjcmVhdGVDbGllbnQgYXMgaXQgYWxzbyBhdHRlbXB0cyB0byBsb2NrLgotICAgICAgICAg
ICAgbG9jay51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7
CiAgICAgICAgICAgICBpZiAoY29ubmVjdGlvbi0+bGlzdGVuZXIuZG9BY2NlcHQoKnRoaXMsIHNv
Y2tldC52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcAppbmRleCAzYzkzYWI4ZWJl
NWFiMmM5NmUzNGMwMTlhMmI3ZjIwNDEzZjgwOGExLi44MTlkM2UzZWM0MTNlOWM4MjhhMTIzN2Nk
YTRkYzc4ZmE0NzE3OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ0xvb3BTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NMb29wU3RhY2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDTG9vcFN0YWNrOjpy
ZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKQogCiB2b2lkIENMb29wU3RhY2s6OmFkZFRvQ29tbWl0dGVk
Qnl0ZUNvdW50KGxvbmcgYnl0ZUNvdW50KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKHN0YWNr
U3RhdGlzdGljc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3RhY2tTdGF0aXN0aWNzTXV0
ZXggfTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8bG9uZz4oY29tbWl0dGVkQnl0ZXNDb3VudCkg
KyBieXRlQ291bnQgPiAtMSk7CiAgICAgY29tbWl0dGVkQnl0ZXNDb3VudCArPSBieXRlQ291bnQ7
CiB9CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBDTG9vcFN0YWNrOjppc1NhZmVUb1JlY3Vyc2Uo
KSBjb25zdAogCiBzaXplX3QgQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0ZUNvdW50KCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHN0YWNrU3RhdGlzdGljc011dGV4IH07CiAgICAgcmV0dXJuIGNvbW1pdHRlZEJ5dGVz
Q291bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCmluZGV4IDU0MzNjNzFjNzM3Yjk1YWRmYTZiYjc2ZjdlOGM1MDM1MGU1MDI1
YzYuLjljZDUyNTI1ZTZjNzIyZjcwZDg4ZTRlNjkzYjE1Yjk2Y2Q3MTEwMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMTA1
OCw3ICsxMDU4LDcgQEAgdm9pZCBkdW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqIGRzdCwgY29uc3Qg
dm9pZCogc3JjLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgYnVmZmVyID0gYml0d2lzZV9jYXN0PHVp
bnQ4X3QqPihtYWxsb2MoYnVmZmVyU2l6ZSkpOwogICAgICAgICBmbHVzaFF1ZXVlLmNvbnN0cnVj
dChXb3JrUXVldWU6OmNyZWF0ZSgianNjLmR1bXBKSVRNZW1vcnkucXVldWUiLCBXb3JrUXVldWU6
OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpKTsKICAgICAgICAgc3Rk
OjphdGV4aXQoW10gewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZHVtcEpJVE1lbW9y
eUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGR1bXBKSVRNZW1vcnlMb2NrIH07
CiAgICAgICAgICAgICBmbHVzaChsb2NrZXIpOwogICAgICAgICAgICAgY2xvc2UoZmQpOwogICAg
ICAgICAgICAgZmQgPSAtMTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgZHVtcEpJVE1lbW9y
eShjb25zdCB2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IHNpemUpCiAKICAgICAg
ICAgbmVlZHNUb0ZsdXNoID0gdHJ1ZTsKICAgICAgICAgZmx1c2hRdWV1ZS5nZXQoKS0+ZGlzcGF0
Y2hBZnRlcihTZWNvbmRzKE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlGbHVzaEludGVydmFsKCkpLCBb
XSB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihkdW1wSklUTWVtb3J5TG9jayk7Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZHVtcEpJVE1lbW9yeUxvY2sgfTsKICAgICAgICAg
ICAgIGlmICghbmVlZHNUb0ZsdXNoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGZsdXNoKGxvY2tlcik7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIGR1bXBKSVRNZW1v
cnkoY29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBzaXplKQogICAgICAg
ICBlbnF1ZXVlRmx1c2gobG9ja2VyKTsKICAgICB9OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
ZHVtcEpJVE1lbW9yeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBkdW1wSklUTWVtb3J5TG9j
ayB9OwogICAgIHVpbnQ2NF90IHRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKICAgICB1aW50
NjRfdCBkc3Q2NCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGRzdCk7CiAgICAgdWludDY0X3Qg
c2l6ZTY0ID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNT
dGF0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuY3BwCmluZGV4IDgx
MzViNGZkZWU2MmY3OGU5ZGM2YjQ2MmQ2Y2VlY2E0ZmQxYzYwNjYuLjdkMWE3NDRkZjc2Y2U1ZWY1
OTA1MjZkNTBjNTA0MmU4NWIxMWZjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSUNTdGF0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRz
LmNwcApAQCAtNjYsNyArNjYsNyBAQCBJQ1N0YXRzOjpJQ1N0YXRzKCkKICAgICBtX3RocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKAogICAgICAgICAiSlNDIElDU3RhdHMiLAogICAgICAgICBbdGhpc10g
KCkgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAg
ICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0Rm9yKAogICAgICAgICAgICAgICAgICAgICBtX2xv
Y2ssIFNlY29uZHMoMSksIFt0aGlzXSAoKSAtPiBib29sIHsgcmV0dXJuIG1fc2hvdWxkU3RvcDsg
fSk7CkBAIC04NCw3ICs4NCw3IEBAIElDU3RhdHM6OklDU3RhdHMoKQogSUNTdGF0czo6fklDU3Rh
dHMoKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX3Nob3VsZFN0b3AgPSB0cnVl
OwogICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMzI1NTM0ZWI5NmZjZmFiMTI4NGRhYTg1NDg3
ZDM4M2NlOGI4MmI1OS4uMzE5YjUwZDk0MmQ1YTk0ZDllOWJkMGZmNDJlNTNkY2E3MzEyYmU3NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMTMxLDcgKzEzMSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlJ
bnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZNCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IgZ2Vu
ZXJhdG9yKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3Rp
U3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+KCkpOwogICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIENvbXBpbGF0
aW9uIHRocmVhZCBjYW4gb25seSByZXRyaWV2ZSBleGlzdGluZyBlbnRyaWVzLgpAQCAtMTQzLDcg
KzE0Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtz
OjpjdGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmV4aXN0aW5nQ1RJU3R1YihUaHVua0dlbmVyYXRv
ciBnZW5lcmF0b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGV4aXN0aW5nQ1RJU3R1YihnZW5lcmF0
b3IsIE5vTG9ja2luZ05lY2Vzc2FyeSk7CiB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6ZXhpc3RpbmdDVElTdHVi
KFRodW5rR2VuZXJhdG9yCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRoRnVuY3Rp
b24gc2xvd1BhdGhGdW5jdGlvbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2Fz
dDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgQ1RJU3R1Yk1hcDo6QWRk
UmVzdWx0IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChrZXksIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4oKSk7CiAgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKaW5kZXggNTM5YjZmYTljYWE4MzI5
MTU0NGM4YWQzNzlkMjI2MDI4NDc0YjU5NC4uYTcwNTJlNzlmMGE3NDM2N2ZlM2ZkYzVhM2NmNmQ1
MzhlNjkzMjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3Jr
bGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9qaXQuY29tcGlsZUFu
ZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgICAgICBtX2lzRmluaXNoZWRDb21waWxpbmcgPSB0cnVlOwogICAg
IH0KICAgICAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNGaW5p
c2hlZENvbXBpbGluZygpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHJldHVybiBtX2lz
RmluaXNoZWRDb21waWxpbmc7CiAgICAgfQogICAgIApAQCAtMTM4LDEzICsxMzgsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG1h
aW4gdGhyZWFkIHJlYWxpemVzIHRoYXQgd2UganVzdCBjb21waWxlZCBzb21ldGhpbmcuIE5vdGlm
eWluZwogICAgICAgICAgICAgLy8gYSBjb25kaXRpb24gaXMgYmFzaWNhbGx5IGZyZWUgaWYgbm9i
b2R5IGlzIHdhaXRpbmcuCi0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV93b3JrbGlz
dC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9j
ayB9OwogICAgICAgICAgICAgbV93b3JrbGlzdC5tX2NvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tl
cik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fbXlQbGFucy5jbGVhcigpOwogICAg
ICAgICAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3dvcmtsaXN0Lm1fbG9jayB9OwogICAgICAgICBtX3dv
cmtsaXN0Lm1fbnVtQXZhaWxhYmxlVGhyZWFkcysrOwogICAgICAgICByZXR1cm4gV29ya1Jlc3Vs
dDo6Q29udGludWU7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIEpJVFdvcmtsaXN0OjpKSVRX
b3JrbGlzdCgpCiAgICAgOiBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fY29u
ZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAg
ICBtX3RocmVhZCA9IG5ldyBUaHJlYWQobG9ja2VyLCAqdGhpcyk7CiB9CiAKQEAgLTE4NCw3ICsx
ODQsNyBAQCBib29sIEpJVFdvcmtsaXN0Ojpjb21wbGV0ZUFsbEZvclZNKFZNJiB2bSkKICAgICBm
b3IgKDs7KSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDMyPiBteVBsYW5zOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAg
ICAgICAgICAgICAgICAgYm9vbCBkaWRGaW5kVW5maW5pc2hlZFBsYW4gPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICBtX3BsYW5zLnJlbW92ZUFsbE1hdGNoaW5nKApAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgSklUV29ya2xpc3Q6OnBvbGwoVk0mIHZtKQogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5o
ZWFwKTsKICAgICBQbGFucyBteVBsYW5zOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAg
IG1fcGxhbnMucmVtb3ZlQWxsTWF0Y2hpbmcoCiAgICAgICAgICAgICBbJl0gKFJlZlB0cjxQbGFu
PiYgcGxhbikgewogICAgICAgICAgICAgICAgIGlmICgmcGxhbi0+dm0oKSAhPSAmdm0pCkBAIC0y
NTYsNyArMjU2LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZUxhdGVyKENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUIKICAgICBjb2RlQmxvY2stPmpp
dFNvb24oKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIAogICAgICAgICBpZiAo
bV9wbGFubmVkLmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
OTUsNyArMjk1LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyhQbGFucyYgbXlQ
bGFucykKICAgICBmb3IgKFJlZlB0cjxQbGFuPiYgcGxhbiA6IG15UGxhbnMpIHsKICAgICAgICAg
cGxhbi0+ZmluYWxpemUodHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAg
bV9wbGFubmVkLnJlbW92ZShwbGFuLT5jb2RlQmxvY2soKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmNwcAppbmRleCAwM2U1NWVl
M2QxZmYyMDI1ODZhZjJiZWE4ZDc5MWQ1MTUzYTE4N2IwLi42MDZlNWYxNzQ0YWYwZjYxMGRkY2Nl
NzYxYmM5M2UzMjIzYjk1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgTG9jayBwcm92aWRl
cklkTG9jazsKIAogdm9pZCBTb3VyY2VQcm92aWRlcjo6Z2V0SUQoKQogewotICAgIExvY2tIb2xk
ZXIgbG9jaygmcHJvdmlkZXJJZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBwcm92aWRlcklk
TG9jayB9OwogICAgIGlmICghbV9pZCkgewogICAgICAgICBzdGF0aWMgaW50cHRyX3QgbmV4dFBy
b3ZpZGVySUQgPSAwOwogICAgICAgICBtX2lkID0gKytuZXh0UHJvdmlkZXJJRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAppbmRl
eCA3NTIxYTFkN2FiYTM4N2I0YTFkYzhiZTZmNjIyMWMxNGIyZjFiZmIwLi4yZDI2ZWUxYTBkNzYz
NjJhOTdhY2FiZWZjMjNjZGFiYjU4N2Y5OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC01OCw3ICs1OCw3IEBAIERh
dGFiYXNlOjp+RGF0YWJhc2UoKQogCiBCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVCeXRlY29k
ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIGVuc3VyZUJ5
dGVjb2Rlc0Zvcihsb2NrZXIsIGNvZGVCbG9jayk7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgQnl0
ZWNvZGVzKiBEYXRhYmFzZTo6ZW5zdXJlQnl0ZWNvZGVzRm9yKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgQ29kZUJsb2NrKiBjb2RlQmwKIAogdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgbV9ieXRlY29kZXNNYXAu
cmVtb3ZlKGNvZGVCbG9jayk7CiAgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJsb2Nr
KTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAKIHZvaWQgRGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBSZWY8Q29tcGlsYXRpb24+JiYgY29tcGlsYXRpb24pCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogCiAgICAgbV9jb21waWxhdGlv
bnMuYXBwZW5kKGNvbXBpbGF0aW9uLmNvcHlSZWYoKSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBEYXRhYmFzZTo6cmVnaXN0ZXJUb1NhdmVBdEV4aXQoY29uc3QgY2hhciogZmlsZW5hbWUpCiAK
IHZvaWQgRGF0YWJhc2U6OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFy
KiBzdW1tYXJ5LCBjb25zdCBDU3RyaW5nJiBkZXRhaWwpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgQnl0
ZWNvZGVzKiBieXRlY29kZXMgPSBlbnN1cmVCeXRlY29kZXNGb3IobG9ja2VyLCBjb2RlQmxvY2sp
OwogICAgIENvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IG1fY29tcGlsYXRpb25NYXAuZ2V0KGNv
ZGVCbG9jayk7CkBAIC0xODYsMTQgKzE4NiwxNCBAQCB2b2lkIERhdGFiYXNlOjphZGREYXRhYmFz
ZVRvQXRFeGl0KCkKICAgICBpZiAoKytkaWRSZWdpc3RlckF0RXhpdCA9PSAxKQogICAgICAgICBh
dGV4aXQoYXRFeGl0Q2FsbGJhY2spOwogICAgIAotICAgIExvY2tIb2xkZXIgaG9sZGVyKHJlZ2lz
dHJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3RyYXRpb25Mb2NrIH07CiAg
ICAgbV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlID0gZmlyc3REYXRhYmFzZTsKICAgICBmaXJzdERh
dGFiYXNlID0gdGhpczsKIH0KIAogdm9pZCBEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2VGcm9tQXRF
eGl0KCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3RyYXRpb25Mb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAgIGZvciAoRGF0YWJhc2UqKiBj
dXJyZW50ID0gJmZpcnN0RGF0YWJhc2U7ICpjdXJyZW50OyBjdXJyZW50ID0gJigqY3VycmVudCkt
Pm1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZSkgewogICAgICAgICBpZiAoKmN1cnJlbnQgIT0gdGhp
cykKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRGF0YWJh
c2U6OnBlcmZvcm1BdEV4aXRTYXZlKCkgY29uc3QKIAogRGF0YWJhc2UqIERhdGFiYXNlOjpyZW1v
dmVGaXJzdEF0RXhpdERhdGFiYXNlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcihyZWdpc3Ry
YXRpb25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcmVnaXN0cmF0aW9uTG9jayB9OwogICAg
IERhdGFiYXNlKiByZXN1bHQgPSBmaXJzdERhdGFiYXNlOwogICAgIGlmIChyZXN1bHQpIHsKICAg
ICAgICAgZmlyc3REYXRhYmFzZSA9IHJlc3VsdC0+bV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5jcHAKaW5kZXgg
ODdjOTdjZmQ4YjUwNGZjNzZmOTFjMDQ3NmZkYjcxYzdjODhmYWUyMC4uZjAwMGM5ODg4M2Y2MGQ0
OTUzYWFmMzI0ODM1ZTk3NWRmZGQxMmU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFVJRCBVSUQ6OmNyZWF0
ZSgpCiAgICAgc3RhdGljIExvY2sgbG9jazsKICAgICBzdGF0aWMgdWludDY0X3QgY291bnRlcjsK
ICAgICAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bG9jayB9OwogICAgIFVJRCByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fdWlkID0gKytjb3VudGVyOwog
ICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggMjlkNWRmZTc4YWIyOTQ3ZTM5YmNlNjk3NzA0
Mjk3N2ZkYTEyMjQ0NS4uMWYyZGJlYWZjNGQ2MWFmNDhlNjM5ZmM1OWJmZDI0ZDQ1YWUwZGRkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGlt
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1Rp
bWVyLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0Rl
cGVuZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kCiAKIHZv
aWQgRGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFz
ayYmIHRhc2spCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBtX3Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYm
ICFtX2N1cnJlbnRseVJ1bm5pbmdUYXNrKQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7
CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGlu
Z1dvcmsoVGlja2V0IHRpY2tldCkKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRpZFJlc3VtZVNj
cmlwdEV4ZWN1dGlvbk93bmVyKCkKIHsKICAgICBBU1NFUlQoIW1fY3VycmVudGx5UnVubmluZ1Rh
c2spOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmIG1fdGFza3Muc2l6
ZSgpKQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDVmZjU4N2Vl
OTQwMTU4ZTY0ZWU5ZDE2MGJmNjAwNDRhMWI2OWRmNDMuLmQ3MWYzZWMxOWZmMzY3NDY3NzA3ZmU1
MmI4ODAyNGM1NjI3YTE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBTYW1wbGlu
Z1Byb2ZpbGVyOjp0aW1lckxvb3AoKQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIFNlY29u
ZHMgc3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lID0gMF9zOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1faXNTaHV0RG93bikpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NzEsMTMgKzY3MSwxMyBAQCB0ZW1wbGF0ZSB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnZpc2l0KFNsb3RWaXNpdG9yJik7CiAKIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6c2h1dGRvd24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1faXNTaHV0RG93biA9IHRydWU7CiB9
CiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6c3RhcnQoKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHN0YXJ0KGxv
Y2tlcik7CiB9CiAKQEAgLTcwMywxOSArNzAzLDE5IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6
bm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9j
CiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0
aW9uVGhyZWFkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRp
b25UaHJlYWQobG9ja2VyKTsKIH0KIAogdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpub3RpY2VKU0xv
Y2tBY3F1aXNpdGlvbigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhl
Y3V0aW9uVGhyZWFkKGxvY2tlcik7CiB9CiAKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNl
Vk1FbnRyeSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKG1fdm0uZW50cnlTY29wZSk7CiAgICAgbm90
aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7CiAgICAgbV9sYXN0
VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZv
aWQgU2FtcGxpbmdQcm9maWxlcjo6cmVnaXN0ZXJGb3JSZXBvcnRBdEV4aXQoKQogICAgIHN0YXRp
YyBMb2NrIHJlZ2lzdHJhdGlvbkxvY2s7CiAgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNhbXBs
aW5nUHJvZmlsZXI+PiogcHJvZmlsZXNUb1JlcG9ydDsKIAotICAgIExvY2tIb2xkZXIgaG9sZGVy
KHJlZ2lzdHJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyByZWdpc3RyYXRpb25Mb2Nr
IH07CiAKICAgICBpZiAoIXByb2ZpbGVzVG9SZXBvcnQpIHsKICAgICAgICAgcHJvZmlsZXNUb1Jl
cG9ydCA9IG5ldyBIYXNoU2V0PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAppbmRleCA0ZjVkNWM0ZTQ1MWJhMTYx
MTdhMjdhMWY3Nzk0ODE3MmU1OTYzNGFmLi40ZGFjNWUxOTg4MDI2YzdlZWE5YmQyNDg0MTQ0NzRl
YTUzNGEyY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRj
aGRvZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXYXRjaGRvZzo6c3RhcnRUaW1lcihTZWNvbmRzIHRp
bWVMaW1pdCkKICAgICAvLyB2aWEgd2lsbERlc3Ryb3lWTSgpIGJlZm9yZSBpdCBnb2VzIGF3YXku
CiAgICAgUmVmUHRyPFdhdGNoZG9nPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKICAgICBtX3RpbWVy
UXVldWUtPmRpc3BhdGNoQWZ0ZXIodGltZUxpbWl0LCBbdGhpcywgcHJvdGVjdGVkVGhpc10gewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX3ZtKQogICAgICAgICAgICAgbV92bS0+bm90aWZ5
TmVlZFdhdGNoZG9nQ2hlY2soKTsKICAgICB9KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFdh
dGNoZG9nOjpzdG9wVGltZXIoKQogCiB2b2lkIFdhdGNoZG9nOjp3aWxsRGVzdHJveVZNKFZNKiB2
bSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICBBU1NFUlRfVU5VU0VEKHZtLCBtX3ZtID09IHZtKTsKICAgICBtX3Zt
ID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9W
TUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3Iu
Y3BwCmluZGV4IGVkODhmZjJjNzRhZjI1YzIzOTAxZTZlZTY0ODk3ZTc5ZmNiMmEzNzAuLmU0OWRh
ZTFlMWJjOWRkNzBjOWViMjAyZDg3NzA5ZmNjNmNhNjcwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGF1dG8gVk1J
bnNwZWN0b3I6OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IFZNSW5zcGVjdG9yOjpMb2Nr
ZXImLCB2b2lkKiBtYWNoCiAgICAgICAgICAgICByZXR1cm4gRnVuY3RvclN0YXR1czo6Q29udGlu
dWU7IC8vIFNraXAgdGhpcyBWTS4KICAgICAgICAgfQogCi0gICAgICAgIExvY2tIb2xkZXIgZXhl
Y3V0YWJsZUFsbG9jYXRvckxvY2tlcihsb2NrKTsKKyAgICAgICAgTG9ja2VyIGV4ZWN1dGFibGVB
bGxvY2F0b3JMb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGlmIChhbGxvY2F0b3IuaXNWYWxpZEV4
ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciwgbWFjaGluZVBDKSkgewog
ICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JTdGF0
dXM6OkRvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJR
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5k
ZXggMzZlZjY0ZGEzMzVjNzQ4ZWM1NzQ3YTIxYWMwZTI3MGM5YzM1NmUxMi4uZjc4ZWQyNTU0NjQx
NDMzOTU3YWJkYmM4YWJhNzBkYzM5YTZhYjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQkJRUGxhbjo6d29y
ayhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIC8vIGFsd2F5cyBjYWxsIHRoZSBm
YXN0ZXN0IGNvZGUuIEFueSBmdW5jdGlvbiBsaW5rZWQgYWZ0ZXIgdXMgd2lsbCBzZWUgb3VyIG5l
dyBjb2RlIGFuZCB0aGUgbmV3IGNhbGxzaXRlcywgd2hpY2ggdGhleQogICAgICAgICAvLyB3aWxs
IHVwZGF0ZS4gSXQncyBhbHNvIG9rIGlmIHRoZXkgcHVibGlzaCB0aGVpciBjb2RlIGJlZm9yZSB3
ZSByZXNldCB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGVzIGJlY2F1c2UgYWZ0ZXIgd2UgcmVsZWFzZQog
ICAgICAgICAvLyB0aGUgbG9jayBvdXIgY29kZSBpcyByZWFkeSB0byBiZSBwdWJsaXNoZWQgdG9v
LgotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY29kZUJsb2NrLT5tX2xvY2sgfTsKIAogICAgICAgICBtX2Nv
ZGVCbG9jay0+bV9iYnFDYWxsZWVzW21fZnVuY3Rpb25JbmRleF0gPSBjYWxsZWUuY29weVJlZigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCmluZGV4
IDlkMmMyNGQ4ZWEwMjlhMGE5NWU0MjU4YWEyMDlmMGYzYzg3MTU1OTkuLjZmZWIxNTc3MzRkZmM5
ZmJiOGIyYWY0Y2E2M2M3ZWFjMGYwNDNhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAg
VGhyZWFkQ291bnRIb2xkZXIoRW50cnlQbGFuJiBwbGFuKQogICAgICAgICA6IG1fcGxhbihwbGFu
KQogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wbGFuLm1fbG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYW4ubV9sb2NrIH07CiAgICAgICAgIG1fcGxhbi5tX251
bWJlck9mQWN0aXZlVGhyZWFkcysrOwogICAgIH0KIAogICAgIH5UaHJlYWRDb3VudEhvbGRlcigp
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BsYW4ubV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhbi5tX2xvY2sgfTsKICAgICAgICAgbV9wbGFuLm1fbnVt
YmVyT2ZBY3RpdmVUaHJlYWRzLS07CiAKICAgICAgICAgaWYgKCFtX3BsYW4ubV9udW1iZXJPZkFj
dGl2ZVRocmVhZHMgJiYgIW1fcGxhbi5oYXNXb3JrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggOGMyMzg4YjE2ZjBjZTE0OGQ3ZDhhMTM1NjI2ZGE2
ZjVkMzRlOTRjYi4uZWRmZDY4YWZjNGE2NmRmZTA2MDMwNzZkZjFlYTM5ZmZmOTVkNWUwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgLy8g
YWx3YXlzIGNhbGwgdGhlIGZhc3Rlc3QgY29kZS4gQW55IGZ1bmN0aW9uIGxpbmtlZCBhZnRlciB1
cyB3aWxsIHNlZSBvdXIgbmV3IGNvZGUgYW5kIHRoZSBuZXcgY2FsbHNpdGVzLCB3aGljaCB0aGV5
CiAgICAgICAgIC8vIHdpbGwgdXBkYXRlLiBJdCdzIGFsc28gb2sgaWYgdGhleSBwdWJsaXNoIHRo
ZWlyIGNvZGUgYmVmb3JlIHdlIHJlc2V0IHRoZSBpbnN0cnVjdGlvbiBjYWNoZXMgYmVjYXVzZSBh
ZnRlciB3ZSByZWxlYXNlCiAgICAgICAgIC8vIHRoZSBsb2NrIG91ciBjb2RlIGlzIHJlYWR5IHRv
IGJlIHB1Ymxpc2hlZCB0b28uCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29kZUJsb2Nr
LT5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2RlQmxvY2stPm1fbG9jayB9
OwogCiAgICAgICAgIG1fY29kZUJsb2NrLT5tX29tZ0NhbGxlZXNbbV9mdW5jdGlvbkluZGV4XSA9
IGNhbGxlZS5jb3B5UmVmKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNw
cAppbmRleCBjNmE5MDRkNjg0NDExZDIwNmVhMGZhOTRkMzk4ZmUwNzEyMTdlNmJmLi5mNzM1YjQw
OTJkY2Y3OGY3ODY2MzYzYjgwZTJjMmQ2NWIyODkwNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBsYW4uY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUGxhbjo6cnVuQ29tcGxl
dGlvblRhc2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIAogdm9pZCBQbGFuOjphZGRDb21wbGV0
aW9uVGFzayhDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpCiAgICAgICAgIG1fY29tcGxldGlvblRhc2tzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihjb250ZXh0LCBXVEZNb3ZlKHRhc2spKSk7CiAgICAgZWxzZQpAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIFBsYW46OmFkZENvbXBsZXRpb25UYXNrKENvbnRleHQqIGNvbnRl
eHQsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKIAogdm9pZCBQbGFuOjp3YWl0Rm9yQ29tcGxldGlv
bigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpIHsKICAgICAgICAgbV9jb21wbGV0
ZWQud2FpdChtX2xvY2spOwogICAgIH0KQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQbGFuOjp3YWl0
Rm9yQ29tcGxldGlvbigpCiAKIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENhbmNlbElm
TGFzdChDb250ZXh0JiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVE
KSB7CiAgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21wbGV0aW9uIHRhc2sgdG8gbm90
IGhhdmUgYSBDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlLmNwcAppbmRleCA2MjQ1YTMxZDAwYzFlMDFlNzQ3ODBlNzBiMTA5YTBlNzVkNmRkNjI3Li42
YjIwZDA4OTQ1NDIwNjc5ZTc2MjdlZTBjOGRjMTliZGM5ODY3Yjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0
cnVjdCBQYXJhbWV0ZXJUeXBlcyB7CiBSZWZQdHI8U2lnbmF0dXJlPiBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6c2lnbmF0dXJlRm9yKGNvbnN0IFZlY3RvcjxUeXBlLCAxPiYgcmVzdWx0cywgY29uc3Qg
VmVjdG9yPFR5cGU+JiBhcmdzKQogewogICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0g
c2luZ2xldG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgaW5mby5tX2xvY2sgfTsKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5t
X3NpZ25hdHVyZVNldC50ZW1wbGF0ZSBhZGQ8UGFyYW1ldGVyVHlwZXM+KFBhcmFtZXRlclR5cGVz
IHsgcmVzdWx0cywgYXJncyB9KTsKICAgICByZXR1cm4gbWFrZVJlZigqYWRkUmVzdWx0Lml0ZXJh
dG9yLT5rZXkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIFJlZlB0cjxTaWduYXR1cmU+IFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpzaWduYXR1cmVGb3IoY29uc3QgVmVjdG9yPFR5cGUsIDE+JiByZXN1CiB2
b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKIHsKICAgICBTaWduYXR1cmVJ
bmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZv
Lm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07CiAKICAgICBpbmZv
Lm1fc2lnbmF0dXJlU2V0LnJlbW92ZUlmKFsmXSAoYXV0byYgaGFzaCkgewogICAgICAgICBjb25z
dCBhdXRvJiBzaWduYXR1cmUgPSBoYXNoLmtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtV29ya2xpc3QuY3BwCmluZGV4IDBjYzZlZmZiZDc5NDhjYzBkM2NlODQxYTg5MzVmNmQ1
NzllYjUwZjguLjViYWQwZDkwYTU2MmUyNWRkZTgxN2I1ODJjMDYwNjY1NmM5MDZlYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKCFwbGFuLT5oYXNXb3JrKCkgfHwgcGxh
bi0+bXVsdGlUaHJlYWRlZCgpKTsKICAgICAgICAgaWYgKHBsYW4tPmhhc1dvcmsoKSAmJiAhd2Fz
TXVsdGlUaHJlYWRlZCAmJiBwbGFuLT5tdWx0aVRocmVhZGVkKCkpIHsKLSAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCp3b3JrbGlzdC5tX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7ICp3b3JrbGlzdC5tX2xvY2sgfTsKICAgICAgICAgICAgIGVsZW1lbnQuc2V0VG9OZXh0
UHJpb3JpdHkoKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcXVldWUuZW5xdWV1ZShXVEZNb3Zl
KGVsZW1lbnQpKTsKICAgICAgICAgICAgIHdvcmtsaXN0Lm1fcGxhbkVucXVldWVkLT5ub3RpZnlB
bGwobG9ja2VyKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdvcmtsaXN0OjpRdWV1ZUVsZW1l
bnQ6OnNldFRvTmV4dFByaW9yaXR5KCkKIAogdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxh
bj4gcGxhbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogCiAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fcXVldWUpCkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikKIHZvaWQgV29ya2xpc3Q6OmNv
bXBsZXRlUGxhblN5bmNocm9ub3VzbHkoUGxhbiYgcGxhbikKIHsKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9j
ayB9OwogICAgICAgICBtX3F1ZXVlLmRlY3JlYXNlS2V5KFsmXSAoUXVldWVFbGVtZW50JiBlbGVt
ZW50KSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC5wbGFuID09ICZwbGFuKSB7CiAgICAgICAg
ICAgICAgICAgZWxlbWVudC5wcmlvcml0eSA9IFByaW9yaXR5OjpTeW5jaHJvbm91czsKQEAgLTE4
OSw3ICsxODksNyBAQCB2b2lkIFdvcmtsaXN0Ojpjb21wbGV0ZVBsYW5TeW5jaHJvbm91c2x5KFBs
YW4mIHBsYW4pCiAKIHZvaWQgV29ya2xpc3Q6OnN0b3BBbGxQbGFuc0ZvckNvbnRleHQoQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIFZlY3RvcjxRdWV1ZUVsZW1lbnQ+IGVsZW1lbnRz
OwogICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgUXVldWVFbGVtZW50
IGVsZW1lbnQgPSBtX3F1ZXVlLmRlcXVldWUoKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBXb3JrbGlz
dDo6V29ya2xpc3QoKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRz
ID0gT3B0aW9uczo6dXNlQ29uY3VycmVudEpJVCgpID8ga2VyblRDU01Bd2FyZU51bWJlck9mUHJv
Y2Vzc29yQ29yZXMoKSA6IDE7CiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJP
ZkNvbXBpbGF0aW9uVGhyZWFkcyk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKICAgICAgICAgbV90aHJlYWRzLnVu
Y2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMp
KTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoKQogV29ya2xpc3Q6
On5Xb3JrbGlzdCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgbV9xdWV1ZS5l
bnF1ZXVlKHsgUHJpb3JpdHk6OlNodXRkb3duLCBuZXh0VGlja2V0KCksIG51bGxwdHIgfSk7CiAg
ICAgICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RG
L2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggYjIwZGQ3ZTcxMzYxMjBmMWUwOWQ1
MTZlNWYyMzQyYWMzMWNlNDExNi4uMDE0NDAyMDI5MTUzZWRmMTZhOWMzZTUxMjYyZDJlYTU4MjYx
NzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtMTA4LDcg
KzEwOCw3IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteU51bUl0ZXJhdGlvbnMrKzsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG51bUl0ZXJhdGlvbnNMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBudW1JdGVyYXRpb25zTG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAg
bnVtSXRlcmF0aW9ucyArPSBteU51bUl0ZXJhdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhy
ZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKaW5kZXggODdiOTFm
MTA1YzcyZDA0NjBkNjE3ZTM4NTU3M2NlY2VjYjI3Y2E1NC4uZjRlYTc4ZDEzZTFjZGRiNjE5Yjgy
Mjg2OGQzM2M3MjdjOWYyZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGlj
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCkBAIC0x
MjQsNyArMTI0LDcgQEAgQXV0b21hdGljVGhyZWFkOjp+QXV0b21hdGljVGhyZWFkKCkKIHsKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBEZWxl
dGluZyBBdXRvbWF0aWNUaHJlYWQuXG4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIAogICAgIC8vIEl0J3MgcG9z
c2libGUgdGhhdCB3ZSdyZSBpbiBhIHdhaXRpbmcgc3RhdGUgd2l0aCB0aGUgdGhyZWFkIHNodXQg
ZG93bi4gVGhpcyBpcyBhIGdvb2Z5IHdheSB0bwogICAgIC8vIGRpZSwgYnV0IGl0IGNvdWxkIGhh
cHBlbi4KQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIEF1dG9tYXRpY1RocmVhZDo6bm90aWZ5KGNv
bnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAKIHZvaWQgQXV0b21hdGljVGhyZWFkOjpqb2lu
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgKm1fbG9jayB9OwogICAgIHdoaWxlIChtX2lzUnVubmluZykKICAgICAgICAgbV9pc1J1bm5p
bmdDb25kaXRpb24ud2FpdCgqbV9sb2NrKTsKIH0KQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEF1
dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAg
dGhyZWFkLT50aHJlYWREaWRTdGFydCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
QVNTRVJUX0VOQUJMRUQpIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9s
b2NrKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2NvbmRpdGlvbi0+Y29udGFpbnMobG9ja2VyLCB0aGlzKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEF1dG9t
YXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgZm9yICg7Oykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKGxvY2tlcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFBvbGxSZXN1bHQ6Oldvcmsp
CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFi
c3RyYWN0TG9ja2VyJikKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBXb3JrUmVz
dWx0IHJlc3VsdCA9IHdvcmsoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFdvcmtS
ZXN1bHQ6OlN0b3ApIHsKLSAgICAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1f
bG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdG9wUGVybWFuZW50bHkobG9ja2VyKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0ID09IFdv
cmtSZXN1bHQ6OkNvbnRpbnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRp
Y1RocmVhZC5oIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKaW5kZXggNmQ1NTdi
YzNiNmNkOTRjMzE0YzJmMDk0MDlkZjk3MjBjNmQ5YjhkOC4uOGQ3YzJiNTE2ODBhM2VhNjcyOGU1
MTc0ZmM4MTgwNjhkZWU5NWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGlj
VGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmgKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAvLwogLy8gICAgIGZvciAoOzspIHsKIC8vICAgICAg
ICAgewotLy8gICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKy8vICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIC8vICAgICAgICAgICAgIGZvciAoOzsp
IHsKIC8vICBbMV0gICAgICAgICAgICBzdHVmZiB0aGF0IGNvdWxkIGJyZWFrLCByZXR1cm4sIG9y
IGZhbGwgdGhyb3VnaDsKIC8vICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9j
ayk7CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHsKICAgICAvLyAgICAg
Zm9yICg7OykgewogICAgIC8vICAgICAgICAgewotICAgIC8vICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgLy8gICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIC8vICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAvLyAgICAgICAgICAg
ICAgICAgUG9sbFJlc3VsdCByZXN1bHQgPSBwb2xsKCk7CiAgICAgLy8gICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gUG9sbFJlc3VsdDo6V29yaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01ldGFBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAK
aW5kZXggZDdjOGVkZWNlYjljMTEyYWI1MDM4NDBkYjRmZjU2YmY3N2E1MmEzMi4uZWVmODliNzdl
N2JkZGZjZDY3NjVkNjczYWE1NjVhMDY3N2NkNzBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTWV0YUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9ySGFuZGxlOjpzaHJpbmsoc2l6
ZV90IG5ld1NpemVJbkJ5dGVzKQogICAgIEFTU0VSVChuZXdTaXplSW5CeXRlcyA8PSBzaXplSW5C
eXRlcyk7CiAKICAgICBNZXRhQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSB0aGlzLT5hbGxvY2F0b3Io
KTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcigmYWxsb2NhdG9yLm1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGFsbG9jYXRvci5tX2xvY2sgfTsKIAogICAgIG5ld1NpemVJbkJ5dGVzID0gYWxs
b2NhdG9yLnJvdW5kVXAobmV3U2l6ZUluQnl0ZXMpOwogICAgIApAQCAtMjg3LDcgKzI4Nyw3IEBA
IHZvaWQgTWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNlRnJvbVJlbGVhc2VkSGFuZGxlKEZyZWVT
cGFjZVB0ciBzdGFydCwgc2l6ZV90IHNpCiB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJl
ZVNwYWNlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiB7CiAgICAgQ29uZmlnOjpB
c3NlcnROb3RGcm96ZW5TY29wZSBhc3NlcnROb3RGcm96ZW5TY29wZTsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcigmbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV9i
eXRlc1Jlc2VydmVkICs9IHNpemVJbkJ5dGVzOwogICAgIGFkZEZyZWVTcGFjZShGcmVlU3BhY2VQ
dHI6Om1ha2VGcm9tUmF3UG9pbnRlcihzdGFydCksIHNpemVJbkJ5dGVzKTsKIH0KQEAgLTI5NSw3
ICsyOTUsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZXNoRnJlZVNwYWNlKHZvaWQqIHN0
YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiBzaXplX3QgTWV0YUFsbG9jYXRvcjo6ZGVidWdGcmVl
U3BhY2VTaXplKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoJm1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIHNpemVfdCByZXN1bHQg
PSAwOwogICAgIGZvciAoRnJlZVNwYWNlTm9kZSogbm9kZSA9IG1fZnJlZVNwYWNlU2l6ZU1hcC5m
aXJzdCgpOyBub2RlOyBub2RlID0gbm9kZS0+c3VjY2Vzc29yKCkpCiAgICAgICAgIHJlc3VsdCAr
PSBub2RlLT5zaXplSW5CeXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFyYWxs
ZWxIZWxwZXJQb29sLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSGVscGVyUG9vbC5jcHAK
aW5kZXggN2MwNTZiYTE1MTIwMGY3NjlkYzZiYzkyNDQxOWNjMzY4YzcyMTg2NS4uNDQzZDczMTNl
NmJhZDAyODQzNDllNjEwN2YyMDM5N2Y5M2Y0M2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGFyYWxsZWxIZWxwZXJQb29sLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhl
bHBlclBvb2wuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiBQYXJhbGxl
bEhlbHBlckNsaWVudDo6UGFyYWxsZWxIZWxwZXJDbGllbnQoUmVmUHRyPFBhcmFsbGVsSGVscGVy
UG9vbD4mJiBwb29sKQogICAgIDogbV9wb29sKFdURk1vdmUocG9vbCkpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fcG9vbC0+bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9v
bC0+bV9sb2NrIH07CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9vbC0+bV9pc0R5aW5nKTsKICAg
ICBtX3Bvb2wtPm1fY2xpZW50cy5hcHBlbmQodGhpcyk7CiB9CiAKIFBhcmFsbGVsSGVscGVyQ2xp
ZW50Ojp+UGFyYWxsZWxIZWxwZXJDbGllbnQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCpt
X3Bvb2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX3Bvb2wtPm1fbG9jayB9Owog
ICAgIGZpbmlzaChsb2NrZXIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvb2wt
Pm1fY2xpZW50cy5zaXplKCk7ICsraSkgewpAQCAtNTQsNyArNTQsNyBAQCBQYXJhbGxlbEhlbHBl
ckNsaWVudDo6flBhcmFsbGVsSGVscGVyQ2xpZW50KCkKIAogdm9pZCBQYXJhbGxlbEhlbHBlckNs
aWVudDo6c2V0VGFzayhSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4mJiB0YXNrKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX3Bvb2wtPm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
ICptX3Bvb2wtPm1fbG9jayB9OwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2spOwogICAgIG1f
dGFzayA9IFdURk1vdmUodGFzayk7CiAgICAgbV9wb29sLT5kaWRNYWtlV29ya0F2YWlsYWJsZShs
b2NrZXIpOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFBhcmFsbGVsSGVscGVyQ2xpZW50OjpzZXRU
YXNrKFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiYmIHRhc2spCiAKIHZvaWQgUGFyYWxsZWxI
ZWxwZXJDbGllbnQ6OmZpbmlzaCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fcG9vbC0+
bV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgZmlu
aXNoKGxvY2tlcik7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBQYXJhbGxlbEhlbHBlckNs
aWVudDo6ZG9Tb21lSGVscGluZygpCiB7CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+
IHRhc2s7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgICAgIHRh
c2sgPSBjbGFpbVRhc2sobG9ja2VyKTsKICAgICAgICAgaWYgKCF0YXNrKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUGFyYWxsZWxIZWxwZXJDbGllbnQ6OnJ1
blRhc2soY29uc3QgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+JiB0YXNrKQogICAgIHRhc2st
PnJ1bigpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLT5tX2xv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fcG9vbC0+bV9sb2NrIH07CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fbnVtQWN0aXZlKTsKICAgICAgICAgLy8gTm8gbmV3IHRhc2sgY291
bGQgaGF2ZSBiZWVuIGluc3RhbGxlZCwgc2luY2Ugd2Ugd2VyZSBzdGlsbCBhY3RpdmUuCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Rhc2sgfHwgbV90YXNrID09IHRhc2spOwpAQCAtMTMzLDcg
KzEzMyw3IEBAIFBhcmFsbGVsSGVscGVyUG9vbDo6flBhcmFsbGVsSGVscGVyUG9vbCgpCiAgICAg
UkVMRUFTRV9BU1NFUlQobV9jbGllbnRzLmlzRW1wdHkoKSk7CiAgICAgCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7ICpt
X2xvY2sgfTsKICAgICAgICAgbV9pc0R5aW5nID0gdHJ1ZTsKICAgICAgICAgbV93b3JrQXZhaWxh
YmxlQ29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKICAgICB9CkBAIC0xNDQsNyArMTQ0LDcg
QEAgUGFyYWxsZWxIZWxwZXJQb29sOjp+UGFyYWxsZWxIZWxwZXJQb29sKCkKIAogdm9pZCBQYXJh
bGxlbEhlbHBlclBvb2w6OmVuc3VyZVRocmVhZHModW5zaWduZWQgbnVtVGhyZWFkcykKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9j
ayB9OwogICAgIGlmIChudW1UaHJlYWRzIDwgbV9udW1UaHJlYWRzKQogICAgICAgICByZXR1cm47
CiAgICAgbV9udW1UaHJlYWRzID0gbnVtVGhyZWFkczsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lk
IFBhcmFsbGVsSGVscGVyUG9vbDo6ZG9Tb21lSGVscGluZygpCiAgICAgUGFyYWxsZWxIZWxwZXJD
bGllbnQqIGNsaWVudDsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkICgpPj4gdGFzazsKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgKm1fbG9jayB9OwogICAgICAgICBjbGllbnQgPSBnZXRDbGllbnRXaXRoVGFzayhs
b2NrZXIpOwogICAgICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwIGIvU291cmNlL1dURi93dGYvU2Vjb25k
cy5jcHAKaW5kZXggNWE4MWYwOWQ5YjdkZTRkZDhmMzBlODk0YjkyZjU5MjIzMTZkZmI5NC4uZDYw
N2M5NzI5YWYxNjdmZmI3YWQyYTY2NmExNjQ3MGI3ZGZiNDkxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvU2Vjb25kcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5jcHAKQEAg
LTg2LDcgKzg2LDcgQEAgdm9pZCBzbGVlcChTZWNvbmRzIHZhbHVlKQogCiAgICAgTG9jayBmYWtl
TG9jazsKICAgICBDb25kaXRpb24gZmFrZUNvbmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VM
b2NrZXIoZmFrZUxvY2spOworICAgIExvY2tlciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAg
ICBmYWtlQ29uZGl0aW9uLndhaXRGb3IoZmFrZUxvY2ssIHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKaW5kZXggYzdiOWVkMmU2MmUwNjc0
ZTdjYTUzYjg1YjEzMjkxY2IwMzhkMTk0ZS4uMmI1MGRlMWEzMWE1Y2Q5MzExYzgyMjQyYjQ3NWUx
NDZkZmY0NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xv
Y2tUeXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUu
Y3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBzbGVlcChjb25zdCBUaW1lV2l0aER5bmFtaWND
bG9ja1R5cGUmIHRpbWUpCiB7CiAgICAgTG9jayBmYWtlTG9jazsKICAgICBDb25kaXRpb24gZmFr
ZUNvbmRpdGlvbjsKLSAgICBMb2NrSG9sZGVyIGZha2VMb2NrZXIoZmFrZUxvY2spOworICAgIExv
Y2tlciBmYWtlTG9ja2VyIHsgZmFrZUxvY2sgfTsKICAgICBmYWtlQ29uZGl0aW9uLndhaXRVbnRp
bChmYWtlTG9jaywgdGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtl
clBvb2wuY3BwIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKaW5kZXggNDJjOWUxMzVh
YTllYjkxYzhjMGJmNGQ0ODIzMzRlNTlkZGZlYzYyMy4uOGE5YzFmZGE3NGE3M2IyYzVhYjVjZGEy
ZDhlNDYwOWFiZTgwYTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvV29ya2VyUG9vbC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIGZpbmFsCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9wb29sLm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyAqbV9wb29sLm1fbG9jayB9OwogICAgICAgICBtX3Bvb2wubV9udW1iZXJPZkFjdGl2ZVdv
cmtlcnMrKzsKICAgICB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgV29ya2VyUG9vbDo6V29ya2VyUG9v
bChBU0NJSUxpdGVyYWwgbmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZXb3JrZXJzLCBTZWNvbmRzIHRp
bWUKICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQogICAgICwgbV9uYW1lKG5hbWUpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sg
fTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZXb3JrZXJzOyArK2kpCiAg
ICAgICAgIG1fd29ya2Vycy5hcHBlbmQoYWRvcHRSZWYoKm5ldyBXb3JrZXIobG9ja2VyLCAqdGhp
cywgbV9sb2NrLCBtX2NvbmRpdGlvbi5jb3B5UmVmKCksIHRpbWVvdXQpKSk7CiB9CkBAIC05NSw3
ICs5NSw3IEBAIFdvcmtlclBvb2w6OldvcmtlclBvb2woQVNDSUlMaXRlcmFsIG5hbWUsIHVuc2ln
bmVkIG51bWJlck9mV29ya2VycywgU2Vjb25kcyB0aW1lCiBXb3JrZXJQb29sOjp+V29ya2VyUG9v
bCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV93b3JrZXJzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG1fdGFza3MuYXBwZW5kKG51bGxw
dHIpOyAvLyBVc2UgbnVsbCB0YXNrIHRvIGluZGljYXRlIHRoYXQgd2Ugd2FudCB0aGUgdGhyZWFk
IHRvIHRlcm1pbmF0ZS4KICAgICAgICAgbV9jb25kaXRpb24tPm5vdGlmeUFsbChsb2NrZXIpOwpA
QCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgV29ya2VyUG9vbDo6c2hvdWxkU2xlZXAoY29uc3QgQWJz
dHJhY3RMb2NrZXImKQogCiB2b2lkIFdvcmtlclBvb2w6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgbV90YXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7
CiAgICAgbV9jb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9z
aXgvVGhyZWFkaW5nUE9TSVguY3BwCmluZGV4IDM0ODEyN2RiNjg0YmJiYWIzNDQyYTkxN2EwOGIz
MTZlZTk3ZTE2MDcuLjU5MTdiMzc5ZjEyYWZmNWZmNDJkMTM0N2ZiZGNiMWYyMDhhMDcwN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKQEAgLTM4Myw3ICszODMsNyBA
QCBhdXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVu
ZEVycm9yPgogICAgIC8vIFlvdXIgaXNzdWluZyB0aHJlYWQgKEEpIGF0dGVtcHRzIHRvIHN1c3Bl
bmQgdGhlIHRhcmdldCB0aHJlYWQgKEIpLiBUaGVuLCB5b3Ugd2lsbCBzdXNwZW5kIHRoZSB0aHJl
YWQgKEMpIGFkZGl0aW9uYWxseS4KICAgICAvLyBUaGlzIGNhc2UgZnJlcXVlbnRseSBoYXBwZW5z
IGlmIHlvdSBzdG9wIHRocmVhZHMgdG8gcGVyZm9ybSBzdGFjayBzY2FubmluZy4gQnV0IHRocmVh
ZCAoQikgbWF5IGhvbGQgdGhlIGxvY2sgb2YgdGhyZWFkIChDKS4KICAgICAvLyBJbiB0aGF0IGNh
c2UsIGRlYWQgbG9jayBoYXBwZW5zLiBVc2luZyBnbG9iYWwgbG9jayBoZXJlIGF2b2lkcyB0aGlz
IGRlYWQgbG9jay4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQog
ICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3N1c3BlbmQobV9wbGF0Zm9ybVRocmVh
ZCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCkBAIC00MTQsNyArNDE0LDcgQEAg
YXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRF
cnJvcj4KIHZvaWQgVGhyZWFkOjpyZXN1bWUoKQogewogICAgIC8vIER1cmluZyByZXN1bWUsIHN1
c3BlbmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJvbSB0aGUgb3RoZXIgdGhy
ZWFkcy4KLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAgIHRo
cmVhZF9yZXN1bWUobV9wbGF0Zm9ybVRocmVhZCk7CiAjZWxzZQpAQCAtNDcyLDcgKzQ3Miw3IEBA
IHN0YXRpYyBUaHJlYWRTdGF0ZU1ldGFkYXRhIHRocmVhZFN0YXRlTWV0YWRhdGEoKQogCiBzaXpl
X3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAjaWYgT1MoREFSV0lOKQogICAgIGF1dG8gbWV0
YWRhdGEgPSB0aHJlYWRTdGF0ZU1ldGFkYXRhKCk7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQg
PSB0aHJlYWRfZ2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG1ldGFkYXRhLmZsYXZvciwgKHRo
cmVhZF9zdGF0ZV90KSZyZWdpc3RlcnMsICZtZXRhZGF0YS51c2VyQ291bnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvd2luL0RiZ0hlbHBlcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vRGJnSGVscGVyV2luLmNwcAppbmRleCA1NTlkYWFiMmE0YWI0ODU1YjNjNjRiOGZkMmQ2ZTBl
N2YwZWIzMDNmLi41YTFhYjRjYmRjN2IzNDFlODQ0ZjY1ZmQ3M2M5NWQ3ZDFjN2UyNWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRGJnSGVscGVyV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplU3ltYm9scyhIQU5ETEUgaFByb2MpCiAKIGJvb2wgU3ltRnJvbUFkZHJlc3Mo
SEFORExFIGhQcm9jLCBEV09SRDY0IGFkZHJlc3MsIERXT1JENjQqIGRpc3BsYWNlbWVudCwgU1lN
Qk9MX0lORk8qIHN5bWJvbEluZm8pCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGNhbGxNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IGNhbGxNdXRleCB9OwogICAgIGluaXRpYWxpemVTeW1ib2xz
KGhQcm9jKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IDo6U3ltRnJvbUFkZHIoaFByb2MsIGFkZHJl
c3MsIGRpc3BsYWNlbWVudCwgc3ltYm9sSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4u
Y3BwCmluZGV4IDY2NzhhZWJlZjcwOWZjNDBiM2FlNTEzY2ZkZTc2NDFjMDJlYWU4NGQuLjRiMzcy
NDdmOTkwNzIzZTMyOGU3ZGM5MmRlMjViNWMzMDg2YWU5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJl
YWRpbmdXaW4uY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiBh
dXRvIFRocmVhZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVy
cm9yPgogewogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzICE9ICZUaHJlYWQ6
OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRpbmcgdGhlIGN1cnJlbnQgdGhy
ZWFkIGl0c2VsZi4iKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTdXNwZW5kTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFN1c3BlbmRMb2NrIH07CiAgICAgRFdPUkQgcmVz
dWx0ID0gU3VzcGVuZFRocmVhZChtX2hhbmRsZSk7CiAgICAgaWYgKHJlc3VsdCAhPSAoRFdPUkQp
LTEpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBhdXRvIFRocmVh
ZDo6c3VzcGVuZCgpIC0+IEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9yPgogLy8g
RHVyaW5nIHJlc3VtZSwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBm
cm9tIHRoZSBvdGhlciB0aHJlYWRzLgogdm9pZCBUaHJlYWQ6OnJlc3VtZSgpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIoZ2xvYmFsU3VzcGVuZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBn
bG9iYWxTdXNwZW5kTG9jayB9OwogICAgIFJlc3VtZVRocmVhZChtX2hhbmRsZSk7CiB9CiAKIHNp
emVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgZ2xvYmFsU3VzcGVuZExvY2sgfTsKICAgICByZWdpc3RlcnMuQ29udGV4dEZsYWdz
ID0gQ09OVEVYVF9JTlRFR0VSIHwgQ09OVEVYVF9DT05UUk9MOwogICAgIEdldFRocmVhZENvbnRl
eHQobV9oYW5kbGUsICZyZWdpc3RlcnMpOwogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuY3BwCmluZGV4IGZhZDVjOWQ2YjRiMTcyZDcyMmI2YTliMzdkMmUwZTgzZGM1NzMyZWMuLjk3
NWNmYzNlY2Q1NzIzMmFiZTc3M2I5ZDFiYzRkMDQ0YjNjNWVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jQXVkaW9EZWNvZGVyOjpBc3lu
Y0F1ZGlvRGVjb2RlcigpCiB7CiAgICAgLy8gU3RhcnQgd29ya2VyIHRocmVhZC4KLSAgICBMb2Nr
SG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV90aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgi
QXVkaW8gRGVjb2RlciIsIFt0aGlzXSB7CiAgICAgICAgIHJ1bkxvb3AoKTsKICAgICB9LCBUaHJl
YWRUeXBlOjpBdWRpbyk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6
OnJ1bkxvb3AoKQogCiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciB1bnRpbCB3ZSBoYXZlIG1f
dGhyZWFkIGVzdGFibGlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgcnVuIGxvb3AuCi0gICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbk11dGV4IH07CiAgICAgfQogCiAgICAgLy8gS2VlcCBy
dW5uaW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggM2E0Y2Q4NWU1ZWMx
MDBjODcxMzI4NzYzODQ0OTk1NTI5MGNkYzNkNC4uNmJiODA4ODk2ZDdhY2YxNGM5ZGFiNDBiYjUx
NTNhNjZkNzAwNDIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3Jt
Q2xvc2UoKQogICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJh
bnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogCiAgICAgICAgIC8vIENsZWFuIHVwIHRyYW5zYWN0
aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gc2NoZWR1bGVkIHlldDoKICAgICAgICAgLy8gVHJhbnNh
Y3Rpb24gcGhhc2UgMSBjbGVhbnVwLiBTZWUgY29tbWVudCBvbiAiV2hhdCBoYXBwZW5zIGlmIGEK
QEAgLTU0NCwxNCArNTQ0LDE0IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25T
dGVwKFNRTFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBEYXRhYmFzZTo6aW5Qcm9n
cmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFs
c2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBib29sIERhdGFiYXNlOjpoYXNQ
ZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc011dGV4IH07CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHx8ICFt
X3RyYW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpOwogfQogCkBAIC02ODEsNyArNjgxLDcgQEAgdm9p
ZCBEYXRhYmFzZTo6cmVzZXRBdXRob3JpemVyKCkKIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0
aW9uKFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8U1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ssIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiYm
IHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCB9OwogICAgIGlm
ICghbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKSB7CiAgICAgICAgIGlmIChlcnJvckNhbGxi
YWNrKSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFz
a1NvdXJjZTo6TmV0d29ya2luZywgW2Vycm9yQ2FsbGJhY2sgPSBtYWtlUmVmKCplcnJvckNhbGxi
YWNrKV0oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IGZjZmYxMDRjNTJlMmM3ODQzOTUzNTkzNDI4MTI2OTdk
ZmM3YTdjNzMuLmU2ZDdkNjZhMDhkOGFjNzU4Mzg2N2MwNzBiMTNjNDNiMTY2OTlmZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJl
YWQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIERhdGFiYXNlVGhyZWFkOjp+RGF0YWJhc2VUaHJlYWQo
KQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
KG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3Jl
YXRpb25NdXRleCB9OwogCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAgICByZXR1cm47CkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAg
ICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIERhdGFiYXNlVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBs
ZXRlLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25NdXRleCB9OwogICAgICAgICBM
T0coU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9
CiAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVh
ZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRhYmFzZVNl
dCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX29wZW5EYXRh
YmFzZVNldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0
TXV0ZXggfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDApIHsKICAg
ICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBvcmlnaW5h
bCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAgICAgICAg
b3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0LDcgQEAg
dm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFiYXNlVGhy
ZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tI
b2xkZXIgbG9jayhtX29wZW5EYXRhYmFzZVNldE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygm
ZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X29wZW5EYXRhYmFzZVNldE11dGV4IH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5EYXRh
YmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIERh
dGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0YWJhc2Up
CiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5KCkgY29u
c3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKICAgICBmb3IgKGF1dG8m
IGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFiYXNlLT5o
YXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJhbnNhY3Rp
b24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGEwMzgyMzRi
NzU1NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTguLmE2OGIzZjgyNWE4ZTQ4YjFkNjE2ZDY1
OTRjZGJlNmUxZTZmNzVhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6Omhhc0FkZXF1YXRlUXVvdGFGb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaQogCiBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNrZXI6
OmNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXplKQogewotICAgIExvY2tIb2xkZXIgbG9j
a0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1f
ZGF0YWJhc2VHdWFyZCB9OwogCiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGlzIGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKSBpcyBub24tbnVsbD8KICAgICBhdXRvIG9yaWdpbiA9IGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQ29udGV4
dCYgY29udGV4dAogLy8gaGVuY2Ugc2hvdWxkIG5vdCBiZSBhIHBlcmZvcm1hbmNlIGNyaXRpY2Fs
IHBhdGggYW55d2F5LiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlVHJhY2tlcjo6cmV0cnlD
YW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgdWludDY0X3QgZXN0aW1hdGVkU2l6ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2Rh
dGFiYXNlR3VhcmQgfTsKIAogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgY29udGV4dC5z
ZWN1cml0eU9yaWdpbigpIGlzIG5vbi1udWxsPwogICAgIGF1dG8gb3JpZ2luID0gY29udGV4dC5z
ZWN1cml0eU9yaWdpbigpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHVpbnQ2NF90IERhdGFiYXNlVHJh
Y2tlcjo6bWF4aW11bVNpemUoRGF0YWJhc2UmIGRhdGFiYXNlKQogewogICAgIC8vIFRoZSBtYXhp
bXVtIHNpemUgZm9yIGEgZGF0YWJhc2UgaXMgdGhlIGZ1bGwgcXVvdGEgZm9yIGl0cyBvcmlnaW4s
IG1pbnVzIHRoZSBjdXJyZW50IHVzYWdlIHdpdGhpbiB0aGUgb3JpZ2luLAogICAgIC8vIHBsdXMg
dGhlIGN1cnJlbnQgdXNhZ2Ugb2YgdGhlIGdpdmVuIGRhdGFiYXNlCi0gICAgTG9ja0hvbGRlciBs
b2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsg
bV9kYXRhYmFzZUd1YXJkIH07CiAgICAgYXV0byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9y
aWdpbigpOwogCiAgICAgYXV0byBxdW90YSA9IHF1b3RhTm9Mb2NrKG9yaWdpbik7CkBAIC0zNjAs
MTMgKzM2MCwxMyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNl
Tm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZwogCiBTdHJpbmcgRGF0YWJhc2VU
cmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9j
a0RhdGFiYXNlIHsgbV9kYXRhYmFzZUd1YXJkIH07CiAgICAgcmV0dXJuIGZ1bGxQYXRoRm9yRGF0
YWJhc2VOb0xvY2sob3JpZ2luLCBuYW1lLCBjcmVhdGVJZk5vdEV4aXN0cykuaXNvbGF0ZWRDb3B5
KCk7CiB9CiAKIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJhY2tlcjo6b3Jp
Z2lucygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsK
KyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9kYXRhYmFzZUd1YXJkIH07CiAKICAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKQpAQCAtNDIxLDcgKzQyMSw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFi
YXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBsb2NrRGF0
YWJhc2UgeyBtX2RhdGFiYXNlR3VhcmQgfTsKICAgICAgICAgbmFtZXMgPSBkYXRhYmFzZU5hbWVz
Tm9Mb2NrKG9yaWdpbik7CiAgICAgfQogICAgIHJldHVybiBpc29sYXRlZENvcHkobmFtZXMpOwpA
QCAtNDM0LDcgKzQzNCw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFp
bHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uCiAgICAgaW50NjRfdCBl
eHBlY3RlZFVzYWdlOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9kYXRhYmFz
ZUd1YXJkIH07CiAKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2Vz
Tm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00NjksNyAr
NDY5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscyhjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QKICAgICBTdHJpbmcgb3JpZ2luSWRlbnRp
ZmllciA9IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICBpbnQ2NF90IGd1aWQgPSAw
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBM
b2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9kYXRhYmFzZUd1YXJkIH07CiAKICAgICBvcGVuVHJhY2tl
ckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFi
YXNlRGV0YWlscyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QKIAogdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFz
ZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAg
IExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2RhdGFiYXNlR3VhcmQgfTsKICAgICBkb25lQ3JlYXRp
bmdEYXRhYmFzZShkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZS5zdHJpbmdJZGVu
dGlmaWVySXNvbGF0ZWRDb3B5KCkpOwogfQogCkBAIC01MjcsNyArNTI3LDcgQEAgVmVjdG9yPFJl
ZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlcygpCiB7CiAgICAgVmVj
dG9yPFJlZjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAg
IExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9Owog
CiAgICAgICAgIGlmIChtX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgZm9yIChhdXRv
JiBuYW1lTWFwIDogbV9vcGVuRGF0YWJhc2VNYXAtPnZhbHVlcygpKSB7CkBAIC01NDMsNyArNTQz
LDcgQEAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNl
cygpCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRh
dGFiYXNlKQogewotICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRh
YmFzZU1hcEd1YXJkKTsKKyAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayB7IG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQgfTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAg
IG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKQEAg
LTU3MCw3ICs1NzAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERh
dGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRh
YmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VN
YXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgIExvY2tlciBvcGVuRGF0YWJhc2VN
YXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCB9OwogCiAgICAgaWYgKCFtX29wZW5EYXRh
YmFzZU1hcCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTYwOSw3ICs2MDks
NyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBk
YXRhYmFzZSkKIAogUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9j
a0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJhc2Ug
eyBtX2RhdGFiYXNlR3VhcmQgfTsKICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3Jp
Z2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogCiAgICAgLy8gVGhlIG9yaWdpbkxvY2tNYXAgaXMg
YWNjZXNzZWQgZnJvbSBtdWx0aXBsZSBEYXRhYmFzZVRocmVhZHMgc2luY2UKQEAgLTY4OCwxMyAr
Njg4LDEzIEBAIHVpbnQ2NF90IERhdGFiYXNlVHJhY2tlcjo6cXVvdGFOb0xvY2soY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAKIHVpbnQ2NF90IERhdGFiYXNlVHJhY2tlcjo6cXVv
dGEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsg
bV9kYXRhYmFzZUd1YXJkIH07CiAgICAgcmV0dXJuIHF1b3RhTm9Mb2NrKG9yaWdpbik7CiB9CiAK
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2Uo
bV9kYXRhYmFzZUd1YXJkKTsKKyAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9kYXRhYmFzZUd1
YXJkIH07CiAKICAgICBpZiAocXVvdGFOb0xvY2sob3JpZ2luKSA9PSBxdW90YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtODI0LDcgKzgyNCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiB7CiAg
ICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBsb2NrRGF0
YWJhc2UgeyBtX2RhdGFiYXNlR3VhcmQgfTsKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShE
b250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NzYsNyArODc2LDcgQEAgYm9vbCBE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbiwgRGVsZXRpb25Nb2QKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIExvY2tlciBsb2NrRGF0YWJhc2Ug
eyBtX2RhdGFiYXNlR3VhcmQgfTsKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0ZvcihvcmlnaW4p
OwogICAgICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIApAQCAtMTA2Myw3ICsxMDYz
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ09yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRh
YmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1
YXJkKTsKKyAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fZGF0YWJhc2VHdWFyZCB9Owog
ICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAg
ICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEwNzgsMTIgKzEwNzgsMTIgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURh
dGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAgICAv
LyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNh
bGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCiAgICAgaWYgKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFi
YXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRh
YmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9k
YXRhYmFzZUd1YXJkIH07CiAgICAgICAgIGRvbmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFt
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIExvY2tlciBsb2NrRGF0YWJhc2UgeyBtX2Rh
dGFiYXNlR3VhcmQgfTsKIAogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KCJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9
PyJfcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKQEAgLTExMjEsNyArMTEyMSw3IEBAIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4sIGNvbnN0CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBMb2NrZXIgbG9j
a0RhdGFiYXNlIHsgbV9kYXRhYmFzZUd1YXJkIH07CiAgICAgICAgIEFTU0VSVChpc0RlbGV0aW5n
RGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5hbWUpKTsKICAgICB9CiAjZW5kaWYKQEAgLTEx
MzIsNyArMTEzMiw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0CiAgICAgLy8gRGF0YWJhc2U6
Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNhbiBjYXVzZSBhIGRlYWRsb2Nr
CiAgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRhYmFzZVRocmVhZCBjYWxsIGl0IHRy
aWdnZXJzLgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9j
ayB7IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNl
TWFwKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogbmFtZU1hcCA9IG1fb3BlbkRhdGFiYXNlTWFw
LT5nZXQob3JpZ2luKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRhYmFzZVNldCA9
IG5hbWVNYXAtPmdldChuYW1lKSkgewpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogICAgIAogICAgIHsKICAg
ICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jayBiZWZvcmUgY2FsbGluZyBvcGVuVHJhY2tlckRhdGFi
YXNlLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwor
ICAgICAgICBMb2NrZXIgbG9ja0RhdGFiYXNlIHsgbV9kYXRhYmFzZUd1YXJkIH07CiAgICAgICAg
IG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICB9CiAK
QEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVk
T3BlbmVkRGF0YWJhc2VzKCkKICAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3Nl
KCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKICAgICAvLyBkdXJpbmcgdGhlIHN5
bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMuCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7
CisgICAgICAgIExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrIHsgbV9vcGVuRGF0YWJhc2VNYXBH
dWFyZCB9OwogICAgICAgICBpZiAobV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3BlbkRhdGFiYXNlIDogKm1fb3BlbkRhdGFiYXNlTWFwKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byYgb3JpZ2luID0gb3BlbkRhdGFiYXNlLmtleTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4
IGQwZDEyODA5NmJhYjBhNmEwZjdjMmRiZjEwM2MyMmQ0MDgzOWZmMGEuLjI3MjE0NDEzNzUyNTkz
ZWQwOGEyNjYyOTQwZmNhODdhOTI0MzZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRQdHI7CiAgICAgICAgIFQqIGNhbGxiYWNrOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2spIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8VD4gdW53
cmFwKCkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2sg
fHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBXVEZN
b3ZlKG1fY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCBlZGRjZTgxYmRkMGVhOGY2NGU5YzIyODUz
YjdmMThhM2FjZDM3YjYxLi5lNzQyMWM3N2M1MzI3MDExZjU4YmYxMjYxNmY5ZTA0ZGI1MWI2NjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNh
bGxFcnJvckNhbGxiYWNrRHVlVG9JbnRlcnJ1cHRpb24oKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9u
OjplbnF1ZXVlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVu
dCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zdGF0ZW1lbnRNdXRleCB9OwogICAgIG1fc3RhdGVtZW50UXVldWUuYXBw
ZW5kKFdURk1vdmUoc3RhdGVtZW50KSk7CiB9CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICAvLyBJZiB0
aGUgZGF0YWJhc2Ugd2FzIHN0b3BwZWQsIGRvbid0IGRvIGFueXRoaW5nIGFuZCBjYW5jZWwgcXVl
dWVkIHdvcmsKICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlIHdhcyBzdG9wcGVkIG9yIGlu
dGVycnVwdGVkIC0gY2FuY2VsbGluZyB3b3JrIGZvciB0aGlzIHRyYW5zYWN0aW9uIik7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zdGF0ZW1lbnRNdXRleCB9OwogICAgIG1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKICAg
ICBtX25leHRTdGVwID0gbnVsbHB0cjsKIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OmdldE5leHRTdGF0ZW1lbnQoKQogewogICAgIG1fY3VycmVudFN0YXRlbWVudCA9
IG51bGxwdHI7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZW1lbnRNdXRleCB9OwogICAgIGlmICghbV9zdGF0ZW1l
bnRRdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fY3VycmVudFN0YXRlbWVudCA9IG1fc3RhdGVt
ZW50UXVldWUudGFrZUZpcnN0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggZDAw
ZWMxZDk0MjQ4YmY5YWQ1MTU0OTE5MGNiZmNkOWM1ZjAwZGUxMS4uYTA0M2Y3Y2EzMjZiZThjMGU5
YmM5ODNiYzM3YmJmNDUxOGU5MDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQogCiAg
ICAgbV9mcm9udGVuZC5yZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2Zyb250ZW5kLm1fc3RhdGVtZW50TXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2Zyb250ZW5kLm1fc3RhdGVtZW50TXV0ZXggfTsKICAgICBtX2Zyb250ZW5kLm1fc3Rh
dGVtZW50UXVldWUuY2xlYXIoKTsKIAogICAgIGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNh
Y3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCAzZjgzZThlNjcwNmJhNDU3NDM0
YzJhMzFmZDI0ODk2YTc5ZDk2MmExLi45ZmMzODdlNDVjYTI1ODU4MmUzOTkyMWY1NmNjZTllN2Qw
MTA0YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQg
QVhJc29sYXRlZFRyZWU6OmNsZWFyKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IG1fYXhPYmplY3RDYWNoZSA9IG51bGxwdHI7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsK
ICAgICBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHMuYXBwZW5kKG1fcm9vdE5vZGUtPm9iamVjdElE
KCkpOwogICAgIG1fcm9vdE5vZGUgPSBudWxscHRyOwogICAgIG1fbm9kZU1hcC5jbGVhcigpOwpA
QCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShB
WENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gb2JqZWN0ID0gY3JlYXRlU3VidHJlZShheE9iamVjdCwgYXhQYXJlbnQg
PyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEludmFsaWRBWElELCBhdHRhY2hXcmFwcGVyKTsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICBpZiAoIWF4UGFyZW50KQogICAgICAgICBzZXRS
b290Tm9kZShvYmplY3QucHRyKCkpOwogICAgIGVsc2UgaWYgKGF4UGFyZW50LT5vYmplY3RJRCgp
ICE9IEludmFsaWRBWElEKSAvLyBOZWVkIHRvIGNoZWNrIGZvciB0aGUgb2JqZWN0SUQgb2YgYXhQ
YXJlbnQgYWdhaW4gYmVjYXVzZSBpdCBtYXkgaGF2ZSBiZWVuIGRldGFjaGVkIHdoaWxlIHRyYXZl
cnNpbmcgdGhlIHRyZWUuCkBAIC0yMjQsNyArMjI0LDcgQEAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+
IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFY
SUQKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VM
b2dMb2NrIH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAg
ICAgICAgbV9wZW5kaW5nQXBwZW5kcy5hcHBlbmQoV1RGTW92ZShub2RlQ2hhbmdlKSk7CiAgICAg
ICAgIHVwZGF0ZUNoaWxkcmVuSURzKG9iamVjdC0+b2JqZWN0SUQoKSwgV1RGTW92ZShjaGlsZHJl
bklEcykpOwogICAgIH0KQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1
cGRhdGVOb2RlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgYXV0byBuZXdPYmplY3QgPSBB
WElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoYXhPYmplY3QsIHRoaXMsIHBhcmVudElEKTsKICAgICBu
ZXdPYmplY3QtPm1fY2hpbGRyZW5JRHMgPSBheE9iamVjdC5jaGlsZHJlbklEcygpOwogCi0gICAg
TG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgLy8gUmVtb3ZlIHRoZSBvbGQgb2JqZWN0IGFuZCBz
ZXQgdGhlIG5ldyBvbmUgdG8gYmUgdXBkYXRlZCBvbiB0aGUgQVggdGhyZWFkLgogICAgIG1fcGVu
ZGluZ05vZGVSZW1vdmFscy5hcHBlbmQoYXhJRCk7CiAgICAgbV9wZW5kaW5nQXBwZW5kcy5hcHBl
bmQoeyBuZXdPYmplY3QsIGF4T2JqZWN0LndyYXBwZXIoKSB9KTsKQEAgLTI3MSw3ICsyNzEsNyBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkoY29uc3QgQVhDb3JlT2Jq
ZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0eQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
TG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzLmFwcGVu
ZCh7IGF4T2JqZWN0Lm9iamVjdElEKCksIHByb3BlcnR5TWFwIH0pOwogfQogCkBAIC0zNDksNyAr
MzQ5LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0
JiBheE9iamVjdCkKIAogICAgIGlmICh1cGRhdGVkQ2hpbGQgfHwgcmVtb3ZhbHMuc2l6ZSgpKSB7
CiAgICAgICAgIC8vIE1ha2UgdGhlIGNoaWxkcmVuIElEcyBvZiB0aGUgaXNvbGF0ZWQgb2JqZWN0
IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBBWE9iamVjdCdzLgotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFu
Z2VMb2dMb2NrIH07CiAgICAgICAgIHVwZGF0ZUNoaWxkcmVuSURzKGF4QW5jZXN0b3ItPm9iamVj
dElEKCksIFdURk1vdmUoYXhDaGlsZHJlbklEcykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IE5vdGhpbmcgd2FzIHVwZGF0ZWQuIEFzIGEgbGFzdCByZXNvcnQsIHVwZGF0ZSB0aGUgc3VidHJl
ZS4KQEAgLTM2Miw3ICszNjIsNyBAQCBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRl
ZFRyZWU6OmZvY3VzZWROb2RlKCkKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Zm9jdXNl
ZE5vZGUiKTsKICAgICAvLyBBcHBseSBwZW5kaW5nIGNoYW5nZXMgaW4gY2FzZSBmb2N1cyBoYXMg
Y2hhbmdlZCBhbmQgaGFzbid0IGJlZW4gdXBkYXRlZC4KICAgICBhcHBseVBlbmRpbmdDaGFuZ2Vz
KCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgQVhMT0cobWFrZVN0cmluZygiZm9j
dXNlZE5vZGVJRCAiLCBtX2ZvY3VzZWROb2RlSUQpKTsKICAgICBBWExPRygiZm9jdXNlZCBub2Rl
OiIpOwogICAgIEFYTE9HKG5vZGVGb3JJRChtX2ZvY3VzZWROb2RlSUQpKTsKQEAgLTM3Miw3ICsz
NzIsNyBAQCBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OmZvY3VzZWRO
b2RlKCkKIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6cm9vdE5vZGUo
KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyb290Tm9kZSIpOwotICAgIExvY2tI
b2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y2hhbmdlTG9nTG9jayB9OwogICAgIHJldHVybiBtX3Jvb3ROb2RlOwogfQogCkBAIC0zOTMsNyAr
MzkzLDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGVJRChBWElEIGF4SUQp
CiAgICAgQVhMT0cobWFrZVN0cmluZygiYXhJRCAiLCBheElEKSk7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ0Zv
Y3VzZWROb2RlSUQgPSBheElEOwogCiAgICAgQVhQcm9wZXJ0eU1hcCBwcm9wZXJ0eU1hcDsKQEAg
LTQwOCw3ICs0MDgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKEFYSUQgYXhJ
RCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgbV9ub2RlTWFwLnJlbW92ZShh
eElEKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICBtX3BlbmRpbmdOb2RlUmVtb3Zh
bHMuYXBwZW5kKGF4SUQpOwogfQogCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBBWElzb2xhdGVk
VHJlZTo6cmVtb3ZlU3VidHJlZShBWElEIGF4SUQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIExvY2tlciBsb2NrZXIg
eyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHMuYXBwZW5k
KGF4SUQpOwogfQogCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBw
bHlQZW5kaW5nQ2hhbmdlcygpCiAgICAgaWYgKG1fdXNlZE9uQVhUaHJlYWQgJiYgaXNNYWluVGhy
ZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFu
Z2VMb2dMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogCiAg
ICAgaWYgKG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgIT0gbV9mb2N1c2VkTm9kZUlEKSB7CiAgICAg
ICAgIEFYTE9HKG1ha2VTdHJpbmcoImZvY3VzZWROb2RlSUQgIiwgbV9mb2N1c2VkTm9kZUlELCAi
IHBlbmRpbmdGb2N1c2VkTm9kZUlEICIsIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMu
bW0KaW5kZXggYmIwNTdlZjZhMDA2MjYxYmQ0ZTZhNjE1Y2FmMWUwMTgxOTVlYjQxZi4uMDE2NGQ1
MzI0NjI0MWNiYWYxODc1YWVlNzk5NmIxZTUzMjk1ODJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KQEAgLTE2MSw3
ICsxNjEsNyBAQCBSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVNYWM6OnNj
cm9sbGluZ05vZGVGb3JQb2ludChGbG9hdFBvaW50IHBvaQogICAgIGlmICghcm9vdFNjcm9sbGlu
Z05vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgTG9ja0hvbGRlciBsb2NrSG9s
ZGVyKG1fbGF5ZXJIaXRUZXN0TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xheWVySGl0
VGVzdE11dGV4IH07CiAKICAgICBhdXRvIHJvb3RDb250ZW50c0xheWVyID0gc3RhdGljX2Nhc3Q8
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyo+KHJvb3RTY3JvbGxpbmdOb2RlKS0+
cm9vdENvbnRlbnRzTGF5ZXIoKTsKICAgICBGbG9hdFBvaW50IHNjcm9sbE9yaWdpbiA9IHJvb3RT
Y3JvbGxpbmdOb2RlLT5zY3JvbGxPcmlnaW4oKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBPcHRpb25T
ZXQ8RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU+IFNjcm9sbGluZ1RyZWVNYWM6OmV2ZW50TGlzdGVu
ZXJSZWdpb25UeXBlc0ZvcgogICAgIGlmICghcm9vdFNjcm9sbGluZ05vZGUpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sYXllckhpdFRlc3RNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF5ZXJIaXRUZXN0TXV0ZXggfTsKIAogICAgIGF1
dG8gcm9vdENvbnRlbnRzTGF5ZXIgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjKj4ocm9vdFNjcm9sbGluZ05vZGUpLT5yb290Q29udGVudHNMYXllcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCmluZGV4IDc0
YzdlMGU4NTMyZTE0ZTM3OWQyY2Y5NjIyYzUyMWM5Zjg3ODNkZWQuLjgyNjk5ZGU2MGYwNTY1MWQ2
YzcwODE2MWE4YTM4YWM3MTkyOWE2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fi
b3J0YWJsZVRhc2tRdWV1ZS5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogICAgICAgICAgICAgbV9hYm9ydGluZyA9IHRydWU7CiAgICAgICAgICAgICBjYW5jZWxB
bGxUYXNrcygpOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAg
ICAgICAgIEFTU0VSVChtX2Fib3J0aW5nKTsKICAgICAgICAgbV9hYm9ydGluZyA9IGZhbHNlOwog
ICAgIH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGlmIChtX2Fi
b3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDMsMTQgKzE0MywxNCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBtYWluIHRocmVhZCB3aXRoIGl0c2Vs
Zi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9
OwogICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBXVEY6Om51bGxvcHQ7CiAgICAg
ICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWluVGhyZWFkVGFza0hhbmRsZXJdKCkg
ewogICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZFRhc2tIYW5kbGVyKCk7
Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICAgICAgaWYgKCFtX2Fib3J0aW5n
KQogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsKICAg
ICAgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CkBAIC0xOTcsNyAr
MTk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0NhbmNlbGxlZCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fdGFza1F1
ZXVlLT5tX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrIHsgbV90YXNrUXVldWUtPm1f
bXV0ZXggfTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVlLT5tX2NoYW5u
ZWwuZmlyc3QoKS5wdHIoKSk7CiAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+bV9jaGFubmVsLnJl
bW92ZUZpcnN0KCk7CiAgICAgICAgICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAppbmRl
eCA1MjY2YjVmY2E1YzU1MjI4ZDA0MDUyNzY5ODcwYTIyYTFmNzQyOGRhLi5hNTgxY2Y2NTU2Zjk5
NzU2ODdjYzUwNTFkYWVmOTNlMmMzMmI4OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTIzMSw3ICsyMzEsNyBA
QCBib29sIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3I6OmFsbG9jYXRlKHNpemVfdCBieXRlQ291
bnQsIGNvbnN0IENBQXVkaW9TdHJlYW1EZQogCiB2b2lkIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0
b3I6OmZsdXNoKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1cnJlbnRGcmFtZUJvdW5k
c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2sgfTsK
ICAgICBmb3IgKGF1dG8mIHRpbWVCb3VuZHMgOiBtX3RpbWVCb3VuZHNRdWV1ZSkgewogICAgICAg
ICB0aW1lQm91bmRzLm1fc3RhcnRGcmFtZSA9IDA7CiAgICAgICAgIHRpbWVCb3VuZHMubV9lbmRG
cmFtZSA9IDA7CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBDQVJpbmdCdWZmZXI6OnNldEN1cnJl
bnRGcmFtZUJvdW5kcyh1aW50NjRfdCBzdGFydFRpbWUsIHVpbnQ2NF90IGVuZFRpbWUpCiAKIHZv
aWQgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcjo6c2V0Q3VycmVudEZyYW1lQm91bmRzKHVpbnQ2
NF90IHN0YXJ0VGltZSwgdWludDY0X3QgZW5kVGltZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2N1cnJlbnRGcmFtZUJvdW5kc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2N1cnJl
bnRGcmFtZUJvdW5kc0xvY2sgfTsKICAgICB1aW50MzJfdCBuZXh0UHRyID0gbV90aW1lQm91bmRz
UXVldWVQdHIubG9hZCgpICsgMTsKICAgICB1aW50MzJfdCBpbmRleCA9IG5leHRQdHIgJiBrR2Vu
ZXJhbFJpbmdUaW1lQm91bmRzUXVldWVNYXNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA4Y2Q1
YzI4NzQyN2RjZmU2MDliZDk4ZjY2ZjlhYWEwOTRjZjljNTg5Li40MzY5Njg4ZTE5YTQyN2VjOGFl
NGY2MWQ1MDI3YWU3M2IyZTRmYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTE0MzAsNyArMTQz
MCw3IEBAIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIEFWRldyYXBwZXI6Om1hcCgp
CiAKIHZvaWQgQVZGV3JhcHBlcjo6YWRkVG9NYXAoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1hcExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIAogICAg
IC8vIEhhc2hNYXAgZG9lc24ndCBsaWtlIGEga2V5IG9mIDAsIGFuZCBhbHNvIG1ha2Ugc3VyZSB3
ZSBhcmVuJ3QKICAgICAvLyB1c2luZyBhbiBvYmplY3QgSUQgdGhhdCdzIGFscmVhZHkgaW4gdXNl
LgpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpyZW1vdmVGcm9tTWFwKCkg
Y29uc3QKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZW1vdmVGcm9tTWFwKCVwICVk
KSIsIHRoaXMsIG1fb2JqZWN0SUQpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgbWFwKCkucmVtb3ZlKG1f
b2JqZWN0SUQpOwogfQogCkBAIC0xNjUwLDcgKzE2NTAsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNy
ZWF0ZVBsYXllckl0ZW0oKQogCiB2b2lkIEFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVy
Q2FsbGJhY2soQVZDRlBsYXllclJlZiwgQ01UaW1lIGNtVGltZSwgdm9pZCogY29udGV4dCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBt
YXBMb2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNr
Q29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAi
QVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayBpbnZva2VkIGZvciBkZWxl
dGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkp
OwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0
aW9uKHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2Fs
bGJhY2tEYXRhPiBub3RpZmljYXRpb25EYXRhIHsgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ2Fs
bGJhY2tEYXRhKj4oY29udGV4dCkgfTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNl
bGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KG5vdGlmaWNhdGlvbkRhdGEtPm1fY29u
dGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6
OnByb2Nlc3NOb3RpZmljYXRpb24gaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3MzcsNyArMTczNyw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25D
ZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZFBsYXlh
YmxlQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBM
b2NrKCkgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29u
dGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0
ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7
CkBAIC0xNzY0LDcgKzE3NjQsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHko
KQogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNG
QXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciog
c2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFz
ZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBs
ZXRpb25DYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTc4NCw3ICsxNzg0LDcgQEAgdm9p
ZCBBVkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6
c2Vla0NvbXBsZXRlZENhbGxiYWNrKEFWQ0ZQbGF5ZXJJdGVtUmVmLCBCb29sZWFuIGZpbmlzaGVk
LCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBh
dmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewog
ICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sgaW52
b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KGNvbnRleHQpKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJv
Y2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2libGVPdXRw
dXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YShyZWludGVycHJldF9jYXN0PExlZ2libGVPdXRwdXRE
YXRhKj4oY29udGV4dCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobWFwTG9jaygpKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2
ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobGVnaWJsZU91dHB1dERhdGEtPm1fY29udGV4dCk7
CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nl
c3NDdWUgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4NDQsNyArMTg0NCw3IEBAIHZvaWQgQVZGV3Jh
cHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQogdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxl
T3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENGQXJyYXlS
ZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1lIGl0ZW1UaW1lKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZX
cmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAg
ICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sgaW52b2tl
ZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGNvbnRleHQpKTsKQEAgLTE4ODMsNyArMTg4Myw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vz
c1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSh2b2lkKiBjb250ZXh0KQogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExvYWRSZXF1ZXN0RGF0YT4gbG9hZFJlcXVlc3REYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8TG9hZFJlcXVlc3REYXRhKj4oY29udGV4dCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobWFwTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CiAgICAgQVZG
V3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobG9hZFJlcXVlc3RE
YXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJB
VkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlIGludm9rZWQg
Zm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
b250ZXh0KSk7CkBAIC0xOTM4LDcgKzE5MzgsNyBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Ugog
Qm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRlclJlZiByZXNvdXJjZUxvYWRl
ciwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBsb2FkaW5nUmVxdWVzdCwgdm9p
ZCAqY29udGV4dCkKIHsKICAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSAhPSBk
aXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtYXBM
b2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKICAgICBBVkZXcmFwcGVy
KiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAo
IXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJT
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRl
ZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGU5
N2QwMDRjYzk0N2Q2ZGMxZjc1MTAxYzBlNzNiMjc1MzAzYWY0ODYuLjUyZjkxOGYxZWFiYmIwNzNl
YjQ5Mjg1YTFmMjZiNjJkZWMxODc1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtOTcsNyArOTcsNyBAQCAtIChOU0RhdGEqKWRhdGEKIAog
LSAodm9pZClzZXRFeHBlY3RlZENvbnRlbnRTaXplOihsb25nIGxvbmcpZXhwZWN0ZWRDb250ZW50
U2l6ZQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IF9kYXRhTG9jayB9OwogICAgIF9leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0
ZWRDb250ZW50U2l6ZTsKIAogICAgIFtzZWxmIGZ1bGZpbGxQZW5kaW5nUmVxdWVzdHNdOwpAQCAt
MTA1LDcgKzEwNSw3IEBAIC0gKHZvaWQpc2V0RXhwZWN0ZWRDb250ZW50U2l6ZToobG9uZyBsb25n
KWV4cGVjdGVkQ29udGVudFNpemUKIAogLSAodm9pZCl1cGRhdGVEYXRhOihOU0RhdGEgKilkYXRh
IGNvbXBsZXRlOihCT09MKWNvbXBsZXRlCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIgeyBfZGF0
YUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgX2RhdGFMb2NrIH07CiAgICAgX2RhdGEgPSBk
YXRhOwogICAgIF9jb21wbGV0ZSA9IGNvbXBsZXRlOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgLSAo
dm9pZClmdWxmaWxsUmVxdWVzdDooQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKilyZXF1
ZXN0CiAKIC0gKEJPT0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJl
c291cmNlTG9hZGVyIHNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTooQVZB
c3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdAogewotICAgIExvY2tI
b2xkZXIgaG9sZGVyIHsgX2RhdGFMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IF9kYXRhTG9j
ayB9OwogCiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlTG9hZGVyKTsKIApAQCAtMjA2LDcgKzIw
Niw3IEBAIC0gKEJPT0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJl
c291cmNlTG9hZGVyIHNob3VsZFdhaXRGb3JMb2FkCiAKIC0gKHZvaWQpcmVzb3VyY2VMb2FkZXI6
KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIGRpZENhbmNlbExvYWRpbmdS
ZXF1ZXN0OihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0CiB7
Ci0gICAgTG9ja0hvbGRlciBob2xkZXIgeyBfZGF0YUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgX2RhdGFMb2NrIH07CiAKICAgICBVTlVTRURfUEFSQU0ocmVzb3VyY2VMb2FkZXIpOwogICAg
IF9yZXF1ZXN0cy5yZW1vdmVBbGwobG9hZGluZ1JlcXVlc3QpOwpAQCAtNDM3LDcgKzQzNyw3IEBA
IHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fdHJhY2sgPSB0cmFjazsKIAotICAgIExvY2tIb2xkZXIg
aG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2FtcGxlR2VuZXJhdG9yTG9jayB9OwogICAgIG1fc2FtcGxlRGF0YS5jbGVhcigpOwogICAgIG1f
c2l6ZS5yZXNldCgpOwogICAgIG1fY3Vyc29yID0gbV9zYW1wbGVEYXRhLmRlY29kZU9yZGVyKCku
ZW5kKCk7CkBAIC01NjEsNyArNTYxLDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKIAogUGxh
dGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYp
CiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKICAgICBhdXRvKiBz
YW1wbGVEYXRhID0gc2FtcGxlQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFzYW1wbGVEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAzNTAzOGFmNTk4M2Mx
ZDIzY2FjN2M0MGQ3MTA3YWFhMzAwYjIwMDE2Li42NDEwYzI5ZDIwYTU2OTRmYmE4YWI5YWIzYzYz
YmNhNDkxZGYyMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApA
QCAtMTg5LDcgKzE4OSw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVC
eXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsCiAKIFBsYXRmb3JtSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7Ci0g
ICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKICAgICBhdXRvKiBzYW1wbGVE
YXRhID0gc2FtcGxlQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFzYW1wbGVEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IGE4ZWVmNTJhMTNhNzdlZWQ3N2NmMTRlOTg3MzY3ODBhYjk5ZmUwNDYuLmVhOGUxMDcyYTk3MWY3
MTIxNzE3MGI2MTNlN2FlNzY4YmFlZGZlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpkaXNjb25uZWN0KCkKIHZvaWQgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxl
PiBzYW1wbGUpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9zYW1wbGVNdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIG1f
cGVuZGluZ1NhbXBsZXMuYXBwZW5kKHNhbXBsZSk7CiAgICAgfQogCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2Ft
cGxlKCkKIHsKICAgICBWZWN0b3I8R1JlZlB0cjxHc3RTYW1wbGU+ID4gc2FtcGxlczsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5zd2Fw
KHNhbXBsZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCmluZGV4IGE4
ODU5Mjg5Yzg1NTMyZDllNjYzZGU0NzBiNjEzMWJjOWRiMDhmYTcuLjhkOTQyNDBiYjA2ZWM0MWI3
ZDc3NWMyZjQwMzUzYWNjYzUyNDYyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgK
QEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsUGVuZGluZ05vdGlmaWNh
dGlvbnModW5zaWduZWQgbWFzayA9IDApCiAgICAgewogICAgICAgICBBU1NFUlQobV9pc1ZhbGlk
LmxvYWQoKSk7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGVuZGluZ05vdGlmaWNhdGlv
bnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGVuZGluZ05vdGlmaWNhdGlvbnNM
b2NrIH07CiAgICAgICAgIGlmIChtYXNrKQogICAgICAgICAgICAgbV9wZW5kaW5nTm90aWZpY2F0
aW9ucyAmPSB+bWFzazsKICAgICAgICAgZWxzZQpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGFkZFBlbmRpbmdOb3RpZmljYXRpb24oVCBub3RpZmljYXRpb25UeXBlKQog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9wZW5kaW5nTm90aWZpY2F0aW9uc0xv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wZW5kaW5nTm90aWZpY2F0aW9uc0xvY2sg
fTsKICAgICAgICAgaWYgKG5vdGlmaWNhdGlvblR5cGUgJiBtX3BlbmRpbmdOb3RpZmljYXRpb25z
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRp
b25zIHw9IG5vdGlmaWNhdGlvblR5cGU7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgcmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihUIG5vdGlmaWNhdGlvblR5cGUpCiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BlbmRpbmdOb3RpZmljYXRpb25zTG9jayB9
OwogICAgICAgICBpZiAobm90aWZpY2F0aW9uVHlwZSAmIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMp
IHsKICAgICAgICAgICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMgJj0gfm5vdGlmaWNhdGlvblR5
cGU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYWY1MTI5OTBiNmI0MGFjMWU4MDQ0YTliNzA5
ZTYzOWVmZDExNzIzMi4uNzVhMjFjMWI0ZGQ4NTA0ZmUwMjdjZjI5MzgyMGQyZjg3ZTA0OGYwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTM1NTEsNyArMzU1MSw3IEBAIEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cGFyc2VJbml0RGF0YUZyb21Qcm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAKICAgICBJbml0RGF0
YSBpbml0RGF0YTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3Byb3RlY3Rpb25N
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3RlY3Rpb25NdXRleCB9OwogICAg
ICAgICBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHByb3RlY3Rpb25TeXN0ZW1FdmVudHMobWVzc2Fn
ZSk7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1QocGlwZWxpbmUoKSwgImZvdW5kICV6dSBwcm90
ZWN0aW9uIGV2ZW50cywgJXp1IGRlY3J5cHRvcnMgYXZhaWxhYmxlIiwgcHJvdGVjdGlvblN5c3Rl
bUV2ZW50cy5ldmVudHMoKS5zaXplKCksIHByb3RlY3Rpb25TeXN0ZW1FdmVudHMuYXZhaWxhYmxl
U3lzdGVtcygpLnNpemUoKSk7CiAKQEAgLTM2NjYsNyArMzY2Niw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKQog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChH
c3RFdmVudCogZXZlbnQpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9wcm90
ZWN0aW9uTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm90ZWN0aW9uTXV0ZXgg
fTsKICAgICAgICAgaWYgKG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMuY29udGFpbnMoR1NUX0VW
RU5UX1NFUU5VTShldmVudCkpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVs
aW5lKCksICJldmVudCAldSBhbHJlYWR5IGhhbmRsZWQiLCBHU1RfRVZFTlRfU0VRTlVNKGV2ZW50
KSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKaW5kZXggZDYwY2FlODA4MWNkM2E5MDVlNjk2YWIzMzVjNzljNzg4NjRj
ZDQ5NC4uNjAwYTY3ZmRmNzRmNjkxYzg1NzEwODFkYjgzMDg0M2ZjMmE1NDIyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMTU5LDcgKzE1OSw3
IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6dGFnc0NoYW5nZWQoKQogCiAgICAg
R1NUX0RFQlVHKCJJbnNwZWN0aW5nIHRyYWNrIGF0IGluZGV4ICVkIHdpdGggdGFnczogJSIgR1NU
X1BUUl9GT1JNQVQsIG1faW5kZXgsIHRhZ3MuZ2V0KCkpOwogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKG1fdGFnTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YWdNdXRl
eCB9OwogICAgICAgICBtX3RhZ3Muc3dhcCh0YWdzKTsKICAgICB9CiAKQEAgLTE5OCw3ICsxOTgs
NyBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hh
bmdlZCgpCiAKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IHRhZ3M7CiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2sobV90YWdNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Rh
Z011dGV4IH07CiAgICAgICAgIHRhZ3Muc3dhcChtX3RhZ3MpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBmNDEzOWI3NmE3ZmJlMmRlMGY3ZjZlNjRjYzUz
MjYwZGYwMmRkMmE1Li4xMWJlYTEyYjY2ZGM1NDYyNWE4MjlmOTA3NGE5MmMwMzc0Y2UyODk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtNzEsMjYgKzcxLDI2IEBAIGNs
YXNzIFZpZGVvUmVuZGVyUmVxdWVzdFNjaGVkdWxlciB7CiBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dCgpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhbXBsZU11dGV4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgbV91bmxvY2tl
ZCA9IGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgc3RvcCgpCiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2FtcGxlTXV0ZXggfTsKICAgICAgICAgbV9zYW1wbGUgPSBudWxscHRyOwogICAgICAgICBtX3Vu
bG9ja2VkID0gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIGRyYWluKCkKICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zYW1wbGVNdXRleCB9OwogICAgICAgICBtX3NhbXBsZSA9IG51bGxwdHI7CiAgICAgfQog
CiAgICAgYm9vbCByZXF1ZXN0UmVuZGVyKFdlYktpdFZpZGVvU2luayogc2luaywgR3N0QnVmZmVy
KiBidWZmZXIpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhbXBsZU11dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgaWYg
KG1fdW5sb2NrZWQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25F
bmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdT
dHJlYW1lci5jcHAKaW5kZXggMTgwZTI2MGY5OGVjMDYwNmRjODQ5YzQ0YWEzMmI1OTc2ODliNmEw
Ni4uMzIwMTc0ZDViZmU4NzZkYjhjMTQyMzU5YThlMWEwMWFhODZjMGZkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21t
b25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNy
eXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEdzdEZsb3dSZXR1
cm4gdHJhbnNmb3JtSW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXgg
fTsKIAogICAgIGlmIChwcml2LT5pc0ZsdXNoaW5nKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc2VsZiwgIkRlY3J5cHRpb24gYWJvcnRlZCBiZWNhdXNlIG9mIGZsdXNoIik7CkBAIC0yODks
NyArMjg5LDcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gdHJhbnNmb3JtSW5QbGFjZShHc3RCYXNl
VHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHNlbGYsICJkZWNyeXB0aW5nIik7CiAKICAgICAvLyBUZW1wb3JhcmlseSByZWxlYXNlIHRoZSBs
b2NrIHdoaWxlIHdlIGRvbid0IG5lZWQgdG8gYWNjZXNzIHByaXYuIFRoZSBsb3dlciBsZXZlbCBB
UEkgaXMgdXNlZAotICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIHNldmVyYWwgc2Nv
cGVzIHdpdGggZGlmZmVyZW50IExvY2tIb2xkZXIgaW5zdGFuY2VzIGluIGVhY2ggb25lLgorICAg
IC8vIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIHNldmVyYWwgc2NvcGVzIHdpdGggZGlmZmVy
ZW50IExvY2tlciBpbnN0YW5jZXMgaW4gZWFjaCBvbmUuCiAgICAgcHJpdi0+bXV0ZXgudW5sb2Nr
KCk7CiAKICAgICBib29sIGRpZERlY3J5cHRpb25TdWNjZWVkID0ga2xhc3MtPmRlY3J5cHQoc2Vs
ZiwgaXZCdWZmZXIsIGtleUlEQnVmZmVyLCBidWZmZXIsIHN1YlNhbXBsZUNvdW50LCBzdWJTYW1w
bGVzQnVmZmVyKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2lua0V2ZW50
SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2ZW50KQogICAgIGNh
c2UgR1NUX0VWRU5UX0ZMVVNIX1NUQVJUOgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYs
ICJGbHVzaC1zdGFydCIpOwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihwcml2LT5tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+bXV0ZXgg
fTsKICAgICAgICAgICAgIGJvb2wgaXNDZG1Qcm94eUF0dGFjaGVkID0gcHJpdi0+Y2RtUHJveHk7
CiAgICAgICAgICAgICBwcml2LT5pc0ZsdXNoaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChp
c0NkbVByb3h5QXR0YWNoZWQpIHsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
c2lua0V2ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2ZW50
KQogICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CiAgICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc2VsZiwgIkZsdXNoLXN0b3AiKTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByaXYt
Pm11dGV4IH07CiAgICAgICAgICAgICBwcml2LT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGdib29sZWFuIHNp
bmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50KiBldmVudCkK
IGJvb2wgd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcoV2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZikKIHsKICAgICBXZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RF
Q1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIHJldHVybiBwcml2
LT5pc0ZsdXNoaW5nOwogfQogCkBAIC00NTksNyArNDU5LDcgQEAgc3RhdGljIHZvaWQgc2V0Q29u
dGV4dChHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RDb250ZXh0KiBjb250ZXh0KQogCiAgICAgaWYg
KGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUoY29udGV4dCwgImRybS1jZG0tcHJveHkiKSkg
ewogICAgICAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUo
Z3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZShjb250ZXh0KSwgImNkbS1wcm94eSIpOwotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBwcml2LT5tdXRleCB9OwogICAgICAgICBwcml2LT5jZG1Qcm94eSA9IHZhbHVlID8gcmVpbnRl
cnByZXRfY2FzdDxDRE1Qcm94eSo+KGdfdmFsdWVfZ2V0X3BvaW50ZXIodmFsdWUpKSA6IG51bGxw
dHI7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgInJlY2VpdmVkIG5ldyBDRE1JbnN0
YW5jZSAlcCIsIHByaXYtPmNkbVByb3h5LmdldCgpKTsKICAgICAgICAga2xhc3MtPmNkbVByb3h5
QXR0YWNoZWQoc2VsZiwgcHJpdi0+Y2RtUHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5jcHAKaW5kZXgg
OTQ5YmNmYTg3NDU1MDQ1YzFlNTNhZWQyNDNmMDc4Y2VhOGVmYzVmYi4uYzc5MTVmYjU1ZGUzM2Y2
NmNiZmFhOTIxMzYwYjE5OTU2NDJkOWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuY3BwCkBAIC01MCwx
NCArNTAsMTQgQEAgQnVmZmVyOjp+QnVmZmVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIEJ1ZmZlcjo6
YmVnaW5QYWludGluZygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYWludGluZy5sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5sb2NrIH07CiAgICAgQVNTRVJUKG1f
cGFpbnRpbmcuc3RhdGUgPT0gUGFpbnRpbmdTdGF0ZTo6Q29tcGxldGUpOwogICAgIG1fcGFpbnRp
bmcuc3RhdGUgPSBQYWludGluZ1N0YXRlOjpJblByb2dyZXNzOwogfQogCiB2b2lkIEJ1ZmZlcjo6
Y29tcGxldGVQYWludGluZygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9wYWludGluZy5s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWludGluZy5sb2NrIH07CiAgICAgQVNTRVJU
KG1fcGFpbnRpbmcuc3RhdGUgPT0gUGFpbnRpbmdTdGF0ZTo6SW5Qcm9ncmVzcyk7CiAgICAgbV9w
YWludGluZy5zdGF0ZSA9IFBhaW50aW5nU3RhdGU6OkNvbXBsZXRlOwogICAgIG1fcGFpbnRpbmcu
Y29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEJ1ZmZlcjo6Y29t
cGxldGVQYWludGluZygpCiAKIHZvaWQgQnVmZmVyOjp3YWl0VW50aWxQYWludGluZ0NvbXBsZXRl
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BhaW50aW5nLmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3BhaW50aW5nLmxvY2sgfTsKICAgICBtX3BhaW50aW5nLmNvbmRpdGlvbi53
YWl0KG1fcGFpbnRpbmcubG9jaywKICAgICAgICAgW3RoaXNdIHsgcmV0dXJuIG1fcGFpbnRpbmcu
c3RhdGUgPT0gUGFpbnRpbmdTdGF0ZTo6Q29tcGxldGU7IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxh
dGZvcm1MYXllci5oCmluZGV4IDY0MGEwNDIxYmNlYjYxYTk4OGI2MWZmZjhmOWFiNGM2ZDk1MWFk
MzMuLjliNmFjMGRiYmQ5NTllYjQxZjhhNjYyZmU5ZjdmNGRhMDQ1M2JlZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3Jt
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFQbGF0Zm9ybUxheWVyLmgKQEAgLTU4LDEzICs1OCwxMyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFNjZW5lSW50ZWdyYXRpb24oUmVmUHRyPFNjZW5lSW50ZWdyYXRpb24+JiYgc2NlbmVJ
bnRlZ3JhdGlvbikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3RhdGUubG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICAgICAgbV9z
dGF0ZS5zY2VuZUludGVncmF0aW9uID0gV1RGTW92ZShzY2VuZUludGVncmF0aW9uKTsKICAgICB9
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IGNy
ZWF0ZVVwZGF0ZVNjb3BlKCkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3Rh
dGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICAg
ICAgaWYgKG1fc3RhdGUuc2NlbmVJbnRlZ3JhdGlvbikKICAgICAgICAgICAgIHJldHVybiBtX3N0
YXRlLnNjZW5lSW50ZWdyYXRpb24tPmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjA4LDE0ICsyMDgsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBUJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayB9Owog
ICAgICAgICBmdW5jdG9yKG1fc3RhdGUucGVuZGluZyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGZsdXNoU3RhdGUoY29uc3QgVCYgZnVuY3RvcikKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKFBsYXRmb3JtTGF5ZXI6Om1fc3RhdGUubG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2sgfTsK
ICAgICAgICAgYXV0byYgcGVuZGluZyA9IG1fc3RhdGUucGVuZGluZzsKICAgICAgICAgYXV0byYg
c3RhZ2luZyA9IG1fc3RhdGUuc3RhZ2luZzsKIApAQCAtMjkzLDcgKzI5Myw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgY29tbWl0U3RhdGUoY29uc3QgVCYg
ZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKFBsYXRmb3JtTGF5ZXI6
Om1fc3RhdGUubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBQbGF0Zm9ybUxheWVyOjpt
X3N0YXRlLmxvY2sgfTsKICAgICAgICAgbV9zdGF0ZS5jb21taXR0ZWQgPSBtX3N0YXRlLnN0YWdp
bmc7CiAgICAgICAgIG1fc3RhdGUuc3RhZ2luZy5kZWx0YSA9IHsgfTsKIApAQCAtMzAzLDE0ICsz
MDMsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhY2Nl
c3NQZW5kaW5nKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIGZ1bmN0b3IobV9zdGF0
ZS5wZW5kaW5nKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQg
YWNjZXNzQ29tbWl0dGVkKGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgUGxhdGZvcm1MYXllcjo6bV9zdGF0ZS5sb2NrIH07CiAgICAgICAgIGZ1bmN0b3Io
bV9zdGF0ZS5jb21taXR0ZWQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgKaW5kZXggNmYyODFkY2Iz
YzlhNDlmMGI0NGU0OGQ3YTYzNGNkZTMxNzY3ZTI1OC4uNjMxYzg0NzM4ZGYwMTJkMTJhZDkyMmNk
OGMwYjdiODgyMjE4ZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgogICAgIHZvaWQgYWNjZXNzU3RhdGUoY29uc3Qg
RiYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2NlbmUubG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NjZW5lLmxvY2sgfTsKICAgICAgICAgZnVu
Y3RvcihtX3NjZW5lLnN0YXRlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRl
Z3JhdGlvbi5jcHAKaW5kZXggMzc0M2FiNDA0ZTk1NDY0ZDM0MDJhZjdlMDMzM2RlOTc0NDMxOTll
ZC4uZGUzZmQyNzFkMDJkZGMwODc1ZjNhNDc4ZTNjOWE2MTVlYjY4ODdiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRl
Z3JhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKQEAgLTQ3LDIwICs0NywyMCBAQCBTY2VuZUlu
dGVncmF0aW9uOjp+U2NlbmVJbnRlZ3JhdGlvbigpCiAKIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6
c2V0Q2xpZW50KENsaWVudCYgY2xpZW50KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xp
ZW50LmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgbV9j
bGllbnQub2JqZWN0ID0gJmNsaWVudDsKIH0KIAogdm9pZCBTY2VuZUludGVncmF0aW9uOjppbnZh
bGlkYXRlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jbGllbnQubG9jayB9OwogICAgIG1fY2xpZW50LnNjZW5lID0gbnVs
bHB0cjsKICAgICBtX2NsaWVudC5vYmplY3QgPSBudWxscHRyOwogfQogCiB2b2lkIFNjZW5lSW50
ZWdyYXRpb246OnJlcXVlc3RVcGRhdGUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xp
ZW50LmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgaWYg
KG1fY2xpZW50Lm9iamVjdCkKICAgICAgICAgbV9jbGllbnQub2JqZWN0LT5yZXF1ZXN0VXBkYXRl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBiOWM3MGRhYTE1NDIzMWNkNTI4N2Mx
ZDliNTFjYmI5ZmZiMzkzZGRiLi44N2Y5MTVhYzRkNGNjZmU3YWNlMWZhYzZjZTM5NTFhNGZjNjM4
MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiAKICAgICAvLyBJbmNy
ZW1lbnRhbGx5IHN0b3JlIHVwZGF0ZXMgYXMgdGhleSBhcmUgYmVpbmcgZmx1c2hlZCBmcm9tIHRo
ZSBsYXllci1zaWRlLgogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV91cGRhdGUu
bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3VwZGF0ZS5sb2NrIH07CiAgICAgICAg
IG1fdXBkYXRlLnBlbmRpbmcudGlsZXNUb0NyZWF0ZS5hcHBlbmRWZWN0b3IobV9sYXllclN0YXRl
LnVwZGF0ZS50aWxlc1RvQ3JlYXRlKTsKICAgICAgICAgbV91cGRhdGUucGVuZGluZy50aWxlc1Rv
VXBkYXRlLmFwcGVuZFZlY3RvcihtX2xheWVyU3RhdGUudXBkYXRlLnRpbGVzVG9VcGRhdGUpOwog
ICAgICAgICBtX3VwZGF0ZS5wZW5kaW5nLnRpbGVzVG9SZW1vdmUuYXBwZW5kVmVjdG9yKG1fbGF5
ZXJTdGF0ZS51cGRhdGUudGlsZXNUb1JlbW92ZSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRhdGUoKQogCiBhdXRvIEJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKCkgLT4gVGlsZVVwZGF0ZQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdXBkYXRlLmxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3VwZGF0ZS5sb2NrIH07CiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRhdGUucGVuZGluZyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGY4MWU0OGM3NTU3Mzc4YjRhMGJkODNj
ZTMxYjRjOGU3YTFkMjg3ZTkuLmY2MjNlNjM0MjU0NWE4ODlkMmUwNGFkYjk4ZWExY2RhZDdlOTYw
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtNTIsMjYgKzUyLDI2IEBAIENvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbChDbGll
bnQmIGNsaWVudCkKIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjp+Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGwoKQogewogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9jbGllbnQubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50Lmxv
Y2sgfTsKICAgICBBU1NFUlQoIW1fY2xpZW50LmNsaWVudCk7CiAjZW5kaWYKIH0KIAogdm9pZCBD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6aW52YWxpZGF0ZUNsaWVudCgpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y2xpZW50LmxvY2sgfTsKICAgICBtX2NsaWVudC5jbGllbnQgPSBudWxscHRyOwogfQogCiBib29s
IENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpmbHVzaFVwZGF0ZSgpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9jbGllbnQubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xp
ZW50LmxvY2sgfTsKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2NsaWVudC5wZW5kaW5nVXBk
YXRlLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OnN3
YXBCdWZmZXJzSWZOZWVkZWQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50Lmxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudC5sb2NrIH07CiAgICAgaWYgKG1fY2xp
ZW50LmNsaWVudCkKICAgICAgICAgbV9jbGllbnQuY2xpZW50LT5zd2FwQnVmZmVyc0lmTmVlZGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCAxYThlNjk4MzQ0OGQ2MjEyZTI5ZWIy
MDYwNjAwZDRhM2I2Yzk0NGU2Li45ODNmMzFmZGE3ZmUxY2M2ODAyMmQ2YmNjZjcyZWQ1MTk1MWE2
NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFn
ZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSW1hZ2VCYWNr
aW5nVGV4dHVyZU1hcHBlckltcGw6On5JbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdXBkYXRlLmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3VwZGF0ZS5sb2NrIH07CiAKICAgICAvLyBJZiB0aGUgdXBkYXRlIGhhcHBl
bnMgZm9yIHRoZSBzYW1lIGltYWdlIGFuZCB0aGVyZSdzIG5vIGJ1ZmZlciwga2VlcCB0aGUgY3Vy
cmVudCBvbmUKICAgICAvLyBzbyBpdCBjYW4gYmUgcmVjZWl2ZWQgYnkgdGhlIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS4gSW4gdGhhdCBjYXNlIHdlIG9ubHkgbmVlZCB0byB1cGRhdGUKQEAgLTYx
LDcgKzYxLDcgQEAgdm9pZCBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Zmx1c2hVcGRh
dGUoKQogCiBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjp0YWtlVXBkYXRlKCkg
LT4gVXBkYXRlCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV91cGRhdGUubG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fdXBkYXRlLmxvY2sgfTsKICAgICByZXR1cm4gV1RGTW92ZShtX3Vw
ZGF0ZS51cGRhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRm
b3JtTGF5ZXIuY3BwCmluZGV4IDg1OWEwNDViNzBjMjJmNjgzNmEzZTM3MTM1NjIyNzI2NjZjMWE0
MjUuLmY4YjEyNWI1MjQ4YjkwNmM1M2FhOGE1Mjg5ODA5ZDlhMjljZjQ4ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NH
TFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVl
ZGVkKCkKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQubV9hdHRycy5hbHBoYSA/IFRleHR1cmVN
YXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBo
b2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpIH07CiAgICAgICAgIG1fcGxhdGZvcm1M
YXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUs
IGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGY2Nzlm
NjRlZjAxMGYwMTgwNTQ5MmFjNDg0OGJmMTc1ZDczZWM5MDcuLmE0NTk3NTNmMTczZTFiNmI1MGQ5
MzJjODRlYmFmNmJjMjE1NWJlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShj
b25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmxvYWQoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NhY2hl
ZE5hdHVyYWxTaXplTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NhY2hlZE5hdHVy
YWxTaXplTG9jayB9OwogICAgICAgICBtX2NhY2hlZE5hdHVyYWxTaXplID0gRmxvYXRTaXplKCk7
CiAgICAgfQogCkBAIC0xOTEsNyArMTkxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiAKIEZsb2F0U2l6ZSBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5hdHVyYWxTaXplKCkgY29uc3QKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2NhY2hlZE5hdHVyYWxTaXplTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY2FjaGVkTmF0dXJhbFNpemVMb2NrIH07CiAgICAgcmV0dXJuIG1fY2FjaGVk
TmF0dXJhbFNpemU7CiB9CiAKQEAgLTY0NSwyMSArNjQ1LDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjppbnZhbGlkYXRlRnJhbWVWaWV3KCkKIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmFkZExpc3RlbmVyKE1lZGlhUGxheWVyTGlz
dGVuZXIqIGxpc3RlbmVyKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5l
cnMpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4TGlzdGVuZXJzIH07CiAKICAgICBtX2xp
c3RlbmVycy5hZGQobGlzdGVuZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6cmVtb3ZlTGlzdGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciogbGlzdGVuZXIp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleExpc3RlbmVycyk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXhMaXN0ZW5lcnMgfTsKIAogICAgIG1fbGlzdGVuZXJzLnJlbW92ZShs
aXN0ZW5lcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpu
b3RpZnlEZWxldGVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX211dGV4TGlzdGVuZXJz
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleExpc3RlbmVycyB9OwogCiAgICAgZm9yIChI
YXNoU2V0PE1lZGlhUGxheWVyTGlzdGVuZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2xpc3Rl
bmVycy5iZWdpbigpOyBpdCAhPSBtX2xpc3RlbmVycy5lbmQoKTsgKytpdCkKICAgICAgICAgKCpp
dCktPm9uTWVkaWFQbGF5ZXJEZWxldGVkKCk7CkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0ZWQoKQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c2V0TmF0dXJhbFNpemUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2FjaGVkTmF0dXJhbFNp
emVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jYWNoZWROYXR1cmFsU2l6ZUxvY2sgfTsK
ICAgICBtX2NhY2hlZE5hdHVyYWxTaXplID0gc2l6ZTsKIH0KIApAQCAtOTEwLDcgKzkxMCw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpBc3luY0NhbGxiYWNrOjpHZXRQCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpBc3luY0NhbGxiYWNrOjpJbnZva2UoX19S
UENfX2luX29wdCBJTUZBc3luY1Jlc3VsdCAqcEFzeW5jUmVzdWx0KQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAg
ICBpZiAoIW1fbWVkaWFQbGF5ZXIpCiAgICAgICAgIHJldHVybiBTX09LOwpAQCAtOTI1LDcgKzky
NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpBc3luY0NhbGxiYWNrOjpJbnZvCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpBc3luY0NhbGxiYWNrOjpvbk1lZGlhUGxheWVyRGVsZXRlZCgpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKIAogICAgIG1fbWVkaWFQbGF5ZXIgPSBudWxscHRyOwogfQpAQCAtOTk5LDcgKzk5
OSw3IEBAIFVMT05HIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlk
ZW9QcmVzZW50ZXI6OlJlbGVhc2UoKQogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdGFydChNRlRJTUUgaG5z
U3lzdGVtVGltZSwgTE9OR0xPTkcgbGxDbG9ja1N0YXJ0T2Zmc2V0KQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAg
Ly8gQWZ0ZXIgc2h1dGRvd24sIHdlIGNhbm5vdCBzdGFydC4KICAgICBIUkVTVUxUIGhyID0gY2hl
Y2tTaHV0ZG93bigpOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrU3RhcnQo
TUYKIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZp
ZGVvUHJlc2VudGVyOjpPbkNsb2NrU3RvcChNRlRJTUUgaG5zU3lzdGVtVGltZSkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CiAgICAgaWYgKEZBSUxFRChocikp
CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTdG9wKE1GVAogCiBIUkVTVUxU
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6
Ok9uQ2xvY2tQYXVzZShNRlRJTUUgaG5zU3lzdGVtVGltZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8vIEFm
dGVyIHNodXRkb3duLCB3ZSBjYW5ub3QgcGF1c2UuCiAgICAgSFJFU1VMVCBociA9IGNoZWNrU2h1
dGRvd24oKTsKQEAgLTEwNTIsNyArMTA1Miw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6T25DbG9ja1BhdXNlKE1GCiAK
IEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6T25DbG9ja1Jlc3RhcnQoTUZUSU1FIGhuc1N5c3RlbVRpbWUpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAK
ICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAgIGlmIChGQUlMRUQoaHIpKQpA
QCAtMTA2OSw3ICsxMDY5LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpPbkNsb2NrUmVzdGFydCgKIAogSFJFU1VMVCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpP
bkNsb2NrU2V0UmF0ZShNRlRJTUUgaG5zU3lzdGVtVGltZSwgZmxvYXQgcmF0ZSkKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CiAgICAgaWYgKEZBSUxFRChocikp
CkBAIC0xMDg0LDcgKzEwODQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6Ok9uQ2xvY2tTZXRSYXRlKAogCiBIUkVTVUxU
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6
OlByb2Nlc3NNZXNzYWdlKE1GVlBfTUVTU0FHRV9UWVBFIGVNZXNzYWdlLCBVTE9OR19QVFIgdWxQ
YXJhbSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKIAogICAgIEhSRVNVTFQgaHIgPSBjaGVja1NodXRkb3duKCk7CiAgICAg
aWYgKEZBSUxFRChocikpCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlByb2Nlc3NNZXNz
YWdlKAogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9t
VmlkZW9QcmVzZW50ZXI6OkdldEN1cnJlbnRNZWRpYVR5cGUoX091dHB0cl8gIElNRlZpZGVvTWVk
aWFUeXBlICoqcHBNZWRpYVR5cGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIXBwTWVkaWFUeXBlKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgSFJFU1VMVCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpJ
bml0U2VydmljZVBvaW4KIAogICAgIEhSRVNVTFQgaHIgPSBTX09LOwogCi0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBp
ZiAoaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIE1GX0VfSU5WQUxJRFJFUVVFU1Q7CkBAIC0x
MTk0LDcgKzExOTQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkluaXRTZXJ2aWNlUG9pbgogCiBIUkVTVUxUIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlJlbGVh
c2VTZXJ2aWNlUG9pbnRlcnMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgbV9yZW5kZXJTdGF0ZSA9IFJlbmRl
clN0YXRlU2h1dGRvd247CiAKQEAgLTEyNTEsNyArMTI1MSw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6U2h1dGRvd25P
YmplY3QoCiAKIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0
b21WaWRlb1ByZXNlbnRlcjo6U2V0VmlkZW9XaW5kb3coSFdORCBod25kVmlkZW8pCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAKICAgICBpZiAoIUlzV2luZG93KGh3bmRWaWRlbykpCiAgICAgICAgIHJldHVybiBFX0lOVkFM
SURBUkc7CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVvV2luZG93KAogCiBI
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVz
ZW50ZXI6OkdldFZpZGVvV2luZG93KEhXTkQqIHBod25kVmlkZW8pCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBp
ZiAoIXBod25kVmlkZW8pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMjk3LDcgKzEy
OTcsNyBAQCBzdGF0aWMgSFJFU1VMVCBzZXRNaXhlclNvdXJjZVJlY3QoSU1GVHJhbnNmb3JtKiBt
aXhlciwgY29uc3QgTUZWaWRlb05vcm1hbGl6ZWRSZQogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlNldFZpZGVvUG9zaXRp
b24oY29uc3QgTUZWaWRlb05vcm1hbGl6ZWRSZWN0KiBwbnJjU291cmNlLCBjb25zdCBMUFJFQ1Qg
cHJjRGVzdCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8vIEZpcnN0LCBjaGVjayB0aGF0IHRoZSBwYXJhbWV0
ZXJzIGFyZSB2YWxpZC4KIApAQCAtMTM2Niw3ICsxMzY2LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpTZXRWaWRlb1Bv
c2l0aW8KIAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpHZXRWaWRlb1Bvc2l0aW9uKE1GVmlkZW9Ob3JtYWxpemVkUmVjdCog
cG5yY1NvdXJjZSwgTFBSRUNUIHByY0Rlc3QpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIXBucmNTb3Vy
Y2UgfHwgIXByY0Rlc3QpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xMzc5LDcgKzEz
NzksNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9t
VmlkZW9QcmVzZW50ZXI6OkdldFZpZGVvUG9zaXRpbwogCiBIUkVTVUxUIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OlJlcGFpbnRWaWRlbygp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAKICAgICBIUkVTVUxUIGhyID0gY2hlY2tTaHV0ZG93bigpOwogICAgIGlmIChG
QUlMRUQoaHIpKQpAQCAtMjE5NSw3ICsyMTk1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpub3RpZnlFdmVudChsb25nIEUK
IAogSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxl
UG9vbDo6Z2V0U2FtcGxlKENPTVB0cjxJTUZTYW1wbGU+JiBzYW1wbGUpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAg
ICBpZiAoIW1faW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBNRl9FX05PVF9JTklUSUFMSVpF
RDsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6OnJldHVyblNhbXBsZShJTUZTYW1wCiAgICAgaWYg
KCFzYW1wbGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICgh
bV9pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIE1GX0VfTk9UX0lOSVRJQUxJWkVEOwpAQCAt
MjIyNyw3ICsyMjI3LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OlZpZGVvU2FtcGxlUG9vbDo6cmV0dXJuU2FtcGxlKElNRlNhbXAKIAogYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6YXJlU2FtcGxlc1Bl
bmRpbmcoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX2luaXRpYWxpemVkKQogICAgICAgICByZXR1
cm4gRkFMU0U7CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6VmlkZW9TYW1wbGVQb29sOjphcmVTYW1wbGVzUGVuZGluZygpCiAKIEhS
RVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpWaWRlb1NhbXBsZVBvb2w6
OmluaXRpYWxpemUoVmlkZW9TYW1wbGVMaXN0JiBzYW1wbGVzKQogewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYg
KG1faW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBNRl9FX0lOVkFMSURSRVFVRVNUOwpAQCAt
MjI1NCw3ICsyMjU0LDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OlZpZGVvU2FtcGxlUG9vbDo6aW5pdGlhbGl6ZShWaWRlb1NhbXAKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2FtcGxlUG9vbDo6Y2xlYXIoKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogCiAgICAgbV92aWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7CiAgICAgbV9pbml0aWFsaXpl
ZCA9IGZhbHNlOwpAQCAtMjMzMyw3ICsyMzMzLDcgQEAgSFJFU1VMVCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpzdG9wU2NoZWR1bGVyKCkKICAgICAv
LyBXYWl0IGZvciB0aGUgc2NoZWR1bGVyIHRocmVhZCB0byBmaW5pc2guCiAgICAgOjpXYWl0Rm9y
U2luZ2xlT2JqZWN0KG1fc2NoZWR1bGVyVGhyZWFkLmdldCgpLCBJTkZJTklURSk7CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIG1fc2NoZWR1bGVkU2FtcGxlcy5jbGVhcigpOwogICAgIG1fc2NoZWR1bGVyVGhyZWFk
LmNsZWFyKCk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBIUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6VmlkZW9TY2hlZHVsZXI6OnNjaGVkdWxlU2FtcGxlKElNRlNhbQog
ICAgICAgICBtX3ByZXNlbnRlci0+cHJlc2VudFNhbXBsZShzYW1wbGUsIDApOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBTdWJtaXQgdGhlIHNhbXBsZSBmb3Igc2NoZWR1bGluZy4KLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICBtX3NjaGVkdWxlZFNhbXBsZXMuYXBwZW5kKHNhbXBsZSk7CiAKICAgICAg
ICAgOjpQb3N0VGhyZWFkTWVzc2FnZShtX3RocmVhZElELCBFdmVudFNjaGVkdWxlLCAwLCAwKTsK
QEAgLTI0MDQsNyArMjQwNCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpWaWRlb1NjaGVkdWxlcjo6cHJvY2Vzc1NhbXBsZXNJblF1ZXVlCiAgICAgICAgIENP
TVB0cjxJTUZTYW1wbGU+IHNhbXBsZTsKIAogICAgICAgICBpZiAodHJ1ZSkgewotICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmIChtX3NjaGVkdWxlZFNhbXBsZXMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2FtcGxlID0gbV9zY2hlZHVs
ZWRTYW1wbGVzLnRha2VGaXJzdCgpOwpAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgSFJFU1VMVCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OlZpZGVvU2NoZWR1bGVyOjpwcm9jZXNzU2Ft
cGxlKElNRlNhbXAKICAgICAgICAgaHIgPSBtX3ByZXNlbnRlci0+cHJlc2VudFNhbXBsZShzYW1w
bGUsIHByZXNlbnRhdGlvblRpbWUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBSZXR1cm4gdGhl
IHNhbXBsZSB0byB0aGUgcXVldWUsIHNpbmNlIGl0IGlzIG5vdCByZWFkeS4KLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgICAgICBtX3NjaGVkdWxlZFNhbXBsZXMucHJlcGVuZChzYW1wbGUpOwogICAgIH0KIApA
QCAtMjU0MCw3ICsyNTQwLDcgQEAgRFdPUkQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpWaWRlb1NjaGVkdWxlcjo6c2NoZWR1bGVyVGhyZWFkUHJvY1ByaXYKIAogICAgICAgICAg
ICAgY2FzZSBFdmVudEZsdXNoOgogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRTYW1wbGVz
LmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHdhaXQgPSBJTkZJ
TklURTsKQEAgLTI2NDgsNyArMjY0OCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6c2V0VmlkZW9XaW5kb3coSFdOCiAgICAg
QVNTRVJUKGh3bmQgIT0gbV9od25kKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBt
X2h3bmQgPSBod25kOwogICAgIH0KIApAQCAtMjY2MCw3ICsyNjYwLDcgQEAgSFJFU1VMVCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpzZXREZXN0
aW5hdGlvblJlY3QKICAgICBpZiAoRXF1YWxSZWN0KCZyY0Rlc3QsICZtX2Rlc3RSZWN0KSkKICAg
ICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIG1fZGVzdFJlY3QgPSByY0Rlc3Q7CiAK
QEAgLTI2ODIsNyArMjY4Miw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y3JlYXRlVmlkZW9TYW1wbGVzCiAgICAgICAgIHJl
dHVybiBNRl9FX1VORVhQRUNURUQ7CiAKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgcmVsZWFzZVJlc291cmNlcygp
OwogCkBAIC0yNzIzLDcgKzI3MjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiBIUkVTVUxU
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OmNo
ZWNrRGV2aWNlU3RhdGUoRGV2aWNlU3RhdGUmIHN0YXRlKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgSFJFU1VM
VCBociA9IG1fZGV2aWNlLT5DaGVja0RldmljZVN0YXRlKG1faHduZCk7CiAKQEAgLTI3NjQsNyAr
Mjc2NCw3IEBAIEhSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJl
Y3QzRFByZXNlbnRlcjo6cHJlc2VudFNhbXBsZShJTUZTCiB7CiAgICAgSFJFU1VMVCBociA9IFNf
T0s7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKIAogICAgIENPTVB0cjxJRGlyZWN0M0RTdXJmYWNlOT4gc3VyZmFjZTsKIApA
QCAtMjgyMiw3ICsyODIyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OkRpcmVjdDNEUHJlc2VudGVyOjpwYWludEN1cnJlbnRGcmFtZShXZWIKICAgICBpZiAoIXdp
ZHRoIHx8ICFoZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX21l
bVN1cmZhY2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI4ODcsNyArMjg4Nyw3IEBAIEhSRVNVTFQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6Y3Jl
YXRlRDNERGV2aWNlKCkKICAgICBIUkVTVUxUIGhyID0gU19PSzsKICAgICBVSU5UIGFkYXB0ZXJJ
RCA9IEQzREFEQVBURVJfREVGQVVMVDsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgaWYgKCFtX2RpcmVjdDNEOSB8
fCAhbV9kZXZpY2VNYW5hZ2VyKQogICAgICAgICByZXR1cm4gTUZfRV9OT1RfSU5JVElBTElaRUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjFjMWMyNzg2OWUzN2ViOWUyODg5
YmFjNGM4YTc1NmIwZmQyN2I1MS4uZjJjZWIwMDBhZDQwN2M0ZWI2MjM1N2NjYTBjMDIyYTViNzFh
NTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBA
IFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0
ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFsCiAKIGJvb2wgU2NhbGFibGVJbWFnZURlY29kZXI6OmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewotICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owog
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIAogYm9vbCBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAogewotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OwogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGlu
ZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgU2Nh
bGFibGVJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29u
c3QKIAogdW5zaWduZWQgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBp
ZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUu
CkBAIC0yMDEsNyArMjAxLDcgQEAgdW5zaWduZWQgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKIAogU2Vjb25kcyBT
Y2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdAogewotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lQnVmZmVyQ2FjaGUu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gMF9zOwogCkBAIC0yMjEsNyArMjIxLDcgQEAgU2Vjb25k
cyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAogCiBQbGF0Zm9ybUltYWdlUHRyIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2Vz
IGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbiBlbXB0eSBp
bWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KICAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCBhNjE1
N2VmM2E4NzRmY2NmMzIwMGU5YWY3NDA2ZWU0ODc5ODhjYWYzLi5mY2YwYTYxMTVkZDg2YzE0NzU5
YjJiMjFhN2M3MWM3OGU5ZjRjZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTcy
LDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggZjExMTdmZjI0NzBjZmMyN2Y0NTkxM2E3
NDgyNjI1ZTA5ZTczZWVjZi4uOTJkZTFkYzVmNjA1NmQ2MWE5YjMyZjI2Mjk3ZGI3ZGFlYWY0Mzg1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1t
CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGVzT3BhcXVl
KGJvb2wgb3BhcXVlKQogICAgIGlmIChtX3RpbGVzT3BhcXVlID09IG9wYXF1ZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogCiAgICAgbV90aWxlc09wYXF1ZSA9IG9wYXF1ZTsK
ICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT51cGRhdGVUaWxlT3BhY2l0eSgpOwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpkb0xheW91dFRpbGVzKCkKICAgICBpZiAo
aXNUaWxlQ3JlYXRpb25TdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRl
eCB9OwogICAgIExlZ2FjeVRpbGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsK
ICAgICAvLyBFdmVuIHRob3VnaCB3ZSBhcmVuJ3QgYWN0dWFsbHkgY3JlYXRpbmcgdGlsZXMgaW4g
dGhlIGluYWN0aXZlIGdyaWQsIHdlCiAgICAgLy8gc3RpbGwgbmVlZCB0byBkcm9wIGludmFsaWQg
dGlsZXMgaW4gcmVzcG9uc2UgdG8gYSBsYXlvdXQuCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZShmbG9hdCBzY2FsZSkKICAgICBpZiAoIWtl
ZXBzWm9vbWVkT3V0VGlsZXMoKSAmJiAhaXNUaWxlSW52YWxpZGF0aW9uU3VzcGVuZGVkKCkpIHsK
ICAgICAgICAgLy8gVGlsZSBpbnZhbGlkYXRpb24gaXMgbm9ybWFsbHkgc3VzcGVuZGVkIGR1cmlu
ZyB6b29taW5nIGJ5IFVJS2l0IGJ1dCBzb21lIGFwcGxpY2F0aW9ucwogICAgICAgICAvLyB1c2lu
ZyBjdXN0b20gc2Nyb2xsdmlld3MgbWF5IHpvb20gd2l0aG91dCB0cmlnZ2VyaW5nIHRoZSBjYWxs
YmFja3MuIEludmFsaWRhdGUgdGhlIHRpbGVzIGV4cGxpY2l0bHkuCi0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGlsZU11
dGV4IH07CiAgICAgICAgIGFjdGl2ZVRpbGVHcmlkKCktPmRyb3BBbGxUaWxlcygpOwogICAgICAg
ICBhY3RpdmVUaWxlR3JpZCgpLT5jcmVhdGVUaWxlcyhDb3ZlclZpc2libGVPbmx5KTsKICAgICB9
CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hh
bmdlKCkKICAgICBBU1NFUlQobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgfHwgbV9wZW5kaW5nU2Nh
bGUpOwogICAgIEFTU0VSVChtX3RpbGluZ01vZGUgIT0gRGlzYWJsZWQpOwogICAgIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxl
TXV0ZXggfTsKIAogICAgIGlmIChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSkgewogICAgICAgICBt
X3pvb21lZE91dFRpbGVHcmlkLT5zZXRTY2FsZShtX3BlbmRpbmdab29tZWRPdXRTY2FsZSk7CkBA
IC0yOTgsNyArMjk4LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93KCkK
ICAgICBpZiAobV90aWxpbmdNb2RlID09IFpvb21pbmcpCiAgICAgICAgIG1fdGlsaW5nTW9kZSA9
IE1pbmltYWw7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fdGlsZU11dGV4IH07CiAgICAgTGVnYWN5VGlsZUdyaWQqIGFjdGl2ZUdy
aWQgPSBhY3RpdmVUaWxlR3JpZCgpOwogICAgIGlmIChhY3RpdmVHcmlkLT5jaGVja0RvU2luZ2xl
VGlsZUxheW91dCgpKSB7CiAgICAgICAgIG1fdGlsaW5nTW9kZSA9IHNhdmVkVGlsaW5nTW9kZTsK
QEAgLTMxMSwxNCArMzExLDE0IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05v
dygpCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3dGb3JSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgp
KTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdGlsZU11dGV4IH07CiAKICAgICBhY3RpdmVUaWxlR3JpZCgpLT5hZGRUaWxlc0NvdmVy
aW5nUmVjdChyZWN0KTsKIH0KIAogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZp
c2libGVUaWxlcygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgIHJlbW92ZUFsbE5vblZpc2libGVU
aWxlc0ludGVybmFsKCk7CiB9CiAKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIExlZ2FjeVRpbGVD
YWNoZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzSW50ZXJuYWwoKQogCiB2b2lkIExlZ2FjeVRp
bGVDYWNoZTo6cmVtb3ZlQWxsVGlsZXMoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGls
ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICBtX3pvb21l
ZE91dFRpbGVHcmlkLT5kcm9wQWxsVGlsZXMoKTsKICAgICBpZiAobV96b29tZWRJblRpbGVHcmlk
KQogICAgICAgICBtX3pvb21lZEluVGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwpAQCAtMzQ4LDcg
KzM0OCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcygpCiAKIHZvaWQg
TGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVGb3JlZ3JvdW5kVGlsZXMoKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXgg
fTsKICAgICBpZiAoIWtlZXBzWm9vbWVkT3V0VGlsZXMoKSkKICAgICAgICAgbV96b29tZWRPdXRU
aWxlR3JpZC0+ZHJvcEFsbFRpbGVzKCk7CiAgICAgaWYgKG1fem9vbWVkSW5UaWxlR3JpZCkKQEAg
LTM1NywxMyArMzU3LDEzIEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVGb3JlZ3JvdW5k
VGlsZXMoKQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2V0Q29udGVudFJlcGxhY2VtZW50SW1h
Z2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRSZXBsYWNlbWVudEltYWdlKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCB9OwogICAgIG1f
Y29udGVudFJlcGxhY2VtZW50SW1hZ2UgPSBjb250ZW50UmVwbGFjZW1lbnRJbWFnZTsKIH0KIAog
UmV0YWluUHRyPENHSW1hZ2VSZWY+IExlZ2FjeVRpbGVDYWNoZTo6Y29udGVudFJlcGxhY2VtZW50
SW1hZ2UoKSBjb25zdAogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY29udGVudFJlcGxhY2Vt
ZW50SW1hZ2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29udGVudFJlcGxhY2VtZW50
SW1hZ2VNdXRleCB9OwogICAgIHJldHVybiBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlOwogfQog
CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRp
bWVyRmlyZWQoKQogewogICAgIGlmIChpc1RpbGVDcmVhdGlvblN1c3BlbmRlZCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9OwogICAgIGNyZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENv
dmVyU3BlY3VsYXRpdmUpOwogfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBMZWdhY3lUaWxl
Q2FjaGU6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9yUGVuZGluZ1JlcGFpbnQoKQogCiB2b2lk
IExlZ2FjeVRpbGVDYWNoZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NhdmVkRGlzcGxheVJlY3RNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2F2ZWREaXNwbGF5UmVjdE11dGV4IH07CiAgICAg
Ym9vbCBhZGRlZEZpcnN0UmVjdCA9IG1fc2F2ZWREaXNwbGF5UmVjdHMuaXNFbXB0eSgpOwogICAg
IG1fc2F2ZWREaXNwbGF5UmVjdHMuYXBwZW5kKGRpcnR5UmVjdCk7CiAgICAgaWYgKCFhZGRlZEZp
cnN0UmVjdCkKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6dXBkYXRl
VGlsaW5nTW9kZSgpCiAgICAgICAgIGlmIChtX3RpbGluZ01vZGUgPT0gRGlzYWJsZWQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICAgICAgY3JlYXRl
VGlsZXNJbkFjdGl2ZUdyaWQoQ292ZXJWaXNpYmxlT25seSk7CiAKICAgICAgICAgaWYgKCFtX3Nh
dmVkRGlzcGxheVJlY3RzLmlzRW1wdHkoKSkKQEAgLTcwMSw3ICs3MDEsNyBAQCB2b2lkIExlZ2Fj
eVRpbGVDYWNoZTo6c2V0VGlsaW5nTW9kZShUaWxpbmdNb2RlIHRpbGluZ01vZGUpCiAgICAgaWYg
KChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSB8fCBtX3BlbmRpbmdTY2FsZSkgJiYgbV90aWxpbmdN
b2RlICE9IERpc2FibGVkKQogICAgICAgICBjb21taXRTY2FsZUNoYW5nZSgpOwogICAgIGVsc2Ug
aWYgKHdhc1pvb21pbmcpIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aWxlTXV0ZXggfTsKICAgICAgICAgYnJpbmdB
Y3RpdmVUaWxlR3JpZFRvRnJvbnQoKTsKICAgICB9CiAKQEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lk
IExlZ2FjeVRpbGVDYWNoZTo6ZG9QZW5kaW5nUmVwYWludHMoKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKGlzVGlsZUludmFsaWRhdGlvblN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3RpbGVNdXRleCB9OwogICAgIGZsdXNoU2F2ZWREaXNwbGF5UmVjdHMoKTsKIH0KIApAQCAtNzU1
LDcgKzc1NSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpmbHVzaFNhdmVkRGlzcGxheVJlY3Rz
KCkKIAogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2F2ZWREaXNwbGF5UmVjdE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fc2F2ZWREaXNwbGF5UmVjdE11dGV4IH07CiAgICAgICAgIG1fc2F2ZWREaXNwbGF5UmVj
dHMuc3dhcChyZWN0cyk7CiAgICAgfQogICAgIHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOwpA
QCAtNzc4LDcgKzc3OCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3KCkK
ICAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSB2aWV3V2lsbERyYXddOwogCiAgICAgaWYgKCFt
X3NhdmVkRGlzcGxheVJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3RpbGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RpbGVNdXRleCB9Owog
ICAgICAgICBmbHVzaFNhdmVkRGlzcGxheVJlY3RzKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQppbmRleCBhYzhj
NjQ4ZDZiM2YxNjM0NjE0MWRlNmE0ZGYxOTY5OWI2NWVmZGU3Li4yZjQ1MjU2ZjQ4MDM5MDJiYzgx
ZDJlOTljN2NkODRhNzI4ZDNhMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQpAQCAtODIsNyArODIsNyBAQCB2b2lkIExlZ2Fj
eVRpbGVMYXllclBvb2w6OmFkZExheWVyKGNvbnN0IFJldGFpblB0cjxMZWdhY3lUaWxlTGF5ZXI+
JiBsYXllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xheWVyUG9vbE11dGV4
IH07CiAgICAgbGlzdE9mTGF5ZXJzV2l0aFNpemUobGF5ZXJTaXplKS5wcmVwZW5kKGxheWVyKTsK
ICAgICBtX3RvdGFsQnl0ZXMgKz0gYnl0ZXNCYWNraW5nTGF5ZXJXaXRoUGl4ZWxTaXplKGxheWVy
U2l6ZSk7CiAKQEAgLTk0LDcgKzk0LDcgQEAgUmV0YWluUHRyPExlZ2FjeVRpbGVMYXllcj4gTGVn
YWN5VGlsZUxheWVyUG9vbDo6dGFrZUxheWVyV2l0aFNpemUoY29uc3QgSW50U2l6ZSYKIHsKICAg
ICBpZiAoIWNhblJldXNlTGF5ZXJXaXRoU2l6ZShzaXplKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sYXllclBvb2xNdXRleCB9OwogICAgIExheWVyTGlzdCYgcmV1c2VMaXN0ID0gbGlz
dE9mTGF5ZXJzV2l0aFNpemUoc2l6ZSwgTWFya0FzVXNlZCk7CiAgICAgaWYgKHJldXNlTGlzdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xMDQsNyArMTA0LDcgQEAgUmV0YWlu
UHRyPExlZ2FjeVRpbGVMYXllcj4gTGVnYWN5VGlsZUxheWVyUG9vbDo6dGFrZUxheWVyV2l0aFNp
emUoY29uc3QgSW50U2l6ZSYKIAogdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpzZXRDYXBhY2l0
eSh1bnNpZ25lZCBjYXBhY2l0eSkKIHsKLSAgICBMb2NrSG9sZGVyIHJldXNlTG9ja2VyKG1fbGF5
ZXJQb29sTXV0ZXgpOworICAgIExvY2tlciByZXVzZUxvY2tlciB7IG1fbGF5ZXJQb29sTXV0ZXgg
fTsKICAgICBpZiAoY2FwYWNpdHkgPCBtX2NhcGFjaXR5KQogICAgICAgICBzY2hlZHVsZVBydW5l
KCk7CiAgICAgbV9jYXBhY2l0eSA9IGNhcGFjaXR5OwpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
TGVnYWN5VGlsZUxheWVyUG9vbDo6c2NoZWR1bGVQcnVuZSgpCiAKIHZvaWQgTGVnYWN5VGlsZUxh
eWVyUG9vbDo6cHJ1bmUoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbGF5ZXJQb29sTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xheWVyUG9vbE11dGV4IH07CiAgICAgQVNTRVJU
KG1fbmVlZHNQcnVuZSk7CiAgICAgbV9uZWVkc1BydW5lID0gZmFsc2U7CiAgICAgdW5zaWduZWQg
c2hyaW5rVG8gPSBkZWNheWVkQ2FwYWNpdHkoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIExl
Z2FjeVRpbGVMYXllclBvb2w6OnBydW5lKCkKIAogdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpk
cmFpbigpCiB7Ci0gICAgTG9ja0hvbGRlciByZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsK
KyAgICBMb2NrZXIgcmV1c2VMb2NrZXIgeyBtX2xheWVyUG9vbE11dGV4IH07CiAgICAgbV9yZXVz
ZUxpc3RzLmNsZWFyKCk7CiAgICAgbV9zaXplc0luUHJ1bmVPcmRlci5jbGVhcigpOwogICAgIG1f
dG90YWxCeXRlcyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2lu
ZG93Lm1tCmluZGV4IDZjYWUwOGJhM2I5NjNkMjU5NzFkZmEzYzQzYWFkZDExMWMxNTU1ZDEuLjZl
NWQ4MzMzMDMxMDg0M2IzZjJkMDkxNGZmOTQ3MzJiNTg0ZThlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC0zODQsMTQgKzM4NCwxNCBAQCAt
ICh2b2lkKXNlbmRNb3VzZU1vdmVFdmVudDooV2ViRXZlbnQgKilldmVudCBjb250ZW50Q2hhbmdl
OihXS0NvbnRlbnRDaGFuZ2UgKilhQwogCiAtICh2b2lkKXNldEV4cG9zZWRTY3JvbGxWaWV3UmVj
dDooQ0dSZWN0KWV4cG9zZWRTY3JvbGxWaWV3UmVjdAogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCZfZXhwb3NlZFNjcm9sbFZpZXdSZWN0TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IF9leHBv
c2VkU2Nyb2xsVmlld1JlY3RMb2NrIH07CiAgICAgX2V4cG9zZWRTY3JvbGxWaWV3UmVjdCA9IGV4
cG9zZWRTY3JvbGxWaWV3UmVjdDsKIH0KIAogLSAoQ0dSZWN0KWV4cG9zZWRTY3JvbGxWaWV3UmVj
dAogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJl9leHBvc2VkU2Nyb2xsVmll
d1JlY3RMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IF9leHBvc2VkU2Nyb2xsVmlld1Jl
Y3RMb2NrIH07CiAgICAgICAgIGlmICghQ0dSZWN0SXNOdWxsKF9leHBvc2VkU2Nyb2xsVmlld1Jl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIF9leHBvc2VkU2Nyb2xsVmlld1JlY3Q7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmlu
ZGV4IDE5ZmZkZWViNTFkNmY4NzFlZDdhNmNlOWM1NWNkOTQ0ZDZiMjQxMWYuLjAwMjY2NGUzZTE2
NjlmZjMyOGRiOWI5NTI5MWE4OGI1MDQxNzljMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTY2OCw3ICs2NjgsNyBAQCBzdGF0
aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogICAgIHBlckNhbGxvdXRBdXRvcmVsZWFzZXBv
b2xFbmFibGVkID0gX0NGUnVuTG9vcFNldFBlckNhbGxvdXRBdXRvcmVsZWFzZXBvb2xFbmFibGVk
KFlFUyk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHN0YXJ0dXBMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHN0YXJ0dXBMb2NrIH07CiAgICAgICAgIHN0YXJ0dXBD
b25kaXRpb24ubm90aWZ5T25lKCk7CiAgICAgfQogCkBAIC03MjIsNyArNzIyLDcgQEAgc3RhdGlj
IHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgLy8gV2FpdCBmb3IgdGhlIHdlYiB0aHJlYWQg
dG8gc3RhcnR1cCBjb21wbGV0ZWx5IGJlZm9yZSB3ZSBjb250aW51ZS4KICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKHN0YXJ0dXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IHN0YXJ0dXBMb2NrIH07CiAKICAgICAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3Mg
ZmVudiB0byB3b3JrZXJzICYgdGhlIHdlYiB0aHJlYWQuCiAgICAgICAgIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudDo6c2luZ2xldG9uKCkuc2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
TGliV2ViUlRDLmNwcAppbmRleCA1YzI2MmI0MjZmYzVmNDM4OWVhNDZmYjZlOTE4YTU3MmFhYjdl
NDA1Li4zYjkwOTU4NThmNWZlYTRmOGVkNmQ0ZDJmYTIwYTJlYjViMWE4MDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGli
V2ViUlRDLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUxpYldlYlJUQzo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZQogICAg
IH0KIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hZGFwdGVyTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTXV0ZXggfTsKICAgICAgICAgY29uc3Qg
YXV0byYgc2FtcGxlID0gZGF0YS5nZXRTYW1wbGUoKTsKICAgICAgICAgYXV0byogYnVmZmVyID0g
Z3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSk7CiAgICAgICAgIGdzdF9hZGFwdGVy
X3B1c2gobV9hZGFwdGVyLmdldCgpLCBnc3RfYnVmZmVyX3JlZihidWZmZXIpKTsKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQzo6cHVs
bEF1ZGlvRGF0YSgpCiAgICAgc2l6ZV90IG91dENodW5rU2FtcGxlQ291bnQgPSBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6Y2h1bmtTYW1wbGVDb3VudDsKICAgICBzaXplX3Qgb3V0QnVmZmVyU2l6ZSA9
IG91dENodW5rU2FtcGxlQ291bnQgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLmJwZjsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYWRhcHRlck11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9hZGFwdGVyTXV0ZXggfTsKICAgICBzaXplX3QgaW5DaHVua1NhbXBsZUNvdW50ID0gZ3N0
X2F1ZGlvX2NvbnZlcnRlcl9nZXRfaW5fZnJhbWVzKG1fc2FtcGxlQ29udmVydGVyLmdldCgpLCBv
dXRDaHVua1NhbXBsZUNvdW50KTsKICAgICBzaXplX3QgaW5CdWZmZXJTaXplID0gaW5DaHVua1Nh
bXBsZUNvdW50ICogbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLmJwZjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggY2NkNmFjNTYyMjMxZmY4YzI5OGZkNmM0NTM0MTYwOTllMWQxOGQzNi4uYTZm
MmI3M2MxN2RmY2Y4NjI4NGM4YzVkZTU2MjA2YTlhNTA4NzRjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIGJvb2wgb3Blbk5leHRTdHJlYW0oRm9ybVN0
cmVhbUZpZWxkcyogZm9ybSkKIHsKICAgICAvLyBDRlJlYWRTdHJlYW1PcGVuKCkgY2FuIGNhdXNl
IHRoaXMgZnVuY3Rpb24gdG8gYmUgcmUtZW50ZXJlZCBmcm9tIGFub3RoZXIgdGhyZWFkIGJlZm9y
ZSBpdCByZXR1cm5zLgogICAgIC8vIE9uZSBleGFtcGxlIHdoZW4gdGhpcyBjYW4gb2NjdXIgaXMg
d2hlbiB0aGUgc3RyZWFtIGJlaW5nIG9wZW5lZCBoYXMgbm8gZGF0YS4gU2VlIDxyZGFyOi8vcHJv
YmxlbS8yMzU1MDI2OT4uCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoZm9ybS0+c3RyZWFtSXNCZWlu
Z09wZW5lZE9yQ2xvc2VkTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGZvcm0tPnN0cmVhbUlz
QmVpbmdPcGVuZWRPckNsb3NlZExvY2sgfTsKIAogICAgIC8vIFNraXAgb3ZlciBhbnkgc3RyZWFt
cyB3ZSBjYW4ndCBvcGVuLgogICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCkBA
IC0yMjksNyArMjI5LDcgQEAgc3RhdGljIHZvaWQgZm9ybUZpbmFsaXplKENGUmVhZFN0cmVhbVJl
ZiBzdHJlYW0sIHZvaWQqIGNvbnRleHQpCiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtmb3JtXSB7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGZvcm0tPnN0cmVhbUlz
QmVpbmdPcGVuZWRPckNsb3NlZExvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGZv
cm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2sgfTsKICAgICAgICAgICAgIGNsb3Nl
Q3VycmVudFN0cmVhbShmb3JtKTsKICAgICAgICAgfQogICAgICAgICBkZWxldGUgZm9ybTsKQEAg
LTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgQm9vbGVhbiBmb3JtQ2FuUmVhZChDRlJlYWRTdHJlYW1S
ZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0KQogc3RhdGljIHZvaWQgZm9ybUNsb3NlKENGUmVhZFN0
cmVhbVJlZiwgdm9pZCogY29udGV4dCkKIHsKICAgICBGb3JtU3RyZWFtRmllbGRzKiBmb3JtID0g
c3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwotICAgIExvY2tIb2xkZXIg
bG9ja2VyKGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrIH07CiAKICAg
ICBjbG9zZUN1cnJlbnRTdHJlYW0oZm9ybSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkOWEzMTk0YWFkYjZj
Zjc5ZTEwODM4ODE3MjgyYjdhYzI0YmZkMWVhLi4xNzcyNjBjZjQxMmYyZGI3OWE5ZDBkNWFkOGMx
OTZmZGFiNzEyZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0Ojpjb21wbGV0ZURpZFJlY2VpdmVSZXNwb25zZSgpCiB2b2lkIEN1cmxSZXF1ZXN0OjpzZXRS
ZXF1ZXN0UGF1c2VkKGJvb2wgcGF1c2VkKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrKG1fcGF1c2VTdGF0ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGF1c2VT
dGF0ZU11dGV4IH07CiAKICAgICAgICAgYXV0byBzYXZlZFN0YXRlID0gc2hvdWxkQmVQYXVzZWQo
KTsKICAgICAgICAgbV9zaG91bGRTdXNwZW5kID0gbV9pc1BhdXNlZE9mUmVxdWVzdCA9IHBhdXNl
ZDsKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXRSZXF1ZXN0UGF1c2Vk
KGJvb2wgcGF1c2VkKQogdm9pZCBDdXJsUmVxdWVzdDo6c2V0Q2FsbGJhY2tQYXVzZWQoYm9vbCBw
YXVzZWQpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9wYXVzZVN0YXRlTXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXVzZVN0YXRlTXV0ZXggfTsKIAogICAg
ICAgICBhdXRvIHNhdmVkU3RhdGUgPSBzaG91bGRCZVBhdXNlZCgpOwogICAgICAgICBtX2lzUGF1
c2VkT2ZDYWxsYmFjayA9IHBhdXNlZDsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjpwYXVzZWRTdGF0dXNDaGFuZ2VkKCkKIAogICAgICAgICBib29sIG5lZWRDYW5jZWwgeyBm
YWxzZSB9OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9wYXVzZVN0
YXRlTXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGF1c2VTdGF0ZU11dGV4
IH07CiAgICAgICAgICAgICBib29sIHBhdXNlZCA9IHNob3VsZEJlUGF1c2VkKCk7CiAKICAgICAg
ICAgICAgIGlmIChpc0hhbmRsZVBhdXNlZCgpID09IHBhdXNlZCkKQEAgLTc0MiwyMCArNzQyLDIw
IEBAIE5ldHdvcmtMb2FkTWV0cmljcyBDdXJsUmVxdWVzdDo6bmV0d29ya0xvYWRNZXRyaWNzKCkK
IAogdm9pZCBDdXJsUmVxdWVzdDo6ZW5hYmxlRG93bmxvYWRUb0ZpbGUoKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93
bmxvYWRNdXRleCB9OwogICAgIG1faXNFbmFibGVkRG93bmxvYWRUb0ZpbGUgPSB0cnVlOwogfQog
CiBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogewot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZG93bmxvYWRNdXRleCB9OwogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9
CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9kb3dubG9hZE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxv
YWRNdXRleCB9OwogCiAgICAgICAgIGlmICghbV9pc0VuYWJsZWREb3dubG9hZFRvRmlsZSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3
cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93
bmxvYWRNdXRleCB9OwogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlID09IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTc4MSw3
ICs3ODEsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCiAKIHZvaWQg
Q3VybFJlcXVlc3Q6OmNsZWFudXBEb3dubG9hZEZpbGUoKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fZG93bmxvYWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRl
eCB9OwogCiAgICAgaWYgKCFtX2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKSB7CiAgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kb3dubG9hZEZpbGVQYXRoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcApp
bmRleCAyY2Y5Yzg3NzFkZGQ4ZjUyYjJlMDAyOWM0ZjkzYTdkYTExZTNmZDA1Li5hZTg2ZDJiMTJk
YjJlZGU1NDUyZDhiMmJhNWFiMjI3Y2JmZDkwNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCkBAIC02MywyOCAr
NjMsMjggQEAgdm9pZCBDdXJsU1NMSGFuZGxlOjpjbGVhckNBQ2VydEluZm8oKQogCiB2b2lkIEN1
cmxTU0xIYW5kbGU6OmFsbG93QW55SFRUUFNDZXJ0aWZpY2F0ZXNGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYgaG9zdCkKIHsKLSAgICBMb2NrSG9sZGVyIG11dGV4KG1fYWxsb3dlZEhvc3RzTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fYWxsb3dlZEhvc3RzTG9jayB9OwogCiAgICAgbV9hbGxvd2Vk
SG9zdHMuYWRkVm9pZChob3N0KTsKIH0KIAogYm9vbCBDdXJsU1NMSGFuZGxlOjpjYW5JZ25vcmVB
bnlIVFRQU0NlcnRpZmljYXRlc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAogewot
ICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2VkSG9zdHNMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9hbGxvd2VkSG9zdHNMb2NrIH07CiAKICAgICByZXR1cm4gbV9hbGxvd2VkSG9zdHMu
Y29udGFpbnMoaG9zdCk7CiB9CiAKIHZvaWQgQ3VybFNTTEhhbmRsZTo6c2V0Q2xpZW50Q2VydGlm
aWNhdGVJbmZvKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluZyYgY2VydGlmaWNh
dGUsIGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIExvY2tIb2xkZXIgbXV0ZXgobV9hbGxvd2Vk
Q2xpZW50SG9zdHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hbGxvd2VkQ2xpZW50SG9z
dHNMb2NrIH07CiAKICAgICBtX2FsbG93ZWRDbGllbnRIb3N0cy5zZXQoaG9zdE5hbWUsIENsaWVu
dENlcnRpZmljYXRlIHsgY2VydGlmaWNhdGUsIGtleSB9KTsKIH0KIAogT3B0aW9uYWw8Q3VybFNT
TEhhbmRsZTo6Q2xpZW50Q2VydGlmaWNhdGU+IEN1cmxTU0xIYW5kbGU6OmdldFNTTENsaWVudENl
cnRpZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRl
ciBtdXRleChtX2FsbG93ZWRDbGllbnRIb3N0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2FsbG93ZWRDbGllbnRIb3N0c0xvY2sgfTsKIAogICAgIGF1dG8gaXQgPSBtX2FsbG93ZWRDbGll
bnRIb3N0cy5maW5kKGhvc3ROYW1lKTsKICAgICBpZiAoaXQgPT0gbV9hbGxvd2VkQ2xpZW50SG9z
dHMuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAppbmRleCBlYTQ1MzExMGExODM5NzM3ZDk3NWZiMzVlMWU4MjA5YzhlYTIwMjlmLi4xNTc3
YWE2MWIyZjU2OWIyZDE2NzJjYjI3MTczYzJhODZkZTRlMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCB2
b2lkIFNRTGl0ZURhdGFiYXNlOjpjbG9zZSgpCiAgICAgICAgIC8vIEFTU0VSVChtX29wZW5pbmdU
aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICAgICAgc3FsaXRlMyogZGIgPSBtX2Ri
OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlQ2xv
c2luZ011dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlQ2xvc2lu
Z011dGV4IH07CiAgICAgICAgICAgICBtX2RiID0gMDsKICAgICAgICAgfQogICAgICAgICBpZiAo
bV91c2VXQUwpIHsKQEAgLTI3Myw3ICsyNzMsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjpt
YXhpbXVtU2l6ZSgpCiAgICAgaW50NjRfdCBtYXhQYWdlQ291bnQgPSAwOwogCiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sgfTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcihm
YWxzZSk7CiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiUFJBR01B
IG1heF9wYWdlX2NvdW50Il9zKTsKICAgICAgICAgbWF4UGFnZUNvdW50ID0gc3RhdGVtZW50ID8g
c3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKSA6IDA7CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBT
UUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUoaW50NjRfdCBzaXplKQogICAgIEFTU0VSVChj
dXJyZW50UGFnZVNpemUgfHwgIW1fZGIpOwogICAgIGludDY0X3QgbmV3TWF4UGFnZUNvdW50ID0g
Y3VycmVudFBhZ2VTaXplID8gc2l6ZSAvIGN1cnJlbnRQYWdlU2l6ZSA6IDA7CiAgICAgCi0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fYXV0aG9yaXplckxvY2sgfTsKICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKIAogICAg
IGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiUFJBR01B
IG1heF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNvdW50KSk7CkBAIC0zMDksNyArMzA5LDcg
QEAgaW50IFNRTGl0ZURhdGFiYXNlOjpwYWdlU2l6ZSgpCiAgICAgLy8gU2luY2UgdGhlIHBhZ2Ug
c2l6ZSBvZiBhIGRhdGFiYXNlIGlzIGxvY2tlZCBpbiBhdCBjcmVhdGlvbiBhbmQgdGhlcmVmb3Jl
IGNhbm5vdCBiZSBkeW5hbWljLCAKICAgICAvLyB3ZSBjYW4gY2FjaGUgdGhlIHZhbHVlIGZvciBm
dXR1cmUgdXNlCiAgICAgaWYgKG1fcGFnZVNpemUgPT0gLTEpIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F1
dGhvcml6ZXJMb2NrIH07CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAg
ICAKICAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgcGFn
ZV9zaXplIl9zKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjpm
cmVlU3BhY2VTaXplKCkKICAgICBpbnQ2NF90IGZyZWVsaXN0Q291bnQgPSAwOwogCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fYXV0aG9yaXplckxvY2sgfTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXpl
cihmYWxzZSk7CiAgICAgICAgIC8vIE5vdGU6IGZyZWVsaXN0X2NvdW50IHdhcyBhZGRlZCBpbiBT
UUxpdGUgMy40LjEuCiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgi
UFJBR01BIGZyZWVsaXN0X2NvdW50Il9zKTsKQEAgLTM0Miw3ICszNDIsNyBAQCBpbnQ2NF90IFNR
TGl0ZURhdGFiYXNlOjp0b3RhbFNpemUoKQogICAgIGludDY0X3QgcGFnZUNvdW50ID0gMDsKIAog
ICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2NrIH07CiAgICAgICAgIGVuYWJsZUF1
dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1l
bnQoIlBSQUdNQSBwYWdlX2NvdW50Il9zKTsKICAgICAgICAgcGFnZUNvdW50ID0gc3RhdGVtZW50
ID8gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgwKSA6IDA7CkBAIC00MjMsNyArNDIzLDcgQEAgaW50
IFNRTGl0ZURhdGFiYXNlOjpydW5WYWN1dW1Db21tYW5kKCkKIAogaW50IFNRTGl0ZURhdGFiYXNl
OjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fYXV0aG9yaXplckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F1dGhvcml6ZXJMb2Nr
IH07CiAgICAgZW5hYmxlQXV0aG9yaXplcihmYWxzZSk7CiAKICAgICBpZiAoIWV4ZWN1dGVDb21t
YW5kKCJQUkFHTUEgaW5jcmVtZW50YWxfdmFjdXVtIl9zKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBp
bnQgU1FMaXRlRGF0YWJhc2U6OnJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpCiAKIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9k
YXRhYmFzZUNsb3NpbmdNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VDbG9z
aW5nTXV0ZXggfTsKICAgICBpZiAobV9kYikKICAgICAgICAgc3FsaXRlM19pbnRlcnJ1cHQobV9k
Yik7CiB9CkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0QXV0aG9y
aXplcihEYXRhYmFzZUF1dGhvcml6ZXImIGF1dGhvcml6ZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9hdXRob3JpemVyTG9jayB9OwogCiAgICAgbV9hdXRob3JpemVyID0gJmF1
dGhvcml6ZXI7CiAgICAgCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6
cmVsZWFzZU1lbW9yeSgpCiAKIHN0YXRpYyBFeHBlY3RlZDxzcWxpdGUzX3N0bXQqLCBpbnQ+IGNv
bnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25z
dCBjaGFyKiBxdWVyeSwgc2l6ZV90IHF1ZXJ5TGVuZ3RoKQogewotICAgIExvY2tIb2xkZXIgZGF0
YWJhc2VMb2NrKGRhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSk7CisgICAgTG9ja2VyIGRhdGFiYXNl
TG9jayB7IGRhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogICAgIExPRyhTUUxEYXRhYmFzZSwg
IlNRTCAtIHByZXBhcmUgLSAlcyIsIHF1ZXJ5KTsKIAogICAgIC8vIFBhc3MgdGhlIGxlbmd0aCBv
ZiB0aGUgc3RyaW5nIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgdG8gc3FsaXRlM19wcmVw
YXJlX3YyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcAppbmRleCBhOTJkM2FjNWU1ODY1NmYwYjMzNjExNTQ4MjdhYjg3MmE1N2RlZTNhLi42ZDhk
YzcyZWRjYmQ0Mjg4N2U2Nzc1YTE2MDI4NTQ3YTk3YzYzMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtNjQsNyArNjQsNyBAQCBT
UUxpdGVTdGF0ZW1lbnQ6On5TUUxpdGVTdGF0ZW1lbnQoKQogCiBpbnQgU1FMaXRlU3RhdGVtZW50
OjpzdGVwKCkKIHsKLSAgICBMb2NrSG9sZGVyIGRhdGFiYXNlTG9jayhtX2RhdGFiYXNlLmRhdGFi
YXNlTXV0ZXgoKSk7CisgICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJh
c2VNdXRleCgpIH07CiAKICAgICBpbnQgZXJyb3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQp
OwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVfRE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklE
QlNlcnZlci5jcHAKaW5kZXggMDI4Y2I1Mzc4YWUyNDY3MWNkNjJhNjE0ZWY5NzAzY2M2NjE0MmI0
NC4uOTFiODg5NDFhNzZhODA3MWQzMGQ3ZmVkNzQxNjNmYjA5ZjdiODcyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIFdlYklEQlNlcnZlcjo6V2ViSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdlCiAgICAgcG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBkaXJl
Y3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNwYWNlUmVxdWVzdGVyID0gV1RGTW92
ZShzcGFjZVJlcXVlc3RlcildICgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVy
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcj4oc2Vzc2lvbklELCBk
aXJlY3RvcnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpLCBtX3NlcnZlckxvY2spOwogICAgIH0p
OwogfQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0T3JpZ2lucyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcgogICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRhVGFza0NvdW50ZXIuY291bnQoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBXVEZNb3ZlKHRva2VuKSwgb3JpZ2lu
cyA9IGNyb3NzVGhyZWFkQ29weShtX3NlcnZlci0+Z2V0T3JpZ2lucygpKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUob3JpZ2lucykpOwogICAgICAgICB9KSk7CkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNl
c01vZGlmaWVkU2luY2UoV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltCiAgICAgcG9zdFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpY2F0aW9uVGltZSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3Vu
dCgpXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgIHBvc3RU
YXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2so
KTsKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKICAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW5EYXRhcyA9IG9y
aWdpbkRhdGFzLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldICgpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAg
ICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2lu
RGF0YXMpOwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9rZW4gPSBXVEZNb3ZlKHRva2VuKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6OnJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9s
ZE9yaWdpbiwgY28KICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBvbGRPcmlnaW4gPSBvbGRPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIG5ld09yaWdpbiA9
IG5ld09yaWdpbi5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
dG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3VudCgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9Owog
ICAgICAgICBtX3NlcnZlci0+cmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luKTsKICAg
ICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHRva2VuID0gV1RGTW92ZSh0b2tlbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjYWxsYmFjaygpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpvcGVu
RGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAg
bV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTE1NSw3ICsxNTUs
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJl
cXVlc3REYXRhKTsKIH0KIApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sg
fTsKICAgICBtX3NlcnZlci0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogfQogCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNvbW1pdFRyYW5z
YWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1f
c2VydmVyLT5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCkBA
IC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ28KIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5k
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0xODcsNyArMTg3
LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5jcmVhdGVPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJbmZvKTsKIH0KIApAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3Rv
cmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CiB9CiAKQEAgLTIwMyw3ICsyMDMsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3Jl
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmNsZWFy
T2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiB9CiAKQEAg
LTIxOSw3ICsyMTksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdAogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmNy
ZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmRleEluZm8pOwogfQogCkBAIC0yMjcsNyArMjI3LDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDYKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogfQogCkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDYKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5yZW5hbWVJ
bmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIs
IG5ld05hbWUpOwogfQogCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnB1
dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
V2UKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92
ZXJXcml0ZU1vZGUpOwogfQogCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6
OmdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IFcKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9j
ayB9OwogICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEp
OwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29y
ZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb24KIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1f
c2VydmVyLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSk7CiB9
CiAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXZQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2
ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogfQogCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnMKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5kZWxldGVSZWNv
cmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiB9CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0
YSwgY3Vyc29ySW5mbyk7CiB9CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFdlYklEQlNlcnZl
cjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJM
b2NrIH07CiAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGl0ZXJhdGVD
dXJzb3JEYXRhKTsKIH0KIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpl
c3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sg
fTsKICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JbmZvKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uUGVu
ZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0zMTUsNyAr
MzE1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWUKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1fc2VydmVyLT5kYXRhYmFzZUNv
bm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMy
Myw3ICszMjMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRl
ZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgbV9zZXJ2ZXItPmFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZl
ckxvY2sgfTsKICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3Nl
ZCk7CiB9CiAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdAogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAg
bV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogfQogCkBAIC0z
NTAsNyArMzUwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRW
ZXJzaW9ucyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGMKICAgICBhdXRvKiB3ZWJJREJD
b25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOwog
ICAgIEFTU0VSVCh3ZWJJREJDb25uZWN0aW9uKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgIG1f
c2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMod2ViSURCQ29ubmVjdGlvbi0+
aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luKTsKIH0KIApAQCAtMzY1LDcg
KzM2NSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjphZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UHJvY2Vzc0lkCiAKICAgICAgICAgQVNTRVJUX1VOVVNF
RChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAg
ICAgICAgIG1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oaXRlci0+dmFsdWUtPmNvbm5lY3Rp
b25Ub0NsaWVudCgpKTsKICAgICB9KTsKICAgICBtX2Nvbm5lY3Rpb25zLmFkZCgmY29ubmVjdGlv
bik7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiAgICAgICAgIEFTU0VSVChjb25uZWN0
aW9uKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT51bnJl
Z2lzdGVyQ29ubmVjdGlvbihjb25uZWN0aW9uLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CiAgICAg
fSk7CiAKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2UoKQogICAg
IHBvc3RUYXNrKFt0aGlzXSgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25NYXAuY2xl
YXIoKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyID0gbnVs
bHB0cjsKICAgICAgICAgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6a2lsbCgpOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDlhMWEyMDg2NDBmZWQ4MTEzZGEzN2I2NDRkMGI3NGI5ZmJm
ZmIzMzAuLjJhY2U1MWM2MTA4ZTIzNWY4MDYxZGMyZTg4OTliZDU2YmQ3ODIzODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5jcHAKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIEVuZ2luZTo6d3JpdGVTaXplRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPAog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlz
cGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBzaXplLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwog
CiAgICAgICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKSB7CkBA
IC01NTQsNyArNTU0LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IEVuZ2luZTo6cmVhZFNpemVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7
CiAgICAgYXV0byBjbG9zZUZpbGVIYW5kbGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CiAgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKQEAgLTY5OCw3ICs2OTgsNyBAQCB2
b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gbV9yb290UGF0aC5pc29sYXRlZENvcHko
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgICAgICBmb3Ig
KGF1dG8mIGZpbGVOYW1lIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKSkgewogICAg
ICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChwYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZVR5
cGUoZmlsZVBhdGgpID09IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpCkBAIC03NTks
NyArNzU5LDcgQEAgdm9pZCBFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3Jv
dW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGwKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IHBhdGguaXNvbGF0
ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxTaXplRmlsZUxvY2sgfTsKICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCmluZGV4IGQ4
ZWEzMzY4NWVhMmI4ZWI2Y2NlYjQzYWQzOGUwNjBjNDNhODk1OTQuLjI0ZGEzODg3OWNiMDQyNmUx
OWY0ZmJjNzFkYTkyZTgzMTRmZmNiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9nbGliL0ROU0NhY2hlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBETlNDYWNoZTo6RE5TQ2Fj
aGVNYXAmIEROU0NhY2hlOjptYXBGb3JUeXBlKFR5cGUgdHlwZSkKIAogT3B0aW9uYWw8VmVjdG9y
PEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IEROU0NhY2hlOjpsb29rdXAoY29uc3QgQ1N0cmluZyYg
aG9zdCwgVHlwZSB0eXBlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGF1dG8mIG1hcCA9IG1hcEZvclR5cGUodHlw
ZSk7CiAgICAgYXV0byBpdCA9IG1hcC5maW5kKGhvc3QpOwogICAgIGlmIChpdCA9PSBtYXAuZW5k
KCkpCkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVz
cz4+PiBETlNDYWNoZTo6bG9va3VwKGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5CiAKIHZvaWQgRE5T
Q2FjaGU6OnVwZGF0ZShjb25zdCBDU3RyaW5nJiBob3N0LCBWZWN0b3I8R1JlZlB0cjxHSW5ldEFk
ZHJlc3M+PiYmIGFkZHJlc3NMaXN0LCBUeXBlIHR5cGUpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byYgbWFw
ID0gbWFwRm9yVHlwZSh0eXBlKTsKICAgICBDYWNoZWRSZXNwb25zZSByZXNwb25zZSA9IHsgV1RG
TW92ZShhZGRyZXNzTGlzdCksIE1vbm90b25pY1RpbWU6Om5vdygpICsgZXhwaXJlSW50ZXJ2YWwg
fTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5zZXQoaG9zdCwgV1RGTW92ZShyZXNwb25zZSkp
OwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgRE5TQ2FjaGU6OnBydW5lUmVzcG9uc2VzSW5NYXAo
RE5TQ2FjaGVNYXAmIG1hcCkKIAogdm9pZCBETlNDYWNoZTo6cmVtb3ZlRXhwaXJlZFJlc3BvbnNl
c0ZpcmVkKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICByZW1vdmVFeHBpcmVkUmVzcG9uc2VzSW5NYXAobV9kbnNN
YXApOwogI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCA1OSwgMCkKICAgICByZW1vdmVFeHBpcmVk
UmVzcG9uc2VzSW5NYXAobV9pcHY0TWFwKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEROU0Nh
Y2hlOjpyZW1vdmVFeHBpcmVkUmVzcG9uc2VzRmlyZWQoKQogCiB2b2lkIEROU0NhY2hlOjpjbGVh
cigpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgbV9kbnNNYXAuY2xlYXIoKTsKICNpZiBHTElCX0NIRUNLX1ZFUlNJ
T04oMiwgNTksIDApCiAgICAgbV9pcHY0TWFwLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAppbmRleCBiMmE0
ZmRkNmZmYzZmZWUzMTM1MjZiZmFmNGY5YjJkZjU5MWY5ZmYyLi41NzkxMzc5MmZlNDhlZDhhZWU0
NTI3NDM5NzNmYzY3ZTY1ZGE4Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3Au
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKQEAgLTk2LDE0ICs5NiwxNCBAQCB2
b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6cGVyZm9ybVRhc2tTeW5jKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiAKIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdXNwZW5kKCkKIHsKLSAg
ICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAgTG9ja2VyIHN0YXRl
TG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07CiAgICAgbV9zdGF0ZS5pc1N1c3BlbmRlZCA9IHRydWU7
CiAgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CiB9CiAKIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpyZXN1bWUoKQogewotICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5sb2NrKTsK
KyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBtX3N0YXRlLmxvY2sgfTsKICAgICBtX3N0YXRlLmlz
U3VzcGVuZGVkID0gZmFsc2U7CiAgICAgaWYgKG1fc3RhdGUudXBkYXRlID09IFVwZGF0ZVN0YXRl
OjpTY2hlZHVsZWQpCiAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnJlc3VtZSgpCiAKIHZv
aWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzY2hlZHVsZVVwZGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRl
ciBzdGF0ZUxvY2tlcihtX3N0YXRlLmxvY2spOworICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IG1f
c3RhdGUubG9jayB9OwogICAgIHNjaGVkdWxlVXBkYXRlKHN0YXRlTG9ja2VyKTsKIH0KIApAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRlcygpCiB7
CiAgICAgLy8gU3RvcCBldmVyeXRoaW5nLgogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0
ZS5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZS5sb2NrIH07CiAgICAgbV91cGRh
dGVUaW1lci5zdG9wKCk7CiAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6SWRsZTsK
ICAgICBtX3N0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2
b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCgpCiB7CiAgICAgewogICAg
ICAgICAvLyBTY2VuZSB1cGRhdGUgaXMgbm93IGluIHByb2dyZXNzLgotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0
ZS5sb2NrIH07CiAgICAgICAgIGlmIChtX3N0YXRlLmlzU3VzcGVuZGVkKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJblByb2dyZXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5jcHAKaW5kZXggMzY2NTllNDY3ZmVjM2UzZTk3YjgxMjdhZWU5YmM5MGEyMzIzNDQx
ZS4uYzhiOWI4Y2M5MTE2MDc1NjQ4YjY4NjU4NDA0MjlkYzljZjE5ZDgxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9y
KENsaWVudCYgY2xpZW50LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uCiB7CiAgICAgewogICAg
ICAgICAvLyBMb2NraW5nIGlzbid0IHJlYWxseSBuZWNlc3NhcnkgaGVyZSwgYnV0IGl0J3MgZG9u
ZSBmb3IgY29uc2lzdGVuY3kuCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRl
cy5sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CiAg
ICAgICAgIG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgICAg
IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOwogICAgICAgICBtX2F0dHJp
YnV0ZXMubmVlZHNSZXNpemUgPSAhdmlld3BvcnRTaXplLmlzRW1wdHkoKTsKQEAgLTEzOCwxNCAr
MTM4LDE0IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZXN1bWUoKQogCiB2b2lkIFRocmVh
ZGVkQ29tcG9zaXRvcjo6c2V0U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F0
dHJpYnV0ZXMubG9jayB9OwogICAgIG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvciA9IHNjYWxlOwog
ICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCiB2b2lkIFRo
cmVhZGVkQ29tcG9zaXRvcjo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBmbG9hdCBzY2FsZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJp
YnV0ZXMubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXR0cmlidXRlcy5sb2NrIH07CiAg
ICAgbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CiAgICAgbV9h
dHRyaWJ1dGVzLnNjYWxlRmFjdG9yID0gc2NhbGU7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3At
PnNjaGVkdWxlVXBkYXRlKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwg
ZmxvYXQKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdHRyaWJ1dGVz
LmxvY2sgfTsKICAgICBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwog
ICAgIG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvciA9IHNjYWxlOwogICAgIG1fYXR0cmlidXRlcy5u
ZWVkc1Jlc2l6ZSA9IHRydWU7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0
ZXMubG9jayB9OwogICAgICAgICB2aWV3cG9ydFNpemUgPSBtX2F0dHJpYnV0ZXMudmlld3BvcnRT
aXplOwogICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlv
bjsKICAgICAgICAgc2NhbGVGYWN0b3IgPSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7CkBAIC0y
NTAsMTIgKzI1MCwxMiBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2NlbmVVcGRhdGVGaW5p
c2hlZCgpCiAgICAgYm9vbCBzaG91bGREaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2sgeyBm
YWxzZSB9OwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMu
bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2F0dHJpYnV0ZXMubG9jayB9OwogICAg
ICAgICBzaG91bGREaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2sgPSBtX2F0dHJpYnV0ZXMu
Y2xpZW50UmVuZGVyc05leHRGcmFtZQogICAgICAgICAgICAgfHwgbV9kaXNwbGF5UmVmcmVzaE1v
bml0b3ItPnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxsYmFjaygpOwogICAgIH0KIAotICAgIExv
Y2tIb2xkZXIgc3RhdGVMb2NrZXIobV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0YXRlTG9jaygpKTsK
KyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RhdGVMb2Nr
KCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgY2FsbGJh
Y2ssIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAoc2hvdWxkRGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENh
bGxiYWNrKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzY2Vu
ZVVwZGF0ZUZpbmlzaGVkKCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5l
U3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
YXR0cmlidXRlcy5sb2NrIH07CiAgICAgbV9hdHRyaWJ1dGVzLnN0YXRlcy5hcHBlbmQoc3RhdGUp
OwogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXgg
YThhNzg5ZmMxMmM0MTg2YTA5ZjAyYzkyZDQzZWVkMTQ1MWUwNDEwMC4uZDc0YTQ3M2UyMGM5MDE4
ZmUzNmQ1YWI2ZGZkOGFhNTJiNWE2OWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OnBvcHVsYXRlUGFnZVVSTFRvSWNvblVSTE1hcCgpCiAgICAgfQogCiAgICAg
YXV0byByZXN1bHQgPSBxdWVyeS0+c3RlcCgpOwotICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlciht
X3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJM
VG9JY29uVVJMTWFwTG9jayB9OwogICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewog
ICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuc2V0KHF1ZXJ5LT5jb2x1bW5UZXh0KDApLCBx
dWVyeS0+Y29sdW1uVGV4dCgxKSk7CiAgICAgICAgIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CkBA
IC0yNjAsNyArMjYwLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNsZWFyTG9hZGVkSWNvbnNUaW1l
ckZpcmVkKCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9hZGVkSWNvbnNMb2NrIH07CiAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
ICAgICBWZWN0b3I8U3RyaW5nPiBpY29uc1RvUmVtb3ZlOwogICAgIGZvciAoYXV0byBpdGVyIDog
bV9sb2FkZWRJY29ucykgewpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpj
aGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zCiAgICAgICAgICAgICBib29sIGV4cGlyZWQgPSBmYWxzZTsKICAgICAgICAgICAgIFN0cmlu
ZyBjYWNoZWRJY29uVVJMOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICAgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayB9OwogICAgICAgICAg
ICAgICAgIGNhY2hlZEljb25VUkwgPSBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuZ2V0KHBhZ2VVUkwp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNhY2hlZEljb25VUkwgPT0gaWNvblVS
TCkKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5k
U2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29ucwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghY2FuV3JpdGVUb0RhdGFiYXNlIHx8IHNldEljb25JREZvclBh
Z2VVUkwoaWNvbklELnZhbHVlKCksIHBhZ2VVUkwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFw
TG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNl
dChwYWdlVVJMLCBpY29uVVJMKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC01MTQsMTMgKzUxNCwxMyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgY29ucwogICAgICAgICAgICAgfSBlbHNlIGlmICghY2FuV3JpdGVUb0RhdGFi
YXNlKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZEluTWVtb3J5Q2FjaGU7CiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9s
b2FkZWRJY29uc0xvY2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2FkZWRJY29uc0xvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgZm91bmRJbk1lbW9yeUNhY2hl
ID0gbV9sb2FkZWRJY29ucy5jb250YWlucyhpY29uVVJMKTsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBpZiAoZm91bmRJbk1lbW9yeUNhY2hlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a0hvbGRlcihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAg
ICAgICAgICAgbV9wYWdlVVJMVG9JY29uVVJMTWFwLnNldChwYWdlVVJMLCBpY29uVVJMKTsKICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
NTQyLDE0ICs1NDIsMTQgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICBWZWN0b3I8
dWludDhfdD4gaWNvbkRhdGE7CiAgICAgICAgIFN0cmluZyBpY29uVVJMOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9j
ayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9j
ayB9OwogICAgICAgICAgICAgaWNvblVSTCA9IG1fcGFnZVVSTFRvSWNvblVSTE1hcC5nZXQocGFn
ZVVSTCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZGIuaXNPcGVuKCkgJiYgIWljb25VUkwu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGV4cGlyZWQ7CiAgICAgICAgICAgICBpY29u
SUQgPSBpY29uSURGb3JJY29uVVJMKGljb25VUkwsIGV4cGlyZWQpOwogICAgICAgICAgICAgaWYg
KGljb25JRCkgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRl
ZEljb25zTG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNv
bnNMb2NrIH07CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xvYWRlZEljb25zLmNvbnRhaW5zKGlj
b25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGljb25EYXRhID0gdGhpcy0+aWNvbkRhdGEo
aWNvbklELnZhbHVlKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2xvYWRlZEljb25zLnNldChp
Y29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihu
dWxscHRyLCB7IH0pKTsKQEAgLTU2NiwxMyArNTY2LDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjps
b2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3Jp
dGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2FkZWRJY29uc0xvY2sgfTsKICAgICAgICAgICAgIGF1dG8gaXQg
PSBtX2xvYWRlZEljb25zLmZpbmQoaWNvblVSTCk7CiAgICAgICAgICAgICBpZiAoaXQgIT0gbV9s
b2FkZWRJY29ucy5lbmQoKSAmJiBpdC0+dmFsdWUuZmlyc3QpIHsKICAgICAgICAgICAgICAgICBh
dXRvIGljb24gPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgICAgICAgICAgICAgaXQtPnZhbHVlLnNl
Y29uZCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAgICAgICAgICAgIHN0YXJ0Q2xlYXJM
b2FkZWRJY29uc1RpbWVyKCk7Ci0gICAgICAgICAgICAgICAgbG9ja0hvbGRlci51bmxvY2tFYXJs
eSgpOworICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaWNvbikpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFz
ZVdyaXRlCiAKICAgICAgICAgICAgIGF1dG8gaWNvbiA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZmlyc3Q7CiAgICAgICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1lcigpOwotICAg
ICAgICAgICAgbG9ja0hvbGRlci51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgbG9ja2VyLnVu
bG9ja0Vhcmx5KCk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGljb24p
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC02MDYsNyArNjA2LDcgQEAgU3RyaW5nIEljb25E
YXRhYmFzZTo6aWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogewogICAg
IEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1f
cGFnZVVSTFRvSWNvblVSTE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxU
b0ljb25VUkxNYXBMb2NrIH07CiAgICAgcmV0dXJuIG1fcGFnZVVSTFRvSWNvblVSTE1hcC5nZXQo
cGFnZVVSTCk7CiB9CiAKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFy
KgogICAgIGlmIChtX2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6Ok5v
IHx8IGFsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6Ok5vKSB7CiAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvYWRlZEljb25zTG9jayB9OwogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRy
LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgIGlmIChpY29uRGF0
YVNpemUpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
OwpAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIHN0
YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCk7CiAgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHQsIGljb25VUkwg
PSBpY29uVVJMLmlzb2xhdGVkQ29weSgpLCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHko
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xk
ZXIobV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2sgfTsKICAgICAgICAgICAgICAgICBtX3Bh
Z2VVUkxUb0ljb25VUkxNYXAuc2V0KHBhZ2VVUkwsIGljb25VUkwpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXN1bHQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC02NTks
NyArNjU5LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgICAgIGlmIChpY29u
SUQpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlm
IChzZXRJY29uSURGb3JQYWdlVVJMKGljb25JRC52YWx1ZSgpLCBwYWdlVVJMKSkgewotICAgICAg
ICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9wYWdlVVJMVG9JY29uVVJMTWFw
TG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0lj
b25VUkxNYXBMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTFRvSWNvblVSTE1h
cC5zZXQocGFnZVVSTCwgaWNvblVSTCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtNjc4LDEyICs2NzgsMTIgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNsZWFyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBBU1NFUlQoaXNNYWlu
UnVuTG9vcCgpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9h
ZGVkSWNvbnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9hZGVkSWNvbnNMb2Nr
IH07CiAgICAgICAgIG1fbG9hZGVkSWNvbnMuY2xlYXIoKTsKICAgICB9CiAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX3BhZ2VVUkxUb0lj
b25VUkxNYXBMb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BhZ2VVUkxUb0lj
b25VUkxNYXBMb2NrIH07CiAgICAgICAgICAgICBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuY2xlYXIo
KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IGIyMzdhNmNjNjljZmViMzY1M2M4YmE2NWRlOWVjYjQ3
ZGM0MWZmOGEuLmFiMGU5MDk4OGI0OWQwMzk1MmIxZTdlNTgyMjY3Y2ExMWE2ZTkxODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkCiAgICAgZGlzcGF0Y2hU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgZGly
ZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCBzcGFjZVJlcXVl
c3RlciA9IHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcigqdGhpcyldICgpIG11dGFi
bGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVj
dGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsK
ICAgICAgICAgbV9zZXJ2ZXIgPSBtYWtlVW5pcXVlPElEQlNlcnZlcjo6SURCU2VydmVyPihzZXNz
aW9uSUQsIGRpcmVjdG9yeSwgV1RGTW92ZShzcGFjZVJlcXVlc3RlciksIG1fc2VydmVyTG9jayk7
CiAgICAgICAgIG1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRvQ2xp
ZW50KTsKICAgICB9KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudCYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25z
dAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1f
c2VydmVyLT5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC0xMzgs
NyArMTM4LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
IHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERh
dGEpOwogICAgIH0pOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVu
dGlmaWVyID0gcmVzb3VyY2VJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlc291cmNlSWRlbnRpZmllciA9IHJlc291cmNlSWRlbnRpZmllci5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jb21taXRU
cmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBX
ZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRlbnRpZmllci5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5k
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMjg5
LDcgKzI4OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
c3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSA9
IHJlc3VsdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVj
dFN0b3JlKHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMjk3LDcgKzI5Nyw3IEBA
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVzdWx0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lLmlzb2xh
dGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAg
ICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFt
ZSk7CiAgICAgfSk7CiB9CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXMKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3RE
YXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdO
YW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2VydmVyTG9jayB9
OwogICAgICAgICBtX3NlcnZlci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAgICAgfSk7CiB9CkBAIC0zMTMsNyArMzEzLDcg
QEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXMKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVh
ck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3RE
YXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTMyMSw3ICszMjEs
NyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xh
dGVkQ29weSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5m
byk7CiAgICAgfSk7CiB9CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEu
aXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0gaW5kZXhO
YW1lLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAg
bV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4TmFtZSk7CiAgICAgfSk7CiB9CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5y
ZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50
aWZpZXIsIG5ld05hbWUpOwogICAgIH0pOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERh
dGEuaXNvbGF0ZWRDb3B5KCksIGtleURhdGEgPSBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCB2YWx1
ZSA9IHZhbHVlLmlzb2xhdGVkQ29weSgpLCBvdmVyd3JpdGVNb2RlXSB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Nl
cnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlE
YXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CkBAIC0zNTMsNyArMzUzLDcg
QEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRS
ZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3RE
YXRhLmlzb2xhdGVkQ29weSgpLCBnZXRSZWNvcmREYXRhID0gZ2V0UmVjb3JkRGF0YS5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5n
ZXRSZWNvcmQocmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpOwogICAgIH0pOwogfQpAQCAtMzYx
LDcgKzM2MSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgZ2V0QWxsUmVjb3Jkc0Rh
dGEgPSBnZXRBbGxSZWNvcmRzRGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2
ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBn
ZXRBbGxSZWNvcmRzRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYga2V5UmFuZ2VEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVk
Q29weSgpLCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fc2VydmVyTG9jayB9OwogICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVz
dERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNv
cmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5p
c29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0ga2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgp
XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJl
Y29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KQEAgLTM4NSw3ICsz
ODUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlz
b2xhdGVkQ29weSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5DdXJzb3IocmVx
dWVzdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0
ZUN1cnNvckRhdGEmIGRhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRD
b3B5KCksIGRhdGEgPSBkYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxv
Y2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEp
OwogICAgIH0pOwogfQpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjppdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBp
bmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvID0gaW5mby5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5l
c3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsK
ICAgICB9KTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2
ZXItPmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNo
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9z
ZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAg
ICAgIG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC00NjEs
NyArNDYxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWQKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZT
ZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
cmVxdWVzdElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgY29u
bmVjdGlvbkNsb3NlZF0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2Vy
dmVyLT5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKICAgICB9KTsKIH0KQEAg
LTQ2OSw3ICs0NjksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVk
Q29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKICAgICAgICAgbV9zZXJ2ZXItPm9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0pOwogfQpAQCAtNDc3LDcg
KzQ3Nyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBpZGVudGlmaWVyID0gbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwg
cmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5h
bWVzQW5kVmVyc2lvbnMoaWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7CiAg
ICAgfSk7CiB9CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXMKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UoV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpY2F0aW9uVGltZV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zZXJ2ZXJMb2NrIH07CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0ZURh
dGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IDkx
YjRmN2FjMzQ2MzMxM2UxMGVhN2YzMjJhZTg4N2E4ZTg0NGU0ZWIuLmY2YTZlOTc1N2I0YWZjYWI4
OTg0YWJhMWY1MjgwYjc5OGI5YWE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBTdG9yYWdl
QXJlYVN5bmM6OnN5bmNUaW1lckZpcmVkKCkKIAogICAgIGJvb2wgcGFydGlhbFN5bmMgPSBmYWxz
ZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zeW5jTG9jayB9OwogCiAgICAgICAgIC8vIERvIG5vdCBzY2hl
ZHVsZSBhbm90aGVyIHN5bmMgaWYgd2UncmUgc3RpbGwgdHJ5aW5nIHRvIGNvbXBsZXRlIHRoZQog
ICAgICAgICAvLyBwcmV2aW91cyBvbmUuIEJ1dCwgaWYgd2UncmUgc2h1dHRpbmcgZG93biwgc2No
ZWR1bGUgaXQgYW55d2F5LgpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5j
OjpwZXJmb3JtU3luYygpCiAgICAgYm9vbCBjbGVhckl0ZW1zOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IGl0ZW1zOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5j
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N5bmNMb2NrIH07CiAKICAgICAgICAg
QVNTRVJUKG1fc3luY1NjaGVkdWxlZCk7CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogICAgIHN5bmMoY2xlYXJJdGVtcywgaXRlbXMpOwog
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc3luY0xvY2sgfTsKICAgICAgICAgbV9zeW5jSW5Qcm9ncmVzcyA9
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAKaW5kZXggNDlhMzMyZTIxYTQ4NTk4ZGQ0NTc0NzNkMTUzZjliZWFmMDZlZDA5
Yi4uMWRlOGU0Njg4MWZjYzExM2E2YmZiYmU0MGE4OWRiNGU1ZjQwNjU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogCiB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklkZW50aWZpZXJzKCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2RhdGFiYXNlTXV0ZXggfTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nT3JpZ2lucygpOwogfQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNl
TXV0ZXggfTsKIAogICAgICAgICAvLyBEb24ndCBmb3JjZSBjcmVhdGlvbiBvZiBTdG9yYWdlVHJh
Y2tlcidzIGRiIGp1c3QgYmVjYXVzZSBhIHRyYWNrZXIKICAgICAgICAgLy8gd2FzIGluaXRpYWxp
emVkLiBJdCB3aWxsIGJlIGNyZWF0ZWQgaWYgbG9jYWwgc3RvcmFnZSBkYnMgYXJlIGZvdW5kCkBA
IC0xOTgsNyArMTk4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklk
ZW50aWZpZXJzKCkKICAgICAgICAgICAgIGludCByZXN1bHQ7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tPcmlnaW5zKG1fb3JpZ2lu
U2V0TXV0ZXgpOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrT3JpZ2lucyB7IG1fb3JpZ2lu
U2V0TXV0ZXggfTsKICAgICAgICAgICAgICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC0+
c3RlcCgpKSA9PSBTUUxJVEVfUk9XKQogICAgICAgICAgICAgICAgICAgICBtX29yaWdpblNldC5h
ZGQoc3RhdGVtZW50LT5jb2x1bW5UZXh0KDApLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgICAg
IH0KQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRP
cmlnaW5JZGVudGlmaWVycygpCiAgICAgc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2Uo
KTsKICAgICAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRNdXRleCB9OwogCiAgICAgICAgIGlm
IChtX2NsaWVudCkgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRN
dXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmlnaW5TZXRNdXRleCB9Owog
ICAgICAgICAgICAgT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29yaWdpblNldC5l
bmQoKTsKICAgICAgICAgICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
b3JpZ2luU2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oKml0KTsKQEAgLTIzOCw3ICsyMzgsNyBAQCB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXM7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
YmFzZU11dGV4IH07CiAgICAgICAgIGZpbGVOYW1lcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgfQogCkBAIC0yNDYsNyArMjQ2LDcgQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQog
ICAgIC8vIGRlbGV0aW9ucyBmcm9tIGRpc2sgYW5kIGZyb20gbV9vcmlnaW5TZXQuCiAgICAgT3Jp
Z2luU2V0IG9yaWdpblNldENvcHk7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X29yaWdpblNldE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0
ZXggfTsKICAgICAgICAgZm9yIChPcmlnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vcmln
aW5TZXQuYmVnaW4oKSwgZW5kID0gbV9vcmlnaW5TZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkK
ICAgICAgICAgICAgIG9yaWdpblNldENvcHkuYWRkKCgqaXQpLmlzb2xhdGVkQ29weSgpKTsKICAg
ICB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0
YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKIAogICAg
ICAgICBpZiAobV9vcmlnaW5TZXQuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y1NldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdAog
CiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25D
b3VudGVyOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAKICAgICBvcGVuVHJhY2tlckRhdGFi
YXNlKHRydWUpOwogICAgIApAQCAtMzI5LDEzICszMjksMTMgQEAgdm9pZCBTdG9yYWdlVHJhY2tl
cjo6c3luY1NldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdAogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICclcycg
aW4gdGhlIHRyYWNrZXIiLCBvcmlnaW5JZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKTsKIAogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIGlmICghbV9vcmln
aW5TZXQuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAgICAgICBtX29yaWdpblNl
dC5hZGQob3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xp
ZW50TXV0ZXggfTsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KQEAgLTM0
OCw3ICszNDgsNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlVHJhY2tlcjo6
b3JpZ2lucygpCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKIAogICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX29yaWdpblNldC5z
aXplKCkpOwpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFs
bE9yaWdpbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcmln
aW5TZXRNdXRleCB9OwogICAgICAgICB3aWxsRGVsZXRlQWxsT3JpZ2lucygpOwogICAgICAgICBt
X29yaWdpblNldC5jbGVhcigpOwogICAgIH0KQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAKICAgICBTUUxpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAgICAgCi0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9k
YXRhYmFzZU11dGV4IH07CiAgICAgCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKICAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShzdGF0ZW1lbnQtPmNvbHVtblRleHQoMSkpOwogCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOworICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY2xpZW50TXV0ZXggfTsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkK
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oc3RhdGVt
ZW50LT5jb2x1bW5UZXh0KDApKTsKICAgICAgICAgfQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbikKICAgICBTdHJpbmcgb3JpZ2luSWQgPSBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCk7
CiAgICAgCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX29yaWdpblNldE11dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3JpZ2luU2V0TXV0ZXggfTsKICAgICAgICAg
d2lsbERlbGV0ZU9yaWdpbihvcmlnaW5JZCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LnJlbW92ZShv
cmlnaW5JZCk7CiAgICAgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6
OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVy
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kYXRhYmFzZU11dGV4IH07CiAgICAgCiAgICAgaWYgKCFjYW5EZWxldGVPcmln
aW4ob3JpZ2luSWRlbnRpZmllcikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0ZWQgdG8g
ZGVsZXRlIG9yaWdpbiAnJXMnIHdoaWxlIGl0IHdhcyBiZWluZyBjcmVhdGVkXG4iLCBvcmlnaW5J
ZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
cikKICAgICAKICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIG1fb3JpZ2luU2V0
LnJlbW92ZShvcmlnaW5JZGVudGlmaWVyKTsKICAgICAgICAgc2hvdWxkRGVsZXRlVHJhY2tlckZp
bGVzID0gbV9vcmlnaW5TZXQuaXNFbXB0eSgpOwogICAgIH0KQEAgLTU1Myw3ICs1NTMsNyBAQCB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Y2xpZW50TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRNdXRleCB9Owog
ICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4ob3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQpAQCAtNTc5LDcgKzU3OSw3IEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OndpbGxEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKQogYm9vbCBTdG9yYWdlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VNdXRl
eC50cnlMb2NrKCkpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX29yaWdpblNldE11dGV4IH07CiAgICAgcmV0dXJuIG1fb3Jp
Z2luc0JlaW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKTsKIH0KIApAQCAtNTg4
LDkgKzU4OCw5IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5nT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VNdXRleCB9OwogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX29yaWdpblNldE11dGV4IH07CiAgICAgICAgIGlmICghbV9vcmlnaW5zQmVpbmdEZWxldGVk
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fb3JpZ2luc0JlaW5nRGVsZXRlZC5yZW1vdmUob3Jp
Z2luSWRlbnRpZmllcik7CiAgICAgfQpAQCAtNjM0LDcgKzYzNCw3IEBAIHVpbnQ2NF90IFN0b3Jh
Z2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAg
ICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZU11
dGV4IH07CiAKICAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihvcmlnaW4t
PmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDY1ZGY4ZTM3
MmMzNDg1OTcxZjVmNWVkMjkyMDJiZjRlMDZkNWRlNzMuLjMwMTBhNmE4OGI5NTdjOTA3NzkxNDY4
ODhjNjY4OTNjNGI1ZDdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTM5NTcsNyArMzk1Nyw3IEBAIC0gKHZvaWQpX3N5bmNocm9uaXplQ3VzdG9t
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3QKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbmV3UmVjdDsK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQ
b3NpdGlvbkxheW91dFJlY3RNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBfcHJpdmF0
ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAgICAgICAgaWYgKENH
UmVjdElzTnVsbChfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgbmV3UmVjdCA9IFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCk7CkBAIC0zOTcx
LDcgKzM5NzEsNyBAQCAtICh2b2lkKV9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0CiAtICh2b2lkKV9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEluV2ViVGhy
ZWFkOihDR1JlY3QpcmVjdCBzeW5jaHJvbml6ZTooQk9PTClzeW5jaHJvbml6ZQogewogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IF9wcml2YXRlLT5wZW5k
aW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCB9OwogICAgICAgICBfcHJpdmF0ZS0+cGVu
ZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0ID0gcmVjdDsKICAgICB9CiAgICAgaWYgKCFzeW5j
aHJvbml6ZSkKQEAgLTM5ODUsNyArMzk4NSw3IEBAIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9z
aXRpb25MYXlvdXRSZWN0OihDR1JlY3QpcmVjdAogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xv
Y2tlZCgpKTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5k
aW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAgICAg
ICAgX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCA9IHJlY3Q7CiAgICAg
fQogICAgIFtzZWxmIF9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0XTsK
QEAgLTM5OTMsNyArMzk5Myw3IEBAIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0OihDR1JlY3QpcmVjdAogCiAtIChCT09MKV9mZXRjaEN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0OihOU1JlY3QqKXJlY3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihfcHJpdmF0
ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXggfTsKICAg
ICBpZiAoQ0dSZWN0SXNOdWxsKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCmlu
ZGV4IDRlY2MzMGRjN2U3OTYxNzlhMTAxZGQwMzkyNjI2NDcxNTc1NDc4ZTAuLjA5MjY2NmJkNTQ4
NGI4NzE0OTkxMDcyY2UyMjRkZDUyZDA4NTFjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNw
cApAQCAtNDIsNyArNDIsNyBAQCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpQbHVnaW5NYWlu
VGhyZWFkU2NoZWR1bGVyKCkKIAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hl
ZHVsZUNhbGwoTlBQIG5wcCwgTWFpblRocmVhZEZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiB1c2Vy
RGF0YSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CiAKICAgICBDYWxsUXVldWVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9jYWxsUXVldWVNYXAuZmluZChucHApOwogICAgIGlmIChpdCA9PSBtX2NhbGxRdWV1ZU1h
cC5lbmQoKSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
OjpzY2hlZHVsZUNhbGwoTlBQIG5wcCwgTWFpblRocmVhZEZ1bmN0aW9uIGZ1bmN0aW8KIAogdm9p
ZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpyZWdpc3RlclBsdWdpbihOUFAgbnBwKQogewot
ICAgIExvY2tIb2xkZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3F1ZXVlTXV0ZXggfTsKIAogICAgIEFTU0VSVCghbV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBw
KSk7CiAgICAgbV9jYWxsUXVldWVNYXAuc2V0KG5wcCwgRGVxdWU8Q2FsbD4oKSk7CkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6cmVnaXN0ZXJQbHVnaW4o
TlBQIG5wcCkKIAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjp1bnJlZ2lzdGVyUGx1
Z2luKE5QUCBucHApCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fcXVldWVNdXRleCB9OwogCiAgICAgQVNTRVJUKG1fY2FsbFF1ZXVl
TWFwLmNvbnRhaW5zKG5wcCkpOwogICAgIG1fY2FsbFF1ZXVlTWFwLnJlbW92ZShucHApOwpAQCAt
NzksNyArNzksNyBAQCB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OmRpc3BhdGNoQ2Fs
bHNGb3JQbHVnaW4oTlBQIG5wcCwgY29uc3QgRGVxdWU8Q2FsbAogICAgIGZvciAoYXV0byYgY2Fs
bCA6IGNhbGxzKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnLWluIGhhcyBiZWVuIGRl
c3Ryb3llZC4KICAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fcXVldWVN
dXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdWV1ZU11dGV4IH07CiAgICAg
ICAgICAgICBpZiAoIW1fY2FsbFF1ZXVlTWFwLmNvbnRhaW5zKG5wcCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzU2NDY4YWZjOWM3N2FiMzljMzE1ZjZhNWIzY2FmMGUwNDc1NjRk
NS4uZWFiMDgzZjFlMDdkNDVlODhhZGIxNDAxZGJiNGMyMTViNTM3ODU0YSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVw
bGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTMzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdp
dGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcy4gSXQgaXMgc2hvcnRlciBhbmQgaXQgYWxsb3dz
IHN3aXRjaGluZyB0aGUgbG9jaworICAgICAgICB0eXBlIG1vcmUgZWFzaWx5IHNpbmNlIHRoZSBj
b21waWxlciB3aXRoIGRlZHVjZSB0aGUgbG9jayB0eXBlIFQgZm9yIExvY2tlcjxUPi4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9n
bGliL1dvcmtRdWV1ZUdMaWIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXRlcm1pbmlzdGljU2NoZWR1bGVyOjpUaHJl
YWRDb250ZXh0Ojp3YWl0TXlUdXJuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRldGVybWlu
aXN0aWNTY2hlZHVsZXI6OlRocmVhZENvbnRleHQ6OnlpZWxkVG9UaHJlYWQpOgorCiAyMDIxLTA1
LTIyICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1Rvb2xzXVtydW4td2Via2l0LXRlc3RzXSBSZW1vdmUgbW9yZSBsZWZ0b3ZlciB0ZXN0cyB3
ZWJzZXJ2ZXIgUEhQIHJlbWFpbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dvcmtRdWV1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3Jr
UXVldWUuY3BwCmluZGV4IDU2ZTBhMDYyYjNkMGM4YmFkYWExMmVkMDQ5N2MxNWQ4ODE2Y2VlNWUu
LmVmOTk3NTc1MjJkZDlkYTYxMDljZGI5NWM3ZTM3YWUxZjRkM2E1NjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBURVNU
KFdURl9Xb3JrUXVldWUsIFNpbXBsZSkKICAgICBpbnQgaW5pdGlhbFJlZkNvdW50ID0gcXVldWUt
PnJlZkNvdW50KCk7CiAgICAgRVhQRUNUX0VRKDEsIGluaXRpYWxSZWZDb3VudCk7CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
ICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAgICAgICAgbV9mdW5jdGlvbkNhbGxP
cmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKICAgICAgICAgY2FsbGVkU2ltcGxlVGVzdCA9
IHRydWU7CkBAIC03Myw3ICs3Myw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgU2ltcGxlKQogICAg
IH0pOwogCiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAg
ICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQodGhpcmRUZXN0TGFiZWwpOwogICAgICAg
ICBjYWxsZWRUaGlyZFRlc3QgPSB0cnVlOwogCkBAIC0xMTQsNyArMTE0LDcgQEAgVEVTVChXVEZf
V29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgRVhQRUNUX0VRKDFVLCBxdWV1ZTEtPnJlZkNvdW50
KCkpOwogICAgIEVYUEVDVF9FUSgxVSwgcXVldWUyLT5yZWZDb3VudCgpKTsKIAotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAg
IAogICAgIHF1ZXVlMS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAgICAgICAgbV9mdW5jdGlvbkNh
bGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBURVNU
KFdURl9Xb3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICBxdWV1ZTItPmRpc3BhdGNoKFsmXSh2b2lk
KSB7CiAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2Zvcig1MG1zKTsKIAotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAKICAgICAgICAgLy8gV2lsbCBmYWlsIGlmIHF1ZXVlMiB0b29rIHRoZSBtdXRleCBi
ZWZvcmUgcXVldWUxLgogICAgICAgICBFWFBFQ1RfVFJVRShjYWxsZWRUaGlyZFRlc3QpOwpAQCAt
MTM1LDcgKzEzNSw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAgIH0pOwog
CiAgICAgcXVldWUxLT5kaXNwYXRjaChbJl0odm9pZCkgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHRoaXJkVGVzdExhYmVsKTsKICAgICAgICAgY2Fs
bGVkVGhpcmRUZXN0ID0gdHJ1ZTsKICAgICAgICAgCkBAIC0xNzEsMTcgKzE3MSwxNyBAQCBURVNU
KFdURl9Xb3JrUXVldWUsIERpc3BhdGNoQWZ0ZXIpCiAKICAgICBhdXRvIHF1ZXVlID0gV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuVGVzdC5kaXNwYXRjaEFmdGVyIik7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7CiAgICAgICAg
IGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwogICAgICAgICBtX3Rlc3RDb21wbGV0ZWQubm90aWZ5
T25lKCk7CiAgICAgfSk7CiAKICAgICBxdWV1ZS0+ZGlzcGF0Y2hBZnRlcig1MDBfbXMsIFsmXSh2
b2lkKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQo
ZGlzcGF0Y2hBZnRlckxhYmVsKTsKICAgICAgICAgY2FsbGVkRGlzcGF0Y2hBZnRlclRlc3QgPSB0
cnVlOwogICAgICAgICBtX2Rpc3BhdGNoQWZ0ZXJUZXN0Q29tcGxldGVkLm5vdGlmeU9uZSgpOwpA
QCAtMjExLDExICsyMTEsMTEgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBEZXN0cm95T25TZWxmKQog
ICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKGxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgICAgICB7
CiAgICAgICAgICAgICBhdXRvIHF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5X
ZWJLaXQuVGVzdC5kaXNwYXRjaEFmdGVyIik7CiAgICAgICAgICAgICBxdWV1ZS0+ZGlzcGF0Y2hB
ZnRlcig1MDBfbXMsIFsmXSh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAg
ICAgICAgICAgICBkaXNwYXRjaEFmdGVyVGVzdFN0YXJ0ZWQud2FpdChsb2NrLCBbJl0gewogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRlZDsKICAgICAgICAgICAgICAgICB9KTsKQEAg
LTIyNyw3ICsyMjcsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIERlc3Ryb3lPblNlbGYpCiAgICAg
ICAgIGRpc3BhdGNoQWZ0ZXJUZXN0U3RhcnRlZC5ub3RpZnlPbmUoKTsKICAgICB9CiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2sgfTsKICAgICAgICAgZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0ZWQud2FpdChsb2NrLCBb
Jl0gewogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZDsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdMaWIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApp
bmRleCA5OTIzZDY1ODAwZWQ3MTRiYTY4MDZiMTNmN2U1MWZlZTU4MDM1YWQwLi4wN2EyYWNkMjdk
OGFmZjJmNDcyNDlhYmUzYTAzNzRlYzYxMGU1Nzk1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgVEVTVChXVEZfV29ya1F1ZXVlLCBBc3luY0lPKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY3Vy
cmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2RpcigpKTsKICAgICBHUmVmUHRyPEdGaWxlPiBm
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoY3VycmVudERpcmVjdG9yeS5nZXQo
KSkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIoY29udGV4dC5tX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBjb250ZXh0Lm1fbG9jayB9OwogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9p
ZCkgewogICAgICAgICBFWFBFQ1RfVFJVRShnX21haW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1
bHQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVm
YXVsdCgpICE9IGNvbnRleHQubV9tYWluQ29udGV4dCk7CkBAIC01OSw3ICs1OSw3IEBAIFRFU1Qo
V1RGX1dvcmtRdWV1ZSwgQXN5bmNJTykKICAgICAgICAgZ19maWxlX3F1ZXJ5X2luZm9fYXN5bmMo
ZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBHX0ZJTEVfUVVFUllf
SU5GT19OT05FLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsCiAgICAgICAgICAgICBbXShH
T2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAg
ICAgICBUZXN0aW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFRlc3RpbmdDb250ZXh0
Kj4odXNlckRhdGEpOwotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvbnRleHQt
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNvbnRleHQtPm1fbG9j
ayB9OwogICAgICAgICAgICAgICAgIEVYUEVDVF9FUShnX21haW5fY29udGV4dF9nZXRfdGhyZWFk
X2RlZmF1bHQoKSwgY29udGV4dC0+bV9tYWluQ29udGV4dCk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+bV90ZXN0Q29tcGxldGVkLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgfSwgJmNvbnRl
eHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0
YWJsZVRhc2tRdWV1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJv
cnRhYmxlVGFza1F1ZXVlLmNwcAppbmRleCA3YjU2M2QzNmI1MmY3MjNjODRlNzdiMTllZTAyYmMw
MzY4NDViOTFiLi4xMTQ3OTFiMzZhYTk1ZmRjMTg2ZGFiNTZkMDhlMTI5ZjU0ZTU1NmE1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1
ZXVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxl
VGFza1F1ZXVlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lk
IHdhaXRNeVR1cm4oKQogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9z
Y2hlZHVsZXIubV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY2hlZHVs
ZXIubV9tdXRleCB9OwogICAgICAgICAgICAgbV9zY2hlZHVsZXIubV9jdXJyZW50VGhyZWFkQ2hh
bmdlZC53YWl0KG1fc2NoZWR1bGVyLm1fbXV0ZXgsIFt0aGlzXSgpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbV9zY2hlZHVsZXIubV9jdXJyZW50VGhyZWFkID09IG1fdGhpc1RocmVhZDsKICAg
ICAgICAgICAgIH0pOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lk
IHlpZWxkVG9UaHJlYWQoVGhyZWFkRW51bSBuZXh0VGhyZWFkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9zY2hlZHVsZXIubV9tdXRleCk7CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zY2hlZHVsZXIubV9tdXRleCB9OwogICAgICAgICAgICAgbV9zY2hl
ZHVsZXIubV9jdXJyZW50VGhyZWFkID0gbmV4dFRocmVhZDsKICAgICAgICAgICAgIG1fc2NoZWR1
bGVyLm1fY3VycmVudFRocmVhZENoYW5nZWQubm90aWZ5QWxsKCk7CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>