<?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>237178</bug_id>
          
          <creation_ts>2022-02-24 19:55:48 -0800</creation_ts>
          <short_desc>Begin transition from WTF::Span to std::span</short_desc>
          <delta_ts>2023-05-11 20:20:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>253377</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845887</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-24 19:55:48 -0800</bug_when>
    <thetext>Begin transition from WTF::Span to std::span</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845888</commentid>
    <comment_count>1</comment_count>
      <attachid>453169</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-24 19:59:17 -0800</bug_when>
    <thetext>Created attachment 453169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846042</commentid>
    <comment_count>2</comment_count>
      <attachid>453169</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-25 09:08:38 -0800</bug_when>
    <thetext>Comment on attachment 453169
Patch

Apparently Visual Studio 2019&apos;s C++20 implementation doesn&apos;t have the span header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848157</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-03 19:56:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/89792762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863730</commentid>
    <comment_count>4</comment_count>
      <attachid>458160</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-04-22 11:40:26 -0700</bug_when>
    <thetext>Created attachment 458160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865276</commentid>
    <comment_count>5</comment_count>
      <attachid>458551</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2022-04-28 15:48:32 -0700</bug_when>
    <thetext>Created attachment 458551
Patch with explicit conversions

Here&apos;s an updated patch that builds on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865302</commentid>
    <comment_count>6</comment_count>
      <attachid>458558</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-04-28 17:39:05 -0700</bug_when>
    <thetext>Created attachment 458558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865352</commentid>
    <comment_count>7</comment_count>
      <attachid>458558</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-04-28 22:25:40 -0700</bug_when>
    <thetext>Comment on attachment 458558
Patch

Looks like std::span requires GCC 10.  Bummer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865459</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-04-29 10:20:15 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 458558 [details]
&gt; Patch
&gt; 
&gt; Looks like std::span requires GCC 10.  Bummer.

Can you do a check for it in CMake for std::span and if its there use it otherwise use our implementation of std::span?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865848</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-02 09:08:57 -0700</bug_when>
    <thetext>I guess we will have to wait another year for this, but my goal is to remove WTF::Span.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1938946</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2023-03-05 09:44:45 -0800</bug_when>
    <thetext>Bug 253377 started using std::span for all Apple ports (including any port compiling with clang or MSVC, plus ports that compile with GCC that pass a compile test in CMake) behind a WTF::makeSpan() adapter.

Once all ports support std::span, the WTF::makeSpan() adapter will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939023</commentid>
    <comment_count>11</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2023-03-05 20:16:14 -0800</bug_when>
    <thetext>Just for the record, it&apos;s not just GCC; PS port needed a fix too:
https://github.com/WebKit/WebKit/commit/f105d6117bd798d28c016d2f2a639e693afbeefa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1952721</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2023-05-03 13:42:21 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/13414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954888</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-11 20:20:14 -0700</bug_when>
    <thetext>Committed 263998@main (0fa955e615eb): &lt;https://commits.webkit.org/263998@main&gt;

Reviewed commits have been landed. Closing PR #13414 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453169</attachid>
            <date>2022-02-24 19:59:17 -0800</date>
            <delta_ts>2022-04-22 11:40:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237178-20220224195916.patch</filename>
            <type>text/plain</type>
            <size>176435</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTI0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNpdGlvbiBmcm9t
IFdURjo6U3BhbiB0byBzdGQ6OnNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6bWFwVG9GaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAg
ICAgICAqIHd0Zi9TSEExLmNwcDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMpOgorICAg
ICAgICAqIHd0Zi9TSEExLmg6CisgICAgICAgIChXVEY6OlNIQTE6OmFkZEJ5dGVzKToKKyAgICAg
ICAgKiB3dGYvU3Bhbi5oOgorICAgICAgICAqIHd0Zi9VVUlELmg6CisgICAgICAgIChXVEY6OlVV
SUQ6OlVVSUQpOgorICAgICAgICAoV1RGOjpVVUlEOjp0b1NwYW4gY29uc3QpOgorICAgICAgICAq
IHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yOjpWZWN0b3IpOgorICAgICAgICAo
V1RGOjpWZWN0b3I6OnNwYW4gY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmFwcGVuZCk6
CisgICAgICAgIChXVEY6OlZlY3Rvcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAgKiB3dGYv
Y2YvU3BhbkNGLmg6CisgICAgICAgIChXVEY6OmFzQnl0ZXMpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9TcGFuQ29jb2EuaDoKKyAgICAgICAgKFdURjo6YXNCeXRlcyk6CisgICAgICAgICogd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXI6OkRlY29kZXIpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6cmV3aW5kKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXI6OmN1cnJlbnRPZmZzZXQgY29uc3QpOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9CYXNlNjQuY3BwOgorICAgICAg
ICAoV1RGOjpiYXNlNjRFbmNvZGVJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29k
ZSk6CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZVRvVmVjdG9yKToKKyAgICAgICAgKFdURjo6
YmFzZTY0RW5jb2RlVG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGVJbnRlcm5h
bCk6CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6CisgICAgICAgICogd3RmL3RleHQvQmFz
ZTY0Lmg6CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6CisgICAgICAgIChXVEY6OmJhc2U2
NEVuY29kZVRvVmVjdG9yKToKKyAgICAgICAgKFdURjo6YmFzZTY0RW5jb2RlVG9TdHJpbmcpOgor
ICAgICAgICAoV1RGOjpiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rvcik6CisgICAgICAgIChXVEY6OmJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6YmFzZTY0VVJMRGVjb2RlKToK
KyAgICAgICAgKFdURjo6YmFzZTY0RW5jb2RlZCk6CisgICAgICAgIChXVEY6OmJhc2U2NFVSTEVu
Y29kZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdUeXBlQWRhcHRlcjxCYXNlNjRTcGVjaWZpY2F0
aW9uPjo6d3JpdGVUbyBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5oOgorCiAy
MDIyLTAyLTI0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkwNDUyLgpJbmRleDogU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJ
KHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25z
dCBTdHJpbmcmKQogCiAjZW5kaWYKIAotTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5k
bGUqIG91dHB1dEhhbmRsZSkKK01hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9v
bChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5k
bGUqIG91dHB1dEhhbmRsZSkKIHsKICAgICBjb25zdGV4cHIgYm9vbCBmYWlsSWZGaWxlRXhpc3Rz
ID0gdHJ1ZTsKICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNz
UGVybWlzc2lvbjo6VXNlciwgZmFpbElmRmlsZUV4aXN0cyk7CkBAIC00NTMsNyArNDUzLDcgQEAg
TWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcAogICAgIHZvaWQqIG1hcCA9
IGNvbnN0X2Nhc3Q8dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsKICAgICB1aW50OF90KiBtYXBE
YXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1hcCk7CiAKLSAgICBhcHBseShbJm1hcERhdGFd
KFNwYW48Y29uc3QgdWludDhfdD4gY2h1bmspIHsKKyAgICBhcHBseShbJm1hcERhdGFdKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBjaHVuaykgewogICAgICAgICBtZW1jcHkobWFwRGF0YSwgY2h1
bmsuZGF0YSgpLCBjaHVuay5zaXplKCkpOwogICAgICAgICBtYXBEYXRhICs9IGNodW5rLnNpemUo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAy
OTA0NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3OSw3ICsyNzksNyBAQCBpbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpv
CiAKIC8vIFRoaXMgY3JlYXRlcyB0aGUgZGVzdGluYXRpb24gZmlsZSwgbWFwcyBpdCwgd3JpdGUg
dGhlIHByb3ZpZGVkIGRhdGEgdG8gaXQgYW5kIHJldHVybnMgdGhlIG1hcHBlZCBmaWxlLgogLy8g
VGhpcyBmdW5jdGlvbiBmYWlscyBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgZmlsZSBhdCB0aGUgZGVz
dGluYXRpb24gcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBNYXBwZWRGaWxlRGF0YSBtYXBUb0Zp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+Jik+JiYgYXBwbHksIFBsYXRm
b3JtRmlsZUhhbmRsZSogPSBudWxscHRyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBNYXBwZWRGaWxl
RGF0YSBtYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IEZ1bmN0aW9uPGJvb2woc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KT4m
KT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiA9IG51bGxwdHIpOwogCiB9IC8vIG5hbWVz
cGFjZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TSEExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TSEExLmNwcAkocmV2
aXNpb24gMjkwNDczKQorKysgU291cmNlL1dURi93dGYvU0hBMS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgU0hBMTo6U0hBMSgpCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiB9CiAKLXZvaWQgU0hBMTo6YWRkQnl0ZXMoU3Bhbjxjb25zdCBzdGQ6OmJ5
dGU+IGlucHV0KQordm9pZCBTSEExOjphZGRCeXRlcyhzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRl
PiBpbnB1dCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IENDX1NIQTFfVXBkYXRlKCZtX2NvbnRleHQsIGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpKTsK
QEAgLTEwMSw3ICsxMDEsNyBAQCBTSEExOjpTSEExKCkKICAgICByZXNldCgpOwogfQogCi12b2lk
IFNIQTE6OmFkZEJ5dGVzKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCkKK3ZvaWQgU0hBMTo6
YWRkQnl0ZXMoc3RkOjpzcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQpCiB7CiAgICAgZm9yIChh
dXRvIGJ5dGUgOiBpbnB1dCkgewogICAgICAgICBBU1NFUlQobV9jdXJzb3IgPCA2NCk7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9TSEExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU0hB
MS5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9TSEExLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAgY2xhc3MgU0hBMSB7CiBwdWJsaWM6CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFNIQTEoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5
dGVzKFNwYW48Y29uc3Qgc3RkOjpieXRlPik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YWRkQnl0ZXMoc3RkOjpzcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4pOwogCi0gICAgdm9pZCBhZGRCeXRl
cyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQorICAgIHZvaWQgYWRkQnl0ZXMoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQogICAgIHsKICAgICAgICAgYWRkQnl0ZXMoYXNCeXRlcyhp
bnB1dCkpOwogICAgIH0KQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRC
eXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAgICAg
IGFkZEJ5dGVzKFNwYW4geyBpbnB1dCwgbGVuZ3RoIH0pOworICAgICAgICBhZGRCeXRlcyhzdGQ6
OnNwYW4geyBpbnB1dCwgbGVuZ3RoIH0pOwogICAgIH0KIAogICAgIC8vIFNpemUgb2YgdGhlIFNI
QTEgaGFzaApJbmRleDogU291cmNlL1dURi93dGYvU3Bhbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1NwYW4uaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dURi93dGYvU3Bh
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4g
ICAgICAvLyBmb3IgYnl0ZQogI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgLy8gZm9yIGl0ZXJhdG9y
cwogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPiAgLy8gZm9yIHJlbW92ZV9jdiwgZXRjCisjaW5jbHVk
ZSA8c3Bhbj4KIAogLy8gQWRkcyBzb21lIG1hY3JvIGRlZmluZXMgdXN1YWxseSBkZWZpbmVkIGlu
IF9fY29uZmlnLgogCkBAIC00MjMsMTQgKzQyNCwxNCBAQCBpbmxpbmUgY29uc3RleHByIGJvb2wg
c3RkOjpyYW5nZXM6OmVuYWJsCiAvLyAgYXNCeXRlcyAmIGFzV3JpdGFibGVCeXRlcwogdGVtcGxh
dGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZCi1hdXRvIGFzQnl0ZXMoU3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNlcHQK
LS0+IFNwYW48Y29uc3Qgc3RkOjpieXRlLCBfRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50ID8gZHlu
YW1pY19leHRlbnQgOiBfRXh0ZW50ICogc2l6ZW9mKF9UcCk+CithdXRvIGFzQnl0ZXMoc3RkOjpz
cGFuPF9UcCwgX0V4dGVudD4gX19zKSBub2V4Y2VwdAorLT4gc3RkOjpzcGFuPGNvbnN0IHN0ZDo6
Ynl0ZSwgX0V4dGVudCA9PSBkeW5hbWljX2V4dGVudCA/IGR5bmFtaWNfZXh0ZW50IDogX0V4dGVu
dCAqIHNpemVvZihfVHApPgogeyByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHN0ZDo6
Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNpemVfYnl0ZXMoKSB9OyB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+CiBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWQotYXV0byBhc1dyaXRhYmxlQnl0ZXMoU3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNl
cHQKLS0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfY29uc3RfdjxfVHA+LCBTcGFuPHN0ZDo6
Ynl0ZSwgX0V4dGVudCA9PSBkeW5hbWljX2V4dGVudCA/IGR5bmFtaWNfZXh0ZW50IDogX0V4dGVu
dCAqIHNpemVvZihfVHApPj4KK2F1dG8gYXNXcml0YWJsZUJ5dGVzKHN0ZDo6c3BhbjxfVHAsIF9F
eHRlbnQ+IF9fcykgbm9leGNlcHQKKy0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfY29uc3Rf
djxfVHA+LCBzdGQ6OnNwYW48c3RkOjpieXRlLCBfRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50ID8g
ZHluYW1pY19leHRlbnQgOiBfRXh0ZW50ICogc2l6ZW9mKF9UcCk+PgogeyByZXR1cm4geyByZWlu
dGVycHJldF9jYXN0PHN0ZDo6Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNpemVfYnl0ZXMoKSB9
OyB9CiAKIC8vICBEZWR1Y3Rpb24gZ3VpZGVzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9VVUlELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVVVJRC5oCShyZXZpc2lvbiAyOTA0NzMpCisr
KyBTb3VyY2UvV1RGL3d0Zi9VVUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDxVVUlEPiBwYXJz
ZVZlcnNpb240KFN0cmluZ1ZpZXcpOwogCi0gICAgZXhwbGljaXQgVVVJRChTcGFuPGNvbnN0IHVp
bnQ4X3QsIDE2PiBzcGFuKQorICAgIGV4cGxpY2l0IFVVSUQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3QsIDE2PiBzcGFuKQogICAgIHsKICAgICAgICAgbWVtY3B5KCZtX2RhdGEsIHNwYW4uZGF0YSgp
LCAxNik7CiAgICAgfQpAQCAtNjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIFNwYW48Y29uc3QgdWludDhfdCwgMTY+IHRvU3BhbigpIGNvbnN0CisgICAgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3QsIDE2PiB0b1NwYW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IFNwYW48Y29uc3QgdWludDhfdCwgMTY+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oJm1fZGF0YSksIDE2IH07CisgICAgICAgIHJldHVybiBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dCwgMTY+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJm1fZGF0YSksIDE2IH07
CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVVSUQmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9W
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkocmV2aXNpb24g
MjkwNDczKQorKysgU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
NCw3ICs2NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0
aWFsaXplZENvcHkoZGF0YSwgZGF0YSArIGRhdGFTaXplLCBiZWdpbigpKTsKICAgICB9CiAKLSAg
ICBWZWN0b3IoU3Bhbjxjb25zdCBUPiBzcGFuKQorICAgIFZlY3RvcihzdGQ6OnNwYW48Y29uc3Qg
VD4gc3BhbikKICAgICAgICAgOiBWZWN0b3Ioc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKSB7IH0K
IAogICAgIFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQpA
QCAtNzEwLDcgKzcxMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IHNpemVNZW1v
cnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmVjdG9yLCBtX3NpemUpOyB9CiAg
ICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6Y2FwYWNpdHkoKTsgfQog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLSAgICBTcGFuPGNv
bnN0IFQ+IHNwYW4oKSBjb25zdCB7IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07IH0KKyAgICBz
dGQ6OnNwYW48Y29uc3QgVD4gc3BhbigpIGNvbnN0IHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkg
fTsgfQogCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewpAQCAtNzkwLDggKzc5MCw4IEBAIHB1
YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgdm9pZCBhcHBl
bmQoY29uc3QgVSogdSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kPEZhaWx1cmVBY3Rpb246OkNyYXNo
Pih1LCBzaXplKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IEFMV0FZU19JTkxJTkUgYm9v
bCB0cnlBcHBlbmQoY29uc3QgVSogdSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFwcGVuZDxGYWls
dXJlQWN0aW9uOjpSZXBvcnQ+KHUsIHNpemUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
QUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZChTcGFuPGNvbnN0IFU+IHNwYW4pIHsgYXBwZW5kKHNw
YW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdB
WVNfSU5MSU5FIHZvaWQgdW5jaGVja2VkQXBwZW5kKFNwYW48Y29uc3QgVT4gc3BhbikgeyB1bmNo
ZWNrZWRBcHBlbmQ8RmFpbHVyZUFjdGlvbjo6Q3Jhc2g+KHNwYW4uZGF0YSgpLCBzcGFuLnNpemUo
KSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5k
KHN0ZDo6c3Bhbjxjb25zdCBVPiBzcGFuKSB7IGFwcGVuZChzcGFuLmRhdGEoKSwgc3Bhbi5zaXpl
KCkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gQUxXQVlTX0lOTElORSB2b2lkIHVuY2hl
Y2tlZEFwcGVuZChzdGQ6OnNwYW48Y29uc3QgVT4gc3BhbikgeyB1bmNoZWNrZWRBcHBlbmQ8RmFp
bHVyZUFjdGlvbjo6Q3Jhc2g+KHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eSwgdHlwZW5hbWUgT3RoZXJPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck1hbGxv
Yz4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHksIE90aGVy
T3ZlcmZsb3dIYW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBPdGhlck1hbGxvYz4mKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eSwgdHlwZW5hbWUgT3RoZXJP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBvdGhlck1pbkNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck1h
bGxvYz4gdm9pZCBhcHBlbmRWZWN0b3IoVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHksIE90aGVyT3Zl
cmZsb3dIYW5kbGVyLCBvdGhlck1pbkNhcGFjaXR5LCBPdGhlck1hbGxvYz4mJik7CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L2NmL1NwYW5DRi5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9TcGFu
Q0YuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi1pbmxpbmUgU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGFzQnl0ZXMoQ0ZEYXRhUmVmIGRhdGEp
CitpbmxpbmUgc3RkOjpzcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gYXNCeXRlcyhDRkRhdGFSZWYgZGF0
YSkKIHsKICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHN0ZDo6Ynl0ZSo+KENG
RGF0YUdldEJ5dGVQdHIoZGF0YSkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0
aChkYXRhKSkgfTsKIH0KIAotaW5saW5lIFNwYW48Y29uc3Qgc3RkOjpieXRlPiBhc0J5dGVzKGNv
bnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKQoraW5saW5lIHN0ZDo6c3Bhbjxjb25zdCBz
dGQ6OmJ5dGU+IGFzQnl0ZXMoY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpCiB7CiAg
ICAgcmV0dXJuIGFzQnl0ZXMoZGF0YS5nZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9j
b2NvYS9TcGFuQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9TcGFu
Q29jb2EuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dURi93dGYvY29jb2EvU3BhbkNv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV1RG
IHsKIAotaW5saW5lIFNwYW48Y29uc3Qgc3RkOjpieXRlPiBhc0J5dGVzKE5TRGF0YSAqZGF0YSkK
K2lubGluZSBzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiBhc0J5dGVzKE5TRGF0YSAqZGF0YSkK
IHsKICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHN0ZDo6Ynl0ZSo+KGRhdGEu
Ynl0ZXMpLCBkYXRhLmxlbmd0aCB9OwogfQogCi1pbmxpbmUgU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+
IGFzQnl0ZXMoY29uc3QgUmV0YWluUHRyPE5TRGF0YT4mIGRhdGEpCitpbmxpbmUgc3RkOjpzcGFu
PGNvbnN0IHN0ZDo6Ynl0ZT4gYXNCeXRlcyhjb25zdCBSZXRhaW5QdHI8TlNEYXRhPiYgZGF0YSkK
IHsKICAgICByZXR1cm4gYXNCeXRlcyhkYXRhLmdldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAJKHJldmlzaW9uIDI5
MDQ3MykKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNwYWNlIFdURiB7CiBuYW1l
c3BhY2UgUGVyc2lzdGVuY2UgewogCi1EZWNvZGVyOjpEZWNvZGVyKFNwYW48Y29uc3QgdWludDhf
dD4gc3BhbikKK0RlY29kZXI6OkRlY29kZXIoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4p
CiAgICAgOiBtX2J1ZmZlcihzcGFuKQotICAgICwgbV9idWZmZXJQb3NpdGlvbihzcGFuLmJlZ2lu
KCkpCisgICAgLCBtX2J1ZmZlclBvc2l0aW9uKCYqc3Bhbi5iZWdpbigpKQogewogfQogCkBAIC00
Myw3ICs0Myw3IEBAIERlY29kZXI6On5EZWNvZGVyKCkKIAogYm9vbCBEZWNvZGVyOjpidWZmZXJJ
c0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBzaXplKSBjb25zdAogewotICAgIHJldHVybiBz
aXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9idWZmZXIuZW5kKCkgLSBtX2J1ZmZlclBvc2l0
aW9uKTsKKyAgICByZXR1cm4gc2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KCYqbV9idWZmZXIu
ZW5kKCkgLSBtX2J1ZmZlclBvc2l0aW9uKTsKIH0KIAogY29uc3QgdWludDhfdCogRGVjb2Rlcjo6
YnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQoc2l6ZV90IHNpemUpCkBAIC01OCw3ICs1OCw3IEBA
IGNvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmJ1ZmZlclBvaW50ZXJGb3IKICAgICByZXR1cm4gZGF0
YTsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjx1aW50OF90
PiBzcGFuKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEoc3RkOjpzcGFuPHVp
bnQ4X3Q+IHNwYW4pCiB7CiAgICAgYXV0byBidWZmZXIgPSBidWZmZXJQb2ludGVyRm9yRGlyZWN0
UmVhZChzcGFuLnNpemUoKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC02OSw3ICs2OSw3IEBAIGJv
b2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW4KIAogYm9vbCBEZWNvZGVyOjpy
ZXdpbmQoc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2J1ZmZlclBvc2l0aW9uIC0gbV9idWZmZXIuYmVnaW4oKSkpIHsKKyAgICBpZiAoc2l6ZSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyUG9zaXRpb24gLSAmKm1fYnVmZmVyLmJlZ2lu
KCkpKSB7CiAgICAgICAgIG1fYnVmZmVyUG9zaXRpb24gLT0gc2l6ZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dERlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RGVjb2Rlci5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNyArMzYs
MTcgQEAgbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIGNsYXNzIERlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyKFNwYW48Y29uc3QgdWludDhfdD4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5EZWNv
ZGVyKCk7CiAKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6
ZSgpOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
clBvc2l0aW9uIC0gbV9idWZmZXIuYmVnaW4oKTsgfQorICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3NpdGlvbiAtICYqbV9idWZmZXIuYmVnaW4oKTsg
fQogICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBy
ZXdpbmQoc2l6ZV90KTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YShTcGFuPHVpbnQ4X3Q+KTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHN0ZDo6c3Bhbjx1aW50OF90Pik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50OF90PiYp
OwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCkg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRGVjb2RlciYgZGVjb2RlTnVtYmVy
KHN0ZDo6b3B0aW9uYWw8VHlwZT4mKTsKIAotICAgIGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4g
bV9idWZmZXI7CisgICAgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IG1fYnVmZmVyOwog
ICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyUG9zaXRpb24geyBudWxscHRyIH07CiAKICAgICBT
SEExIG1fc2hhMTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTQg
KzQ2LDE0IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IHNpemUpCiAgICAgcmV0dXJu
IG1fYnVmZmVyLmRhdGEoKSArIG5ld1Bvc2l0aW9uOwogfQogCi12b2lkIEVuY29kZXI6OnVwZGF0
ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCit2
b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gc3BhbikKIHsKICAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90
Kj46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
JnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAgc2hhMS5hZGRCeXRlcyhzcGFuLmRh
dGEoKSwgc3Bhbi5zaXplKCkpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKICAgICB1cGRhdGVD
aGVja3N1bUZvckRhdGEobV9zaGExLCBzcGFuKTsKIApJbmRleDogU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBT
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkVu
Y29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNrc3VtKCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48
Y29uc3QgdWludDhfdD4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVk
TGVuZ3RoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxs
cHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKQEAgLTc0LDcgKzc0LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEm
LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBl
PiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
dGV4dC9CYXNlNjQuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0
L0Jhc2U2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGNvbnN0
IGNoYXIgYmFzZTY0VVJMRGVjTWFwW2RlY29kZQogICAgIDB4MzEsIDB4MzIsIDB4MzMsIG5vbkFs
cGhhYmV0LCBub25BbHBoYWJldCwgbm9uQWxwaGFiZXQsIG5vbkFscGhhYmV0LCBub25BbHBoYWJl
dAogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgYmFz
ZTY0RW5jb2RlSW50ZXJuYWwoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dERhdGFCdWZmZXIsIFNw
YW48Q2hhcmFjdGVyVHlwZT4gZGVzdGluYXRpb25EYXRhQnVmZmVyLCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIHZvaWQgYmFzZTY0RW5jb2RlSW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGlucHV0RGF0YUJ1ZmZlciwgc3RkOjpzcGFuPENoYXJhY3RlclR5cGU+IGRlc3Rp
bmF0aW9uRGF0YUJ1ZmZlciwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2Rl
TWFwIG1hcCkKIHsKICAgICBBU1NFUlQoZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSA+IDAp
OwogICAgIEFTU0VSVChjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6ZShpbnB1dERhdGFCdWZmZXIu
c2l6ZSgpLCBwb2xpY3kpID09IGRlc3RpbmF0aW9uRGF0YUJ1ZmZlci5zaXplKCkpOwpAQCAtMTQw
LDQ3ICsxNDAsNDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIAog
ICAgICAgICBkZXN0aW5hdGlvbkRhdGFCdWZmZXJbZGlkeCsrXSA9ICc9JzsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgYmFzZTY0RW5jb2RlSW50ZXJu
YWwoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBTcGFuPENoYXJhY3RlclR5cGU+IGRlc3Rp
bmF0aW9uRGF0YUJ1ZmZlciwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2Rl
TWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyB2b2lkIGJh
c2U2NEVuY29kZUludGVybmFsKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBzdGQ6
OnNwYW48Q2hhcmFjdGVyVHlwZT4gZGVzdGluYXRpb25EYXRhQnVmZmVyLCBCYXNlNjRFbmNvZGVQ
b2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGJhc2U2NEVuY29kZUlu
dGVybmFsKFNwYW4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRh
KCkpLCBpbnB1dC5zaXplKCkgfSwgZGVzdGluYXRpb25EYXRhQnVmZmVyLCBwb2xpY3ksIG1hcCk7
CisgICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoc3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpIH0sIGRlc3RpbmF0aW9u
RGF0YUJ1ZmZlciwgcG9saWN5LCBtYXApOwogfQogCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgQmFzZTY0RW5j
b2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3N0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5w
dXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7CiAg
ICAgYXV0byBkZXN0aW5hdGlvbkxlbmd0aCA9IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGlu
cHV0LnNpemUoKSwgcG9saWN5KTsKICAgICBpZiAoIWRlc3RpbmF0aW9uTGVuZ3RoKQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uVmVjdG9yKGRl
c3RpbmF0aW9uTGVuZ3RoKTsKLSAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgU3BhbiB7
IGRlc3RpbmF0aW9uVmVjdG9yIH0sIHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRl
cm5hbChpbnB1dCwgc3RkOjpzcGFuIHsgZGVzdGluYXRpb25WZWN0b3IgfSwgcG9saWN5LCBtYXAp
OwogICAgIHJldHVybiBkZXN0aW5hdGlvblZlY3RvcjsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUo
U3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBTcGFuPFVDaGFyPiBkZXN0aW5hdGlvbiwgQmFz
ZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3ZvaWQgYmFzZTY0
RW5jb2RlKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBzdGQ6OnNwYW48VUNoYXI+
IGRlc3RpbmF0aW9uLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAg
bWFwKQogewogICAgIGlmICghZGVzdGluYXRpb24uc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoaW5wdXQsIGRlc3RpbmF0aW9uLCBwb2xpY3ksIG1hcCk7
CiB9CiAKLXZvaWQgYmFzZTY0RW5jb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgU3Bh
bjxMQ2hhcj4gZGVzdGluYXRpb24sIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVu
Y29kZU1hcCBtYXApCit2b2lkIGJhc2U2NEVuY29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRl
PiBpbnB1dCwgc3RkOjpzcGFuPExDaGFyPiBkZXN0aW5hdGlvbiwgQmFzZTY0RW5jb2RlUG9saWN5
IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKICAgICBpZiAoIWRlc3RpbmF0aW9uLnNp
emUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGJhc2U2NEVuY29kZUludGVybmFsKGlucHV0LCBk
ZXN0aW5hdGlvbiwgcG9saWN5LCBtYXApOwogfQogCi1WZWN0b3I8dWludDhfdD4gYmFzZTY0RW5j
b2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQorVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVu
Y29kZVRvVmVjdG9yKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNv
ZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewogICAgIHJldHVybiBiYXNl
NjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgcG9saWN5LCBtYXApOwogfQogCi1TdHJpbmcgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQ
b2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQorU3RyaW5nIGJhc2U2NEVuY29kZVRv
U3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewogICAgIHJldHVybiBtYWtlU3RyaW5n
KGJhc2U2NEVuY29kZWQoaW5wdXQsIHBvbGljeSwgbWFwKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoU3Bhbjxjb25zdCBUPiBpbnB1dERhdGFCdWZmZXIsIE9wdGlvblNldDxCYXNlNjRE
ZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChzdGQ6OnNwYW48Y29uc3QgVD4gaW5wdXREYXRhQnVmZmVyLCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAg
ICBpZiAoIWlucHV0RGF0YUJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8dWlu
dDhfdD4geyB9OwpAQCAtMjU5LDE5ICsyNTksMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIHN0ZDo6b3B0aW9uYQogICAgIHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4g
aW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNv
ZGVNYXAgbWFwKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShz
dGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9w
dGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKGlucHV0LnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoU3BhbiB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlucHV0LmRhdGEoKSksIGlucHV0LnNp
emUoKSB9LCBvcHRpb25zLCBtYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChz
dGQ6OnNwYW4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkp
LCBpbnB1dC5zaXplKCkgfSwgb3B0aW9ucywgbWFwKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFz
ZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBpbnB1
dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKFNwYW4geyBp
bnB1dC5jaGFyYWN0ZXJzOCgpLCBsZW5ndGggfSwgb3B0aW9ucywgbWFwKTsKLSAgICByZXR1cm4g
YmFzZTY0RGVjb2RlSW50ZXJuYWwoU3BhbiB7IGlucHV0LmNoYXJhY3RlcnMxNigpLCBsZW5ndGgg
fSwgb3B0aW9ucywgbWFwKTsKKyAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHN0
ZDo6c3BhbiB7IGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOwor
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChzdGQ6OnNwYW4geyBpbnB1dC5jaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoIH0sIG9wdGlvbnMsIG1hcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RG
L3d0Zi90ZXh0L0Jhc2U2NC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGVudW0g
Y2xhc3MgQmFzZTY0RGVjb2RlT3B0aW9ucyA6IHVpbnQ4X3QKIGVudW0gY2xhc3MgQmFzZTY0RGVj
b2RlTWFwIHsgRGVmYXVsdCwgVVJMIH07CiAKIHN0cnVjdCBCYXNlNjRTcGVjaWZpY2F0aW9uIHsK
LSAgICBTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQ7CisgICAgc3RkOjpzcGFuPGNvbnN0IHN0
ZDo6Ynl0ZT4gaW5wdXQ7CiAgICAgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeTsKICAgICBCYXNl
NjRFbmNvZGVNYXAgbWFwOwogfTsKQEAgLTY3LDY5ICs2Nyw2OSBAQCB1bnNpZ25lZCBjYWxjdWxh
dGVCYXNlNjRFbmNvZGVkU2l6ZSh1bnNpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgaXNCYXNlNjRPckJhc2U2NFVSTENoYXJhY3RlcihDaGFyYWN0ZXJUeXBlKTsKIAot
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0RW5jb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRl
PiwgU3BhbjxVQ2hhcj4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6
RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVs
dCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBiYXNlNjRFbmNvZGUoU3Bhbjxjb25zdCBzdGQ6
OmJ5dGU+LCBTcGFuPExDaGFyPiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9s
aWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpE
ZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NEVuY29kZShzdGQ6OnNwYW48
Y29uc3Qgc3RkOjpieXRlPiwgc3RkOjpzcGFuPFVDaGFyPiwgQmFzZTY0RW5jb2RlUG9saWN5ID0g
QmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFz
ZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NEVu
Y29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiwgc3RkOjpzcGFuPExDaGFyPiwgQmFzZTY0
RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0
RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIAotV1RGX0VYUE9SVF9QUklW
QVRFIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IHN0ZDo6
Ynl0ZT4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNl
cnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7Ci1WZWN0
b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCB1aW50OF90PiwgQmFz
ZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFz
ZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKLVZlY3Rvcjx1aW50OF90
PiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IGNoYXI+LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAg
PSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIFZlY3Rvcjx1
aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiwg
QmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywg
QmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1ZlY3Rvcjx1aW50
OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIEJhc2U2
NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2
NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CitWZWN0b3I8dWludDhfdD4g
YmFzZTY0RW5jb2RlVG9WZWN0b3Ioc3RkOjpzcGFuPGNvbnN0IGNoYXI+LCBCYXNlNjRFbmNvZGVQ
b2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVN
YXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwogVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVu
Y29kZVRvVmVjdG9yKGNvbnN0IENTdHJpbmcmLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRF
bmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNv
ZGVNYXA6OkRlZmF1bHQpOwogVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNv
bnN0IHZvaWQqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9s
aWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpE
ZWZhdWx0KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29k
ZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1h
cDo6RGVmYXVsdCk7Ci1TdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50
OF90PiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2Vy
dExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKLVN0cmlu
ZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAg
PSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBi
YXNlNjRFbmNvZGVUb1N0cmluZyhzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiwgQmFzZTY0RW5j
b2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5j
b2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1N0cmluZyBiYXNlNjRFbmNvZGVU
b1N0cmluZyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJh
c2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2
NEVuY29kZU1hcDo6RGVmYXVsdCk7CitTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoc3RkOjpz
cGFuPGNvbnN0IGNoYXI+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6
OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1
bHQpOwogU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJpbmcmLCBCYXNlNjRF
bmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRF
bmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwogU3RyaW5nIGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFz
ZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0
RW5jb2RlTWFwOjpEZWZhdWx0KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+LCBPcHRp
b25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2
NERlY29kZU1hcDo6RGVmYXVsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiwg
T3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBC
YXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3RyaW5nVmlldywgT3B0aW9uU2V0PEJh
c2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVN
YXA6OkRlZmF1bHQpOwotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29k
ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7
IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7Ci1zdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFNwYW48Y29uc3QgY2hhcj4sIE9w
dGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFz
ZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBi
YXNlNjREZWNvZGUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBPcHRpb25TZXQ8QmFzZTY0RGVj
b2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVm
YXVsdCk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKHN0ZDo6
c3Bhbjxjb25zdCBjaGFyPiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBC
YXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwogc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29k
ZU1hcDo6RGVmYXVsdCk7CiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVj
b2RlKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+
ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwogCiAv
LyBBbGwgdGhlIHNhbWUgZnVuY3Rpb25zIG1vZGlmaWVkIGZvciBiYXNlNjR1cmwsIGFzIGRlZmlu
ZWQgaW4gUkZDIDQ2NDguCiAvLyBUaGlzIGZvcm1hdCB1c2VzICctJyBhbmQgJ18nIGluc3RlYWQg
b2YgJysnIGFuZCAnLycgcmVzcGVjdGl2ZWx5LgogCi1WZWN0b3I8dWludDhfdD4gYmFzZTY0VVJM
RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKLVZlY3Rvcjx1aW50OF90PiBi
YXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKLVZlY3Rvcjx1aW50
OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IGNoYXI+KTsKK1ZlY3Rvcjx1
aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRl
Pik7CitWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3Ioc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+KTsKK1ZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rvcihz
dGQ6OnNwYW48Y29uc3QgY2hhcj4pOwogVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRv
VmVjdG9yKGNvbnN0IENTdHJpbmcmKTsKIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVU
b1ZlY3Rvcihjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogCi1TdHJpbmcgYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKLVN0cmluZyBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKLVN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhTcGFuPGNvbnN0IGNoYXI+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhz
dGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPik7CitTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhzdGQ6OnNwYW48Y29uc3QgY2hhcj4pOwogU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGNvbnN0IENTdHJpbmcmKTsKIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25z
dCB2b2lkKiwgdW5zaWduZWQpOwogCiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmKTsKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90
Pik7Ci1zdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFNwYW48
Y29uc3QgY2hhcj4pOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERl
Y29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPik7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CitzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKHN0ZDo6c3Bhbjxjb25z
dCBjaGFyPik7CiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAKIC8vIFZlcnNpb25zIGZvciB1c2Ugd2l0aCBTdHJp
bmdCdWlsZGVyIC8gbWFrZVN0cmluZy4KIAotQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNv
ZGVkKFNwYW48Y29uc3Qgc3RkOjpieXRlPiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5j
b2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2Rl
TWFwOjpEZWZhdWx0KTsKLUJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZChTcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRv
Tm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQp
OworQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6
OmJ5dGU+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5z
ZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworQmFz
ZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
QmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywg
QmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIEJhc2U2NFNwZWNp
ZmljYXRpb24gYmFzZTY0RW5jb2RlZChjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5jb2RlUG9saWN5
ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0g
QmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIEJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5j
b2RlZChjb25zdCB2b2lkKiwgdW5zaWduZWQsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVu
Y29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29k
ZU1hcDo6RGVmYXVsdCk7CiAKLUJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0VVJMRW5jb2RlZChT
cGFuPGNvbnN0IHN0ZDo6Ynl0ZT4pOwotQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNv
ZGVkKFNwYW48Y29uc3QgdWludDhfdD4pOworQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxF
bmNvZGVkKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKK0Jhc2U2NFNwZWNpZmljYXRpb24g
YmFzZTY0VVJMRW5jb2RlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogQmFzZTY0U3BlY2lm
aWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNvbnN0IENTdHJpbmcmKTsKIEJhc2U2NFNwZWNpZmlj
YXRpb24gYmFzZTY0VVJMRW5jb2RlZChjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogCiAKLWlubGlu
ZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCB1aW50OF90
PiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkK
K2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3Ioc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNv
ZGVNYXAgbWFwKQogewogICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihhc0J5dGVzKGlu
cHV0KSwgcG9saWN5LCBtYXApOwogfQogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVu
Y29kZVRvVmVjdG9yKFNwYW48Y29uc3QgY2hhcj4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBw
b2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2
NEVuY29kZVRvVmVjdG9yKHN0ZDo6c3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwgQmFzZTY0RW5jb2Rl
UG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKICAgICByZXR1cm4gYmFzZTY0
RW5jb2RlVG9WZWN0b3IoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsKIH0KQEAgLTE0NCwx
MiArMTQ0LDEyIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWMKICAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoeyBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmJ5
dGUqPihpbnB1dCksIGxlbmd0aCB9LCBwb2xpY3ksIG1hcCk7CiB9CiAKLWlubGluZSBTdHJpbmcg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCwgQmFzZTY0RW5j
b2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK2lubGluZSBTdHJpbmcgYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0LCBCYXNlNjRF
bmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewogICAgIHJldHVybiBi
YXNlNjRFbmNvZGVUb1N0cmluZyhhc0J5dGVzKGlucHV0KSwgcG9saWN5LCBtYXApOwogfQogCi1p
bmxpbmUgU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKFNwYW48Y29uc3QgY2hhcj4gaW5wdXQs
IEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCitpbmxpbmUg
U3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwg
QmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKICAgICBy
ZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsK
IH0KQEAgLTE2NCwxMiArMTY0LDEyIEBAIGlubGluZSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJp
bmcoY29uc3QKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoeyBzdGF0aWNfY2FzdDxj
b25zdCBzdGQ6OmJ5dGUqPihpbnB1dCksIGxlbmd0aCB9LCBwb2xpY3ksIG1hcCk7CiB9CiAKLWlu
bGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFNwYW48Y29u
c3QgdWludDhfdD4gaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25z
LCBCYXNlNjREZWNvZGVNYXAgbWFwKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBiYXNlNjREZWNvZGUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0LCBPcHRpb25T
ZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsK
ICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKGFzQnl0ZXMoaW5wdXQpLCBvcHRpb25zLCBtYXApOwog
fQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShT
cGFuPGNvbnN0IGNoYXI+IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0
aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0RGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwgT3B0aW9u
U2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7
CiAgICAgcmV0dXJuIGJhc2U2NERlY29kZShhc0J5dGVzKGlucHV0KSwgb3B0aW9ucywgbWFwKTsK
IH0KQEAgLTE4NCwxNyArMTg0LDE3IEBAIGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmEKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKHsgc3RhdGljX2Nhc3Q8Y29uc3Qgc3Rk
OjpieXRlKj4oaW5wdXQpLCBsZW5ndGggfSwgb3B0aW9ucywgbWFwKTsKIH0KIAotaW5saW5lIFZl
Y3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IHN0ZDo6Ynl0
ZT4gaW5wdXQpCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9y
KHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0KQogewogICAgIHJldHVybiBiYXNlNjRF
bmNvZGVUb1ZlY3RvcihpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29k
ZU1hcDo6VVJMKTsKIH0KIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVU
b1ZlY3RvcihTcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQoraW5saW5lIFZlY3Rvcjx1aW50OF90
PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gaW5wdXQp
CiB7CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9yKGlucHV0LCBCYXNlNjRFbmNvZGVQ
b2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQogCi1pbmxpbmUgVmVjdG9yPHVp
bnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgY2hhcj4gaW5wdXQpCitp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKHN0ZDo6c3Bhbjxj
b25zdCBjaGFyPiBpbnB1dCkKIHsKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5w
dXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CkBA
IC0yMDksMTcgKzIwOSwxNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29k
ZVRvCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9yKGlucHV0LCBsZW5ndGgsIEJhc2U2
NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBT
dHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0
KQoraW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhzdGQ6OnNwYW48Y29uc3Qg
c3RkOjpieXRlPiBpbnB1dCkKIHsKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5w
dXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAK
LWlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90
PiBpbnB1dCkKK2lubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQogewogICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsK
IH0KIAotaW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNo
YXI+IGlucHV0KQoraW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhzdGQ6OnNw
YW48Y29uc3QgY2hhcj4gaW5wdXQpCiB7CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwog
fQpAQCAtMjQ0LDE3ICsyNDQsMTcgQEAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBiYQogICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2Rl
TWFwOjpVUkwpOwogfQogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJh
c2U2NFVSTERlY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQpCitpbmxpbmUgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShzdGQ6OnNwYW48Y29uc3Qg
c3RkOjpieXRlPiBpbnB1dCkKIHsKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKGlucHV0LCB7IH0s
IEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkKIHsKICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKGlu
cHV0LCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIAotaW5saW5lIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCBjaGFyPiBpbnB1
dCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KHN0ZDo6c3Bhbjxjb25zdCBjaGFyPiBpbnB1dCkKIHsKICAgICByZXR1cm4gYmFzZTY0RGVjb2Rl
KGlucHV0LCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KQEAgLTMwMiwxMiArMzAyLDEy
IEBAIGlubGluZSB1bnNpZ25lZCBjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2kKICAgICByZXR1cm4g
MDsKIH0KIAotaW5saW5lIEJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZChTcGFuPGNv
bnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVu
Y29kZU1hcCBtYXApCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKHN0
ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5
LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewogICAgIHJldHVybiB7IGlucHV0LCBwb2xpY3ksIG1h
cCB9OwogfQogCi1pbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKFNwYW48
Y29uc3QgdWludDhfdD4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVu
Y29kZU1hcCBtYXApCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwg
QmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChhc0J5dGVz
KGlucHV0KSwgcG9saWN5LCBtYXApOwogfQpAQCAtMzIyLDEyICszMjIsMTIgQEAgaW5saW5lIEJh
c2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZAogICAgIHJldHVybiBiYXNlNjRFbmNvZGVk
KHsgc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpieXRlKj4oaW5wdXQpLCBsZW5ndGggfSwgcG9saWN5
LCBtYXApOwogfQogCi1pbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVk
KFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCkKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9u
IGJhc2U2NFVSTEVuY29kZWQoc3RkOjpzcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQpCiB7CiAg
ICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBC
YXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJh
c2U2NFVSTEVuY29kZWQoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkKK2lubGluZSBCYXNlNjRT
cGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGlu
cHV0KQogewogICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKGlucHV0LCBCYXNlNjRFbmNvZGVQb2xp
Y3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQpAQCAtMzU1LDcgKzM1NSw3IEBAIHB1
YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVU
byhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIGJhc2U2
NEVuY29kZShtX2Jhc2U2NC5pbnB1dCwgU3BhbiB7IGRlc3RpbmF0aW9uLCBtX2VuY29kZWRMZW5n
dGggfSwgbV9iYXNlNjQucG9saWN5LCBtX2Jhc2U2NC5tYXApOworICAgICAgICBiYXNlNjRFbmNv
ZGUobV9iYXNlNjQuaW5wdXQsIHN0ZDo6c3BhbiB7IGRlc3RpbmF0aW9uLCBtX2VuY29kZWRMZW5n
dGggfSwgbV9iYXNlNjQucG9saWN5LCBtX2Jhc2U2NC5tYXApOwogICAgIH0KIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV1RG
L3d0Zi90ZXh0L0NTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTQgKzc0LDE0IEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGFBc1VJbnQ4UHRyKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKTsgfQogCi0gICAgU3Bh
bjxjb25zdCB1aW50OF90PiBieXRlcygpIGNvbnN0CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGJ5dGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2J1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5k
YXRhKCkpLCBtX2J1ZmZlci0+bGVuZ3RoKCkgfTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzSW5sdWRpbmdOdWxsVGVybWluYXRvcigp
IGNvbnN0CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzSW5sdWRpbmdOdWxsVGVy
bWluYXRvcigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9idWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0
YSgpKSwgbV9idWZmZXItPmxlbmd0aCgpICsgMSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTU4IEBACisyMDIyLTAyLTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNpdGlvbiBmcm9tIFdURjo6U3BhbiB0
byBzdGQ6OnNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
Q29uc3VtZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFDb25zdW1lcjo6Y29u
c3VtZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFDb25zdW1lcjo6Y29uc3VtZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1l
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5
cHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6dHJh
bnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZTo6c2V0RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
Lmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OnZhbGlkYXRlUDI1NkRIUHVibGljS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFyZWRTZWNyZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6CisgICAgICAgIChXZWJDb3JlOjpQ
dXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBp
L1B1c2hDcnlwdG8uaDoKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5
cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ01Q
YXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVNHQ01QYXls
b2FkKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmg6Cisg
ICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRvQ29jb2EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6dmFsaWRhdGVQMjU2REhQdWJsaWNLZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6Y29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpobWFjU0hBMjU2KToKKyAgICAgICAgKFdlYkNv
cmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ00pOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVucXVldWUpOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OnVuY2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6ZGVzZXJpYWxpemVMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OmRlc2VyaWFsaXplVVRGOFN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TW9kaWZ5SGVhZGVyc0FjdGlvbjo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRlcnNB
Y3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86OmRlc2VyaWFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0
aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxpemVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6ZGVzZXJpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpzZXJpYWxp
emVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVj
dEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6c2VyaWFsaXplZExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OmRl
c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVj
dEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6c2VyaWFsaXplZExl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rp
b246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OmRl
c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVj
dEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlWYWx1
ZTo6c2VyaWFsaXplZExlbmd0aCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25XaXRob3V0TWV0YWRhdGE6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25XaXRob3V0TWV0YWRhdGE6OnNlcmlhbGl6ZWRMZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbldpdGhTdHJp
bmdNZXRhZGF0YTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YTo6c2VyaWFsaXplZExlbmd0aCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlZhcmlhbnREZXNlcmlhbGl6ZXJIZWxwZXI6
OnNlcmlhbGl6ZWRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRlc2VyaWFsaXplZEFjdGlvbjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRlc2VyaWFsaXplZEFjdGlvbjo6c2VyaWFsaXplZExlbmd0aCk6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uU3RyaW5nU2VyaWFsaXphdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZGVzZXJpYWxpemVT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnNlcmlhbGl6ZVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c3RyaW5nU2VyaWFs
aXplZExlbmd0aCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blN0cmluZ1NlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFC
eXRlY29kZUludGVycHJldGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpnZXRCaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXQy
NEJpdHNVbnNpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0
SW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1
bWVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb25zdW1l
MjRCaXRVbnNpZ25lZEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpnZXRKdW1wRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycGV0SnVtcFRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVycHJl
dGVyOjppbnRlcnByZXQpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFC
eXRlY29kZUludGVycHJldGVyOjpERkFCeXRlY29kZUludGVycHJldGVyKToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpodG1sRWxlbWVudEVx
dWl2YWxlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cyk6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTmFtZUNhY2hlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTmFtZUNhY2hlOjptYWtlVGFnTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTmFtZUNhY2hlOjptYWtlQXR0cmlidXRlUXVhbGlmaWVkTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTmFtZUNhY2hlOjptYWtlQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE5hbWVDYWNoZTo6bWFrZUF0b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE5hbWVDYWNoZTo6bWFrZVF1YWxpZmllZE5hbWUpOgorICAgICAgICAqIGxvYWRlci9p
Y29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphdmVyYWdlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbG9yU2Ft
cGxlcjo6c2FtcGxlVG9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3Ry
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2VjdXJlU2NoZW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWd4
Q29tcGlsZXJDbGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNl
cnZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFtZUluZm86OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNl
cnZlZEV2ZW50TmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6c3VwcG9ydGVkTUlNRVR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YW5kYXJkVmlkZW9TaXplcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTcGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dGFnU2V0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRl
ckJ1aWxkZXI6Om5hbWVkRWZmZWN0cyBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3Rv
cmFnZTo6c3RvcmUpOgorCiAyMDIyLTAyLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcg
RU1FIGNsYXNzZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWkKICAgICBBU1NFUlQo
bV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURhdGFDYWxsYmFj
ayk7CiAKICAgICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1
bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CisgICAgICAgIHN0ZDo6c3BhbiBj
aHVuayB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfTsKICAgICAgICAgbV9jb25zdW1l
RGF0YUNhbGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRAogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOwotICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIHN0ZDo6c3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
CShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0Jsb2JCb2R5KCkgY29uc3QgeyByZXR1cm4gIWlzQm9keU51bGwoKSAmJiBib2R5KCku
aXNCbG9iKCk7IH0KICAgICBib29sIGlzQmxvYkZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gIWlz
Qm9keU51bGwoKSAmJiBib2R5KCkuaXNGb3JtRGF0YSgpOyB9CiAKLSAgICB1c2luZyBDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8U3Bhbjxjb25z
dCB1aW50OF90Pio+JiYpPjsKKyAgICB1c2luZyBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+Kj4mJik+
OwogICAgIHZvaWQgY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5r
Q2FsbGJhY2smJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlIHJlc291
cmNlUmVzcG9uc2UoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
Rm9ybURhdGFDb25zdW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OnJlYWQoKQogICAgIEFT
U0VSVCghbV9ibG9iTG9hZGVyKTsKIAogICAgIGlmIChtX2N1cnJlbnRFbGVtZW50SW5kZXggPj0g
bV9mb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCkpIHsKLSAgICAgICAgbV9jYWxsYmFjayhTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHsgfSk7CisgICAgICAgIG1fY2FsbGJhY2soc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNSw3ICsxMDUs
NyBAQCB2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWVCbG9iKGNvbnN0CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoYXV0byBkYXRhID0gbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQot
ICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnN1bWUoU3Bhbjxjb25zdCB1aW50OF90PiB7IHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5ieXRlTGVuZ3RoKCkg
fSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29uc3VtZShzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+Ynl0
ZUxlbmd0aCgpIH0pOwogICAgIH0pOwogCiAgICAgbV9ibG9iTG9hZGVyLT5zdGFydChibG9iVVJM
LCBtX2NvbnRleHQuZ2V0KCksIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyKTsK
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWVCbG9iKGNv
bnN0CiAgICAgfQogfQogCi12b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWUoU3Bhbjxjb25z
dCB1aW50OF90PiBjb250ZW50KQordm9pZCBGb3JtRGF0YUNvbnN1bWVyOjpjb25zdW1lKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBjb250ZW50KQogewogICAgIGlmICghbV9jYWxsYmFjaykKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0
YUNvbnN1bWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
b3JtRGF0YUNvbnN1bWVyLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBGb3JtRGF0YUNvbnN1
bWVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEZvcm1EYXRhQ29uc3VtZXI+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8U3Bhbjxjb25zdCB1aW50OF90Pj4pPjsKKyAgICB1c2luZyBD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+Pik+OwogICAgIEZvcm1EYXRhQ29uc3VtZXIoY29uc3QgRm9ybURhdGEmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgQ2FsbGJhY2smJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvcm1EYXRh
Q29uc3VtZXIoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29uc3Vt
ZUZpbGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjb25zdW1lQmxvYihjb25zdCBVUkwmKTsK
IAotICAgIHZvaWQgY29uc3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIGNvbnN1
bWUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICB2b2lkIHJlYWQoKTsKIAogICAgIFJl
ZjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAJKHJl
dmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IHN0YXRpYyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50OjoKICAgICB9CiB9CiAKLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHJvY2Vzc0ZyYW1lKFNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSwgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRy
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHdlYWtUcmFuc2Zvcm0pCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHByb2Nlc3NGcmFtZShzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSwgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybT4mIHdlYWtUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byByZXN1bHQgPSB0cmFu
c2Zvcm1lci50cmFuc2Zvcm0oZGF0YSk7CiAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsK
QEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6d2lsbENsZWFy
QmFjCiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7CiB9CiAK
LXN0YXRpYyB2b2lkIHRyYW5zZm9ybUZyYW1lKFNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXImIHRy
YW5zZm9ybWVyLCBTaW1wbGVSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291cmNlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybT4mIHdlYWtUcmFuc2Zvcm0pCitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1GcmFt
ZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyLCBTaW1wbGVSZWFk
YWJsZVN0cmVhbVNvdXJjZSYgc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHdlYWtU
cmFuc2Zvcm0pCiB7CiAgICAgYXV0byByZXN1bHQgPSBwcm9jZXNzRnJhbWUoZGF0YSwgdHJhbnNm
b3JtZXIsIGlkZW50aWZpZXIsIHdlYWtUcmFuc2Zvcm0pOwogICAgIGF1dG8gYnVmZmVyID0gcmVz
dWx0ID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcmVzdWx0KSkgOiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgdHJhbnNmb3JtRnJhbWUoRnJh
bWUmIGZyYW1lLCBKU0RPTUcKIHsKICAgICBhdXRvIGNodW5rID0gZnJhbWUucnRjRnJhbWUoKS5k
YXRhKCk7CiAgICAgYXV0byByZXN1bHQgPSBwcm9jZXNzRnJhbWUoY2h1bmssIHRyYW5zZm9ybWVy
LCBpZGVudGlmaWVyLCB3ZWFrVHJhbnNmb3JtKTsKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHRy
YW5zZm9ybWVkQ2h1bms7CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRyYW5zZm9ybWVk
Q2h1bms7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgdHJhbnNmb3JtZWRDaHVuayA9IHsgcmVz
dWx0LT5kYXRhKCksIHJlc3VsdC0+c2l6ZSgpIH07CiAgICAgZnJhbWUucnRjRnJhbWUoKS5zZXRE
YXRhKHRyYW5zZm9ybWVkQ2h1bmspOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAJ
KHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyArMjA2
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZQogICAgIHJldHVy
biB7IH07CiB9CiAKLVJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpUcmFuc2Zvcm1SZXN1bHQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGEpCitSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6VHJhbnNmb3JtUmVzdWx0IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEp
CiB7CiAgICAgYXV0byogZnJhbWVEYXRhID0gZGF0YS5kYXRhKCk7CiAgICAgYXV0byBmcmFtZVNp
emUgPSBkYXRhLnNpemUoKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6VHJhbnNmb3JtUmVzdWx0CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIH0KIAotUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlRyYW5zZm9ybVJlc3VsdCBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKFNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSkKK1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpUcmFuc2Zvcm1SZXN1bHQgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkK
IHsKICAgICBhdXRvKiBmcmFtZURhdGEgPSBkYXRhLmRhdGEoKTsKICAgICBhdXRvIGZyYW1lU2l6
ZSA9IGRhdGEuc2l6ZSgpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpUcmFuc2Zvcm1SZXN1bHQKICAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhOwogfQogCi1S
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6VHJhbnNmb3JtUmVzdWx0IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjp0cmFuc2Zvcm0oU3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI6OlRyYW5zZm9ybVJlc3VsdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6dHJh
bnNmb3JtKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQogewogICAgIGlmICghbV9oYXNL
ZXkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHsgRXJy
b3I6OktleUlELCAgIktleSBpcyBub3QgaW5pdGlhbGl6ZWQiLCAwIH0pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDY0X3Qga2V5SWQgeyAwIH07
CiAgICAgfTsKICAgICB1c2luZyBUcmFuc2Zvcm1SZXN1bHQgPSBFeHBlY3RlZDxWZWN0b3I8dWlu
dDhfdD4sIEVycm9ySW5mb3JtYXRpb24+OwotICAgIFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybVJl
c3VsdCB0cmFuc2Zvcm0oU3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgV0VCQ09SRV9FWFBPUlQg
VHJhbnNmb3JtUmVzdWx0IHRyYW5zZm9ybShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdGlvbktleSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXV0aGVudGljYXRpb25LZXk7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGVu
Y3J5cHRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX2VuY3J5cHRpb25LZXk7IH0KQEAgLTcxLDgg
KzcxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcihDb21wYXRpYmlsaXR5TW9kZSk7CiAKLSAgICBUcmFuc2Zv
cm1SZXN1bHQgZGVjcnlwdEZyYW1lKFNwYW48Y29uc3QgdWludDhfdD4pOwotICAgIFRyYW5zZm9y
bVJlc3VsdCBlbmNyeXB0RnJhbWUoU3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgVHJhbnNmb3Jt
UmVzdWx0IGRlY3J5cHRGcmFtZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIFRyYW5z
Zm9ybVJlc3VsdCBlbmNyeXB0RnJhbWUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAg
IGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlS2V5cyB7IE5vLCBZZXMgfTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiB1cGRhdGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0
ZUtleXM6OlllcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9rZXlMb2NrKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWUuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsOCArNTEsOCBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUgOiBwdWJs
aWMgCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lKCkgPSBk
ZWZhdWx0OwogCi0gICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoU3Bhbjxjb25zdCB1aW50OF90PikgPSAwOwor
ICAgIHZpcnR1YWwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHVpbnQ2NF90IHRpbWVzdGFtcCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFJUQ0VuY29kZWRBdWRpb0ZyYW1lTWV0YWRhdGEgYXVkaW9NZXRhZGF0YSgpIGNvbnN0ID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJs
ZUZyYW1lLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpU
cmFuc2Zvcm1hYmxlRnJhCiAgICAgcmV0dXJuIFdURk1vdmUobV9ydGNGcmFtZSk7CiB9CiAKLVNw
YW48Y29uc3QgdWludDhfdD4gTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lOjpkYXRhKCkg
Y29uc3QKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWU6OmRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9ydGNGcmFtZSkKICAgICAgICAgcmV0
dXJuIHsgfTsKQEAgLTYwLDcgKzYwLDcgQEAgU3Bhbjxjb25zdCB1aW50OF90PiBMaWJXZWJSVENS
dHBUcmFuc2ZvcgogICAgIHJldHVybiB7IGRhdGEuYmVnaW4oKSwgZGF0YS5zaXplKCkgfTsKIH0K
IAotdm9pZCBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU6OnNldERhdGEoU3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhKQordm9pZCBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU6OnNl
dERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCiB7CiAgICAgaWYgKG1fcnRjRnJh
bWUpCiAgICAgICAgIG1fcnRjRnJhbWUtPlNldERhdGEoeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zv
cm1hYmxlRnJhbWUuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDggQEAgcHJpdmF0ZToKICAgICBMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUoc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VHJhbnNmb3JtYWJs
ZUZyYW1lSW50ZXJmYWNlPiYmLCBib29sIGlzQXVkaW9TZW5kZXJGcmFtZSk7CiAKICAgICAvLyBS
VENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEoKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoU3Bhbjxjb25zdCB1aW50OF90PikgZmluYWw7
CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCBmaW5hbDsKKyAgICB2
b2lkIHNldERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBmaW5hbDsKICAgICBib29sIGlz
S2V5RnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCB0aW1lc3RhbXAoKSBjb25zdCBm
aW5hbDsKICAgICBSVENFbmNvZGVkQXVkaW9GcmFtZU1ldGFkYXRhIGF1ZGlvTWV0YWRhdGEoKSBj
b25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENy
eXB0by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoQ3J5cHRvLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIy
IEBAIFAyNTZESEtleVBhaXIgUDI1NkRIS2V5UGFpcjo6Z2VuZXJhdGUodm8KICAgICByZXR1cm4g
eyB9OwogfQogCi1ib29sIHZhbGlkYXRlUDI1NkRIUHVibGljS2V5KFNwYW48Y29uc3QgdWludDhf
dD4pCitib29sIHZhbGlkYXRlUDI1NkRIUHVibGljS2V5KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4sIGNvbnN0
IFAyNTZESEtleVBhaXImKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVQ
MjU2REhTaGFyZWRTZWNyZXQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBjb25zdCBQMjU2REhL
ZXlQYWlyJikKIHsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1WZWN0b3I8dWludDhf
dD4gaG1hY1NIQTI1NihTcGFuPGNvbnN0IHVpbnQ4X3Q+LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KQor
VmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEyNTYoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4pCiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ00oU3Bhbjxjb25zdCB1aW50OF90
PiwgU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90PikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90Piwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4p
CiB7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTMgKzQ2LDEzIEBAIHN0cnVjdCBQMjU2REhLZXlQYWlyIHsKICAgICBzdGF0aWMgUDI1
NkRIS2V5UGFpciBnZW5lcmF0ZSh2b2lkKTsKIH07CiAKLWJvb2wgdmFsaWRhdGVQMjU2REhQdWJs
aWNLZXkoU3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXkpOworYm9vbCB2YWxpZGF0ZVAyNTZE
SFB1YmxpY0tleShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5KTsKIAotV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQoU3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXksIGNvbnN0IFAyNTZESEtleVBh
aXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21w
dXRlUDI1NkRIU2hhcmVkU2VjcmV0KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXks
IGNvbnN0IFAyNTZESEtleVBhaXImKTsKIAotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4g
bWVzc2FnZSk7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gaG1hY1NIQTI1NihzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gbWVzc2Fn
ZSk7CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNy
eXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhlclRleHRXaXRoVGFnKTsKK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBrZXksIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBpdiwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhlclRleHRXaXRoVGFnKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZTo6UHVzaENyeXB0bwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAkocmV2aXNpb24gMjkwNDcz
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIHNpemVfdCBjb21wdXRl
QUVTMTI4R0NNUGFkZGluZ0xlbgogICAgIHJldHVybiBlbmQgLSBjdXI7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjb25zdCBDbGll
bnRLZXlzJiBjbGllbnRLZXlzLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQpCitzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xp
ZW50S2V5cyYgY2xpZW50S2V5cywgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQpCiB7
CiAgICAgaWYgKCFhcmVDbGllbnRLZXlMZW5ndGhzVmFsaWQoY2xpZW50S2V5cykpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRQogICAgIG1lbWNweShrZXlJbmZvLmNsaWVudEtleSwg
Y2xpZW50S2V5cy5jbGllbnRQMjU2REhLZXlQYWlyLnB1YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1
YmxpY0tleUxlbmd0aCk7CiAgICAgbWVtY3B5KGtleUluZm8uc2VydmVyS2V5LCBoZWFkZXIuc2Vy
dmVyUHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgpOwogCi0gICAgYXV0byBpa20gPSBo
bWFjU0hBMjU2KHBya0tleSwgU3BhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigma2V5SW5m
byksIHNpemVvZihrZXlJbmZvKSkpOworICAgIGF1dG8gaWttID0gaG1hY1NIQTI1NihwcmtLZXks
IHN0ZDo6c3BhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigma2V5SW5mbyksIHNpemVvZihr
ZXlJbmZvKSkpOwogCiAgICAgLyoKICAgICAgKiAjIEhLREYtRXh0cmFjdChzYWx0LCBJS00pCkBA
IC0xNTIsNyArMTUyLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRB
RQogICAgICAqIENFSyA9IEhNQUMtU0hBLTI1NihQUkssIGNla19pbmZvIHx8IDB4MDEpWzAuLjE1
XQogICAgICAqLwogICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGNla0luZm9bXSA9ICJDb250ZW50
LUVuY29kaW5nOiBhZXMxMjhnY21ceDAwXHgwMSI7Ci0gICAgYXV0byBjZWsgPSBobWFjU0hBMjU2
KHByaywgU3BhbihjZWtJbmZvLCBzaXplb2YoY2VrSW5mbykgLSAxKSk7CisgICAgYXV0byBjZWsg
PSBobWFjU0hBMjU2KHByaywgc3RkOjpzcGFuKGNla0luZm8sIHNpemVvZihjZWtJbmZvKSAtIDEp
KTsKICAgICBjZWsuc2hyaW5rKDE2KTsKIAogICAgIC8qCkBAIC0xNjEsMTEgKzE2MSwxMSBAQCBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFCiAgICAgICogTk9OQ0UgPSBI
TUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZvIHx8IDB4MDEpWzAuLjExXQogICAgICAqLwogICAg
IHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNlSW5mb1tdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5v
bmNlXHgwMFx4MDEiOwotICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2KHByaywgU3Bhbihub25j
ZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hB
MjU2KHByaywgc3RkOjpzcGFuKG5vbmNlSW5mbywgc2l6ZW9mKG5vbmNlSW5mbykgLSAxKSk7CiAg
ICAgbm9uY2Uuc2hyaW5rKDEyKTsKIAogICAgIC8vIEZpbmFsbHksIGRlY3J5cHQgd2l0aCBBRVMx
MjhHQ00gYW5kIHJldHVybiB0aGUgdW5wYWRkZWQgcGxhaW50ZXh0LgotICAgIGF1dG8gY2lwaGVy
VGV4dCA9IFNwYW4ocGF5bG9hZC5kYXRhKCkgKyBzaXplb2YoaGVhZGVyKSwgcGF5bG9hZC5zaXpl
KCkgLSBzaXplb2YoaGVhZGVyKSk7CisgICAgYXV0byBjaXBoZXJUZXh0ID0gc3RkOjpzcGFuKHBh
eWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6ZSgpIC0gc2l6ZW9mKGhl
YWRlcikpOwogICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTShjZWss
IG5vbmNlLCBjaXBoZXJUZXh0KTsKICAgICBpZiAoIXBsYWluVGV4dFJlc3VsdCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgc2l6ZV90IGNv
bXB1dGVBRVNHQ01QYWRkaW5nTGVuZ3RoCiAgICAgcmV0dXJuIGN1ciAtIGJlZ2luOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFU0dDTVBheWxvYWQoY29uc3Qg
Q2xpZW50S2V5cyYgY2xpZW50S2V5cywgU3Bhbjxjb25zdCB1aW50OF90PiBzZXJ2ZXJQMjU2REhQ
dWJsaWNLZXksIFNwYW48Y29uc3QgdWludDhfdD4gc2FsdCwgU3Bhbjxjb25zdCB1aW50OF90PiBw
YXlsb2FkKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVNHQ01QYXls
b2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzYWx0LCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gcGF5bG9hZCkKIHsKICAgICBpZiAoIWFyZUNsaWVudEtl
eUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSB8fCBzZXJ2ZXJQMjU2REhQdWJsaWNLZXkuc2l6ZSgp
ICE9IHAyNTZkaFB1YmxpY0tleUxlbmd0aCB8fCBzYWx0LnNpemUoKSAhPSBzYWx0TGVuZ3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUUKICAgICAgKi8KICAgICBzdGF0aWMgY29u
c3QgdWludDhfdCBhdXRoSW5mb1tdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7
CiAgICAgYXV0byBwcmtDb21iaW5lID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhT
ZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0KTsKLSAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJr
Q29tYmluZSwgU3BhbihhdXRoSW5mbywgc2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRv
IGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgc3RkOjpzcGFuKGF1dGhJbmZvLCBzaXplb2Yo
YXV0aEluZm8pIC0gMSkpOwogICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihzYWx0LCBpa20pOwog
CiAgICAgLyoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3Nh
Z2VDcnlwdG8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBp
L1B1c2hNZXNzYWdlQ3J5cHRvLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTAgKzQyLDEwIEBAIHN0cnVjdCBDbGllbnRLZXlzIHsKIH07CiAKIC8vIERlY3J5cHRzIGEg
cHVzaCBwYXlsb2FkIGVuY29kZWQgd2l0aCB0aGUgYWVzMTI4Z2NtIENvbnRlbnQtRW5jb2Rpbmcg
YXMgZGVzY3JpYmVkIGluIFJGQzgyOTEuCi1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYs
IFNwYW48Y29uc3QgdWludDhfdD4gcGF5bG9hZCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xpZW50
S2V5cyYsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBwYXlsb2FkKTsKIAogLy8gRGVjcnlwdHMg
YSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXNnY20gQ29udGVudC1FbmNvZGluZyBh
cyBkZXNjcmliZWQgaW4gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24tMDQuCi1XRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFU0dDTVBheWxv
YWQoY29uc3QgQ2xpZW50S2V5cyYsIFNwYW48Y29uc3QgdWludDhfdD4gc2VydmVyUDI1NkRIUHVi
bGljS2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNhbHQsIFNwYW48Y29uc3QgdWludDhfdD4gcGF5
bG9hZCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVj
cnlwdEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYsIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzYWx0
LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gcGF5bG9hZCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmU6OlB1c2hDcnlwdG8KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFw
aS9jb2NvYS9QdXNoQ3J5cHRvQ29jb2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcAkocmV2aXNpb24gMjkw
NDczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRv
Q29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIFAyNTZESEtleVBhaXIg
UDI1NkRIS2V5UGFpcjo6Z2VuZXJhdGUodm8KICAgICB9OwogfQogCi1ib29sIHZhbGlkYXRlUDI1
NkRIUHVibGljS2V5KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5KQorYm9vbCB2YWxpZGF0
ZVAyNTZESFB1YmxpY0tleShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5KQogewog
ICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0gbnVsbHB0cjsKICAgICBDQ0NyeXB0b3JT
dGF0dXMgc3RhdHVzID0gQ0NFQ0NyeXB0b3JJbXBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBw
dWJsaWNLZXkuZGF0YSgpLCBwdWJsaWNLZXkuc2l6ZSgpLCBjY0VDS2V5UHVibGljLCAmY2NQdWJs
aWNLZXkpOwpAQCAtNzUsNyArNzUsNyBAQCBib29sIHZhbGlkYXRlUDI1NkRIUHVibGljS2V5KFNw
YW48Y29uc3QgCiAgICAgcmV0dXJuIHN0YXR1cyA9PSBrQ0NTdWNjZXNzOwogfQogCi1zdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNv
bnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSwgY29uc3QgUDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXksIGNvbnN0IFAyNTZESEtleVBhaXImIGtl
eVBhaXIpCiB7CiAgICAgaWYgKHB1YmxpY0tleS5zaXplKCkgIT0gcDI1NmRoUHVibGljS2V5TGVu
Z3RoIHx8IGtleVBhaXIucHVibGljS2V5LnNpemUoKSAhPSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgg
fHwga2V5UGFpci5wcml2YXRlS2V5LnNpemUoKSAhPSBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTA3LDIwICsxMDcsMjAgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVQMgogICAgIHJldHVybiBzaGFyZWRTZWNy
ZXQ7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4g
a2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpCitWZWN0b3I8dWludDhfdD4gaG1hY1NI
QTI1NihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gbWVzc2FnZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExl
bmd0aCk7CiAgICAgQ0NIbWFjKGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXpl
KCksIG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSwgcmVzdWx0LmJlZ2luKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNy
eXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhlclRleHRXaXRoVGFnKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ00oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGtleSwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gY2lwaGVyVGV4dFdpdGhUYWcpCiB7CiAgICAgaWYgKGNpcGhlclRleHRXaXRoVGFnLnNp
emUoKSA8IGFlczEyOEdDTVRhZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBwbGFpblRleHQoY2lwaGVyVGV4dFdpdGhUYWcuc2l6ZSgp
IC0gYWVzMTI4R0NNVGFnTGVuZ3RoKTsKLSAgICBhdXRvIHJlc3VsdCA9IENDQ3J5cHRvckdDTU9u
ZXNob3REZWNyeXB0KGtDQ0FsZ29yaXRobUFFUywga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgaXYu
ZGF0YSgpLCBpdi5zaXplKCksIG51bGxwdHIgLyogYWRkaXRpb25hbERhdGEgKi8sIDAgLyogYWRk
aXRpb25hbERhdGFMZW5ndGggKi8sIGNpcGhlclRleHRXaXRoVGFnLmRhdGEoKSwgY2lwaGVyVGV4
dFdpdGhUYWcuc2l6ZSgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBwbGFpblRleHQuZGF0YSgpLCBj
aXBoZXJUZXh0V2l0aFRhZy5lbmQoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgYWVzMTI4R0NNVGFn
TGVuZ3RoKTsKKyAgICBhdXRvIHJlc3VsdCA9IENDQ3J5cHRvckdDTU9uZXNob3REZWNyeXB0KGtD
Q0FsZ29yaXRobUFFUywga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgaXYuZGF0YSgpLCBpdi5zaXpl
KCksIG51bGxwdHIgLyogYWRkaXRpb25hbERhdGEgKi8sIDAgLyogYWRkaXRpb25hbERhdGFMZW5n
dGggKi8sIGNpcGhlclRleHRXaXRoVGFnLmRhdGEoKSwgY2lwaGVyVGV4dFdpdGhUYWcuc2l6ZSgp
IC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBwbGFpblRleHQuZGF0YSgpLCAmKmNpcGhlclRleHRXaXRo
VGFnLmVuZCgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBhZXMxMjhHQ01UYWdMZW5ndGgpOwogICAg
IGlmIChyZXN1bHQgIT0ga0NDU3VjY2VzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmUKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2FsbGJhY2spIHsKLSAgICAgICAgU3BhbiBjaHVu
ayB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSB9OworICAgICAgICBzdGQ6OnNwYW4g
Y2h1bmsgeyBidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkgfTsKICAgICAgICAgbV9jYWxs
YmFjaygmY2h1bmspOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgJKHJldmlzaW9uIDI5MDQ3MykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlYWRhYmxlU3Ry
ZWFtVG9TaGFyZWRCdWZmZXJTaW5rIGZpbmFsIDogcHVibGljIFJlYWRhYmxlU3RyZWFtU2luayB7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9y
PFNwYW48Y29uc3QgdWludDhfdD4qPiYmKT47CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pio+JiYpPjsKICAgICBz
dGF0aWMgUmVmPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBjcmVhdGUoQ2FsbGJh
Y2smJiBjYWxsYmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luayhXVEZNb3ZlKGNhbGxiYWNrKSkpOyB9CiAgICAgdm9pZCBwaXBlRnJvbShS
ZWFkYWJsZVN0cmVhbSYpOwogICAgIHZvaWQgY2xlYXJDYWxsYmFjaygpIHsgbV9jYWxsYmFjayA9
IHsgfTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUwLDcgKzI5NTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmluaGVyaXRzCiAgICAgLy8gdGhvc2UgY2hpbGQgZWxlbWVudHMgYXJlIGFs
c28gcHJlc2VudGF0aW9uYWwuIEZvciBleGFtcGxlLCA8bGk+IGJlY29tZXMgcHJlc2VudGF0aW9u
YWwgZnJvbSA8dWw+LgogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhL2NvbXBs
ZXRlI3ByZXNlbnRhdGlvbgogCi0gICAgU3BhbjxkZWNsdHlwZShhVGFnKSogY29uc3Q+IHBhcmVu
dFRhZ3M7CisgICAgc3RkOjpzcGFuPGRlY2x0eXBlKGFUYWcpKiBjb25zdD4gcGFyZW50VGFnczsK
ICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGlzdEl0ZW06CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdE1hcmtlcjogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ29tcGlsZWRD
b250ZW50RXh0ZQogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXBpbGVkQ29udGVudEV4dGVuc2lv
bigpOwogCi0gICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHVybEZpbHRlcnNCeXRlY29k
ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFNwYW48Y29uc3QgdWludDhfdD4gdG9wVVJMRmls
dGVyc0J5dGVjb2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3Bhbjxjb25zdCB1aW50OF90
PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFNwYW48
Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFjdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdXJsRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRvcFVSTEZpbHRlcnNCeXRl
Y29kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBm
cmFtZVVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9ucygpIGNvbnN0ID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkFjdGlvbnMuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDMzICs0MSwzMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSk7CiAgICAgdWludDMyX3QgaW50ZWdlciA9IGxlbmd0aDsKLSAgICB2ZWN0
b3IuYXBwZW5kKFNwYW48Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPigmaW50ZWdlciksIHNpemVvZihpbnRlZ2VyKSB9KTsKKyAgICB2ZWN0b3IuYXBwZW5k
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KCZpbnRlZ2VyKSwgc2l6ZW9mKGludGVnZXIpIH0pOwogfQogCiBzdGF0aWMgdm9pZCB1bmNo
ZWNrZWRBcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKSk7CiAgICAgdWludDMyX3QgaW50ZWdlciA9IGxlbmd0aDsKLSAgICB2ZWN0b3IudW5j
aGVja2VkQXBwZW5kKFNwYW48Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPigmaW50ZWdlciksIHNpemVvZihpbnRlZ2VyKSB9KTsKKyAgICB2ZWN0b3IudW5j
aGVja2VkQXBwZW5kKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KCZpbnRlZ2VyKSwgc2l6ZW9mKGludGVnZXIpIH0pOwogfQogCiBzdGF0
aWMgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0
cmluZykKIHsKLSAgICB2ZWN0b3IuYXBwZW5kKFNwYW48Y29uc3QgdWludDhfdD4geyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuZGF0YSgpKSwgc3RyaW5nLmxlbmd0aCgp
IH0pOworICAgIHZlY3Rvci5hcHBlbmQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmRhdGEoKSksIHN0cmluZy5sZW5ndGgo
KSB9KTsKIH0KIAogc3RhdGljIHZvaWQgdW5jaGVja2VkQXBwZW5kKFZlY3Rvcjx1aW50OF90PiYg
dmVjdG9yLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgdmVjdG9yLnVuY2hlY2tlZEFw
cGVuZChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oc3RyaW5nLmRhdGEoKSksIHN0cmluZy5sZW5ndGgoKSB9KTsKKyAgICB2ZWN0b3IudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBzdHJpbmcubGVuZ3RoKCkgfSk7CiB9CiAKLXN0
YXRpYyBzaXplX3QgZGVzZXJpYWxpemVMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuLCBz
aXplX3Qgb2Zmc2V0KQorc3RhdGljIHNpemVfdCBkZXNlcmlhbGl6ZUxlbmd0aChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gc3Bhbiwgc2l6ZV90IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChzcGFuLnNpemUoKSA+PSBvZmZzZXQgKyBzaXplb2YodWludDMyX3QpKTsKICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzcGFuLmRhdGEoKSArIG9mZnNldCk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgZGVzZXJpYWxpemVVVEY4U3RyaW5nKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3Bhbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBTdHJpbmcg
ZGVzZXJpYWxpemVVVEY4U3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHNwYW4uc2l6
ZSgpID49IG9mZnNldCArIGxlbmd0aCk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3Bh
bi5kYXRhKCkgKyBvZmZzZXQsIGxlbmd0aCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBNb2Rp
ZnlIZWFkZXJzQWN0aW9uOjpzZXJpYWxpemUoVmVjdAogICAgIHdyaXRlTGVuZ3RoVG9WZWN0b3JB
dE9mZnNldCh2ZWN0b3IsIGJlZ2luSW5kZXgpOwogfQogCi1Nb2RpZnlIZWFkZXJzQWN0aW9uIE1v
ZGlmeUhlYWRlcnNBY3Rpb246OmRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikK
K01vZGlmeUhlYWRlcnNBY3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6ZGVzZXJpYWxpemUoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCiB7CiAgICAgYXV0byBzZXJpYWxpemVkTGVuZ3Ro
ID0gZGVzZXJpYWxpemVMZW5ndGgoc3BhbiwgMCk7CiAgICAgYXV0byByZXF1ZXN0SGVhZGVyc0xl
bmd0aCA9IGRlc2VyaWFsaXplTGVuZ3RoKHNwYW4sIHNpemVvZih1aW50MzJfdCkpOwpAQCAtMTY1
LDcgKzE2NSw3IEBAIE1vZGlmeUhlYWRlcnNBY3Rpb24gTW9kaWZ5SGVhZGVyc0FjdGlvbjoKICAg
ICByZXR1cm4geyBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSwgV1RGTW92ZShyZXNwb25zZUhlYWRl
cnMpIH07CiB9CiAKLXNpemVfdCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpzZXJpYWxpemVkTGVuZ3Ro
KFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKK3NpemVfdCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpz
ZXJpYWxpemVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQogewogICAgIHJl
dHVybiBkZXNlcmlhbGl6ZUxlbmd0aChzcGFuLCAwKTsKIH0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2
b2lkIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluCiAgICAgd3JpdGVMZW5ndGhU
b1ZlY3RvckF0T2Zmc2V0KHZlY3RvciwgYmVnaW5JbmRleCk7CiB9CiAKLWF1dG8gTW9kaWZ5SGVh
ZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6ZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50
OF90PiBzcGFuKSAtPiBNb2RpZnlIZWFkZXJJbmZvCithdXRvIE1vZGlmeUhlYWRlcnNBY3Rpb246
Ok1vZGlmeUhlYWRlckluZm86OmRlc2VyaWFsaXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBz
cGFuKSAtPiBNb2RpZnlIZWFkZXJJbmZvCiB7CiAgICAgY29uc3RleHByIGF1dG8gaGVhZGVyU2l6
ZSA9IHNpemVvZih1aW50MzJfdCkgKyBzaXplb2YodWludDhfdCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoc3Bhbi5zaXplKCkgPj0gaGVhZGVyU2l6ZSk7CkBAIC0yNzUsNyArMjc1LDcgQEAgYXV0byBN
b2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbgogICAgIH0oKSB9OwogfQogCi1zaXpl
X3QgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6c2VyaWFsaXplZExlbmd0
aChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCitzaXplX3QgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6
TW9kaWZ5SGVhZGVySW5mbzo6c2VyaWFsaXplZExlbmd0aChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gc3BhbikKIHsKICAgICByZXR1cm4gZGVzZXJpYWxpemVMZW5ndGgoc3BhbiwgMCk7CiB9CkBA
IC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6c2VyaWFsaXplKFZlY3Rvcjx1
aQogICAgIHdyaXRlTGVuZ3RoVG9WZWN0b3JBdE9mZnNldCh2ZWN0b3IsIGJlZ2luSW5kZXgpOwog
fQogCi1SZWRpcmVjdEFjdGlvbiBSZWRpcmVjdEFjdGlvbjo6ZGVzZXJpYWxpemUoU3Bhbjxjb25z
dCB1aW50OF90PiBzcGFuKQorUmVkaXJlY3RBY3Rpb24gUmVkaXJlY3RBY3Rpb246OmRlc2VyaWFs
aXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQogewogICAgIGNvbnN0ZXhwciBhdXRv
IGhlYWRlclNpemUgPSBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVpbnQ4X3QpOwogICAgIGF1
dG8gc3RyaW5nTGVuZ3RoID0gZGVzZXJpYWxpemVMZW5ndGgoc3BhbiwgMCkgLSBoZWFkZXJTaXpl
OwpAQCAtMzY0LDcgKzM2NCw3IEBAIFJlZGlyZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjpkZXNl
cmlhbGkKICAgICB9KCkgfTsKIH0KIAotc2l6ZV90IFJlZGlyZWN0QWN0aW9uOjpzZXJpYWxpemVk
TGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKK3NpemVfdCBSZWRpcmVjdEFjdGlvbjo6
c2VyaWFsaXplZExlbmd0aChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKICAgICBy
ZXR1cm4gZGVzZXJpYWxpemVMZW5ndGgoc3BhbiwgMCk7CiB9CkBAIC01MzUsNyArNTM1LDcgQEAg
dm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOgogICAgIHdyaXRlTGVuZ3Ro
VG9WZWN0b3JBdE9mZnNldCh2ZWN0b3IsIGJlZ2luSW5kZXgpOwogfQogCi1hdXRvIFJlZGlyZWN0
QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OmRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhf
dD4gc3BhbikgLT4gVVJMVHJhbnNmb3JtQWN0aW9uCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxU
cmFuc2Zvcm1BY3Rpb246OmRlc2VyaWFsaXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFu
KSAtPiBVUkxUcmFuc2Zvcm1BY3Rpb24KIHsKICAgICBjb25zdGV4cHIgYXV0byBoZWFkZXJMZW5n
dGggPSBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVpbnQ4X3QpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHNwYW4uc2l6ZSgpID49IGhlYWRlckxlbmd0aCk7CkBAIC01OTgsNyArNTk4LDcgQEAgYXV0
byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOgogICAgIH07CiB9CiAKLXNpemVf
dCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpzZXJpYWxpemVkTGVuZ3RoKFNw
YW48Y29uc3QgdWludDhfdD4gc3BhbikKK3NpemVfdCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNm
b3JtQWN0aW9uOjpzZXJpYWxpemVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFu
KQogewogICAgIHJldHVybiBkZXNlcmlhbGl6ZUxlbmd0aChzcGFuLCAwKTsKIH0KQEAgLTczMCw3
ICs3MzAsNyBAQCB2b2lkIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246CiAgICAg
d3JpdGVMZW5ndGhUb1ZlY3RvckF0T2Zmc2V0KHZlY3RvciwgYmVnaW5JbmRleCk7CiB9CiAKLWF1
dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OmRl
c2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgLT4gUXVlcnlUcmFuc2Zvcm0KK2F1
dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OmRl
c2VyaWFsaXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSAtPiBRdWVyeVRyYW5zZm9y
bQogewogICAgIGF1dG8gc2VyaWFsaXplZExlbmd0aCA9IGRlc2VyaWFsaXplTGVuZ3RoKHNwYW4s
IDApOwogICAgIGF1dG8ga2V5VmFsdWVzU2VyaWFsaXplZExlbmd0aCA9IGRlc2VyaWFsaXplTGVu
Z3RoKHNwYW4sIHNpemVvZih1aW50MzJfdCkpOwpAQCAtNzUzLDcgKzc1Myw3IEBAIGF1dG8gUmVk
aXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjoKICAgICByZXR1cm4geyBXVEZNb3ZlKHF1
ZXJ5S2V5VmFsdWVzKSwgV1RGTW92ZShzdHJpbmdzKSB9OwogfQogCi1zaXplX3QgUmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OnNlcmlhbGl6ZWRMZW5n
dGgoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQorc2l6ZV90IFJlZGlyZWN0QWN0aW9uOjpVUkxU
cmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpzZXJpYWxpemVkTGVuZ3RoKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBzcGFuKQogewogICAgIHJldHVybiBkZXNlcmlhbGl6ZUxlbmd0aChz
cGFuLCAwKTsKIH0KQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIFJlZGlyZWN0QWN0aW9uOjpVUkxU
cmFuc2Zvcm1BY3Rpb246CiAgICAgdW5jaGVja2VkQXBwZW5kKHZlY3RvciwgdmFsdWVVVEY4KTsK
IH0KIAotYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5z
Zm9ybTo6UXVlcnlLZXlWYWx1ZTo6ZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFu
KSAtPiBRdWVyeUtleVZhbHVlCithdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rp
b246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpkZXNlcmlhbGl6ZShzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gc3BhbikgLT4gUXVlcnlLZXlWYWx1ZQogewogICAgIC8vIEZJWE1FOiBV
c2luZyBudWxsIHRlcm1pbmF0ZWQgc3RyaW5ncyB3b3VsZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXpl
IGNvbnNpZGVyYWJseS4KICAgICAvLyBXZSB3b3VsZCBuZWVkIHRvIGRpc2FsbG93IG51bGwgc3Ry
aW5ncyB3aGVuIHBhcnNpbmcsIHRob3VnaC4KQEAgLTgyNSw3ICs4MjUsNyBAQCBhdXRvIFJlZGly
ZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246CiAgICAgcmV0dXJuIHsgV1RGTW92ZShrZXkp
LCByZXBsYWNlT25seSwgV1RGTW92ZSh2YWx1ZSkgfTsKIH0KIAotc2l6ZV90IFJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpz
ZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKK3NpemVfdCBSZWRpcmVj
dEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlWYWx1
ZTo6c2VyaWFsaXplZExlbmd0aChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKICAg
ICByZXR1cm4gZGVzZXJpYWxpemVMZW5ndGgoc3BhbiwgMCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25B
Y3Rpb25zLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDgg
KzY5LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFjdGlvbldpdGhvdQogICAgIFQg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEFjdGlvbldpdGhvdXRNZXRhZGF0YSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IH0KLSAgICBzdGF0aWMg
VCBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KSB7IHJldHVybiB7IH07IH0KLSAgICBz
dGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PikgeyByZXR1
cm4gMDsgfQorICAgIHN0YXRpYyBUIGRlc2VyaWFsaXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PikgeyByZXR1cm4geyB9OyB9CisgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PikgeyByZXR1cm4gMDsgfQogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSB7CkBAIC03OCw4ICs3OCw4
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRoU3QKICAgICBUIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgeyBzdHJpbmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnN0cmluZyA9PSB0aGlzLT5zdHJpbmc7IH0KICAgICB2
b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QgeyBzZXJpYWxpemVT
dHJpbmcodmVjdG9yLCBzdHJpbmcpOyB9Ci0gICAgc3RhdGljIFQgZGVzZXJpYWxpemUoU3Bhbjxj
b25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmcoc3Bhbikg
fSB9OyB9Ci0gICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikgeyByZXR1cm4gc3RyaW5nU2VyaWFsaXplZExlbmd0aChzcGFuKTsgfQorICAg
IHN0YXRpYyBUIGRlc2VyaWFsaXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7IHJl
dHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmcoc3BhbikgfSB9OyB9CisgICAgc3RhdGljIHNpemVf
dCBzZXJpYWxpemVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVy
biBzdHJpbmdTZXJpYWxpemVkTGVuZ3RoKHNwYW4pOyB9CiB9OwogCiBzdHJ1Y3QgQmxvY2tMb2Fk
QWN0aW9uIDogcHVibGljIEFjdGlvbldpdGhvdXRNZXRhZGF0YTxCbG9ja0xvYWRBY3Rpb24+IHsg
fTsKQEAgLTEyMiw4ICsxMjIsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9kaWZ5SGVhZGVy
c0FjdGlvCiAgICAgICAgIE1vZGlmeUhlYWRlckluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJJbmZvJikgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwotICAgICAgICBz
dGF0aWMgTW9kaWZ5SGVhZGVySW5mbyBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsK
LSAgICAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhf
dD4pOworICAgICAgICBzdGF0aWMgTW9kaWZ5SGVhZGVySW5mbyBkZXNlcmlhbGl6ZShzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pOworICAgICAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5n
dGgoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICAgICAgdm9pZCBhcHBseVRvUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB9OwogCkBAIC0xNDcsOCArMTQ3LDggQEAgc3RydWN0
IFdFQkNPUkVfRVhQT1JUIE1vZGlmeUhlYWRlcnNBY3RpbwogICAgIE1vZGlmeUhlYWRlcnNBY3Rp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vZGlm
eUhlYWRlcnNBY3Rpb24mKSBjb25zdDsKICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhf
dD4mKSBjb25zdDsKLSAgICBzdGF0aWMgTW9kaWZ5SGVhZGVyc0FjdGlvbiBkZXNlcmlhbGl6ZShT
cGFuPGNvbnN0IHVpbnQ4X3Q+KTsKLSAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgo
U3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgc3RhdGljIE1vZGlmeUhlYWRlcnNBY3Rpb24gZGVz
ZXJpYWxpemUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICBzdGF0aWMgc2l6ZV90IHNl
cmlhbGl6ZWRMZW5ndGgoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICB2b2lkIGFwcGx5
VG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogfTsKIApAQCAtMTc5LDggKzE3OSw4IEBAIHN0
cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICAgICAgUXVl
cnlLZXlWYWx1ZSBpc29sYXRlZENvcHkoKSBjb25zdDsKICAgICAgICAgICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYpIGNvbnN0OwogICAgICAgICAgICAgICAgIHZv
aWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwotICAgICAgICAgICAgICAgIHN0
YXRpYyBRdWVyeUtleVZhbHVlIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwotICAg
ICAgICAgICAgICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVp
bnQ4X3Q+KTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgUXVlcnlLZXlWYWx1ZSBkZXNlcmlhbGl6
ZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgICAgICAgICAgICAgIHN0YXRpYyBzaXpl
X3Qgc2VyaWFsaXplZExlbmd0aChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgICAgICAg
ICAgfTsKIAogICAgICAgICAgICAgVmVjdG9yPFF1ZXJ5S2V5VmFsdWU+IGFkZE9yUmVwbGFjZVBh
cmFtczsKQEAgLTE5MSw4ICsxOTEsOCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RB
Y3Rpb24gewogICAgICAgICAgICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mKSBjb25z
dDsKICAgICAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0Owot
ICAgICAgICAgICAgc3RhdGljIFF1ZXJ5VHJhbnNmb3JtIGRlc2VyaWFsaXplKFNwYW48Y29uc3Qg
dWludDhfdD4pOwotICAgICAgICAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNw
YW48Y29uc3QgdWludDhfdD4pOworICAgICAgICAgICAgc3RhdGljIFF1ZXJ5VHJhbnNmb3JtIGRl
c2VyaWFsaXplKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgICAgICAgICBzdGF0aWMg
c2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICAg
ICAgICAgIHZvaWQgYXBwbHlUb1VSTChVUkwmKSBjb25zdDsKICAgICAgICAgfTsKIApAQCAtMjEx
LDggKzIxMSw4IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAg
ICAgIFVSTFRyYW5zZm9ybUFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVSTFRyYW5zZm9ybUFjdGlvbiYpIGNvbnN0OwogICAgICAgICB2
b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKLSAgICAgICAgc3RhdGljIFVS
TFRyYW5zZm9ybUFjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKLSAgICAg
ICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pOwor
ICAgICAgICBzdGF0aWMgVVJMVHJhbnNmb3JtQWN0aW9uIGRlc2VyaWFsaXplKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90Pik7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgICAgICB2b2lkIGFwcGx5VG9VUkwoVVJMJikg
Y29uc3Q7CiAgICAgfTsKICAgICBzdHJ1Y3QgVVJMQWN0aW9uIHsKQEAgLTI0Miw4ICsyNDIsOCBA
QCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgIFJlZGlyZWN0QWN0
aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWRp
cmVjdEFjdGlvbiYpIGNvbnN0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWRpcmVjdEFjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0
IHVpbnQ4X3Q+KTsKLSAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25z
dCB1aW50OF90Pik7CisgICAgc3RhdGljIFJlZGlyZWN0QWN0aW9uIGRlc2VyaWFsaXplKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3Ro
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgdm9pZCBhcHBseVRvUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAJ
KHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25SdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDEzIEBA
IENvbnRlbnRFeHRlbnNpb25SdWxlOjpDb250ZW50RXh0ZW5zaW9uUnUKIHRlbXBsYXRlPHNpemVf
dCBpbmRleCwgdHlwZW5hbWUuLi4gVHlwZXM+CiBzdHJ1Y3QgVmFyaWFudERlc2VyaWFsaXplckhl
bHBlciB7CiAgICAgdXNpbmcgVmFyaWFudFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnZhcmlhbnRfYWx0
ZXJuYXRpdmU8aW5kZXgsIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4+Ojp0eXBlOwotICAgIHN0YXRp
YyBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+IGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4g
c3Bhbiwgc2l6ZV90IGkpCisgICAgc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gZGVzZXJp
YWxpemUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4sIHNpemVfdCBpKQogICAgIHsKICAg
ICAgICAgaWYgKGkgPT0gaW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFudFR5cGU6OmRl
c2VyaWFsaXplKHNwYW4pOwogICAgICAgICByZXR1cm4gVmFyaWFudERlc2VyaWFsaXplckhlbHBl
cjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZGVzZXJpYWxpemUoc3BhbiwgaSk7CiAgICAgfQotICAg
IHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4s
IHNpemVfdCBpKQorICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gc3Bhbiwgc2l6ZV90IGkpCiAgICAgewogICAgICAgICBpZiAoaSA9PSBp
bmRleCkKICAgICAgICAgICAgIHJldHVybiBWYXJpYW50VHlwZTo6c2VyaWFsaXplZExlbmd0aChz
cGFuKTsKQEAgLTU5LDEyICs1OSwxMiBAQCBzdHJ1Y3QgVmFyaWFudERlc2VyaWFsaXplckhlbHBl
ciB7CiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4KIHN0cnVjdCBWYXJpYW50RGVzZXJpYWxp
emVySGVscGVyPDAsIFR5cGVzLi4uPiB7CiAgICAgdXNpbmcgVmFyaWFudFR5cGUgPSB0eXBlbmFt
ZSBzdGQ6OnZhcmlhbnRfYWx0ZXJuYXRpdmU8MCwgc3RkOjp2YXJpYW50PFR5cGVzLi4uPj46OnR5
cGU7Ci0gICAgc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gZGVzZXJpYWxpemUoU3Bhbjxj
b25zdCB1aW50OF90PiBzcGFuLCBzaXplX3QgaSkKKyAgICBzdGF0aWMgc3RkOjp2YXJpYW50PFR5
cGVzLi4uPiBkZXNlcmlhbGl6ZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gc3Bhbiwgc2l6ZV90
IGkpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGksICFpKTsKICAgICAgICAgcmV0dXJu
IFZhcmlhbnRUeXBlOjpkZXNlcmlhbGl6ZShzcGFuKTsKICAgICB9Ci0gICAgc3RhdGljIHNpemVf
dCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4gc3Bhbiwgc2l6ZV90IGkpCisg
ICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBzcGFuLCBzaXplX3QgaSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaSwgIWkpOwog
ICAgICAgICByZXR1cm4gVmFyaWFudFR5cGU6OnNlcmlhbGl6ZWRMZW5ndGgoc3Bhbik7CkBAIC03
MywyMyArNzMsMjMgQEAgc3RydWN0IFZhcmlhbnREZXNlcmlhbGl6ZXJIZWxwZXI8MCwgVHlwZQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFyaWFudERlc2VyaWFsaXplcjsKIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgVmFyaWFudERlc2VyaWFsaXplcjxzdGQ6OnZh
cmlhbnQ8VHlwZXMuLi4+PiB7Ci0gICAgc3RhdGljIHN0ZDo6dmFyaWFudDxUeXBlcy4uLj4gZGVz
ZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuLCBzaXplX3QgaSkKKyAgICBzdGF0aWMg
c3RkOjp2YXJpYW50PFR5cGVzLi4uPiBkZXNlcmlhbGl6ZShzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gc3Bhbiwgc2l6ZV90IGkpCiAgICAgewogICAgICAgICByZXR1cm4gVmFyaWFudERlc2VyaWFs
aXplckhlbHBlcjxzaXplb2YuLi4oVHlwZXMpIC0gMSwgVHlwZXMuLi4+OjpkZXNlcmlhbGl6ZShz
cGFuLCBpKTsKICAgICB9Ci0gICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48
Y29uc3QgdWludDhfdD4gc3Bhbiwgc2l6ZV90IGkpCisgICAgc3RhdGljIHNpemVfdCBzZXJpYWxp
emVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuLCBzaXplX3QgaSkKICAgICB7
CiAgICAgICAgIHJldHVybiBWYXJpYW50RGVzZXJpYWxpemVySGVscGVyPHNpemVvZi4uLihUeXBl
cykgLSAxLCBUeXBlcy4uLj46OnNlcmlhbGl6ZWRMZW5ndGgoc3BhbiwgaSk7CiAgICAgfQogfTsK
IAotRGVzZXJpYWxpemVkQWN0aW9uIERlc2VyaWFsaXplZEFjdGlvbjo6ZGVzZXJpYWxpemUoU3Bh
bjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9ucywgdWludDMyX3QgbG9jYXRpb24pCitE
ZXNlcmlhbGl6ZWRBY3Rpb24gRGVzZXJpYWxpemVkQWN0aW9uOjpkZXNlcmlhbGl6ZShzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFjdGlvbnMsIHVpbnQzMl90IGxvY2F0aW9uKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGxvY2F0aW9uIDwgc2VyaWFsaXplZEFjdGlvbnMuc2l6ZSgp
KTsKICAgICByZXR1cm4geyBsb2NhdGlvbiwgVmFyaWFudERlc2VyaWFsaXplcjxBY3Rpb25EYXRh
Pjo6ZGVzZXJpYWxpemUoc2VyaWFsaXplZEFjdGlvbnMuc3Vic3Bhbihsb2NhdGlvbiArIDEpLCBz
ZXJpYWxpemVkQWN0aW9uc1tsb2NhdGlvbl0pIH07CiB9CiAKLXNpemVfdCBEZXNlcmlhbGl6ZWRB
Y3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0
aW9ucywgdWludDMyX3QgbG9jYXRpb24pCitzaXplX3QgRGVzZXJpYWxpemVkQWN0aW9uOjpzZXJp
YWxpemVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9ucywg
dWludDMyX3QgbG9jYXRpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobG9jYXRpb24gPCBzZXJp
YWxpemVkQWN0aW9ucy5zaXplKCkpOwogICAgIHJldHVybiAxICsgVmFyaWFudERlc2VyaWFsaXpl
cjxBY3Rpb25EYXRhPjo6c2VyaWFsaXplZExlbmd0aChzZXJpYWxpemVkQWN0aW9ucy5zdWJzcGFu
KGxvY2F0aW9uICsgMSksIHNlcmlhbGl6ZWRBY3Rpb25zW2xvY2F0aW9uXSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25SdWxlLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw4ICsx
MzMsOCBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IERlc2VyaWFsaXplZEFjdGlvbiA6IHB1Ymxp
YyBBY3Rpb24gewotICAgIHN0YXRpYyBEZXNlcmlhbGl6ZWRBY3Rpb24gZGVzZXJpYWxpemUoU3Bh
bjxjb25zdCB1aW50OF90PiwgdWludDMyX3QgbG9jYXRpb24pOwotICAgIHN0YXRpYyBzaXplX3Qg
c2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+LCB1aW50MzJfdCBsb2NhdGlvbik7
CisgICAgc3RhdGljIERlc2VyaWFsaXplZEFjdGlvbiBkZXNlcmlhbGl6ZShzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4sIHVpbnQzMl90IGxvY2F0aW9uKTsKKyAgICBzdGF0aWMgc2l6ZV90IHNlcmlh
bGl6ZWRMZW5ndGgoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCB1aW50MzJfdCBsb2NhdGlvbik7
CiAKICAgICB1aW50MzJfdCBhY3Rpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uSUQ7IH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blN0cmluZ1NlcmlhbGl6YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25TdHJpbmdTZXJpYWxpemF0aW9uLmNwcAko
cmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblN0cmluZ1NlcmlhbGl6YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAK
LVN0cmluZyBkZXNlcmlhbGl6ZVN0cmluZyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCitTdHJp
bmcgZGVzZXJpYWxpemVTdHJpbmcoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCiB7CiAg
ICAgYXV0byBzZXJpYWxpemVkTGVuZ3RoID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihzcGFuLmRhdGEoKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3Bhbi5kYXRh
KCkgKyBzaXplb2YodWludDMyX3QpLCBzZXJpYWxpemVkTGVuZ3RoIC0gc2l6ZW9mKHVpbnQzMl90
KSk7CkBAIC00MSwxMSArNDEsMTEgQEAgdm9pZCBzZXJpYWxpemVTdHJpbmcoVmVjdG9yPHVpbnQ4
X3Q+JiBhYwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CiAgICAgdWludDMyX3Qgc2Vy
aWFsaXplZExlbmd0aCA9IHNpemVvZih1aW50MzJfdCkgKyB1dGY4Lmxlbmd0aCgpOwogICAgIGFj
dGlvbnMucmVzZXJ2ZUNhcGFjaXR5KGFjdGlvbnMuc2l6ZSgpICsgc2VyaWFsaXplZExlbmd0aCk7
Ci0gICAgYWN0aW9ucy51bmNoZWNrZWRBcHBlbmQoU3Bhbjxjb25zdCB1aW50OF90PiB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZzZXJpYWxpemVkTGVuZ3RoKSwgc2l6ZW9mKHNl
cmlhbGl6ZWRMZW5ndGgpIH0pOwotICAgIGFjdGlvbnMudW5jaGVja2VkQXBwZW5kKFNwYW48Y29u
c3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEo
KSksIHV0ZjgubGVuZ3RoKCkgfSk7CisgICAgYWN0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnNl
cmlhbGl6ZWRMZW5ndGgpLCBzaXplb2Yoc2VyaWFsaXplZExlbmd0aCkgfSk7CisgICAgYWN0aW9u
cy51bmNoZWNrZWRBcHBlbmQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpIH0pOwogfQog
Ci1zaXplX3Qgc3RyaW5nU2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4p
CitzaXplX3Qgc3RyaW5nU2VyaWFsaXplZExlbmd0aChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
c3BhbikKIHsKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihz
cGFuLmRhdGEoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uU3RyaW5nU2VyaWFsaXphdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25TdHJpbmdTZXJpYWxp
emF0aW9uLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25TdHJpbmdTZXJpYWxpemF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDggKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
cyB7CiAKIHZvaWQgc2VyaWFsaXplU3RyaW5nKFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFN0cmlu
ZyYpOwotU3RyaW5nIGRlc2VyaWFsaXplU3RyaW5nKFNwYW48Y29uc3QgdWludDhfdD4pOwotc2l6
ZV90IHN0cmluZ1NlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90Pik7CitTdHJpbmcg
ZGVzZXJpYWxpemVTdHJpbmcoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKK3NpemVfdCBzdHJp
bmdTZXJpYWxpemVkTGVuZ3RoKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMg
KzM0LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KLXN0YXRpYyBJbnRUeXBlIGdldEJpdHMoU3Bhbjxjb25z
dCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QgaW5kZXgpCitzdGF0aWMgSW50VHlwZSBnZXRC
aXRzKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QgaW5kZXgpCiB7
CiAgICAgQVNTRVJUKGluZGV4ICsgc2l6ZW9mKEludFR5cGUpIDw9IGJ5dGVjb2RlLnNpemUoKSk7
CiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEludFR5cGUqPihieXRlY29kZS5k
YXRhKCkgKyBpbmRleCk7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCBnZXQyNEJpdHNVbnNpZ25lZChT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCkKK3N0YXRpYyB1aW50
MzJfdCBnZXQyNEJpdHNVbnNpZ25lZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUs
IHVpbnQzMl90IGluZGV4KQogewogICAgIEFTU0VSVChpbmRleCArIFVJbnQyNFNpemUgPD0gYnl0
ZWNvZGUuc2l6ZSgpKTsKICAgICB1aW50MzJfdCBoaWdoQml0cyA9IGdldEJpdHM8dWludDhfdD4o
Ynl0ZWNvZGUsIGluZGV4ICsgc2l6ZW9mKHVpbnQxNl90KSk7CkBAIC00OCw3ICs0OCw3IEBAIHN0
YXRpYyB1aW50MzJfdCBnZXQyNEJpdHNVbnNpZ25lZChTcGFuPGMKICAgICByZXR1cm4gKGhpZ2hC
aXRzIDw8IDE2KSB8IGxvd0JpdHM7CiB9CiAKLXN0YXRpYyBERkFCeXRlY29kZUluc3RydWN0aW9u
IGdldEluc3RydWN0aW9uKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90IGlu
ZGV4KQorc3RhdGljIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gZ2V0SW5zdHJ1Y3Rpb24oc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCkKIHsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4oZ2V0Qml0czx1aW50OF90Pihi
eXRlY29kZSwgaW5kZXgpICYgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbk1hc2spOwogfQpAQCAtNjgs
MTIgKzY4LDEyIEBAIHN0YXRpYyBzaXplX3QganVtcFNpemVJbkJ5dGVzKERGQUJ5dGVjb2QKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB1aW50MzJfdCBjb25zdW1lSW50ZWdlcihTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1
aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1aW50MzJfdCBj
b25zdW1lSW50ZWdlcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90
JiBwcm9ncmFtQ291bnRlcikKIHsKICAgICBwcm9ncmFtQ291bnRlciArPSBzaXplb2YoVCk7CiAg
ICAgcmV0dXJuIGdldEJpdHM8VD4oYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyIC0gc2l6ZW9mKFQp
KTsKIH0KLXN0YXRpYyB1aW50MzJfdCBjb25zdW1lMjRCaXRVbnNpZ25lZEludGVnZXIoU3Bhbjxj
b25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QmIHByb2dyYW1Db3VudGVyKQorc3RhdGlj
IHVpbnQzMl90IGNvbnN1bWUyNEJpdFVuc2lnbmVkSW50ZWdlcihzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlcikKIHsKICAgICBwcm9ncmFt
Q291bnRlciArPSBVSW50MjRTaXplOwogICAgIHJldHVybiBnZXQyNEJpdHNVbnNpZ25lZChieXRl
Y29kZSwgcHJvZ3JhbUNvdW50ZXIgLSBVSW50MjRTaXplKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBz
dGF0aWMgY29uc3RleHByIGJvb2wgaGFzQWN0aW9uKERGQUJ5dGVjCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgUmVzb3VyY2VGbGFncyBjb25zdW1lUmVzb3VyY2VGbGFnc0FuZEluc3Ry
dWN0aW9uKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90JiBwcm9ncmFtQ291
bnRlcikKK3N0YXRpYyBSZXNvdXJjZUZsYWdzIGNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1
Y3Rpb24oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCYgcHJvZ3Jh
bUNvdW50ZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYXNGbGFncywgaGFzRmxhZ3MoZ2V0SW5z
dHJ1Y3Rpb24oYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKSkpOwogICAgIHN3aXRjaCAoc3RhdGlj
X2Nhc3Q8REZBQnl0ZWNvZGVGbGFnc1NpemU+KGJ5dGVjb2RlW3Byb2dyYW1Db3VudGVyKytdICYg
REZBQnl0ZWNvZGVGbGFnc1NpemVNYXNrKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBS
ZXNvdXJjZUZsYWdzIGNvbnN1bWVSZXNvdXJjZUZsYWcKICAgICByZXR1cm4gMDsKIH0KIAotc3Rh
dGljIHVpbnQzMl90IGNvbnN1bWVBY3Rpb24oU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSwg
dWludDMyX3QmIHByb2dyYW1Db3VudGVyLCB1aW50MzJfdCBpbnN0cnVjdGlvbkxvY2F0aW9uKQor
c3RhdGljIHVpbnQzMl90IGNvbnN1bWVBY3Rpb24oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5
dGVjb2RlLCB1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIHVpbnQzMl90IGluc3RydWN0aW9uTG9j
YXRpb24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYXNBY3Rpb24sIGhhc0FjdGlvbihnZXRJbnN0
cnVjdGlvbihieXRlY29kZSwgaW5zdHJ1Y3Rpb25Mb2NhdGlvbikpKTsKICAgICBBU1NFUlQocHJv
Z3JhbUNvdW50ZXIgPiBpbnN0cnVjdGlvbkxvY2F0aW9uKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBz
dGF0aWMgdWludDMyX3QgY29uc3VtZUFjdGlvbihTcGFuPGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyBERkFCeXRlY29kZUp1bXBTaXplIGdldEp1bXBTaXplKFNwYW48Y29uc3QgdWlu
dDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIERGQUJ5dGVjb2RlSnVtcFNp
emUgZ2V0SnVtcFNpemUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJf
dCBpbmRleCkKIHsKICAgICBhdXRvIGp1bXBTaXplID0gc3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVK
dW1wU2l6ZT4oZ2V0Qml0czx1aW50OF90PihieXRlY29kZSwgaW5kZXgpICYgREZBQnl0ZWNvZGVK
dW1wU2l6ZU1hc2spOwogICAgIEFTU0VSVChqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXpl
OjpJbnQzMgpAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyBERkFCeXRlY29kZUp1bXBTaXplIGdl
dEp1bXBTaXplKFMKICAgICByZXR1cm4ganVtcFNpemU7CiB9CiAKLXN0YXRpYyBpbnQzMl90IGdl
dEp1bXBEaXN0YW5jZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRl
eCwgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSkKK3N0YXRpYyBpbnQzMl90IGdldEp1bXBE
aXN0YW5jZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4
LCBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQogewogICAgIHN3aXRjaCAoanVtcFNpemUp
IHsKICAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg6CkBAIC0yMDMsNyArMjAzLDcg
QEAgdm9pZCBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRUZQogfQogCiB0ZW1wbGF0
ZTxib29sIGNhc2VTZW5zaXRpdmU+Ci1pbmxpbmUgdm9pZCBERkFCeXRlY29kZUludGVycHJldGVy
OjppbnRlcnBldEp1bXBUYWJsZShTcGFuPGNvbnN0IGNoYXI+IHVybCwgdWludDMyX3QmIHVybElu
ZGV4LCB1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIpCitpbmxpbmUgdm9pZCBERkFCeXRlY29kZUlu
dGVycHJldGVyOjppbnRlcnBldEp1bXBUYWJsZShzdGQ6OnNwYW48Y29uc3QgY2hhcj4gdXJsLCB1
aW50MzJfdCYgdXJsSW5kZXgsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlcikKIHsKICAgICBERkFC
eXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgcHJvZ3Jh
bUNvdW50ZXIpOwogCkBAIC0yNDUsNyArMjQ1LDcgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJl
dGVyOjphY3Rpb25zTWF0YwogYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc291cmNlRmxhZ3MgZmxhZ3MpIC0+IEFjdGlvbnMK
IHsKICAgICBDU3RyaW5nIHVybENTdHJpbmc7Ci0gICAgU3Bhbjxjb25zdCBjaGFyPiB1cmw7Cisg
ICAgc3RkOjpzcGFuPGNvbnN0IGNoYXI+IHVybDsKICAgICBpZiAoTElLRUxZKHVybFN0cmluZy5p
czhCaXQoKSkpCiAgICAgICAgIHVybCA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
dXJsU3RyaW5nLmNoYXJhY3RlcnM4KCkpLCB1cmxTdHJpbmcubGVuZ3RoKCkgfTsKICAgICBlbHNl
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkFCeXRlY29kZUludGVycHJldGVyLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnMgewogCiBjbGFzcyBERkFCeXRlY29kZUludGVycHJldGVyIHsKIHB1YmxpYzoKLSAgICBE
RkFCeXRlY29kZUludGVycHJldGVyKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUpCisgICAg
REZBQnl0ZWNvZGVJbnRlcnByZXRlcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUp
CiAgICAgICAgIDogbV9ieXRlY29kZShieXRlY29kZSkgeyB9CiAKICAgICB1c2luZyBBY3Rpb25z
ID0gSGFzaFNldDx1aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CkBAIC01MCw5ICs1MCw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odW5zaWduZWQm
IHByb2dyYW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzLCBBY3Rpb25zJik7CiAKICAgICB0ZW1wbGF0
ZTxib29sIGNhc2VTZW5zaXRpdmU+Ci0gICAgdm9pZCBpbnRlcnBldEp1bXBUYWJsZShTcGFuPGNv
bnN0IGNoYXI+IHVybCwgdWludDMyX3QmIHVybEluZGV4LCB1aW50MzJfdCYgcHJvZ3JhbUNvdW50
ZXIpOworICAgIHZvaWQgaW50ZXJwZXRKdW1wVGFibGUoc3RkOjpzcGFuPGNvbnN0IGNoYXI+IHVy
bCwgdWludDMyX3QmIHVybEluZGV4LCB1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIpOwogCi0gICAg
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiBtX2J5dGVjb2RlOworICAgIGNvbnN0IHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBtX2J5dGVjb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ5LDcgKzk0OSw3IEBAIGJvb2wgRWRp
dGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3QKICAgICByZXR1cm4gY29uZmxpY3RzOwog
fQogCi1zdGF0aWMgU3Bhbjxjb25zdCBIVE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0PiBodG1s
RWxlbWVudEVxdWl2YWxlbnRzKCkKK3N0YXRpYyBzdGQ6OnNwYW48Y29uc3QgSFRNTEVsZW1lbnRF
cXVpdmFsZW50KiBjb25zdD4gaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IEhUTUxFbGVtZW50RXF1aXZhbGVudCogY29uc3QgZXF1aXZhbGVudHNbXSA9IHsKICAg
ICAgICAgbmV3IEhUTUxGb250V2VpZ2h0RXF1aXZhbGVudChIVE1MTmFtZXM6OmJUYWcpLApAQCAt
OTgzLDcgKzk4Myw3IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXQK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBTcGFuPGNvbnN0IEhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50KiBjb25zdD4gaHRtbEF0dHJpYnV0ZUVxdWl2YWxlbnRzKCkKK3N0YXRpYyBzdGQ6
OnNwYW48Y29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0PiBodG1sQXR0cmlidXRl
RXF1aXZhbGVudHMoKQogewogICAgIHN0YXRpYyBjb25zdCBIVE1MQXR0cmlidXRlRXF1aXZhbGVu
dCogY29uc3QgZXF1aXZhbGVudHNbXSA9IHsKICAgICAgICAgLy8gZWxlbWVudElzU3R5bGVkU3Bh
bk9ySFRNTEVxdWl2YWxlbnQgZGVwZW5kcyBvbiB0aGUgZmFjdCBlYWNoIEhUTUxBdHRyaXV0ZUVx
dWl2YWxlbnQgbWF0Y2hlcyBleGFjdGx5IG9uZSBhdHRyaWJ1dGUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29uc3Qg
SlNDCiB7CiAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwotICAgICAg
ICBtX3dyaXRlUmF3RGF0YShTcGFuIHsgZGF0YSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSk7
CisgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0ZDo6c3BhbiB7IGRhdGEgKyBieXRlT2Zmc2V0LCBi
eXRlTGVuZ3RoIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fcXVldWUuYXBwZW5k
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlE
YXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoU3BhbiB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxl
bmd0aCgpIH0pOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0ZDo6c3BhbiB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxl
bmd0aCgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIEFTU0VSVChlcnJvckNvZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3
b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1Ymxp
YzoKICAgICB1c2luZyBXcml0ZVN0cmluZyA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgQ1N0cmluZyYg
dXRmOCk+OwotICAgIHVzaW5nIFdyaXRlUmF3RGF0YSA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPjsKKyAgICB1c2luZyBXcml0ZVJhd0RhdGEgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiYpPjsKICAgICBlbnVtIGNsYXNzIENv
bnRpbnVlIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFByb2Nlc3NFcnJvciA9IEZ1bmN0aW9uPENv
bnRpbnVlKEV4Y2VwdGlvbkNvZGUpPjsKICAgICBOZXR3b3JrU2VuZFF1ZXVlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBXcml0ZVN0cmluZyYmLCBXcml0ZVJhd0RhdGEmJiwgUHJvY2Vzc0Vycm9y
JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVDYWNoZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxOYW1lQ2FjaGUuaAko
cmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVD
YWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNyArMzQsMTcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MTmFtZUNhY2hlIHsKIHB1YmxpYzoKLSAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VUYWdOYW1lKFNwYW48Y29uc3QgVUNoYXI+IHN0cmluZykK
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VUYWdOYW1lKHN0ZDo6c3Bh
bjxjb25zdCBVQ2hhcj4gc3RyaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VBdG9tU3Ry
aW5nPEF0b21TdHJpbmdUeXBlOjpUYWdOYW1lPihzdHJpbmcpOwogICAgIH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFF1YWxpZmllZE5hbWUgbWFrZUF0dHJpYnV0ZVF1YWxpZmllZE5hbWUo
U3Bhbjxjb25zdCBVQ2hhcj4gc3RyaW5nKQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFF1YWxp
ZmllZE5hbWUgbWFrZUF0dHJpYnV0ZVF1YWxpZmllZE5hbWUoc3RkOjpzcGFuPGNvbnN0IFVDaGFy
PiBzdHJpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gbWFrZVF1YWxpZmllZE5hbWUoc3RyaW5n
KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VBdHRy
aWJ1dGVWYWx1ZShTcGFuPGNvbnN0IFVDaGFyPiBzdHJpbmcpCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgQXRvbVN0cmluZyBtYWtlQXR0cmlidXRlVmFsdWUoc3RkOjpzcGFuPGNvbnN0IFVDaGFy
PiBzdHJpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gbWFrZUF0b21TdHJpbmc8QXRvbVN0cmlu
Z1R5cGU6OkF0dHJpYnV0ZVZhbHVlPihzdHJpbmcpOwogICAgIH0KQEAgLTYxLDcgKzYxLDcgQEAg
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEF0b21TdHJpbmdUeXBlIDogYm9vbCB7IFRhZ05hbWUs
IEF0dHJpYnV0ZVZhbHVlIH07CiAKICAgICB0ZW1wbGF0ZTxIVE1MTmFtZUNhY2hlOjpBdG9tU3Ry
aW5nVHlwZSB0eXBlPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgbWFrZUF0
b21TdHJpbmcoU3Bhbjxjb25zdCBVQ2hhcj4gc3RyaW5nKQorICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEF0b21TdHJpbmcgbWFrZUF0b21TdHJpbmcoc3RkOjpzcGFuPGNvbnN0IFVDaGFyPiBzdHJp
bmcpCiAgICAgewogICAgICAgICBpZiAoc3RyaW5nLmVtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gZW1wdHlBdG9tKCk7CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBzbG90OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFF1YWxpZmllZE5hbWUg
bWFrZVF1YWxpZmllZE5hbWUoU3Bhbjxjb25zdCBVQ2hhcj4gc3RyaW5nKQorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFF1YWxpZmllZE5hbWUgbWFrZVF1YWxpZmllZE5hbWUoc3RkOjpzcGFuPGNv
bnN0IFVDaGFyPiBzdHJpbmcpCiAgICAgewogICAgICAgICBpZiAoc3RyaW5nLmVtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbFFOYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlCiAgICAgICAg
IGRhdGEgPSBudWxscHRyOwogCiAgICAgY29uc3RleHByIHVpbnQ4X3QgcGRmTWFnaWNOdW1iZXJb
XSA9IHsgJyUnLCAnUCcsICdEJywgJ0YnIH07Ci0gICAgaWYgKGRhdGEgJiYgZGF0YS0+c3RhcnRz
V2l0aChTcGFuIHsgcGRmTWFnaWNOdW1iZXIsIHN0ZDo6c2l6ZShwZGZNYWdpY051bWJlcikgfSkp
IHsKKyAgICBpZiAoZGF0YSAmJiBkYXRhLT5zdGFydHNXaXRoKHN0ZDo6c3BhbiB7IHBkZk1hZ2lj
TnVtYmVyLCBzdGQ6OnNpemUocGRmTWFnaWNOdW1iZXIpIH0pKSB7CiAgICAgICAgIExPRyhJY29u
RGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJZ25vcmluZyBpY29uIGF0
ICVzIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIFBERiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZGF0YSA9IG51bGxwdHI7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCShyZXZpc2lvbiAy
OTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIGRvdWJsZSBjb2xvckRpZmZlcmVu
Y2UoY29uc3QgTGFiPAogICAgIHJldHVybiBzcXJ0KHBvdyhyZXNvbHZlZFJpZ2h0SGFuZFNpZGUu
bGlnaHRuZXNzIC0gcmVzb2x2ZWRMZWZ0SGFuZFNpZGUubGlnaHRuZXNzLCAyKSArIHBvdyhyZXNv
bHZlZFJpZ2h0SGFuZFNpZGUuYSAtIHJlc29sdmVkTGVmdEhhbmRTaWRlLmEsIDIpICsgcG93KHJl
c29sdmVkUmlnaHRIYW5kU2lkZS5iIC0gcmVzb2x2ZWRMZWZ0SGFuZFNpZGUuYiwgMikpOwogfQog
Ci1zdGF0aWMgTGFiPGZsb2F0PiBhdmVyYWdlQ29sb3IoU3BhbjxMYWI8ZmxvYXQ+PiBjb2xvcnMp
CitzdGF0aWMgTGFiPGZsb2F0PiBhdmVyYWdlQ29sb3Ioc3RkOjpzcGFuPExhYjxmbG9hdD4+IGNv
bG9ycykKIHsKICAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDM+IHRvdGFscyB7IH07CiAgICAg
Zm9yIChhdXRvIGNvbG9yIDogY29sb3JzKQpAQCAtMjY1LDExICsyNjUsMTEgQEAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gUGFnZUNvbG9yU2FtcGxlcjo6cwogICAgIH0KIAogICAgIGlmICghbm9uTWF0
Y2hpbmdDb2xvckluZGV4KQotICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKFNwYW4geyBzYW1w
bGVzIH0uc3Vic3BhbjwxLCBudW1TYW1wbGVzIC0gMT4oKSk7CisgICAgICAgIHJldHVybiBhdmVy
YWdlQ29sb3Ioc3RkOjpzcGFuIHsgc2FtcGxlcyB9LnN1YnNwYW48MSwgbnVtU2FtcGxlcyAtIDE+
KCkpOwogICAgIGVsc2UgaWYgKG5vbk1hdGNoaW5nQ29sb3JJbmRleCA9PSBudW1TYW1wbGVzIC0g
MSkKLSAgICAgICAgcmV0dXJuIGF2ZXJhZ2VDb2xvcihTcGFuIHsgc2FtcGxlcyB9LnN1YnNwYW48
MCwgbnVtU2FtcGxlcyAtIDE+KCkpOworICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKHN0ZDo6
c3BhbiB7IHNhbXBsZXMgfS5zdWJzcGFuPDAsIG51bVNhbXBsZXMgLSAxPigpKTsKICAgICBlbHNl
Ci0gICAgICAgIHJldHVybiBhdmVyYWdlQ29sb3IoU3BhbiB7IHNhbXBsZXMgfSk7CisgICAgICAg
IHJldHVybiBhdmVyYWdlQ29sb3Ioc3RkOjpzcGFuIHsgc2FtcGxlcyB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2No
ZW1lUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
Z2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMyArNDQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IFVSTFNjaGVtZXNN
YXAgaXMgYSBwZWN1bGlhciB0eXBlIG5hbWUgZ2l2ZW4gdGhhdCBpdCBpcyBhIHNldC4KIAogc3Rh
dGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKTsKLXN0YXRp
YyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNlY3VyZVNjaGVtZXMoKTsKLXN0YXRp
YyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lu
cygpOwotc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluRW1wdHlEb2N1bWVu
dFNjaGVtZXMoKTsKLXN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpOwotc3RhdGljIFNwYW48Y29uc3QgQVNDSUlM
aXRlcmFsPiBidWlsdGluQ09SU0VuYWJsZWRTY2hlbWVzKCk7CitzdGF0aWMgc3RkOjpzcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNlY3VyZVNjaGVtZXMoKTsKK3N0YXRpYyBzdGQ6OnNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCk7
CitzdGF0aWMgc3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkVtcHR5RG9jdW1l
bnRTY2hlbWVzKCk7CitzdGF0aWMgc3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRp
bkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpOworc3RhdGljIHN0ZDo6c3Bhbjxj
b25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKTsKIAotdXNpbmcg
QVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uID0gU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+ICgqKSgp
OwordXNpbmcgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uID0gc3RkOjpzcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gKCopKCk7CiAKIHN0YXRpYyB2b2lkIGFkZChVUkxTY2hlbWVzTWFwJiBzZXQsIEFT
Q0lJTGl0ZXJhbFNwYW5GdW5jdGlvbiBmdW5jdGlvbikKIHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMCiAgICAgcmV0dXJuIGRpc3Bs
YXlJc29sYXRlZFNjaGVtZXM7CiB9CiAKLXN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
YnVpbHRpblNlY3VyZVNjaGVtZXMoKQorc3RhdGljIHN0ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVy
YWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXkgc2NoZW1lcyB7CiAgICAgICAgICJodHRwcyJfcywKQEAgLTE1Nyw3ICsxNTcsNyBAQCBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpIFdUCiAgICAgcmV0dXJuIHNlY3Vy
ZVNjaGVtZXM7CiB9CiAKLXN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNj
aGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCitzdGF0aWMgc3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0
ZXJhbD4gYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgewogICAgICAgICAiYWJvdXQiX3MsCkBAIC0xNzYs
NyArMTc2LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlTwogICAg
IHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiB9CiAKLXN0YXRpYyBTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKK3N0YXRpYyBzdGQ6
OnNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQog
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzY2hlbWVzIHsgImFib3V0Il9zIH07
CiAgICAgcmV0dXJuIHNjaGVtZXM7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNjaGVtZXNGb3JiaWRkZW5GcgogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1zdGF0
aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdFNjaGVtZXMoKQorc3RhdGljIHN0ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0
aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQogewogICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheSBzY2hlbWVzIHsgImJsb2IiX3MgfTsKICAgICByZXR1cm4gc2NoZW1l
czsKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93
aW5nRGF0CiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3Npbmc7CiB9CiAKLXN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNP
UlNFbmFibGVkU2NoZW1lcygpCitzdGF0aWMgc3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
YnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5IHNjaGVtZXMgeyAiaHR0cCJfcywgImh0dHBzIl9zIH07CiAgICAgcmV0dXJuIHNjaGVt
ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHJldmlz
aW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MSwxMSArMjQxLDExIEBAIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGcmFnbWVudGVkU2gKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLXZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVu
dHMgPSBtX3NlZ21lbnRzOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQotICAg
ICAgICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVu
dC0+c2l6ZSgpIH0pOworICAgICAgICBhcHBseShzdGQ6OnNwYW4geyBzZWdtZW50LnNlZ21lbnQt
PmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKIHZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlv
bjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYgYXBwbHkpIGNvbnN0CkBAIC0yNTUsNyArMjU1
LDcgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbQogICAgICAgICBh
cHBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnNlZ21lbnQuY29weVJlZigpKSk7CiB9
CiAKLWJvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OnN0YXJ0c1dpdGgoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0
CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCShyZXZpc2lvbiAyOTA0NzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc3LDggKzE3Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVu
dChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChS
ZWY8U2hhcmVkQnVmZmVyPiYmKT4mKSBjb25zdDsKIAogICAgIHVzaW5nIERhdGFTZWdtZW50ID0g
V2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3
aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CkBAIC0yMzIsNyAr
MjMyLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoU3Bhbjxjb25zdCB1aW50OF90PiB2YWx1ZSkgeyBhcHBl
bmQodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOyB9CisgICAgdm9pZCBhcHBlbmQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHZhbHVlKSB7IGFwcGVuZCh2YWx1ZS5kYXRhKCksIHZhbHVlLnNp
emUoKSk7IH0KICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsK
ICNpZiBVU0UoRk9VTkRBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0FHWENvbXBpbGVyU2VydmljZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBib29sIGRldmljZUhhc0FHWENvbXBpbGVyU2Vy
dmljZSgpCiAgICAgcmV0dXJuICpoYXNBR1hDb21waWxlclNlcnZpY2U7CiB9CiAKLVNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBhZ3hDb21waWxlclNlcnZpY2VzKCkKK3N0ZDo6c3Bhbjxjb25zdCBB
U0NJSUxpdGVyYWw+IGFneENvbXBpbGVyU2VydmljZXMoKQogewogICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjphcnJheSBzZXJ2aWNlcyB7CiAgICAgICAgICJjb20uYXBwbGUuQUdYQ29tcGlsZXJT
ZXJ2aWNlIl9zLApAQCAtNjcsNyArNjcsNyBAQCBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYWd4
Q29tcGlsZXJTZXJ2CiAgICAgcmV0dXJuIHNlcnZpY2VzOwogfQogCi1TcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gYWd4Q29tcGlsZXJDbGFzc2VzKCkKK3N0ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVy
YWw+IGFneENvbXBpbGVyQ2xhc3NlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5IGNsYXNzZXMgewogICAgICAgICAiQUdYQ29tbWFuZFF1ZXVlIl9zLApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmgJKHJl
dmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBp
bGVyU2VydmljZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZp
Y2UoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNl
Rm9yVGVzdGluZygpOwotV0VCQ09SRV9FWFBPUlQgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFn
eENvbXBpbGVyU2VydmljZXMoKTsKLVdFQkNPUkVfRVhQT1JUIFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBhZ3hDb21waWxlckNsYXNzZXMoKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6c3Bhbjxjb25z
dCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVyU2VydmljZXMoKTsKK1dFQkNPUkVfRVhQT1JUIHN0
ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVyQ2xhc3NlcygpOwogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlk
ZW9GcmFtZUluZm8uaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgU2hhcmVkVmlkZW9GcmFtZUluZm8oT1NUeXBlLCB1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBieXRlc1BlclJvdywgdWludDMyX3Qg
d2lkdGhQbGFuZUIgPSAwLCB1aW50MzJfdCBoZWlnaHRQbGFuZUIgPSAwLCB1aW50MzJfdCBieXRl
c1BlclJvd1BsYW5lQiA9IDApOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUodWlu
dDhfdCopOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZp
ZGVvRnJhbWVJbmZvPiBkZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZUluZm8+IGRlY29kZShz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNo
YXJlZFZpZGVvRnJhbWVJbmZvIGZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVm
LCB1aW50OF90KiBkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZFZpZGVvRnJhbWVJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCShyZXZpc2lvbiAyOTA0NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbQkod29y
a2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCB2b2lkIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpl
bmNvZGUodWludDhfCiAgICAgc3RkOjptZW1jcHkoZGVzdGluYXRpb24sIGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRl
b0ZyYW1lSW5mbz4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmRlY29kZShTcGFuPGNvbnN0IHVpbnQ4
X3Q+IHNwYW4pCitzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWVJbmZvPiBTaGFyZWRWaWRl
b0ZyYW1lSW5mbzo6ZGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQogewogICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzcGFuKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsRXhp
dFBpY3R1cmVJblBpY3R1cmUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5Q
aWN0dXJlKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgU3Bhbjxjb25zdCBBdG9tU3RyaW5nPiBv
YnNlcnZlZEV2ZW50TmFtZXMoKTsKKyAgICBzdGF0aWMgc3RkOjpzcGFuPGNvbnN0IEF0b21TdHJp
bmc+IG9ic2VydmVkRXZlbnROYW1lcygpOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFt
ZUFsbCgpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0JKHJldmlzaW9uIDI5MDQ3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cwogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKIH0KIAotU3Bhbjxjb25zdCBBdG9t
U3RyaW5nPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5h
bWVzKCkKK3N0ZDo6c3Bhbjxjb25zdCBBdG9tU3RyaW5nPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgbmFtZXMgPSBzdGQ6OmFycmF5IHsgZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBldmVu
dE5hbWVzKCkubG9hZHN0YXJ0RXZlbnQsIGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50
IH07CiAgICAgcmV0dXJuIG5hbWVzLmdldCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NTEsNyArNTUxLDcgQEAgcHJpdmF0ZToKICAgICB3ZWJtOjpUcmFja0VudHJ5IG1fdHJh
Y2s7CiB9OwogCi1TcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6c3VwcG9ydGVkTUlNRVR5cGVzKCkKK3N0ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZE1JTUVUeXBlcygpCiB7CiAjaWYgIShFTkFC
TEUoVlA5KSB8fCBFTkFCTEUoVk9SQklTKSB8fCBFTkFCTEUoT1BVUykpCiAgICAgcmV0dXJuIHsg
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgJKHJldmlzaW9uIDI5MDQ3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgYm9vbCBpc1dlYk1Gb3JtYXRSZWFkZXJBdmFpbGFibGUoKTsKICAgICBzdGF0aWMg
TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29u
c3QgQ29udGVudFR5cGUmKTsKLSAgICBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHN1
cHBvcnRlZE1JTUVUeXBlcygpOworICAgIHN0YXRpYyBzdGQ6OnNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBzdXBwb3J0ZWRNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IGNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYpOwog
CiAgICAgU291cmNlQnVmZmVyUGFyc2VyV2ViTSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6
OnNldFN1cHAKICAgICB9CiB9CiAKLVNwYW48Y29uc3QgSW50U2l6ZT4gUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2U6OnN0YW5kYXJkVmlkZW9TaXplcygpCitzdGQ6OnNwYW48Y29uc3QgSW50U2l6
ZT4gUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YW5kYXJkVmlkZW9TaXplcygpCiB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBJbnRTaXplIHNpemVzW10gPSB7CiAgICAgICAgIHsgMTEyLCAx
MTIgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMjkw
NDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBs
ZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOwogCi0gICAgc3RhdGljIFNwYW48Y29u
c3QgSW50U2l6ZT4gc3RhbmRhcmRWaWRlb1NpemVzKCk7CisgICAgc3RhdGljIHN0ZDo6c3Bhbjxj
b25zdCBJbnRTaXplPiBzdGFuZGFyZFZpZGVvU2l6ZXMoKTsKIAogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgQ2FwdHVyZVNpemVBbmRGcmFtZVJhdGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgU1FMaXRlU3RhdGVtZW50OjpleGVjdXRlQ29tbWFu
ZCgpCiAgICAgcmV0dXJuIHN0ZXAoKSA9PSBTUUxJVEVfRE9ORTsKIH0KIAotaW50IFNRTGl0ZVN0
YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJsb2IpCitp
bnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBibG9iKQogewogICAgIEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VSVChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKQEAgLTEx
NCw3ICsxMTQsNyBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsCiAg
ICAgZWxzZQogICAgICAgICBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwogCi0g
ICAgcmV0dXJuIGJpbmRCbG9iKGluZGV4LCBTcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oY2hhcmFjdGVycyksIHRleHQubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpIH0pOwor
ICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgc3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oY2hhcmFjdGVycyksIHRleHQubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
IH0pOwogfQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmlu
Z1ZpZXcgdGV4dCkKQEAgLTI5Myw3ICsyOTMsNyBAQCBWZWN0b3I8dWludDhfdD4gU1FMaXRlU3Rh
dGVtZW50Ojpjb2x1bW5CCiAgICAgcmV0dXJuIHsgc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpIH07
CiB9CiAKLVNwYW48Y29uc3QgdWludDhfdD4gU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNT
cGFuKGludCBjb2wpCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gU1FMaXRlU3RhdGVtZW50Ojpj
b2x1bW5CbG9iQXNTcGFuKGludCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+PSAwKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAkocmV2
aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB+U1FMaXRlU3RhdGVtZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1FMaXRl
U3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYmKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgYmluZEJsb2IoaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgYmluZEJsb2IoaW50IGluZGV4LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4p
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1Zp
ZXcpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kSW50KGludCBpbmRleCwgaW50KTsKQEAg
LTczLDggKzczLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5C
bG9iQXNTdHJpbmcoaW50IGNvbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IGNvbHVtbkJsb2IoaW50IGNvbCk7CiAKLSAgICAvLyBUaGUgcmV0dXJuZWQgU3BhbiBzdGF5cyB2
YWxpZCB1bnRpbCB0aGUgbmV4dCBzdGVwKCkgLyByZXNldCgpIG9yIGRlc3RydWN0aW9uIG9mIHRo
ZSBzdGF0ZW1lbnQuCi0gICAgU3Bhbjxjb25zdCB1aW50OF90PiBjb2x1bW5CbG9iQXNTcGFuKGlu
dCBjb2wpOworICAgIC8vIFRoZSByZXR1cm5lZCBzdGQ6OnNwYW4gc3RheXMgdmFsaWQgdW50aWwg
dGhlIG5leHQgc3RlcCgpIC8gcmVzZXQoKSBvciBkZXN0cnVjdGlvbiBvZiB0aGUgc3RhdGVtZW50
LgorICAgIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBjb2x1bW5CbG9iQXNTcGFuKGludCBjb2wp
OwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZTsg
fQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFNWR1Jl
c291cmNlczo6U1ZHUmVzb3VyY2VzKCkKIHsKIH0KIAotc3RhdGljIE1lbW9yeUNvbXBhY3RMb29r
dXBPbmx5Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiB0YWdTZXQoU3BhbjxkZWNsdHlwZShT
VkdOYW1lczo6YVRhZykqIGNvbnN0PiB0YWdzKQorc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiB0YWdTZXQoc3RkOjpzcGFuPGRlY2x0eXBl
KFNWR05hbWVzOjphVGFnKSogY29uc3Q+IHRhZ3MpCiB7CiAgICAgTWVtb3J5Q29tcGFjdExvb2t1
cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAgICBzZXQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSh0YWdzLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAkocmV2aXNp
b24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpuCiAgICAgcmV0dXJuIG1fbmFtZWRFZmZl
Y3RzLmdldChpZCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0VmVjdG9yPiBTVkdG
aWx0ZXJCdWlsZGVyOjpuYW1lZEVmZmVjdHMoU3Bhbjxjb25zdCBBdG9tU3RyaW5nPiBuYW1lcykg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8RmlsdGVyRWZmZWN0VmVjdG9yPiBTVkdGaWx0ZXJCdWlsZGVy
OjpuYW1lZEVmZmVjdHMoc3RkOjpzcGFuPGNvbnN0IEF0b21TdHJpbmc+IG5hbWVzKSBjb25zdAog
ewogICAgIEZpbHRlckVmZmVjdFZlY3RvciBlZmZlY3RzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCShy
ZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0
ZToKICAgICBGaWx0ZXJFZmZlY3QmIHNvdXJjZUFscGhhKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBuYW1lZEVmZmVjdChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7Ci0gICAg
c3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RWZWN0b3I+IG5hbWVkRWZmZWN0cyhTcGFuPGNvbnN0
IEF0b21TdHJpbmc+KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZpbHRlckVmZmVjdFZlY3Rv
cj4gbmFtZWRFZmZlY3RzKHN0ZDo6c3Bhbjxjb25zdCBBdG9tU3RyaW5nPikgY29uc3Q7CiAKICAg
ICB2b2lkIGFkZE5hbWVkRWZmZWN0KGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZWY8RmlsdGVyRWZm
ZWN0PiYmKTsKICAgICB2b2lkIHNldEVmZmVjdElucHV0cyhGaWx0ZXJFZmZlY3QmLCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImJiBpbnB1dHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAJ
KHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsMTIgKzQ2
NywxMiBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzCiAgICAgICAg
ICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDYsIHVwZGF0ZVZpYUNhY2hlVG9TdHJp
bmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUpKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNywgZGF0YS5zY3JpcHRVUkwuc3Ry
aW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5k
VGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDksIFNwYW4geyBjc3BF
bmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTAsIFNwYW4geyBjb2Vw
RW5jb2Rlci5idWZmZXIoKSwgY29lcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9P
SworICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYig5LCBzdGQ6OnNwYW4g
eyBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTAsIHN0ZDo6
c3BhbiB7IGNvZXBFbmNvZGVyLmJ1ZmZlcigpLCBjb2VwRW5jb2Rlci5idWZmZXJTaXplKCkgfSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEx
LCBkYXRhLnJlZmVycmVyUG9saWN5KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2Vy
dFN0YXRlbWVudC0+YmluZEJsb2IoMTIsIFNwYW4geyBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIu
YnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDEzLCBTcGFu
IHsgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rl
ci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBpbnNlcnRTdGF0
ZW1lbnQtPmJpbmRCbG9iKDE0LCBTcGFuIHsgbmF2aWdhdGlvblByZWxvYWRTdGF0ZUVuY29kZXIu
YnVmZmVyKCksIG5hdmlnYXRpb25QcmVsb2FkU3RhdGVFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTIs
IHN0ZDo6c3BhbiB7IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAg
IHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTMsIHN0ZDo6c3BhbiB7IGNlcnRpZmljYXRl
SW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgp
IH0pICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxv
YigxNCwgc3RkOjpzcGFuIHsgbmF2aWdhdGlvblByZWxvYWRTdGF0ZUVuY29kZXIuYnVmZmVyKCks
IG5hdmlnYXRpb25QcmVsb2FkU3RhdGVFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVf
T0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05F
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVk
IHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAkocmV2aXNp
b24gMjkwNDczKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIFNjcmlwdEJ1
ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnMKICAgICBhdXRvIHNjcmlwdFBhdGggPSB0
aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKICAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChzY3JpcHRQYXRo
KSk7CiAKLSAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0
IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiB3cml0ZURhdGEpIHsKKyAgICBh
dXRvIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJv
b2woc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIHdyaXRlRGF0YSkgewogICAgICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogKnNjcmlwdC5idWZmZXIoKSkKICAgICAgICAgICAgIHdyaXRlRGF0YSh7
IGVudHJ5LnNlZ21lbnQtPmRhdGEoKSwgZW50cnkuc2VnbWVudC0+c2l6ZSgpIH0pOwogICAgIH07
CkBAIC05Nyw3ICs5Nyw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNv
bnMKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1Njcmlw
dFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjpvcGVuRmls
ZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRh
KFsmXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICAgICAgaXRlcmF0ZU92ZXJCdWZm
ZXJBbmRXcml0ZURhdGEoWyZdKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7CiAgICAg
ICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHNwYW4uZGF0YSgpLCBzcGFu
LnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4OCBAQAorMjAyMi0wMi0yNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEJlZ2luIHRyYW5zaXRpb24gZnJv
bSBXVEY6OlNwYW4gdG8gc3RkOjpzcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzcxNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c29ydGVkVGFibGVzKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6
c29ydGVkVGFibGVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VySW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpoYW5kbGVQQ01N
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpoYW5kbGVQQ01NZXNzYWdlU2V0RGVidWdN
b2RlSXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpoYW5kbGVQQ01NZXNzYWdlV2l0
aFJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFu
YWdlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RGF0YTo6bWFwVG9GaWxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpjb21wdXRlU0hBMSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRh
dGE6OnNwYW4gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjph
cHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlUmVjb3Jk
TWV0YURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EYWVtb25EZWNvZGVyLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6RGVjb2Rlcjo6
RGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kU3RyZWFtKToKKyAgICAgICAgKElQQzo6
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZFN5bmNTdHJlYW0pOgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0
cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlB
Y3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWly
ZUFsbCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmFsaWduZWRTcGFu
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBY3F1aXJlKToKKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFjcXVpcmVBbGwpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2Vz
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBseSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmg6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tOgorICAgICAgICAoV2Vi
S2l0OjphcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyk6CisgICAg
ICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVu
dHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogU2hhcmVkL1dl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3Q6OnVybEZpbHRlcnNCeXRlY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Ojp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6ZnJh
bWVVUkxGaWx0ZXJzQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdDo6c2VyaWFsaXplZEFjdGlvbnMgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6c3BhbldpdGhPZmZzZXRBbmRMZW5ndGgg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAg
ICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKEFQSTo6d3JpdGVEYXRhVG9GaWxlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYik6
CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdwdUlPS2l0Q2xhc3Nlcyk6CisgICAg
ICAgIChXZWJLaXQ6OmdwdU1hY2hTZXJ2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRQaXhlbEJ1ZmZlckZvckltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmg6CisgICAg
ICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpoYW5k
bGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHkpOgorICAgICAgICAoV2ViUHVzaEQ6OmhhbmRsZVdl
YlB1c2hETWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhhbmRsZU1l
c3NhZ2UpOgorCiAyMDIyLTAyLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQgTG9nZ2VySGVscGVyIGluIExlZ2FjeSBFTUUgY2xh
c3NlcwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VV
dGlsaXRpZXMuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWlu
SUQodW5zaWduZWQpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNVcGRhdGVkU2No
ZW1hKCkgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzKCkgPSAwOwotICAgIHZpcnR1YWwgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IHNvcnRlZFRhYmxlcygpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6c3Bhbjxjb25zdCBBU0NJSUxp
dGVyYWw+IHNvcnRlZFRhYmxlcygpID0gMDsKICAgICBUYWJsZUFuZEluZGV4UGFpciBjdXJyZW50
VGFibGVBbmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHN0cmlwSW5k
ZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjb25zdCBjaGFyKiBvcmlnaW5hbFF1ZXJ5KTsKICAg
ICB2b2lkIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCShy
ZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzAsNyArMjcwLDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYQogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzOwogfQogCi1TcGFu
PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnNvcnRlZFRhYmxlcygpCitzdGQ6OnNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c29ydGVkVGFibGVzKCkKIHsKICAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgc29ydGVkVGFibGVzIHsKICAgICAgICAgIk9ic2VydmVkRG9t
YWlucyJfcywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5n
LCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5h
bDsKLSAgICBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc29ydGVkVGFibGVzKCkgZmluYWw7Cisg
ICAgc3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc29ydGVkVGFibGVzKCkgZmluYWw7CiAg
ICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygpIG92ZXJyaWRlIHsgfQogICAgIGJvb2wg
aGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIGNvbnN0IE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGEKICAgICByZXR1cm4gZXhwZWN0ZWRUYWJsZUFu
ZEluZGV4UXVlcmllczsKIH0KIAotU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IERhdGFiYXNlOjpz
b3J0ZWRUYWJsZXMoKQorc3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gRGF0YWJhc2U6OnNv
cnRlZFRhYmxlcygpCiB7CiAgICAgc3RhdGljIHN0ZDo6YXJyYXkgc29ydGVkVGFibGVzIHsKICAg
ICAgICAgIlBDTU9ic2VydmVkRG9tYWlucyJfcywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCShy
ZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbmVlZHNVcGRhdGVk
U2NoZW1hKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJ
bmRpY2VzKCkgZmluYWw7CiAgICAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5k
ZXhRdWVyaWVzKCkgZmluYWw7Ci0gICAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNvcnRlZFRh
YmxlcygpIGZpbmFsOworICAgIHN0ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNvcnRlZFRh
YmxlcygpIGZpbmFsOwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uc0ZvclRhYmxlKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKTsKICAgICB2b2lkIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGNv
bnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbHVtbk5hbWUpOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjkwNDczKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTUsNyArMTk1LDcgQEAgc3RhdGljIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ciYgZAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgotdm9pZCBoYW5kbGVQQ01NZXNzYWdl
KFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UpCit2b2lkIGhhbmRsZVBDTU1lc3Nh
Z2Uoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlKQogewogICAgIERhZW1v
bjo6RGVjb2RlciBkZWNvZGVyKGVuY29kZWRNZXNzYWdlKTsKIApAQCAtMjA3LDcgKzIwNyw3IEBA
IHZvaWQgaGFuZGxlUENNTWVzc2FnZShTcGFuPGNvbnN0IHVpbnQ4X3QKICAgICBJUEM6OmNhbGxN
ZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCAmZGFlbW9uTWFuYWdlcigpLCBJbmZv
OjpNZW1iZXJGdW5jdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGhhbmRsZVBDTU1lc3NhZ2VTZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQoY29uc3QgRGFlbW9uOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlKQorc3RhdGljIHZvaWQgaGFuZGxlUENN
TWVzc2FnZVNldERlYnVnTW9kZUlzRW5hYmxlZChjb25zdCBEYWVtb246OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSkKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBEYWVtb246OkRlY29kZXIgZGVjb2RlcihlbmNvZGVkTWVz
c2FnZSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlUENNTWVzc2FnZVNl
dERlYnVnTW9kZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgotdm9pZCBoYW5kbGVQQ01N
ZXNzYWdlV2l0aFJlcGx5KFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUENNOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikK
K3ZvaWQgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUENNOjpFbmNvZGVkTWVzc2Fn
ZSYmKT4mJiByZXBseVNlbmRlcikKIHsKICAgICBEYWVtb246OkRlY29kZXIgZGVjb2RlcihlbmNv
ZGVkTWVzc2FnZSk7CiAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIGRvRGFpbHlBY3Rpdml0eUlu
TWFuYWdlcigpCiAgICAgZGFlbW9uTWFuYWdlcigpLmZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1
ZXN0cygpOwogfQogCi12b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKGNvbnN0IERh
ZW1vbjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFNw
YW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5U2VuZGVyKQordm9pZCBkZWNvZGVNZXNzYWdlQW5k
U2VuZFRvTWFuYWdlcihjb25zdCBEYWVtb246OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1lc3Nh
Z2VUeXBlIG1lc3NhZ2VUeXBlLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3Nh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5U2Vu
ZGVyKQogewogICAgIEFTU0VSVChtZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpID09
ICEhcmVwbHlTZW5kZXIpOwogICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcg
KzEwOCw3IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5IHsgImVuY29kZWQgbWVzc2FnZSIg
fTsKIHVzaW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4X3Q+OwogCi12b2lkIGRlY29k
ZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKGNvbnN0IERhZW1vbjo6Q29ubmVjdGlvbiYsIE1lc3Nh
Z2VUeXBlLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJik7Cit2b2lkIGRlY29kZU1lc3NhZ2VBbmRT
ZW5kVG9NYW5hZ2VyKGNvbnN0IERhZW1vbjo6Q29ubmVjdGlvbiYsIE1lc3NhZ2VUeXBlLCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKIHZvaWQgZG9EYWlseUFjdGl2aXR5SW5NYW5hZ2Vy
KCk7CiBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlOwotICAgIGF1dG8gYXBwbHlEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJv
b2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVyKSB7CisgICAgYXV0byBhcHBseURhdGEg
PSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBw
bGllcikgewogICAgICAgICBhcHBseShhcHBsaWVyKTsKICAgICB9OwogICAgIGF1dG8gbWFwcGVk
RmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShwYXRoLCBzaXplKCksIFdURk1vdmUoYXBwbHlE
YXRhKSwgJmhhbmRsZSk7CkBAIC04OSw3ICs4OSw3IEBAIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hB
MShjb25zdCBEYXRhJiBkYXQKIHsKICAgICBTSEExIHNoYTE7CiAgICAgc2hhMS5hZGRCeXRlcyhz
YWx0LmRhdGEoKSwgc2FsdC5zaXplKCkpOwotICAgIGRhdGEuYXBwbHkoWyZzaGExXShTcGFuPGNv
bnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICBkYXRhLmFwcGx5KFsmc2hhMV0oc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHNwYW4pIHsKICAgICAgICAgc2hhMS5hZGRCeXRlcyhzcGFuLmRhdGEoKSwg
c3Bhbi5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTMgKzc1LDEzIEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIFNwYW48Y29uc3QgdWludDhfdD4g
c3BhbigpIGNvbnN0IHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsgfQorICAgIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBzcGFuKCkgY29uc3QgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9
OyB9CiAgICAgYm9vbCBpc01hcCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXA7IH0KICAgICBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiB0cnlDcmVhdGVTaGFyZWRNZW1vcnkoKSBjb25zdDsKIAogICAgIERh
dGEgc3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90KSBjb25zdDsKIAotICAgIGJvb2wgYXBw
bHkoY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKSBjb25zdDsKKyAg
ICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
KT4mKSBjb25zdDsKIAogICAgIERhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCShyZXZpc2lvbiAyOTA0NzMpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNv
bnN0CiAgICAgcmV0dXJuICFtX2Rpc3BhdGNoRGF0YTsKIH0KIAotYm9vbCBEYXRhOjphcHBseShj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgY29uc3QK
K2Jvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgc3RydWN0IFJlY29yZE1ldGFE
YXRhIHsKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVSZWNvcmRNZXRhRGF0
YShSZWNvcmRNZXRhRGF0YSYgbWV0YURhdGEsIGNvbnN0IERhdGEmIGZpbGVEYXRhKQogewogICAg
IGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgIGZpbGVEYXRhLmFwcGx5KFsmbWV0YURhdGEsICZz
dWNjZXNzXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICBmaWxlRGF0YS5hcHBseShb
Jm1ldGFEYXRhLCAmc3VjY2Vzc10oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHNwYW4pOwogICAgICAgICAK
ICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2aXNp
b24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTYgKzU3LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBTaW1wbGVBcmd1bWUKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTcGFuPFQsIEV4dGVudD4+IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0
ZDo6c3BhbjxULCBFeHRlbnQ+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3BhbjxULCBFeHRl
bnQ+JiBzcGFuKQorICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBzdGQ6OnNwYW48VCwgRXh0ZW50PiYgc3BhbikKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoRXh0ZW50ID09IFdURjo6ZHluYW1pY19leHRlbnQpCiAgICAgICAgICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzcGFuLnNpemUoKSk7CiAgICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNwYW4u
ZGF0YSgpKSwgc3Bhbi5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOwogICAgIH0KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNw
YW48VCwgRXh0ZW50Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8c3RkOjpzcGFuPFQsIEV4dGVudD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICAgICAgaWYg
Y29uc3RleHByIChFeHRlbnQgPT0gV1RGOjpkeW5hbWljX2V4dGVudCkgewpAQCAtNzQsNyArNzQs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1CiAgICAgICAgICAg
ICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIGlmICghKnNpemUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNwYW48VCwgRXh0ZW50
PigpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnNwYW48VCwgRXh0ZW50PigpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2l6ZSA9IEV4dGVudDsKICAgICAgICAgICAgIHN0
YXRpY19hc3NlcnQoRXh0ZW50LCAiQ2FuJ3QgZGVjb2RlIGEgZml4ZWQgc2l6ZSBvZiAwIik7CkBA
IC04Nyw3ICs4Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnUK
ICAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhS
ZWZlcmVuY2UoZGF0YVNpemUsIGFsaWdub2YoVCkpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gU3BhbjxULCBFeHRl
bnQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KCpzaXplKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnNwYW48VCwgRXh0ZW50PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pigqc2l6ZSkpOwogICAg
IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVu
Y2UuaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJy
YXlSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNiBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBXVEY6OmR5
bmFtaWNfZXh0ZW50PiB1c2luZyBBcnJheVJlZmVyZW5jZSA9IFNwYW48Y29uc3QgVCwgRXh0ZW50
PjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50ID0gV1RGOjpkeW5hbWljX2V4
dGVudD4gdXNpbmcgQXJyYXlSZWZlcmVuY2UgPSBzdGQ6OnNwYW48Y29uc3QgVCwgRXh0ZW50PjsK
IAogfSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YWVtb25EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGFlbW9uRGVjb2Rlci5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYWVtb25EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIERhZW1vbiB7CiAKIGNsYXNzIERlY29kZXIgewogcHVibGljOgotICAgIERlY29k
ZXIoU3Bhbjxjb25zdCB1aW50OF90PiBidWZmZXIpCisgICAgRGVjb2RlcihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikgeyB9CiAgICAg
fkRlY29kZXIoKTsKIApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW5CeXRlcyhz
aXplX3QpIGNvbnN0OwogCi0gICAgU3Bhbjxjb25zdCB1aW50OF90PiBtX2J1ZmZlcjsKKyAgICBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fYnVmZmVyUG9z
aXRpb24geyAwIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYXRh
UmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0
YVJlZmVyZW5jZS5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EYXRhUmVmZXJlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDYgQEAKIAog
bmFtZXNwYWNlIElQQyB7CiAKLXVzaW5nIERhdGFSZWZlcmVuY2UgPSBTcGFuPGNvbnN0IHVpbnQ4
X3Q+OwordXNpbmcgRGF0YVJlZmVyZW5jZSA9IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PjsKIAog
fSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1DbGllbnRDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDIxICs3OCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjsK
IAotICAgIHN0cnVjdCBTcGFuIHsKLSAgICAgICAgdWludDhfdCogZGF0YTsKLSAgICAgICAgc2l6
ZV90IHNpemU7Ci0gICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVz
c2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25u
ZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotICAgIGJvb2wgdHJ5U2VuZFN0cmVhbShUJiBtZXNzYWdlLCBTcGFuJik7CisgICAgYm9vbCB0
cnlTZW5kU3RyZWFtKFQmIG1lc3NhZ2UsIHN0ZDo6c3Bhbjx1aW50OF90PiYpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gdHJ5U2Vu
ZFN5bmNTdHJlYW0oVCYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmLCBUaW1lb3V0LCBTcGFu
Jik7CisgICAgc3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gdHJ5U2VuZFN5bmNTdHJlYW0o
VCYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmLCBUaW1lb3V0LCBzdGQ6OnNwYW48dWludDhf
dD4mKTsKICAgICBib29sIHRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0X3QgZGVz
dGluYXRpb25JRCwgVGltZW91dCk7Ci0gICAgdm9pZCBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVz
c2FnZShTcGFuJiYpOworICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2Uoc3Rk
OjpzcGFuPHVpbnQ4X3Q+JiYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJl
KFRpbWVvdXQpOwotICAgIHN0ZDo6b3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3Bhbjx1aW50OF90Pj4gdHJ5QWNxdWlyZShUaW1l
b3V0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3Bhbjx1aW50OF90Pj4gdHJ5QWNxdWlyZUFs
bChUaW1lb3V0KTsKIAogICAgIGVudW0gY2xhc3MgV2FrZVVwU2VydmVyIDogYm9vbCB7CiAgICAg
ICAgIE5vLApAQCAtMTAzLDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlZmVycmVkV2Fr
ZVVwU2VydmVyKCk7CiAgICAgdm9pZCBkZWNyZW1lbnRSZW1haW5pbmdNZXNzYWdlQ291bnRCZWZv
cmVTZW5kaW5nV2FrZVVwKCk7CiAKLSAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7CisgICAgc3RkOjpzcGFuPHVpbnQ4X3Q+IGFsaWduZWRTcGFuKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CiAgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxpbWl0KTsKIAogICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQpAQCAtMTQ2LDkgKzE0
Miw5IEBAIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChUJiYgbWUKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZFN0
cmVhbShUJiBtZXNzYWdlLCBTcGFuJiBzcGFuKQorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
Ojp0cnlTZW5kU3RyZWFtKFQmIG1lc3NhZ2UsIHN0ZDo6c3Bhbjx1aW50OF90PiYgc3BhbikKIHsK
LSAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwg
c3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBtZXNz
YWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwgc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpIH07CiAgICAg
aWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKICAgICAgICAgYXV0
byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1lc3NhZ2VFbmNvZGVyLnNpemUoKSk7CiAgICAgICAg
IGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwU2VydmVy
OjpZZXMpCkBAIC0xNzksNyArMTc1LDcgQEAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQgUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RkOjpvcHRpb25hbDxTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6dHJ5U2VuZFN5bmNTdHJlYW0oVCYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmIHJlcGx5
LCBUaW1lb3V0IHRpbWVvdXQsIFNwYW4mIHNwYW4pCitzdGQ6Om9wdGlvbmFsPFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlT
ZW5kU3luY1N0cmVhbShUJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHksIFRpbWVv
dXQgdGltZW91dCwgc3RkOjpzcGFuPHVpbnQ4X3Q+JiBzcGFuKQogewogICAgIC8vIEluIHRoaXMg
ZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJvciBoYXBwZW5lZCBhbmQgY2Fs
bGVyIHNob3VsZCBzdG9wIHByb2Nlc3NpbmcuCiAgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdl
IGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Yg
c3RyZWFtLgpAQCAtMTg4LDcgKzE4NCw3IEBAIHN0ZDo6b3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6U2UKICAgICAgICAgcmV0dXJuIFNlbmRTeW5jUmVzdWx0IHsgfTsKIAogICAgIGF1
dG8gcmVzdWx0ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gewotICAg
ICAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwg
c3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIg
bWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSB9Owog
ICAgICAgICBpZiAoIShtZXNzYWdlRW5jb2RlciA8PCBzeW5jUmVxdWVzdElEIDw8IG1lc3NhZ2Uu
YXJndW1lbnRzKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
YXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1lc3NhZ2VFbmNvZGVyLnNpemUoKSk7CkBAIC0y
MDEsNyArMTk3LDcgQEAgc3RkOjpvcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZQog
ICAgICAgICAgICAgYXV0byByZXBseVNwYW4gPSB0cnlBY3F1aXJlQWxsKHRpbWVvdXQpOwogICAg
ICAgICAgICAgaWYgKCFyZXBseVNwYW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbmRTeW5j
UmVzdWx0IHsgfTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiB7IG5ldyBEZWNvZGVyKHJlcGx5U3Bhbi0+ZGF0YSwgcmVwbHlTcGFuLT5zaXplLCBt
X2N1cnJlbnREZXN0aW5hdGlvbklEKSB9OworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHsgbmV3IERlY29kZXIocmVwbHlTcGFuLT5kYXRhKCksIHJl
cGx5U3Bhbi0+c2l6ZSgpLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEKSB9OwogICAgICAgICAgICAg
aWYgKGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgIT0gTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0
cmVhbU1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGVjb2Rlci0+bWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGRlY29kZXI7CkBAIC0yMjksNyArMjI1LDcgQEAgaW5saW5lIGJvb2wgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6dHJ5UwogICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUodGltZW91dCk7
CiAgICAgaWYgKCFzcGFuKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklE
LCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIg
ZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklELCAmKnNwYW4tPmRh
dGEoKSwgc3Bhbi0+c2l6ZSgpIH07CiAgICAgaWYgKCEoZW5jb2RlciA8PCBkZXN0aW5hdGlvbklE
KSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gU2l6ZSBvZiB0aGUgbWluaW11
bSBhbGxvY2F0aW9uIGlzIGluY29ycmVjdC4gTGlrZWx5IGFuIGFsaWdubWVudCBpc3N1ZS4KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQxLDE0ICsyMzcsMTQgQEAgaW5saW5lIGJvb2wgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5UwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUg
dm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2Fn
ZShTcGFuJiYgc3BhbikKK2lubGluZSB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKHN0ZDo6c3Bhbjx1aW50OF90PiYmIHNwYW4pCiB7Ci0g
ICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlLCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgIFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFt
TWVzc2FnZSwgJipzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkgfTsKICAgICAvLyBOb3Qgbm90aWZ5
aW5nIG9uIHdha2UgdXAgc2luY2UgdGhlIG91dC1vZi1zdHJlYW0gbWVzc2FnZSB3aWxsIGRvIHRo
YXQuCiAgICAgYXV0byByZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKICAgICBVTlVT
RURfVkFSSUFCTEUocmVzdWx0KTsKIH0KLWlubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoVGlt
ZW91dCB0aW1lb3V0KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c3RkOjpzcGFuPHVpbnQ4X3Q+PiBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKFRpbWVvdXQgdGltZW91dCkKIHsKICAg
ICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkubG9hZChzdGQ6
Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKICAgICAvLyBUaGlzIHdvdWxkIG1lYW4gd2UgdHJ5IHRv
IHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9y
LgpAQCAtMjU4LDcgKzI1NCw3IEBAIGlubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmVhbUNsaWVudENv
bm5lY3QKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmIChjbGllbnRMaW1pdCAhPSBDbGllbnRM
aW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFs
aWduZWRTcGFuKG1fY2xpZW50T2Zmc2V0LCB0b0xpbWl0KGNsaWVudExpbWl0KSk7Ci0gICAgICAg
ICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICAgICAg
aWYgKHJlc3VsdC5zaXplKCkgPj0gbWluaW11bU1lc3NhZ2VTaXplKQogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRpbWVvdXQuZGlkVGltZU91
dCgpKQpAQCAtMjc4LDcgKzI3NCw3IEBAIGlubGluZSBzdGQ6Om9wdGlvbmFsPFN0cmVhbUNsaWVu
dENvbm5lY3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1pbmxpbmUgc3RkOjpvcHRp
b25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
Ojp0cnlBY3F1aXJlQWxsKFRpbWVvdXQgdGltZW91dCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHN0
ZDo6c3Bhbjx1aW50OF90Pj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbChU
aW1lb3V0IHRpbWVvdXQpCiB7CiAgICAgLy8gVGhpcyB3b3VsZCBtZWFuIHdlIHRyeSB0byBzZW5k
IG1lc3NhZ2VzIGFmdGVyIGEgdGltZW91dC4gSXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvci4KICAg
ICAvLyBTaW5jZSB0aGUgdmFsdWUgaXMgdHJ1c3RlZCwgd2Ugb25seSBhc3NlcnQuCkBAIC0zMTks
NyArMzE1LDcgQEAgaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFNlcgogICAg
IHJldHVybiBXYWtlVXBTZXJ2ZXI6Ok5vOwogfQogCi1pbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6U3BhbiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpCitpbmxpbmUgc3RkOjpzcGFuPHVpbnQ4X3Q+IFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKIHsK
ICAgICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CiAgICAgQVNTRVJUKGxpbWl0IDwgZGF0
YVNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDI1ICs3NiwyNSBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpl
bnF1ZXVlCiAgICAgbV93b3JrUXVldWUud2FrZVVwKCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
Ojp0cnlBY3F1aXJlKCkKK3N0ZDo6b3B0aW9uYWw8c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+PiBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyZSgpCiB7CiAgICAgU2VydmVyTGlt
aXQgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxdWlyZSk7CiAgICAgaWYgKHNlcnZlckxpbWl0ID09IFNlcnZlckxpbWl0OjpzZXJ2ZXJJ
c1NsZWVwaW5nVGFnKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBy
ZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxp
bWl0KSk7Ci0gICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CisgICAg
aWYgKHJlc3VsdC5zaXplKCkgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKICAgICAgICAgc2VydmVy
TGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZXJ2ZXJM
aW1pdCwgU2VydmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVy
X2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwogICAgICAgICByZXN1bHQgPSBh
bGlnbmVkU3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAg
ICAgfQogCi0gICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKQorICAgIGlm
IChyZXN1bHQuc2l6ZSgpIDwgbWluaW11bU1lc3NhZ2VTaXplKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFjcXVpcmVBbGwoKQor
c3RkOjpzcGFuPHVpbnQ4X3Q+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphY3F1aXJlQWxs
KCkKIHsKICAgICByZXR1cm4gYWxpZ25lZFNwYW4oMCwgZGF0YVNpemUoKSAtIDEpOwogfQpAQCAt
MTI3LDcgKzEyNyw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UK
ICAgICBtX3NlcnZlck9mZnNldCA9IDA7CiB9CiAKLVN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpCitzdGQ6OnNwYW48dWludDhfdD4gU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKIHsKICAg
ICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CiAgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNp
emUoKSk7CkBAIC0xODgsNyArMTg4LDcgQEAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRp
c3BhdGNoUmVzdQogICAgICAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKCk7CiAgICAgICAgIGlm
ICghc3BhbikKICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdl
czsKLSAgICAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIgeyBzcGFuLT5kYXRhLCBzcGFuLT5zaXpl
LCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIH07CisgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVy
IHsgc3Bhbi0+ZGF0YSgpLCBzcGFuLT5zaXplKCksIG1fY3VycmVudERlc3RpbmF0aW9uSUQgfTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgbV9jb25uZWN0
aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpOwogICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOwpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxOCArNjgs
MTQgQEAgcHJvdGVjdGVkOgogICAgIC8vIE1lc3NhZ2VSZWNlaXZlUXVldWUKICAgICB2b2lkIGVu
cXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJikgZmlu
YWw7CiAKLSAgICBzdHJ1Y3QgU3BhbiB7Ci0gICAgICAgIHVpbnQ4X3QqIGRhdGE7Ci0gICAgICAg
IHNpemVfdCBzaXplOwotICAgIH07Ci0gICAgc3RkOjpvcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJl
KCk7Ci0gICAgU3BhbiBhY3F1aXJlQWxsKCk7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4+IHRyeUFjcXVpcmUoKTsKKyAgICBzdGQ6OnNwYW48dWludDhfdD4gYWNx
dWlyZUFsbCgpOwogCiAgICAgdm9pZCByZWxlYXNlKHNpemVfdCByZWFkU2l6ZSk7CiAgICAgdm9p
ZCByZWxlYXNlQWxsKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3Nh
Z2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKICAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7Ci0gICAgU3BhbiBhbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHN0ZDo6c3Bhbjx1aW50OF90PiBhbGlnbmVk
U3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwogICAgIHNpemVfdCBzaXplKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CiAgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CiAgICAg
c2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXpl
KTsgfQpAQCAtMTEyLDExICsxMDgsMTEgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c2VuZFN5bgogICAgICAgICBpZiAobV9pc0Rpc3BhdGNoaW5nU3RyZWFtTWVzc2FnZSkgewog
ICAgICAgICAgICAgYXV0byBzcGFuID0gYWNxdWlyZUFsbCgpOwogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgTWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAg
ICAgICAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpIH07CiAg
ICAgICAgICAgICAgICAgaWYgKChtZXNzYWdlRW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgb3V0T2ZTdHJlYW1FbmNvZGVyIHsgTWVzc2FnZU5hbWU6
OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAg
ICAgICAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBvdXRPZlN0cmVhbUVuY29kZXIgeyBNZXNz
YWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhKCksIHNwYW4uc2l6
ZSgpIH07CiAgICAgICAgIH0KICAgICB9CiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJl
ZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRC50
b1VJbnQ2NCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJ
KHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDExIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24o
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChB
U0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZp
Y2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxh
Z3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChzdGQ6OnNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0
KTsKICAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
c3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6
b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVs
dCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFk
QnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCk7CiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5z
aW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8
SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoU3Bhbjxjb25zdCBB
U0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90Piwg
T3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhh
bmRsZT4gY3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKHN0ZDo6c3Bhbjxjb25z
dCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRpZgogICAgIH5TYW5k
Ym94RXh0ZW5zaW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsMjcgKzQ0LDI3IEBAIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Ojp+V2Vi
Q29tcGlsZWQKIHsKIH0KIAotU3Bhbjxjb25zdCB1aW50OF90PiBXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdDo6dXJsRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QKK3N0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6dXJsRmlsdGVyc0J5dGVjb2RlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc3BhbldpdGhPZmZzZXRBbmRMZW5ndGgobV9kYXRhLnVybEZpbHRl
cnNCeXRlY29kZU9mZnNldCwgbV9kYXRhLnVybEZpbHRlcnNCeXRlY29kZVNpemUpOwogfQogCi1T
cGFuPGNvbnN0IHVpbnQ4X3Q+IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Ojp0b3BVUkxGaWx0
ZXJzQnl0ZWNvZGUoKSBjb25zdAorc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0Ojp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdAogewogICAgIHJl
dHVybiBzcGFuV2l0aE9mZnNldEFuZExlbmd0aChtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2Rl
T2Zmc2V0LCBtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSk7CiB9CiAKLVNwYW48Y29u
c3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZyYW1lVVJMRmlsdGVyc0J5
dGVjb2RlKCkgY29uc3QKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdDo6ZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdAogewogICAgIHJldHVy
biBzcGFuV2l0aE9mZnNldEFuZExlbmd0aChtX2RhdGEuZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVP
ZmZzZXQsIG1fZGF0YS5mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemUpOwogfQogCi1TcGFuPGNv
bnN0IHVpbnQ4X3Q+IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpzZXJpYWxpemVkQWN0aW9u
cygpIGNvbnN0CitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3Q6OnNlcmlhbGl6ZWRBY3Rpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3BhbldpdGhP
ZmZzZXRBbmRMZW5ndGgobV9kYXRhLmFjdGlvbnNPZmZzZXQsIG1fZGF0YS5hY3Rpb25zU2l6ZSk7
CiB9CiAKLVNwYW48Y29uc3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnNw
YW5XaXRoT2Zmc2V0QW5kTGVuZ3RoKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnNw
YW5XaXRoT2Zmc2V0QW5kTGVuZ3RoKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ICsgbGVuZ3RoIDw9IG1fZGF0YS5kYXRhLT5z
aXplKCkpOwogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2RhdGEu
ZGF0YS0+ZGF0YSgpKSArIG9mZnNldCwgbGVuZ3RoIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgJKHJldmlzaW9uIDI5MDQ3
MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YSYmKTsKIAotICAgIFNwYW48Y29uc3QgdWludDhfdD4gdXJsRmlsdGVyc0J5dGVjb2RlKCkgY29u
c3QgZmluYWw7Ci0gICAgU3Bhbjxjb25zdCB1aW50OF90PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUo
KSBjb25zdCBmaW5hbDsKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZyYW1lVVJMRmlsdGVyc0J5
dGVjb2RlKCkgY29uc3QgZmluYWw7Ci0gICAgU3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVk
QWN0aW9ucygpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB1cmxG
aWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CisgICAg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNlcmlhbGl6ZWRBY3Rpb25zKCkgY29uc3QgZmluYWw7
CiAgICAgCi0gICAgU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuV2l0aE9mZnNldEFuZExlbmd0aChz
aXplX3QsIHNpemVfdCkgY29uc3Q7CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW5X
aXRoT2Zmc2V0QW5kTGVuZ3RoKHNpemVfdCwgc2l6ZV90KSBjb25zdDsKIAogICAgIFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YSBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oCShyZXZpc2lv
biAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3Nl
ckNoZWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1eGlsaWFy
eVByb2Nlc3M7CiAKIGJvb2wgaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNz
aW9uKCk7CiBib29sIGhhc1Byb2hpYml0ZWRVc2FnZVN0cmluZ3MoKTsKLVNwYW48Y29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJik7CitzdGQ6OnNwYW48Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFw
cEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7CiBib29sIGlzUnVubmluZ1Rl
c3QoY29uc3QgU3RyaW5nJiBidW5kbGVJRCk7CiB2b2lkIGRldGVybWluZUlUUFN0YXRlKCk7CiBi
b29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0JKHJldmlzaW9uIDI5
MDQ3MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hl
Y2tzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgaXNSdW5uaW5nVGVz
dChjb25zdCBTdHJpbmcmIGJ1bmRsZUkKICAgICByZXR1cm4gYnVuZGxlSUQgPT0gImNvbS5hcHBs
ZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyB8fCBidW5kbGVJRCA9PSAiY29tLmFwcGxlLldlYktp
dC5XZWJLaXRUZXN0UnVubmVyIl9zIHx8IGJ1bmRsZUlEID09ICJvcmcud2Via2l0LldlYktpdFRl
c3RSdW5uZXJBcHAiX3M7CiB9CiAKLVNwYW48Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkKK3N0
ZDo6c3Bhbjxjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5z
Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQogewogICAgIGlmIChidW5kbGVJRCA9
PSAiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIikgewogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgZG9tYWlucyA9IHN0ZDo6YXJyYXkgewpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkocmV2aXNp
b24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7
CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5k
bGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0
ZDo6c3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxI
YW5kbGU+CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMs
IFthdWRpdFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4gewogICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIGF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck0KIAogYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgog
ewotICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuIHsgc2VydmljZXMu
YmVnaW4oKSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIGZsYWdzKTsKKyAgICByZXR1
cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjpzcGFuIHsgc2VydmljZXMuYmVnaW4o
KSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIGZsYWdzKTsKIH0KIAogYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4KQEAgLTM2Nyw3ICszNjcsNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvcklPCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoU3Bhbjxjb25zdCBB
U0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBh
dWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMo
c3RkOjpzcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZl
Y3RvcjxIYW5kbGU+CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoaW9r
aXRDbGFzc2VzLCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChBU0NJSUxpdGVyYWwgaW9raXRDbGFzcykg
ewogICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNp
b24oaW9raXRDbGFzcywgYXVkaXRUb2tlbiwgZmxhZ3MpOwpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2lu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCShyZXZpc2lvbiAyOTA0NzMp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1v
bi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBA
IHN0YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX28KICAgICBhdXRvIG1lc3Nh
Z2VUeXBlIHsgc3RhdGljX2Nhc3Q8UENNOjpNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0
X3VpbnQ2NChyZXF1ZXN0LCBQQ006OnByb3RvY29sTWVzc2FnZVR5cGVLZXkpKSB9OwogICAgIHNp
emVfdCBkYXRhU2l6ZSB7IDAgfTsKICAgICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25h
cnlfZ2V0X2RhdGEocmVxdWVzdCwgUENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0
YVNpemUpOwotICAgIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07CisgICAgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBkYXRhU2l6ZSB9OwogICAgIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKERh
ZW1vbjo6Q29ubmVjdGlvbih4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVx
dWVzdCkpLCBtZXNzYWdlVHlwZSwgZW5jb2RlZE1lc3NhZ2UsIHJlcGx5U2VuZGVyKG1lc3NhZ2VU
eXBlLCByZXF1ZXN0KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjkwNDczKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODE1Niw3ICs4MTU2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2NlcwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAKLXN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1SU9LaXRDbGFzc2VzKCkK
K3N0YXRpYyBzdGQ6OnNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBncHVJT0tpdENsYXNzZXMoKQog
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzZXJ2aWNlcyB7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTgxOTAsNyArODE5MCw3IEBAIHN0YXRpYyBTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gZ3B1SU9LaXQKICAgICByZXR1cm4gc2VydmljZXM7CiB9CiAKLXN0YXRpYyBT
cGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1TWFjaFNlcnZpY2VzKCkKK3N0YXRpYyBzdGQ6OnNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBncHVNYWNoU2VydmljZXMoKQogewogICAgIHN0YXRpYyBj
b25zdGV4cHIgc3RkOjphcnJheSBzZXJ2aWNlcyB7CiAgICAgICAgICJjb20uYXBwbGUuTVRMQ29t
cGlsZXJTZXJ2aWNlIl9zLApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTIgKzE0NSwxMiBAQCBzdGF0aWMgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEgZW5jb2RlCiAgICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya0NhY2hlOjpE
YXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCBnZXREYXRhKGNvbnN0IFQmLCBjb25zdCBGdW5jdGlvbjxib29s
KFNwYW48Y29uc3QgdWludDhfdD4pPiYpOwotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3Qg
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQg
Z2V0RGF0YShjb25zdCBUJiwgY29uc3QgRnVuY3Rpb248Ym9vbChzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4pPiYpOwordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1w
bGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGJvb2woc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQog
ewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpAQCAtMjQy
LDcgKzI0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcHBlZERhdGE+IG9wZW5BbmQKIHN0
YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0
YSYgZmlsZURhdGEsIFBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKIHsKICAgICBib29sIHN1Y2Nlc3Mg
PSB0cnVlOwotICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikgeworICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBzcGFuKSB7CiAgICAgICAgIGlmICh3cml0ZVRvRmlsZShmZCwgc3Bh
bi5kYXRhKCksIHNwYW4uc2l6ZSgpKSA9PSAtMSkgewogICAgICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCShyZXZp
c2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGkKICAgICBpZiAoc3Bhbi5zaXplKCkgIT0g
MTYpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJE
aWRDbGlja05vdGlmaWNhdGlvbihVVUlEIHsgU3Bhbjxjb25zdCB1aW50OF90LCAxNj4geyBzcGFu
LmRhdGEoKSwgMTYgfSB9KTsKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24oVVVJRCB7IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90LCAxNj4geyBzcGFu
LmRhdGEoKSwgMTYgfSB9KTsKIH0KIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZENsb3NlTm90aWZpY2F0aW9ucyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJl
ZiwgV0tBcnJheVJlZiBub3RpZmljYXRpb25JRHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkCiAgICAgICAgICAgICBpZiAoc3Bhbi5zaXplKCkgIT0gMTYpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25J
RCA9IFVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IHNwYW4uZGF0YSgpLCAxNiB9IH07
CisgICAgICAgICAgICBjb3JlTm90aWZpY2F0aW9uSUQgPSBVVUlEIHsgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3QsIDE2PiB7IHNwYW4uZGF0YSgpLCAxNiB9IH07CiAgICAgICAgIH0KIAogICAgICAg
ICBBU1NFUlQoY29yZU5vdGlmaWNhdGlvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVt
b3RlUmVuZGVyaW5nQmFja2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFNwYW48dWludDhf
dD4gcmVzdWx0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFBpeGVsQnVm
ZmVyRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVy
LCBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIHN0ZDo6c3Bhbjx1aW50OF90PiByZXN1bHQpCiB7CiAgICAgaWYgKGF1dG8g
aGFuZGxlID0gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXIocmVzdWx0LnNpemUo
KSkpIHsKICAgICAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92
ZSgqaGFuZGxlKSwgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpIH07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHJldmlzaW9uIDI5MDQ3MykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwotICAgIGJvb2wg
Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgU3Bhbjx1aW50OF90PiByZXN1
bHQpOworICAgIGJvb2wgZ2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0
JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgc3Rk
OjpzcGFuPHVpbnQ4X3Q+IHJlc3VsdCk7CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlckZvckltYWdl
QnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGRlc3RGb3JtYXQpOwogICAgIFN0cmluZyBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNv
cmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICBWZWN0b3I8dWludDhfdD4gZ2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLmgJKHJldmlzaW9uIDI5MDQ3MykKKysrIFNvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgRGFlbW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFbmNvZGVkTWVzc2FnZSYmKT4gY3JlYXRlUmVwbHlTZW5kZXIoV2ViS2l0OjpXZWJQdXNoRDo6
TWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KTsKLSAgICB2
b2lkIGRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCwgV2ViS2l0OjpXZWJQ
dXNoRDo6TWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYpOworICAgIHZvaWQgZGVj
b2RlQW5kSGFuZGxlTWVzc2FnZSh4cGNfY29ubmVjdGlvbl90LCBXZWJLaXQ6OldlYlB1c2hEOjpN
ZXNzYWdlVHlwZSwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmKTsKIAogICAgIGJvb2wgY2Fu
UmVnaXN0ZXJGb3JOb3RpZmljYXRpb25zKENsaWVudENvbm5lY3Rpb24mKTsKIApJbmRleDogU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQkocmV2aXNpb24gMjkwNDczKQorKysg
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDMsNyArMjAzLDcgQEAgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGdldFB1c2hQZXJtaXNz
aQogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4K
LXZvaWQgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5KENsaWVudENvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVyKQor
dm9pZCBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHkoQ2xpZW50Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRl
cikKIHsKICAgICBXZWJLaXQ6OkRhZW1vbjo6RGVjb2RlciBkZWNvZGVyKGVuY29kZWRNZXNzYWdl
KTsKIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJl
cGx5KENsaWUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4KLXZvaWQgaGFuZGxlV2ViUHVz
aERNZXNzYWdlKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFNwYW48Y29uc3QgdWludDhf
dD4gZW5jb2RlZE1lc3NhZ2UpCit2b2lkIGhhbmRsZVdlYlB1c2hETWVzc2FnZShDbGllbnRDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3Nh
Z2UpCiB7CiAgICAgV2ViS2l0OjpEYWVtb246OkRlY29kZXIgZGVjb2RlcihlbmNvZGVkTWVzc2Fn
ZSk7CiAKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIERhZW1vbjo6Y29ubmVjdGlvbkV2ZW50SGFu
ZGxlcih4cGNfCiAgICAgYXV0byBtZXNzYWdlVHlwZSB7IHN0YXRpY19jYXN0PE1lc3NhZ2VUeXBl
Pih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sTWVzc2FnZVR5cGVL
ZXkpKSB9OwogICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKICAgICBjb25zdCB2b2lkKiBkYXRh
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwgcHJvdG9jb2xFbmNvZGVkTWVzc2Fn
ZUtleSwgJmRhdGFTaXplKTsKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdl
IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9OworICAgIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKICAgICAKICAgICBkZWNvZGVBbmRIYW5kbGVN
ZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0KSwgbWVz
c2FnZVR5cGUsIGVuY29kZWRNZXNzYWdlLCBjcmVhdGVSZXBseVNlbmRlcihtZXNzYWdlVHlwZSwg
cmVxdWVzdCkpOwogfQpAQCAtMzU2LDcgKzM1Niw3IEBAIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RW5jb2RlZE1lc3NhZ2UmJikKICAgICB9OwogfQogCi12b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFu
ZGxlTWVzc2FnZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVyKQordm9pZCBEYWVtb246
OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNz
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2Vu
ZGVyKQogewogICAgIEFTU0VSVChtZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpID09
ICEhcmVwbHlTZW5kZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA0NzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0yNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEJlZ2luIHRyYW5zaXRpb24gZnJv
bSBXVEY6OlNwYW4gdG8gc3RkOjpzcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzcxNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcDoKKyAgICAg
ICAgKGFkZCk6CisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFuZCB1c2UgdGhlIG1v
ZGVybiBIYXNoZXIgaW5zdGVhZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAkocmV2aXNpb24gMjkwNDczKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSW50ZWdlckFycmEKIAogaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25z
dCBJbnRlZ2VyQXJyYXkmIGFycmF5KQogewotICAgIGFkZChoYXNoZXIsIFNwYW4geyBhcnJheS5p
bnRlZ2VycygpLCBhcnJheS5zaXplKCkgfSk7CisgICAgYWRkKGhhc2hlciwgc3RkOjpzcGFuIHsg
YXJyYXkuaW50ZWdlcnMoKSwgYXJyYXkuc2l6ZSgpIH0pOwogfQogCiBzdHJ1Y3QgSW50ZWdlckFy
cmF5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8SW50ZWdlckFycmF5PiB7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA0OTEp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAy
Mi0wMi0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIEJlZ2luIHRyYW5zaXRpb24gZnJvbSBXVEY6OlNwYW4gdG8gc3RkOjpzcGFuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcxNzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1NwYW4uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0RhdGFGdW5jdGlvbnMuaDoKKyAgICAgICAg
KFdUUjo6ZGF0YVRvVVVJRCk6CisKIDIwMjItMDItMjQgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0
aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciByZXBsYWNpbmcg
V0tGb3VuZFRleHRSYW5nZXMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Nw
YW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NwYW4u
Y3BwCShyZXZpc2lvbiAyOTA0NjYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
cGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKIFRFU1QoV1RGU3BhbiwgQ29uc3RydWN0b3IpCiB7Ci0gICAgU3Bhbjx1aW50
OF90PiBhU3BhbjsKKyAgICBzdGQ6OnNwYW48dWludDhfdD4gYVNwYW47CiAgICAgRVhQRUNUX0VR
KGFTcGFuLnNpemUoKSwgMHUpOwogfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDI5
MDQ2NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5z
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMCArMTUxLDEwIEBAIHB1YmxpYzoKICAg
ICBjb25zdCBDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhJiBkYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9OwogCiBwcml2YXRlOgotICAgIFNwYW48Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFj
dGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IG1fZGF0YS5hY3Rpb25zLmRhdGEoKSwgbV9k
YXRhLmFjdGlvbnMuc2l6ZSgpIH07IH0KLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHVybEZpbHRl
cnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRhLnVybEZpbHRlcnMuZGF0
YSgpLCBtX2RhdGEudXJsRmlsdGVycy5zaXplKCkgfTsgfQotICAgIFNwYW48Y29uc3QgdWludDhf
dD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBtX2RhdGEu
dG9wVVJMRmlsdGVycy5kYXRhKCksIG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSB9OyB9Ci0g
ICAgU3Bhbjxjb25zdCB1aW50OF90PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHsgbV9kYXRhLmZyYW1lVVJMRmlsdGVycy5kYXRhKCksIG1fZGF0YS5mcmFt
ZVVSTEZpbHRlcnMuc2l6ZSgpIH07IH0KKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gc2Vy
aWFsaXplZEFjdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IG1fZGF0YS5hY3Rpb25zLmRh
dGEoKSwgbV9kYXRhLmFjdGlvbnMuc2l6ZSgpIH07IH0KKyAgICBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gdXJsRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBtX2RhdGEu
dXJsRmlsdGVycy5kYXRhKCksIG1fZGF0YS51cmxGaWx0ZXJzLnNpemUoKSB9OyB9CisgICAgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRvcFVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHsgbV9kYXRhLnRvcFVSTEZpbHRlcnMuZGF0YSgpLCBtX2RhdGEudG9wVVJMRmls
dGVycy5zaXplKCkgfTsgfQorICAgIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBmcmFtZVVSTEZp
bHRlcnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRhLmZyYW1lVVJMRmls
dGVycy5kYXRhKCksIG1fZGF0YS5mcmFtZVVSTEZpbHRlcnMuc2l6ZSgpIH07IH0KIAogICAgIElu
TWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEmJiBkYXRhKQogICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmgJKHJldmlzaW9uIDI5MDQ2NikKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvRGF0YUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw3IEBAIGlubGluZSBXS0RhdGFSZWYgZGF0YVZhbHVlKFdLVHlwZVJlZiB2YWwKIGlubGlu
ZSBVVUlEIGRhdGFUb1VVSUQoV0tEYXRhUmVmIGRhdGEpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
V0tEYXRhR2V0U2l6ZShkYXRhKSA9PSAxNik7Ci0gICAgcmV0dXJuIFVVSUQgeyBTcGFuPGNvbnN0
IHVpbnQ4X3QsIDE2PiB7IFdLRGF0YUdldEJ5dGVzKGRhdGEpLCAxNiB9IH07CisgICAgcmV0dXJu
IFVVSUQgeyBzdGQ6OnNwYW48Y29uc3QgdWludDhfdCwgMTY+IHsgV0tEYXRhR2V0Qnl0ZXMoZGF0
YSksIDE2IH0gfTsKIH0KIAogaW5saW5lIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gdXVpZFRvRGF0
YShjb25zdCBVVUlEJiB1dWlkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458160</attachid>
            <date>2022-04-22 11:40:26 -0700</date>
            <delta_ts>2022-04-28 17:38:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237178-20220422114025.patch</filename>
            <type>text/plain</type>
            <size>48421</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMwYTZkYzU4NjcyYzk4ODZhZjkyNzU5
OTI4ZjVkNmYzYjJjZTYwZTcuLjU3NTQ4MGM5YTViNmZjOGY3OTA0OWI1NTMxNjgxN2Y2NGMwNWNk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDQtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBCZWdpbiB0cmFuc2l0aW9uIGZyb20g
V1RGOjpTcGFuIHRvIHN0ZDo6c3BhbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3MTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVkdWN0aW9uIGd1aWRlcyBkb24ndCB3b3JrIHdpdGggdGVtcGxhdGUg
YWxpYXNlcywgc28gSSBjaGFuZ2VkIHRoZSBTcGFuIGNvbnN0cnVjdG9ycyB0aGF0CisgICAgICAg
IHVzZWQgdGhlIGRlZHVjdGlvbiBndWlkZXMgdG8gdXNlIHN0ZDo6c3BhbiBkaXJlY3RseSB0byB1
c2UgaXRzIGRlZHVjdGlvbiBndWlkZXMuCisKKyAgICAgICAgYmVnaW4gYW5kIGVuZCBhbHNvIG5v
IGxvbmdlciByZXR1cm4gYSBwb2ludGVyLCBidXQgYSBwcm9wZXIgaXRlcmF0b3IgdGhhdCBjYW4n
dCBiZSB1c2VkIGluCisgICAgICAgIHBvaW50ZXIgYXJpdGhtZXRpYywgc28gSSB1c2VkICYqIHRv
IHR1cm4gaXQgaW50byBhIHBvaW50ZXIuCisKKyAgICAgICAgRG9pbmcgdGhpcyBiZWZvcmUgYW55
IHVwY29taW5nIGJyYW5jaCB3aWxsIG1ha2UgYnJhbmNoIG1lcmdlcyBlYXNpZXIgYmVjYXVzZSB3
ZSB3b24ndCBoYXZlCisgICAgICAgIHRvIHdvcnJ5IGFib3V0IHN0ZDo6c3BhbiB2cyBXVEY6OlNw
YW4gYmVjYXVzZSB0aGV5IHdpbGwgYm90aCB3b3JrLgorCisgICAgICAgICogd3RmL1NIQTEuaDoK
KyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMpOgorICAgICAgICAqIHd0Zi9TcGFuLmg6Cisg
ICAgICAgIChzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8c3RkOjpyZW1vdmVfcG9pbnRlcl90PGRlY2x0
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29k
ZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6RGVjb2Rlcik6Cisg
ICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluIGNvbnN0KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OnJld2lu
ZCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpjdXJyZW50T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV1RGOjpiYXNlNjRFbmNvZGVJ
bnRlcm5hbCk6CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6CisgICAgICAgICogd3RmL3Rl
eHQvQmFzZTY0Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1R5cGVBZGFwdGVyPEJhc2U2NFNwZWNp
ZmljYXRpb24+Ojp3cml0ZVRvIGNvbnN0KToKKwogMjAyMi0wNC0yMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtXVEZdIEFkZCBzdHJpbmcgY29uY2F0ZW5h
dGUgYWRhcHRlciBmb3IgVVVJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg5ZDY5NmEzODMxYjY4ZjQ0MzIyZGQ5
NjY4OWQxMDM0OWY2MzY0NTMuLmUwZGE0M2YzYjFjMTA2ZGNkMzQyNzBlMTQwOGZiNDhkNjQzM2Zj
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0wNC0yMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEJlZ2luIHRyYW5zaXRp
b24gZnJvbSBXVEY6OlNwYW4gdG8gc3RkOjpzcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcxNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25z
dW1lRGF0YUJ5Q2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdD
TVBheWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFU0dDTVBh
eWxvYWQpOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29h
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ00pOgor
ICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVucXVldWUpOgor
ICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
ZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXRoOjpyb3VuZFJlY3QpOgorICAg
ICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNv
bkxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29sb3JTYW1wbGVyOjpzYW1wbGVUb3ApOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKwogMjAyMi0wNC0yMiAgQWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEJveFRyZWUgc2hv
dWxkIGJlIGFibGUgdG8gYnVpbGQgbm9uLWlubGluZSBjb250ZW50IHRyZWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MzRiYWUwZDllYzM1YjgyYTgxMDg5ODg4Y2ExMjczOTc4NDFmOGZiMC4uMWY3NzYxMmVmZDRiZTFi
MGVkMzRlY2I5OGVlNDNhYmU3MmUxZmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
Mi0wNC0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIEJlZ2luIHRyYW5zaXRpb24gZnJvbSBXVEY6OlNwYW4gdG8gc3RkOjpzcGFuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcxNzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5j
ZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuaDoKKyAgICAgICAg
KElQQzo6YWRkKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cCk6CisKIDIwMjItMDQtMjIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHTGliXSBNYWtlIFdlYktpdFNldHRpbmdzIFhTUyBhdWRpdG9y
IGZ1bmN0aW9ucyBuby1vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE4MDA3NTMz
ZmFiMTAwYTJjNDdjYmNjOTJhNTdlMzYwMmQ3YTIzYjYuLjE4ZDE4Mzg4NDcxZjk0YmU2OTVhZDlk
MTlkYzZkZGNjZWMwYTU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMi0wNC0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEJlZ2luIHRyYW5zaXRpb24gZnJvbSBXVEY6OlNwYW4gdG8gc3Rk
OjpzcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzcxNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEhpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcDoKKyAgICAgICAgKGFkZCk6CisKIDIwMjIt
MDQtMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFhTUyBBdWRpdG9yOiBQYXJ0IDQgKFNldHRpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU0hBMS5oIGIvU291cmNlL1dURi93dGYvU0hBMS5oCmluZGV4IGViODc4NTI0ODVlMWI2
ZmEzYjMyYjcwZTVmYWUxMzNmOTA0NGYzNDUuLjM5MTIxMDU0ZjBkMTkxZWU5NTU3ZjZmMmNjODQ4
ZjcyNzUyZTY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9TSEExLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
ZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAg
ICAgIGFkZEJ5dGVzKFNwYW4geyBpbnB1dCwgbGVuZ3RoIH0pOworICAgICAgICBhZGRCeXRlcyhz
dGQ6OnNwYW4geyBpbnB1dCwgbGVuZ3RoIH0pOwogICAgIH0KIAogICAgIC8vIFNpemUgb2YgdGhl
IFNIQTEgaGFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Bhbi5oIGIvU291cmNlL1dU
Ri93dGYvU3Bhbi5oCmluZGV4IDkxYjg1MTE3MjE0ZmE2OGMzOGEwNGFkYzM0NDZmNDA2ZWVlNDQ0
NzAuLjUyODNjNTIzMWZkZmRiZTVjNjZlYjZkNjVmOWE5Y2NlYWIyZjQwYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1NwYW4uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGFuLmgKQEAgLTEw
LDIwICsxMCwxMCBAQAogI2lmbmRlZiBfV1RGX0xJQkNQUF9TUEFOCiAjZGVmaW5lIF9XVEZfTElC
Q1BQX1NQQU4KIAotLy8gSW1wb3J0cyBhIGNvcHkgb2YgPHNwYW4+IGZyb20gZTg5MjcwNWQ3NGM3
MzY2YTE0MDRhM2IzNDcxMDAxZWRhYTc2NTlmOCBvZiB0aGUKLS8vIGxpYmMrKyBwcm9qZWN0ICho
dHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0KSBhbmQgbW9kaWZpZXMgaXQg
dG8KLS8vIHdvcmsgb24gdG9wIG9mIGFueSBzdGFuZGFyZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9u
LgotLy8KLS8vIC0gUmVuYW1lcyBtYWNyb3Mgd2l0aCBfTElCQ1BQXyBwcmVmaXggdG8gdXNlIHRo
ZSBwcmVmaXggX1dURl9MSUJDUFBfCi0vLyAtIFJlbmFtZXMgc3RkOjpzcGFuIHRvIFdURjo6U3Bh
bgotLy8gLSBSZW5hbWVzIHN0ZDo6YXNfYnl0ZXMvc3RkOjphc193cml0YWJsZV9ieXRlcyB0byBX
VEY6OmFzQnl0ZXMvV1RGOjphc1dyaXRhYmxlQnl0ZXMuCi0vLyAtIFN0b3AgI2luY2x1ZGluZyBp
bnRlcm5hbCBsaWJjKysgaGVhZGVycy4KLS8vIC0gUmVtb3ZlIGNoZWNrIGZvciA+IGMrKzE3Lgot
Ly8gLSBSZW1vdmUgcHVzaC9wb3AgYXZhaWxhYmlsaXR5IG9mIG1pbi9tYXggbWFjcm9zLgotCiAj
aW5jbHVkZSA8YXJyYXk+ICAgICAgICAvLyBmb3IgYXJyYXkKICNpbmNsdWRlIDxjc3RkZGVmPiAg
ICAgIC8vIGZvciBieXRlCiAjaW5jbHVkZSA8aXRlcmF0b3I+ICAgICAvLyBmb3IgaXRlcmF0b3Jz
CisjaW5jbHVkZSA8c3Bhbj4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4gIC8vIGZvciByZW1vdmVf
Y3YsIGV0YwogCiAvLyBBZGRzIHNvbWUgbWFjcm8gZGVmaW5lcyB1c3VhbGx5IGRlZmluZWQgaW4g
X19jb25maWcuCkBAIC0zNyw0MTggKzI3LDI0IEBACiAjZGVmaW5lIF9XVEZfTElCQ1BQX1RFTVBM
QVRFX1ZJUwogI2RlZmluZSBfV1RGX1ZTVEQgc3RkCiAKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgotI2RlZmluZSBfV1RGX0xJQkNQUF9BU1NFUlQgQVNTRVJUCi0KIF9XVEZfTElCQ1BQX0JF
R0lOX05BTUVTUEFDRQogCi1pbmxpbmUgY29uc3RleHByIHN0ZDo6c2l6ZV90IGR5bmFtaWNfZXh0
ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCgpOwotdGVtcGxhdGUg
PHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudCA9IGR5bmFtaWNfZXh0ZW50PiBjbGFz
cyBTcGFuOwotCi0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19pc19zcGFuX2ltcGwg
OiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6
OnNpemVfdCBfRXh0ZW50Pgotc3RydWN0IF9faXNfc3Bhbl9pbXBsPFNwYW48X1RwLCBfRXh0ZW50
Pj4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1z
dHJ1Y3QgX19pc19zcGFuIDogcHVibGljIF9faXNfc3Bhbl9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8
X1RwPj4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19pc19zdGRfYXJyYXlf
aW1wbCA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHAs
IHN0ZDo6c2l6ZV90IF9Tej4KLXN0cnVjdCBfX2lzX3N0ZF9hcnJheV9pbXBsPHN0ZDo6YXJyYXk8
X1RwLCBfU3o+PiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7fTsKLQotdGVtcGxhdGUgPGNsYXNz
IF9UcD4KLXN0cnVjdCBfX2lzX3N0ZF9hcnJheSA6IHB1YmxpYyBfX2lzX3N0ZF9hcnJheV9pbXBs
PHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNz
IF9FbGVtZW50VHlwZSwgY2xhc3MgPSB2b2lkPgotc3RydWN0IF9faXNfc3Bhbl9jb21wYXRpYmxl
X2NvbnRhaW5lciA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZT4KLXN0cnVjdCBfX2lzX3NwYW5fY29tcGF0aWJsZV9j
b250YWluZXI8X1RwLCBfRWxlbWVudFR5cGUsCi0gICAgICAgIHN0ZDo6dm9pZF90PAotICAgICAg
ICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBTcGFuCi0gICAgICAgICAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhX19pc19zcGFuPF9UcD46OnZhbHVlLCBzdGQ6Om51bGxwdHJfdD46
OnR5cGUsCi0gICAgICAgIC8vIGlzIG5vdCBhIHNwZWNpYWxpemF0aW9uIG9mIGFycmF5Ci0gICAg
ICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhX19pc19zdGRfYXJyYXk8X1RwPjo6dmFs
dWUsIHN0ZDo6bnVsbHB0cl90Pjo6dHlwZSwKLSAgICAgICAgLy8gc2Q6OmlzX2FycmF5X3Y8Q29u
dGFpbmVyPiBpcyBmYWxzZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFz
dGQ6OmlzX2FycmF5X3Y8X1RwPiwgc3RkOjpudWxscHRyX3Q+Ojp0eXBlLAotICAgICAgICAvLyBz
dGQ6OmRhdGEoY29udCkgYW5kIHN0ZDo6c2l6ZShjb250KSBhcmUgd2VsbCBmb3JtZWQKLSAgICAg
ICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6OmRlY2x2YWw8X1RwPigpKSksCi0gICAgICAg
ICAgICBkZWNsdHlwZShzdGQ6OnNpemUoc3RkOjpkZWNsdmFsPF9UcD4oKSkpLAotICAgICAgICAv
LyByZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRhdGEoY29udCkpPigqKVtdIGlzIGNvbnZlcnRp
YmxlIHRvIEVsZW1lbnRUeXBlKCopW10KLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPAotICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxzdGQ6OnJlbW92ZV9w
b2ludGVyX3Q8ZGVjbHR5cGUoc3RkOjpkYXRhKHN0ZDo6ZGVjbHZhbDxfVHAgJj4oKSkpPigqKVtd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0VsZW1lbnRUeXBlKCopW10+LAot
ICAgICAgICAgICAgICAgIHN0ZDo6bnVsbHB0cl90Pjo6dHlwZQotICAgICAgICA+PgotICAgIDog
cHVibGljIHN0ZDo6dHJ1ZV90eXBlIHt9OwotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBfVHAsIHN0
ZDo6c2l6ZV90IF9FeHRlbnQ+Ci1jbGFzcyBfV1RGX0xJQkNQUF9URU1QTEFURV9WSVMgU3BhbiB7
Ci1wdWJsaWM6Ci0vLyAgY29uc3RhbnRzIGFuZCB0eXBlcwotICAgIHVzaW5nIGVsZW1lbnRfdHlw
ZSAgICAgICAgICAgPSBfVHA7Ci0gICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgICAgICAgICA9IHN0
ZDo6cmVtb3ZlX2N2X3Q8X1RwPjsKLSAgICB1c2luZyBzaXplX3R5cGUgICAgICAgICAgICAgID0g
c3RkOjpzaXplX3Q7Ci0gICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgICAgICA9IHN0ZDo6cHRy
ZGlmZl90OwotICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgICAgICAgPSBfVHAgKjsKLSAgICB1
c2luZyBjb25zdF9wb2ludGVyICAgICAgICAgID0gY29uc3QgX1RwICo7Ci0gICAgdXNpbmcgcmVm
ZXJlbmNlICAgICAgICAgICAgICA9IF9UcCAmOwotICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAg
ICAgICAgPSBjb25zdCBfVHAgJjsKLSNpZiAoX1dURl9MSUJDUFBfREVCVUdfTEVWRUwgPT0gMikg
fHwgZGVmaW5lZChfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lOVEVSX0lURVJBVE9SUykKLSAgICB1
c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gcG9pbnRlcjsKLSNlbHNlCi0gICAgdXNpbmcg
aXRlcmF0b3IgICAgICAgICAgICAgICA9IF9fd3JhcF9pdGVyPHBvaW50ZXI+OwotI2VuZGlmCi0g
ICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciAgICAgICA9IF9XVEZfVlNURDo6cmV2ZXJzZV9pdGVy
YXRvcjxpdGVyYXRvcj47Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBleHRlbnQg
PSBfRXh0ZW50OwotCi0vLyBbc3Bhbi5jb25zXSwgc3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHksIGFz
c2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9TeiA9
IF9FeHRlbnQsIHN0ZDo6ZW5hYmxlX2lmX3Q8X1N6ID09IDAsIHN0ZDo6bnVsbHB0cl90PiA9IG51
bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4o
KSBub2V4Y2VwdCA6IF9fZGF0YXtudWxscHRyfSB7fQotCi0gICAgY29uc3RleHByIFNwYW4gICAg
ICAgICAgIChjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwotICAgIGNvbnN0ZXhwciBT
cGFuJiBvcGVyYXRvcj0oY29uc3QgU3BhbiYpIG5vZXhjZXB0ID0gZGVmYXVsdDsKLQotICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBleHBsaWNpdCBTcGFuKHBvaW50
ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0YXtfX3B0cn0KLSAgICAgICAgeyAo
dm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfX2NvdW50LCAic2l6
ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKHB0ciwgbGVuKSIpOyB9Ci0gICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGV4cGxpY2l0IFNwYW4ocG9pbnRl
ciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9Ci0gICAgICAgIHsgKHZvaWQpX19sOyAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gc3RkOjpkaXN0YW5jZShfX2YsIF9fbCks
ICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3RvciAocHRyLCBwdHIpIik7IH0KLQot
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBTcGFuKGVsZW1lbnRf
dHlwZSAoJl9fYXJyKVtfRXh0ZW50XSkgICAgICAgICAgbm9leGNlcHQgOiBfX2RhdGF7X19hcnJ9
IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsCi0gICAgICAgICAg
ICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRU
eXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHI+
Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3Bhbihz
dGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIpIG5vZXhjZXB0IDog
X19kYXRhe19fYXJyLmRhdGEoKX0ge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVt
ZW50VHlwZSwKLSAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRp
YmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cj4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWQotICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5
cGUsIF9FeHRlbnQ+JiBfX2Fycikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIuZGF0YSgpfSB7fQot
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oICAgICAgX0NvbnRh
aW5lciYgX19jLAotICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0
aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIHN0ZDo6bnVsbHB0cl90PiA9
IG51bGxwdHIpCi0gICAgICAgIDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSB7Ci0gICAg
ICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19j
KSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChyYW5nZSkiKTsKLSAgICAg
ICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Ci0gICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oY29uc3Qg
X0NvbnRhaW5lciYgX19jLAotICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5f
Y29tcGF0aWJsZV9jb250YWluZXI8Y29uc3QgX0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIHN0ZDo6
bnVsbHB0cl90PiA9IG51bGxwdHIpCi0gICAgICAgIDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShf
X2MpfSB7Ci0gICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZT
VEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChyYW5n
ZSkiKTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBl
PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAgIGNvbnN0ZXhwciBT
cGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX290aGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxl
bWVudF90eXBlICgqKVtdPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudWxscHRy
X3Q+ID0gbnVsbHB0cikKLSAgICAgICAgOiBfX2RhdGF7X19vdGhlci5kYXRhKCl9IHt9Ci0KLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGU+Ci0gICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oY29uc3QgU3Bh
bjxfT3RoZXJFbGVtZW50VHlwZT4mIF9fb3RoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZW5hYmxlX2lmX3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVy
dGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUgKCopW10+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKSBub2V4Y2Vw
dAotICAgICAgICA6IF9fZGF0YXtfX290aGVyLmRhdGEoKX0geyBfV1RGX0xJQkNQUF9BU1NFUlQo
X0V4dGVudCA9PSBfX290aGVyLnNpemUoKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0
cnVjdG9yIChvdGhlciBTcGFuKSIpOyB9Ci0KLQotLy8gIH5TcGFuKCkgbm9leGNlcHQgPSBkZWZh
dWx0OwotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Db3VudD4KLSAgICBfV1RGX0xJQkNQ
UF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0Nv
dW50PiBmaXJzdCgpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0
KF9Db3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KCki
KTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSwgX0Nv
dW50fTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0NvdW50PgotICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90
eXBlLCBfQ291bnQ+IGxhc3QoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjps
YXN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEo
KSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1p
Y19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsK
LSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0
IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIpOwotICAgICAgICByZXR1cm4ge2RhdGEo
KSwgX19jb3VudH07Ci0gICAgfQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkK
LSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBsYXN0KHNp
emVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46
Omxhc3QoY291bnQpIik7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgc2l6ZSgpIC0gX19jb3Vu
dCwgX19jb3VudH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9PZmZzZXQs
IHN0ZDo6c2l6ZV90IF9Db3VudCA9IGR5bmFtaWNfZXh0ZW50PgotICAgIF9XVEZfTElCQ1BQX0lO
TElORV9WSVNJQklMSVRZCi0gICAgY29uc3RleHByIGF1dG8gc3Vic3BhbigpIGNvbnN0IG5vZXhj
ZXB0Ci0gICAgICAgIC0+IFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0gZHluYW1pY19leHRl
bnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD4KLSAgICB7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoX09mZnNldCA8PSBfRXh0ZW50LCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFuOjpz
dWJzcGFuKCkiKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPT0gZHluYW1pY19leHRl
bnQgfHwgX0NvdW50IDw9IF9FeHRlbnQgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9m
IHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOwotCi0gICAgICAgIHVzaW5nIF9SZXR1cm5UeXBl
ID0gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudCAhPSBkeW5hbWljX2V4dGVudCA/IF9Db3VudCA6
IF9FeHRlbnQgLSBfT2Zmc2V0PjsKLSAgICAgICAgcmV0dXJuIF9SZXR1cm5UeXBle2RhdGEoKSAr
IF9PZmZzZXQsIF9Db3VudCA9PSBkeW5hbWljX2V4dGVudCA/IHNpemUoKSAtIF9PZmZzZXQgOiBf
Q291bnR9OwotICAgIH0KLQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgotICAgICAgIHN1
YnNwYW4oc2l6ZV90eXBlIF9fb2Zmc2V0LCBzaXplX3R5cGUgX19jb3VudCA9IGR5bmFtaWNfZXh0
ZW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9f
b2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3Bhbihv
ZmZzZXQsIGNvdW50KSIpOwotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCAgPD0g
c2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1pY19leHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2Ug
aW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAgICAgICBpZiAoX19jb3VudCA9
PSBkeW5hbWljX2V4dGVudCkKLSAgICAgICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQs
IHNpemUoKSAtIF9fb2Zmc2V0fTsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQg
PD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bh
bjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9f
b2Zmc2V0LCBfX2NvdW50fTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiBfRXh0ZW50OyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3Rl
eHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVu
dCAqIHNpemVvZihlbGVtZW50X3R5cGUpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgY29uc3RleHByIGJvb2wgZW1wdHkoKSAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gX0V4dGVudCA9PSAwOyB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9faWR4KSBjb25zdCBu
b2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgp
LCAiU3BhbjxULE4+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICByZXR1cm4gX19k
YXRhW19faWR4XTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAg
IF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VCwgTj46OmZyb250KCkgb24gZW1w
dHkgU3BhbiIpOwotICAgICAgICByZXR1cm4gX19kYXRhWzBdOwotICAgIH0KLQotICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgYmFjaygpIGNvbnN0
IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJT
cGFuPFQsIE4+OjpiYWNrKCkgb24gZW1wdHkgU3BhbiIpOwotICAgICAgICByZXR1cm4gX19kYXRh
W3NpemUoKS0xXTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcG9pbnRlciBkYXRhKCkgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gX19kYXRhOyB9Ci0KLS8vIFtzcGFuLml0ZXJdLCBTcGFuIGl0ZXJhdG9y
IHN1cHBvcnQKLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgaXRl
cmF0b3IgICAgICAgICAgICAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gaXRl
cmF0b3IoZGF0YSgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0
ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgICBlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiBpdGVyYXRvcihkYXRhKCkgKyBzaXplKCkpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAgICAgIHJiZWdpbigpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Ci0gICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAg
ICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVn
aW4oKSk7IH0KLQotcHJpdmF0ZToKLSAgICBwb2ludGVyICAgIF9fZGF0YTsKLQotfTsKLQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwPgotY2xhc3MgX1dURl9MSUJDUFBfVEVNUExBVEVfVklTIFNw
YW48X1RwLCBkeW5hbWljX2V4dGVudD4gewotcHJpdmF0ZToKLQotcHVibGljOgotLy8gIGNvbnN0
YW50cyBhbmQgdHlwZXMKLSAgICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOwot
ICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47
Ci0gICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgICAgICA9IHN0ZDo6c2l6ZV90OwotICAgIHVz
aW5nIGRpZmZlcmVuY2VfdHlwZSAgICAgICAgPSBzdGQ6OnB0cmRpZmZfdDsKLSAgICB1c2luZyBw
b2ludGVyICAgICAgICAgICAgICAgID0gX1RwICo7Ci0gICAgdXNpbmcgY29uc3RfcG9pbnRlciAg
ICAgICAgICA9IGNvbnN0IF9UcCAqOwotICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAg
PSBfVHAgJjsKLSAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7
Ci0jaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJD
UFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMpCi0gICAgdXNpbmcgaXRlcmF0b3IgICAgICAg
ICAgICAgICA9IHBvaW50ZXI7Ci0jZWxzZQotICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAg
ICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsKLSNlbmRpZgotICAgIHVzaW5nIHJldmVyc2VfaXRl
cmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwotCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gZHluYW1pY19leHRlbnQ7Ci0K
LS8vIFtzcGFuLmNvbnNdLCBTcGFuIGNvbnN0cnVjdG9ycywgY29weSwgYXNzaWdubWVudCwgYW5k
IGRlc3RydWN0b3IKLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIg
U3BhbigpIG5vZXhjZXB0IDogX19kYXRhe251bGxwdHJ9LCBfX3NpemV7MH0ge30KLQotICAgIGNv
bnN0ZXhwciBTcGFuICAgICAgICAgICAoY29uc3QgU3BhbiYpIG5vZXhjZXB0ID0gZGVmYXVsdDsK
LSAgICBjb25zdGV4cHIgU3BhbiYgb3BlcmF0b3I9KGNvbnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRl
ZmF1bHQ7Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgU3Bh
bihwb2ludGVyIF9fcHRyLCBzaXplX3R5cGUgX19jb3VudCkgOiBfX2RhdGF7X19wdHJ9LCBfX3Np
emV7X19jb3VudH0ge30KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgU3Bhbihwb2ludGVyIF9fZiwgcG9pbnRlciBfX2wpIDogX19kYXRhe19fZn0sIF9fc2l6ZXtz
dGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oc3RkOjpkaXN0YW5jZShfX2YsIF9fbCkpfSB7fQotCi0g
ICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Tej4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuKGVsZW1lbnRfdHlwZSAoJl9fYXJyKVtfU3pdKSAg
ICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0sIF9fc2l6ZXtfU3p9IHt9Ci0KLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IF9TeiwKLSAgICAg
ICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxl
bWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVs
bHB0cj4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBT
cGFuKHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9Tej4mIF9fYXJyKSBub2V4Y2VwdCA6
IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6fSB7fQotCi0gICAgdGVtcGxhdGUgPGNs
YXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBfU3osCi0gICAgICAgICAgICAgIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PGNvbnN0IF9PdGhlckVsZW1lbnRU
eXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHI+
Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3Bhbihj
b25zdCBzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfU3o+JiBfX2Fycikgbm9leGNlcHQg
OiBfX2RhdGF7X19hcnIuZGF0YSgpfSwgX19zaXple19Ten0ge30KLQotICAgIHRlbXBsYXRlIDxj
bGFzcyBfQ29udGFpbmVyPgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAg
ICAgIGNvbnN0ZXhwciBTcGFuKCAgICAgIF9Db250YWluZXImIF9fYywKLSAgICAgICAgICAgIHN0
ZDo6ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9Db250YWluZXIs
IF9UcD46OnZhbHVlLCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQotICAgICAgICA6IF9fZGF0
YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNp
emUoX19jKX0ge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgotICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IF9D
b250YWluZXImIF9fYywKLSAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2Nv
bXBhdGlibGVfY29udGFpbmVyPGNvbnN0IF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBzdGQ6Om51
bGxwdHJfdD4gPSBudWxscHRyKQotICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19j
KX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KLQotCi0gICAg
dGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBfT3RoZXJFeHRl
bnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHBy
IFNwYW4oY29uc3QgU3BhbjxfT3RoZXJFbGVtZW50VHlwZSwgX090aGVyRXh0ZW50PiYgX19vdGhl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCop
W10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bnVsbHB0cl90PiA9IG51bGxwdHIpIG5vZXhjZXB0Ci0gICAgICAgIDogX19kYXRhe19fb3RoZXIu
ZGF0YSgpfSwgX19zaXple19fb3RoZXIuc2l6ZSgpfSB7fQotCi0vLyAgICB+U3BhbigpIG5vZXhj
ZXB0ID0gZGVmYXVsdDsKLQotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+Ci0gICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50
X3R5cGUsIF9Db3VudD4gZmlyc3QoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dU
Rl9MSUJDUFBfQVNTRVJUKF9Db3VudCA8PSBzaXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4g
U3Bhbjo6Zmlyc3QoKSIpOwotICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3Vu
dD57ZGF0YSgpLCBfQ291bnR9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBf
Q291bnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIg
U3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewot
ICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBv
ZiByYW5nZSBpbiBTcGFuOjpsYXN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90
eXBlLCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKLSAgICB9Ci0K
LSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuPGVs
ZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50KSBjb25z
dCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0g
c2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIpOwotICAg
ICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07Ci0gICAgfQotCi0gICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFt
aWNfZXh0ZW50PiBsYXN0IChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKLSAgICB7
Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91
dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KGNvdW50KSIpOwotICAgICAgICByZXR1cm4ge2RhdGEo
KSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxz
dGQ6OnNpemVfdCBfT2Zmc2V0LCBzdGQ6OnNpemVfdCBfQ291bnQgPSBkeW5hbWljX2V4dGVudD4K
LSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuPGVs
ZW1lbnRfdHlwZSwgX0NvdW50PiBzdWJzcGFuKCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAg
ICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfT2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2Yg
cmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbigpIik7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChf
Q291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IHNpemUoKSAtIF9PZmZzZXQsICJP
ZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbigpIik7Ci0gICAgICAg
IHJldHVybiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCkgKyBfT2Zmc2V0LCBfQ291
bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBfT2Zmc2V0IDogX0NvdW50fTsKLSAgICB9
Ci0KLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgotICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgc3Vic3BhbihzaXplX3R5cGUgX19v
ZmZzZXQsIHNpemVfdHlwZSBfX2NvdW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0IG5vZXhjZXB0
Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19vZmZzZXQgPD0gc2l6ZSgpLCAi
T2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7Ci0g
ICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50ICA8PSBzaXplKCkgfHwgX19jb3VudCA9
PSBkeW5hbWljX2V4dGVudCwgImNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9m
ZnNldCwgY291bnQpIik7Ci0gICAgICAgIGlmIChfX2NvdW50ID09IGR5bmFtaWNfZXh0ZW50KQot
ICAgICAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBfX29mZnNldCwgc2l6ZSgpIC0gX19vZmZzZXR9
OwotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXplKCkgLSBfX29mZnNl
dCwgIk9mZnNldCArIGNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwg
Y291bnQpIik7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIF9fY291bnR9Owot
ICAgIH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzaXpl
X3R5cGUgc2l6ZSgpICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fc2l6ZTsgfQotICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZV9i
eXRlcygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fc2l6ZSAqIHNpemVvZihlbGVtZW50X3R5
cGUpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGJvb2wg
ZW1wdHkoKSAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19zaXplID09IDA7IH0K
LQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2Ug
b3BlcmF0b3JbXShzaXplX3R5cGUgX19pZHgpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAg
ICBfV1RGX0xJQkNQUF9BU1NFUlQoX19pZHggPCBzaXplKCksICJTcGFuPFQ+W10gaW5kZXggb3V0
IG9mIGJvdW5kcyIpOwotICAgICAgICByZXR1cm4gX19kYXRhW19faWR4XTsKLSAgICB9Ci0KLSAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGZyb250
KCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1w
dHkoKSwgIlNwYW48VD5bXS5mcm9udCgpIG9uIGVtcHR5IFNwYW4iKTsKLSAgICAgICAgcmV0dXJu
IF9fZGF0YVswXTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcmVmZXJlbmNlIGJhY2soKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAg
X1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgpLCAiU3BhbjxUPltdLmJhY2soKSBvbiBlbXB0eSBT
cGFuIik7Ci0gICAgICAgIHJldHVybiBfX2RhdGFbc2l6ZSgpLTFdOwotICAgIH0KLQotCi0gICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHBvaW50ZXIgZGF0YSgpICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fZGF0YTsgfQot
Ci0vLyBbc3Bhbi5pdGVyXSwgU3BhbiBpdGVyYXRvciBzdXBwb3J0Ci0gICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICBiZWdp
bigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSk7IH0KLSAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAg
ICAgICAgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpICsgc2l6
ZSgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZl
cnNlX2l0ZXJhdG9yICAgICAgICByYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZl
cnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAgICAgIHJlbmQoKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
cG9pbnRlciAgIF9fZGF0YTsKLSAgICBzaXplX3R5cGUgX19zaXplOwotfTsKLQotI2lmICFkZWZp
bmVkKF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMpCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6
OnNpemVfdCBfRXh0ZW50PgotaW5saW5lIGNvbnN0ZXhwciBib29sIHN0ZDo6cmFuZ2VzOjplbmFi
bGVfYm9ycm93ZWRfcmFuZ2U8U3BhbjxfVHAsIF9FeHRlbnQ+ID4gPSB0cnVlOwotI2VuZGlmIC8v
ICFkZWZpbmVkKF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMpCit0ZW1wbGF0ZTxjbGFzcyBDLCBz
dGQ6OnNpemVfdCBFID0gc3RkOjpkeW5hbWljX2V4dGVudD4KK3VzaW5nIFNwYW4gPSBzdGQ6OnNw
YW48QywgRT47CiAKIC8vICBhc0J5dGVzICYgYXNXcml0YWJsZUJ5dGVzCiB0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgogX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkKIGF1dG8gYXNCeXRlcyhTcGFuPF9UcCwgX0V4dGVudD4gX19zKSBub2V4Y2VwdAotLT4gU3Bh
bjxjb25zdCBzdGQ6OmJ5dGUsIF9FeHRlbnQgPT0gZHluYW1pY19leHRlbnQgPyBkeW5hbWljX2V4
dGVudCA6IF9FeHRlbnQgKiBzaXplb2YoX1RwKT4KKy0+IFNwYW48Y29uc3Qgc3RkOjpieXRlLCBf
RXh0ZW50ID09IHN0ZDo6ZHluYW1pY19leHRlbnQgPyBzdGQ6OmR5bmFtaWNfZXh0ZW50IDogX0V4
dGVudCAqIHNpemVvZihfVHApPgogeyByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHN0
ZDo6Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNpemVfYnl0ZXMoKSB9OyB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+CiBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWQogYXV0byBhc1dyaXRhYmxlQnl0ZXMoU3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9l
eGNlcHQKLS0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfY29uc3RfdjxfVHA+LCBTcGFuPHN0
ZDo6Ynl0ZSwgX0V4dGVudCA9PSBkeW5hbWljX2V4dGVudCA/IGR5bmFtaWNfZXh0ZW50IDogX0V4
dGVudCAqIHNpemVvZihfVHApPj4KKy0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfY29uc3Rf
djxfVHA+LCBTcGFuPHN0ZDo6Ynl0ZSwgX0V4dGVudCA9PSBzdGQ6OmR5bmFtaWNfZXh0ZW50ID8g
c3RkOjpkeW5hbWljX2V4dGVudCA6IF9FeHRlbnQgKiBzaXplb2YoX1RwKT4+CiB7IHJldHVybiB7
IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpieXRlICo+KF9fcy5kYXRhKCkpLCBfX3Muc2l6ZV9ieXRl
cygpIH07IH0KIAotLy8gIERlZHVjdGlvbiBndWlkZXMKLXRlbXBsYXRlPGNsYXNzIF9UcCwgc3Rk
OjpzaXplX3QgX1N6PgotICAgIFNwYW4oX1RwICgmKVtfU3pdKSAtPiBTcGFuPF9UcCwgX1N6PjsK
LQotdGVtcGxhdGU8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+Ci0gICAgU3BhbihzdGQ6OmFy
cmF5PF9UcCwgX1N6PiYpIC0+IFNwYW48X1RwLCBfU3o+OwotCi10ZW1wbGF0ZTxjbGFzcyBfVHAs
IHN0ZDo6c2l6ZV90IF9Tej4KLSAgICBTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8X1RwLCBfU3o+Jikg
LT4gU3Bhbjxjb25zdCBfVHAsIF9Tej47Ci0KLXRlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+Ci0g
ICAgU3BhbihfQ29udGFpbmVyJikgLT4gU3Bhbjx0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90
eXBlPjsKLQotdGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KLSAgICBTcGFuKGNvbnN0IF9Db250
YWluZXImKSAtPiBTcGFuPGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGU+Owot
CiBfV1RGX0xJQkNQUF9FTkRfTkFNRVNQQUNFCiAKIHVzaW5nIFdURjo6U3BhbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCBjNWVj
ZWM5ZWU2ZTE1NzY4YWE4YjA5ZDhhNjJjNTliZTM4Zjk4MDQ5Li43ZmIxZTc3YzIwNzljZDI3YzRi
MzZmMjRlNWQ2MDk2YjdhYzllNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKIERlY29kZXI6OkRlY29kZXIoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQog
ICAgIDogbV9idWZmZXIoc3BhbikKLSAgICAsIG1fYnVmZmVyUG9zaXRpb24oc3Bhbi5iZWdpbigp
KQorICAgICwgbV9idWZmZXJQb3NpdGlvbigmKnNwYW4uYmVnaW4oKSkKIHsKIH0KIApAQCAtNDMs
NyArNDMsNyBAQCBEZWNvZGVyOjp+RGVjb2RlcigpCiAKIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc2l6
ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyLmVuZCgpIC0gbV9idWZmZXJQb3NpdGlv
bik7CisgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PigmKm1fYnVmZmVyLmVu
ZCgpIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9CiAKIGNvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmJ1
ZmZlclBvaW50ZXJGb3JEaXJlY3RSZWFkKHNpemVfdCBzaXplKQpAQCAtNjksNyArNjksNyBAQCBi
b29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YShTcGFuPHVpbnQ4X3Q+IHNwYW4pCiAK
IGJvb2wgRGVjb2Rlcjo6cmV3aW5kKHNpemVfdCBzaXplKQogewotICAgIGlmIChzaXplIDw9IHN0
YXRpY19jYXN0PHNpemVfdD4obV9idWZmZXJQb3NpdGlvbiAtIG1fYnVmZmVyLmJlZ2luKCkpKSB7
CisgICAgaWYgKHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlclBvc2l0aW9uIC0g
JiptX2J1ZmZlci5iZWdpbigpKSkgewogICAgICAgICBtX2J1ZmZlclBvc2l0aW9uIC09IHNpemU7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCmluZGV4IDllNWNhZjNhMmIxMjM5NzFiNGY0OTE2MjE3
MjA3MjY1ZDIyOTgzYjYuLjNkNzdiMmMyY2VmYzJjM2M1MzQzNGIwYzUwM2ZiY2Y3MTNmYzJjNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVy
LmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5EZWNvZGVy
KCk7CiAKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgp
OyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclBv
c2l0aW9uIC0gbV9idWZmZXIuYmVnaW4oKTsgfQorICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3NpdGlvbiAtICYqbV9idWZmZXIuYmVnaW4oKTsgfQog
ICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCByZXdp
bmQoc2l6ZV90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCmluZGV4IGFhNjlhMzQwNjFhNjdhZTRk
NTNlYTk4ODViYjNhNDQyMTRlMTJiMDQuLjhhMmVmOGJiN2M4Y2I4ZmNkNTQwZDk3Y2M1NzlkMjNk
MmJiZWZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgdm9pZCBiYXNlNjRFbmNvZGVJbnRl
cm5hbChTcGFuPGNvbnN0IHVpbgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgdm9pZCBiYXNlNjRFbmNvZGVJbnRlcm5hbChTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5w
dXQsIFNwYW48Q2hhcmFjdGVyVHlwZT4gZGVzdGluYXRpb25EYXRhQnVmZmVyLCBCYXNlNjRFbmNv
ZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGJhc2U2NEVuY29k
ZUludGVybmFsKFNwYW4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5k
YXRhKCkpLCBpbnB1dC5zaXplKCkgfSwgZGVzdGluYXRpb25EYXRhQnVmZmVyLCBwb2xpY3ksIG1h
cCk7CisgICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoc3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpIH0sIGRlc3RpbmF0
aW9uRGF0YUJ1ZmZlciwgcG9saWN5LCBtYXApOwogfQogCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKQEAgLTE1Miw3ICsxNTIs
NyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29u
c3Qgc3RkOjpieXRlPiBpbnB1dCwgQmFzZTY0RQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uVmVjdG9yKGRlc3RpbmF0aW9uTGVuZ3RoKTsKLSAg
ICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgU3BhbiB7IGRlc3RpbmF0aW9uVmVjdG9yIH0s
IHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgc3RkOjpzcGFu
IHsgZGVzdGluYXRpb25WZWN0b3IgfSwgcG9saWN5LCBtYXApOwogICAgIHJldHVybiBkZXN0aW5h
dGlvblZlY3RvcjsKIH0KIApAQCAtMjYzLDE1ICsyNjMsMTUgQEAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIE9w
dGlvblMKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBi
YXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpIH0sIG9wdGlvbnMsIG1hcCk7CisgICAgcmV0
dXJuIGJhc2U2NERlY29kZUludGVybmFsKHN0ZDo6c3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGlucHV0LmRhdGEoKSksIGlucHV0LnNpemUoKSB9LCBvcHRpb25zLCBtYXAp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmlu
Z1ZpZXcgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNl
NjREZWNvZGVNYXAgbWFwKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoIHx8IGlucHV0LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYmFz
ZTY0RGVjb2RlSW50ZXJuYWwoU3BhbiB7IGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCB9LCBv
cHRpb25zLCBtYXApOwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgaW5w
dXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOworICAgICAgICByZXR1
cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoc3RkOjpzcGFuIHsgaW5wdXQuY2hhcmFjdGVyczgoKSwg
bGVuZ3RoIH0sIG9wdGlvbnMsIG1hcCk7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFs
KHN0ZDo6c3BhbiB7IGlucHV0LmNoYXJhY3RlcnMxNigpLCBsZW5ndGggfSwgb3B0aW9ucywgbWFw
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0Jhc2U2NC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAppbmRleCAxYjUwNjJm
YjkzY2VhMzA3ZTAwNDkwYTM1MGI2ODdiMTdhYTE2ZWJlLi5jZTQ5MDA5YjEzZTgwYmJkZTk2ZTYz
ZGNjOWFlYzEwNWUyMmVlNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2
NC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKQEAgLTM1Niw3ICszNTYsNyBA
QCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdy
aXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0CiAgICAgewotICAgICAgICBi
YXNlNjRFbmNvZGUobV9iYXNlNjQuaW5wdXQsIFNwYW4geyBkZXN0aW5hdGlvbiwgbV9lbmNvZGVk
TGVuZ3RoIH0sIG1fYmFzZTY0LnBvbGljeSwgbV9iYXNlNjQubWFwKTsKKyAgICAgICAgYmFzZTY0
RW5jb2RlKG1fYmFzZTY0LmlucHV0LCBzdGQ6OnNwYW4geyBkZXN0aW5hdGlvbiwgbV9lbmNvZGVk
TGVuZ3RoIH0sIG1fYmFzZTY0LnBvbGljeSwgbV9iYXNlNjQubWFwKTsKICAgICB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCBlNDgzY2U4NDAzZjE1MzYwZGNlN2JiNDFiMzVjMzgxODNmYmJhMDg3Li4zZTBiZTNlOTY1
ZDUwOGNjZDg5NTFjZDA1Njk5ZmEzOTQyZDFjYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIEFTU0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2Ug
fHwgbV9jb25zdW1lRGF0YUNhbGxiYWNrKTsKIAogICAgIGlmIChtX2NvbnN1bWVEYXRhQ2FsbGJh
Y2spIHsKLSAgICAgICAgU3BhbiBjaHVuayB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkg
fTsKKyAgICAgICAgc3RkOjpzcGFuIGNodW5rIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7Ci0gICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpIH07CisgICAgc3RkOjpzcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5r
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcAppbmRleCAxOGU2YzliNDI3NDdiZWMwZGRhYzBhZGQ4NTg1NzIzMzcx
NjdhN2Y2Li42MDJhOWFiOGJmMjViOWNlNWE1MDM3ODQ3MTljMWM4NjgyZDg5ZmYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRv
LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBk
ZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRLCiAgICAgbWVt
Y3B5KGtleUluZm8uY2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVi
bGljS2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKICAgICBtZW1jcHkoa2V5SW5m
by5zZXJ2ZXJLZXksIGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0
aCk7CiAKLSAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisgICAgYXV0byBp
a20gPSBobWFjU0hBMjU2KHBya0tleSwgc3RkOjpzcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CiAKICAgICAvKgogICAgICAqICMgSEtE
Ri1FeHRyYWN0KHNhbHQsIElLTSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYg
Y2xpZW50SwogICAgICAqIENFSyA9IEhNQUMtU0hBLTI1NihQUkssIGNla19pbmZvIHx8IDB4MDEp
WzAuLjE1XQogICAgICAqLwogICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGNla0luZm9bXSA9ICJD
b250ZW50LUVuY29kaW5nOiBhZXMxMjhnY21ceDAwXHgwMSI7Ci0gICAgYXV0byBjZWsgPSBobWFj
U0hBMjU2KHByaywgU3BhbihjZWtJbmZvLCBzaXplb2YoY2VrSW5mbykgLSAxKSk7CisgICAgYXV0
byBjZWsgPSBobWFjU0hBMjU2KHByaywgc3RkOjpzcGFuKGNla0luZm8sIHNpemVvZihjZWtJbmZv
KSAtIDEpKTsKICAgICBjZWsuc2hyaW5rKDE2KTsKIAogICAgIC8qCkBAIC0xNjEsMTEgKzE2MSwx
MSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxv
YWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50SwogICAgICAqIE5PTkNFID0gSE1BQy1TSEEtMjU2
KFBSSywgbm9uY2VfaW5mbyB8fCAweDAxKVswLi4xMV0KICAgICAgKi8KICAgICBzdGF0aWMgY29u
c3QgdWludDhfdCBub25jZUluZm9bXSA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZVx4MDBceDAx
IjsKLSAgICBhdXRvIG5vbmNlID0gaG1hY1NIQTI1NihwcmssIFNwYW4obm9uY2VJbmZvLCBzaXpl
b2Yobm9uY2VJbmZvKSAtIDEpKTsKKyAgICBhdXRvIG5vbmNlID0gaG1hY1NIQTI1NihwcmssIHN0
ZDo6c3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOwogICAgIG5vbmNlLnNo
cmluaygxMik7CiAKICAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdpdGggQUVTMTI4R0NNIGFuZCBy
ZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KLSAgICBhdXRvIGNpcGhlclRleHQgPSBTcGFu
KHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6ZSgpIC0gc2l6ZW9m
KGhlYWRlcikpOworICAgIGF1dG8gY2lwaGVyVGV4dCA9IHN0ZDo6c3BhbihwYXlsb2FkLmRhdGEo
KSArIHNpemVvZihoZWFkZXIpLCBwYXlsb2FkLnNpemUoKSAtIHNpemVvZihoZWFkZXIpKTsKICAg
ICBhdXRvIHBsYWluVGV4dFJlc3VsdCA9IGRlY3J5cHRBRVMxMjhHQ00oY2VrLCBub25jZSwgY2lw
aGVyVGV4dCk7CiAgICAgaWYgKCFwbGFpblRleHRSZXN1bHQpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC0yMzksNyArMjM5LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMKICAg
ICAgKi8KICAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0gIkNvbnRlbnQtRW5j
b2Rpbmc6IGF1dGhceDAwXHgwMSI7CiAgICAgYXV0byBwcmtDb21iaW5lID0gaG1hY1NIQTI1Nihj
bGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0KTsKLSAgICBhdXRv
IGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywgc2l6ZW9mKGF1dGhJ
bmZvKSAtIDEpKTsKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgc3RkOjpz
cGFuKGF1dGhJbmZvLCBzaXplb2YoYXV0aEluZm8pIC0gMSkpOwogICAgIGF1dG8gcHJrID0gaG1h
Y1NIQTI1NihzYWx0LCBpa20pOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcAppbmRleCAzZWJm
ZTc3YjA3MGJhMDJiMWNkMTk0Y2ZiNzZmNTRlM2RkMjhiYzI4Li5jNjNlZmM0NmQ1ZjM2MDA0ZGZl
OTFmNmJiYzNjNWYzMmNhNDE3ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRvQ29jb2EuY3BwCkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ00oU3Bh
bjxjb25zdCB1aW50OF90PiBrZXksIFNwYW48Y28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBwbGFpblRleHQoY2lwaGVyVGV4dFdpdGhUYWcuc2l6
ZSgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoKTsKLSAgICBhdXRvIHJlc3VsdCA9IENDQ3J5cHRvckdD
TU9uZXNob3REZWNyeXB0KGtDQ0FsZ29yaXRobUFFUywga2V5LmRhdGEoKSwga2V5LnNpemUoKSwg
aXYuZGF0YSgpLCBpdi5zaXplKCksIG51bGxwdHIgLyogYWRkaXRpb25hbERhdGEgKi8sIDAgLyog
YWRkaXRpb25hbERhdGFMZW5ndGggKi8sIGNpcGhlclRleHRXaXRoVGFnLmRhdGEoKSwgY2lwaGVy
VGV4dFdpdGhUYWcuc2l6ZSgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBwbGFpblRleHQuZGF0YSgp
LCBjaXBoZXJUZXh0V2l0aFRhZy5lbmQoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgYWVzMTI4R0NN
VGFnTGVuZ3RoKTsKKyAgICBhdXRvIHJlc3VsdCA9IENDQ3J5cHRvckdDTU9uZXNob3REZWNyeXB0
KGtDQ0FsZ29yaXRobUFFUywga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgaXYuZGF0YSgpLCBpdi5z
aXplKCksIG51bGxwdHIgLyogYWRkaXRpb25hbERhdGEgKi8sIDAgLyogYWRkaXRpb25hbERhdGFM
ZW5ndGggKi8sIGNpcGhlclRleHRXaXRoVGFnLmRhdGEoKSwgY2lwaGVyVGV4dFdpdGhUYWcuc2l6
ZSgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBwbGFpblRleHQuZGF0YSgpLCAmKmNpcGhlclRleHRX
aXRoVGFnLmVuZCgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBhZXMxMjhHQ01UYWdMZW5ndGgpOwog
ICAgIGlmIChyZXN1bHQgIT0ga0NDU3VjY2VzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1TaW5rLmNwcAppbmRleCBjM2FkZTNlZTU2Y2EyY2ZkYjEzNDhjYzZlOTA3YTczMzhmZmEy
OGU4Li40MDdmZTI5MGE1NDI4NTNmZWI0ZDUzNjAxNmUwMTJmNTQxNmNiNDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNw
cApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
OjplbnF1ZXVlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9jYWxsYmFjaykgewotICAgICAgICBTcGFuIGNodW5rIHsgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLmxlbmd0aCgpIH07CisgICAgICAgIHN0ZDo6c3BhbiBjaHVuayB7IGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5sZW5ndGgoKSB9OwogICAgICAgICBtX2NhbGxiYWNrKCZjaHVuayk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5k
ZXggNDJmNDE4MGRmYTg0MjdlMGU2MGY4MWViNzliMTkxODdjYWZkYmExYi4uYTc4ZTFkYzZmZWUy
OTNiNDk3ZjNiNDZjMWRlNmY0OGMyMzQxYjc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRR
dWV1ZTo6ZW5xdWV1ZShjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25l
ZCBieXRlCiB7CiAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8qIGRh
dGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpOwotICAg
ICAgICBtX3dyaXRlUmF3RGF0YShTcGFuIHsgZGF0YSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgg
fSk7CisgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0ZDo6c3BhbiB7IGRhdGEgKyBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fcXVldWUuYXBw
ZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5h
cnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgcmVzdWx0ID0gbG9hZGVyLT5hcnJh
eUJ1ZmZlclJlc3VsdCgpKSB7Ci0gICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoU3BhbiB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0
ZUxlbmd0aCgpIH0pOworICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKHN0ZDo6c3BhbiB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0
ZUxlbmd0aCgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIEFTU0VSVChlcnJvckNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXRoLmNwcAppbmRleCA5OWQwNzA4YjdmZDU2MWU4ODdmZTA3YWJlNThjNTU0MGEwMTYx
ZjJhLi4zNzQ4NjdiMWZiNzU5Y2MxYTY0N2MxMjUyOWM2YzU0NzE2NDkwYzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZv
aWQgQ2FudmFzUGF0aDo6cmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNQYXRoOjpyb3VuZFJlY3QoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgY29uc3QgUmFkaXVzVmFyaWFu
dCYgcmFkaWkpCiB7Ci0gICAgcmV0dXJuIHJvdW5kUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBT
cGFuIHsgJnJhZGlpLCAxIH0pOworICAgIHJldHVybiByb3VuZFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCwgc3RkOjpzcGFuIHsgJnJhZGlpLCAxIH0pOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBD
YW52YXNQYXRoOjpyb3VuZFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCwgY29uc3QgU3Bhbjxjb25zdCBSYWRpdXNWYXJpYW50PiYgcmFkaWkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IGMwY2Y5ZWYzMjU2YTFhZDhm
NWRmMTBjZTk2N2FjYTU1YmY4NjVjZWMuLmFkNzIyZDNmNWVlYjE5YTliZmZjZDU1MDJhOWUzMTY3
OGZlMDhkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBA
IC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICAgICAgZGF0YSA9
IG51bGxwdHI7CiAKICAgICBjb25zdGV4cHIgdWludDhfdCBwZGZNYWdpY051bWJlcltdID0geyAn
JScsICdQJywgJ0QnLCAnRicgfTsKLSAgICBpZiAoZGF0YSAmJiBkYXRhLT5zdGFydHNXaXRoKFNw
YW4geyBwZGZNYWdpY051bWJlciwgc3RkOjpzaXplKHBkZk1hZ2ljTnVtYmVyKSB9KSkgeworICAg
IGlmIChkYXRhICYmIGRhdGEtPnN0YXJ0c1dpdGgoc3RkOjpzcGFuIHsgcGRmTWFnaWNOdW1iZXIs
IHN0ZDo6c2l6ZShwZGZNYWdpY051bWJlcikgfSkpIHsKICAgICAgICAgTE9HKEljb25EYXRhYmFz
ZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIElnbm9yaW5nIGljb24gYXQgJXMgYmVj
YXVzZSBpdCBhcHBlYXJzIHRvIGJlIGEgUERGIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBkYXRhID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCA5NGM2YjFkMmM3ZGI3ZjYxMDNi
MGZmNDQ5NTA2NmM2ODI3MjBhOTE4Li45MGNlMDM2ZGY1ODViODIxN2NlODc3YjVmOWUyZTk0Y2M2
ZjY4YTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKQEAgLTI2
NSwxMSArMjY1LDExIEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xvclNhbXBsZXI6OnNh
bXBsZVRvcChQYWdlJiBwYWdlKQogICAgIH0KIAogICAgIGlmICghbm9uTWF0Y2hpbmdDb2xvcklu
ZGV4KQotICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKFNwYW4geyBzYW1wbGVzIH0uc3Vic3Bh
bjwxLCBudW1TYW1wbGVzIC0gMT4oKSk7CisgICAgICAgIHJldHVybiBhdmVyYWdlQ29sb3Ioc3Rk
OjpzcGFuIHsgc2FtcGxlcyB9LnN1YnNwYW48MSwgbnVtU2FtcGxlcyAtIDE+KCkpOwogICAgIGVs
c2UgaWYgKG5vbk1hdGNoaW5nQ29sb3JJbmRleCA9PSBudW1TYW1wbGVzIC0gMSkKLSAgICAgICAg
cmV0dXJuIGF2ZXJhZ2VDb2xvcihTcGFuIHsgc2FtcGxlcyB9LnN1YnNwYW48MCwgbnVtU2FtcGxl
cyAtIDE+KCkpOworICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKHN0ZDo6c3BhbiB7IHNhbXBs
ZXMgfS5zdWJzcGFuPDAsIG51bVNhbXBsZXMgLSAxPigpKTsKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiBhdmVyYWdlQ29sb3IoU3BhbiB7IHNhbXBsZXMgfSk7CisgICAgICAgIHJldHVybiBhdmVy
YWdlQ29sb3Ioc3RkOjpzcGFuIHsgc2FtcGxlcyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTU2NjIx
ZTRlZThkNWNiNzZjNTkwOGIxZjgwYjE4NDA2NDA5OGY5OS4uNTVhMmQyOTk4ZjY4NjRjNzRhMTI5
ODJmMmRmNzdmMzhiMDAxMjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QKIHsKICAg
ICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBz
ZWdtZW50cykKLSAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBz
ZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKKyAgICAgICAgYXBwbHkoc3RkOjpzcGFuIHsgc2Vn
bWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCiB2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIo
Y29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mIGFwcGx5KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRl
eCA3MjU1OTBjNmZhYjhhNGEwYjYyMzc3OWI3NTk3ZDFlYTQ2MGUzYWJjLi4wNDc1NmYyODkxNGI1
NzAwODdiODE1OWQxYTVmMjI1YjBkMjk3MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIGludCBTUUxp
dGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAg
IGVsc2UKICAgICAgICAgY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKIAotICAg
IHJldHVybiBiaW5kQmxvYihpbmRleCwgU3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9KTsKKyAg
ICByZXR1cm4gYmluZEJsb2IoaW5kZXgsIHN0ZDo6c3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9
KTsKIH0KIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdW
aWV3IHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDIwZTdhNzY5OGMxNjQ1
M2E0ZTViNTRkNjM4NjI1YzlkNWJiZWU3MWQuLjZlZGQ2OTVmYzM4OTg5YzIxNjhiZDBkMTg3ZTlh
MjBhMDQ5MGI1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC00NjUsMTIgKzQ2
NSwxMiBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZl
Y3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgfHwgaW5zZXJ0U3Rh
dGVtZW50LT5iaW5kVGV4dCg2LCBTdHJpbmdWaWV3IHsgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhk
YXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAg
ICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmlu
ZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRl
eHQoOCwgU3RyaW5nVmlldyB7IHdvcmtlclR5cGVUb1N0cmluZyhkYXRhLndvcmtlclR5cGUpIH0p
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYig5
LCBTcGFuIHsgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXplKCkgfSkg
IT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDEw
LCBTcGFuIHsgY29lcEVuY29kZXIuYnVmZmVyKCksIGNvZXBFbmNvZGVyLmJ1ZmZlclNpemUoKSB9
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2Io
OSwgc3RkOjpzcGFuIHsgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXpl
KCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEwLCBzdGQ6OnNwYW4geyBjb2VwRW5jb2Rlci5idWZmZXIoKSwgY29lcEVuY29kZXIuYnVm
ZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDEyLCBTcGFuIHsgc2NyaXB0UmVzb3Vy
Y2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6
ZSgpIH0pICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5k
QmxvYigxMywgU3BhbiB7IGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmlj
YXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxNCwgU3BhbiB7IG5hdmlnYXRpb25QcmVsb2Fk
U3RhdGVFbmNvZGVyLmJ1ZmZlcigpLCBuYXZpZ2F0aW9uUHJlbG9hZFN0YXRlRW5jb2Rlci5idWZm
ZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQt
PmJpbmRCbG9iKDEyLCBzdGQ6OnNwYW4geyBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVy
KCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09L
CisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDEzLCBzdGQ6OnNwYW4g
eyBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVy
LmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRl
bWVudC0+YmluZEJsb2IoMTQsIHN0ZDo6c3BhbiB7IG5hdmlnYXRpb25QcmVsb2FkU3RhdGVFbmNv
ZGVyLmJ1ZmZlcigpLCBuYXZpZ2F0aW9uUHJlbG9hZFN0YXRlRW5jb2Rlci5idWZmZXJTaXplKCkg
fSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdv
cmtlciwgIkZhaWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFi
bGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDcyMzMxMmM3ZWRiMDU5MmRkNjhlNzVm
NmRhMzA5Mzg2MmUyM2UwNzUuLmY3NjBiOTBlYmViZGQ3ZmVhYzRjNDk1YjVjOWY3ZjY3YWViNzZm
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAt
NjIsNyArNjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxTcGFuPFQsIEV4dGVudD4+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
cGFuPFQsIEV4dGVudD4mIHNwYW4pCiAgICAgewotICAgICAgICBpZiBjb25zdGV4cHIgKEV4dGVu
dCA9PSBXVEY6OmR5bmFtaWNfZXh0ZW50KQorICAgICAgICBpZiBjb25zdGV4cHIgKEV4dGVudCA9
PSBzdGQ6OmR5bmFtaWNfZXh0ZW50KQogICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc3Bhbi5zaXplKCkpOwogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcGFuLmRhdGEoKSksIHNw
YW4uc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAgICB9CkBAIC03MCw3ICs3MCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFNwYW48VCwgRXh0ZW50Pj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNwYW48VCwg
RXh0ZW50Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewogICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBzaXplOwotICAgICAgICBpZiBjb25zdGV4cHIgKEV4dGVudCA9PSBX
VEY6OmR5bmFtaWNfZXh0ZW50KSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoRXh0ZW50ID09IHN0
ZDo6ZHluYW1pY19leHRlbnQpIHsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICAg
ICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKaW5kZXggODNhMjdl
NzU0N2NmYzgwOTQ2YjkzODIzYmEyOGYxNzgwMjAwNzE4OS4uMTRhMTRkYzg4NDQ4ZmRmODkwZWQ3
MmFhNzk2ZTZkMTVlODg0NmMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJyYXlSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJh
eVJlZmVyZW5jZS5oCkBAIC0zMSw2ICszMSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudCA9IFdURjo6ZHluYW1pY19leHRlbnQ+IHVz
aW5nIEFycmF5UmVmZXJlbmNlID0gU3Bhbjxjb25zdCBULCBFeHRlbnQ+OwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBzdGQ6OmR5bmFtaWNfZXh0ZW50PiB1c2luZyBBcnJh
eVJlZmVyZW5jZSA9IHN0ZDo6c3Bhbjxjb25zdCBULCBFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgKaW5k
ZXggNDkyZTA3MjA1ZGE5ZWQxZjY4NTI1ZTQwYzk2MDRiNzIyZTlmODczMS4uODI2YTQwNjA4MWUx
MzM5NDZjZmE2M2I4YmVkZDZhM2Y3NjAwNmMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogaW5s
aW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBTdHJpbmdSZWZlcmVuY2UmIHN0cmlu
ZykKIHsKLSAgICBhZGQoaGFzaGVyLCBTcGFuIHsgc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUo
KSB9KTsKKyAgICBhZGQoaGFzaGVyLCBzdGQ6OnNwYW4geyBzdHJpbmcuZGF0YSgpLCBzdHJpbmcu
c2l6ZSgpIH0pOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1JlZmVy
ZW5jZSYgYSwgY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDVlYWI4MTYyNjYy
ZmRjZDZmYWY4OGI1MWNmZTIyNjM5YmFkM2UyNzUuLjUzY2VmNGQwYjM4MDc2MDdhNGNhMDE0ZTNl
ZmI1Y2IyZGY4ZmJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1Nh
bmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBzZXJ2aQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNo
TG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2Vz
LCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFn
cz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNG
b3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwg
YXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChzdGQ6OnNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRU
b2tlbiwgZmxhZ3MpOwogfQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9r
ZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCmluZGV4IDcyZmZjZDYzZGU4
OTYwMTMzMjhhYzM4MzEwMTU2YmQ5ZDg5YjIyOTUuLmIzMTVlZDI1NjMxY2UxNjJkNWZkMDNlOWYy
OGNiYWExMmFkMWQ2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9I
aXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbnRlZ2VyQXJyYXkmIGEsIGNvbnN0IEludGVnZXJBcnJheSYg
YikKIAogaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBJbnRlZ2VyQXJyYXkm
IGFycmF5KQogewotICAgIGFkZChoYXNoZXIsIFNwYW4geyBhcnJheS5pbnRlZ2VycygpLCBhcnJh
eS5zaXplKCkgfSk7CisgICAgYWRkKGhhc2hlciwgc3RkOjpzcGFuIHsgYXJyYXkuaW50ZWdlcnMo
KSwgYXJyYXkuc2l6ZSgpIH0pOwogfQogCiBzdHJ1Y3QgSW50ZWdlckFycmF5SGFzaFRyYWl0cyA6
IEhhc2hUcmFpdHM8SW50ZWdlckFycmF5PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458551</attachid>
            <date>2022-04-28 15:48:32 -0700</date>
            <delta_ts>2022-04-28 17:39:01 -0700</delta_ts>
            <desc>Patch with explicit conversions</desc>
            <filename>fixed-patch.diff</filename>
            <type>text/plain</type>
            <size>56323</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaCBiL1NvdXJjZS9XVEYvd3RmL1NIQTEu
aAppbmRleCBlYjg3ODUyNDg1ZTEuLjM5MTIxMDU0ZjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvU0hBMS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgYWRkQnl0ZXMoU3BhbiB7IGlucHV0LCBsZW5ndGgg
fSk7CisgICAgICAgIGFkZEJ5dGVzKHN0ZDo6c3BhbiB7IGlucHV0LCBsZW5ndGggfSk7CiAgICAg
fQogCiAgICAgLy8gU2l6ZSBvZiB0aGUgU0hBMSBoYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9TcGFuLmggYi9Tb3VyY2UvV1RGL3d0Zi9TcGFuLmgKaW5kZXggOTFiODUxMTcyMTRmLi41
MjgzYzUyMzFmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NwYW4uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9TcGFuLmgKQEAgLTEwLDIwICsxMCwxMCBAQAogI2lmbmRlZiBfV1RGX0xJQkNQ
UF9TUEFOCiAjZGVmaW5lIF9XVEZfTElCQ1BQX1NQQU4KIAotLy8gSW1wb3J0cyBhIGNvcHkgb2Yg
PHNwYW4+IGZyb20gZTg5MjcwNWQ3NGM3MzY2YTE0MDRhM2IzNDcxMDAxZWRhYTc2NTlmOCBvZiB0
aGUKLS8vIGxpYmMrKyBwcm9qZWN0IChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2pl
Y3QuZ2l0KSBhbmQgbW9kaWZpZXMgaXQgdG8KLS8vIHdvcmsgb24gdG9wIG9mIGFueSBzdGFuZGFy
ZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uLgotLy8KLS8vIC0gUmVuYW1lcyBtYWNyb3Mgd2l0aCBf
TElCQ1BQXyBwcmVmaXggdG8gdXNlIHRoZSBwcmVmaXggX1dURl9MSUJDUFBfCi0vLyAtIFJlbmFt
ZXMgc3RkOjpzcGFuIHRvIFdURjo6U3BhbgotLy8gLSBSZW5hbWVzIHN0ZDo6YXNfYnl0ZXMvc3Rk
Ojphc193cml0YWJsZV9ieXRlcyB0byBXVEY6OmFzQnl0ZXMvV1RGOjphc1dyaXRhYmxlQnl0ZXMu
Ci0vLyAtIFN0b3AgI2luY2x1ZGluZyBpbnRlcm5hbCBsaWJjKysgaGVhZGVycy4KLS8vIC0gUmVt
b3ZlIGNoZWNrIGZvciA+IGMrKzE3LgotLy8gLSBSZW1vdmUgcHVzaC9wb3AgYXZhaWxhYmlsaXR5
IG9mIG1pbi9tYXggbWFjcm9zLgotCiAjaW5jbHVkZSA8YXJyYXk+ICAgICAgICAvLyBmb3IgYXJy
YXkKICNpbmNsdWRlIDxjc3RkZGVmPiAgICAgIC8vIGZvciBieXRlCiAjaW5jbHVkZSA8aXRlcmF0
b3I+ICAgICAvLyBmb3IgaXRlcmF0b3JzCisjaW5jbHVkZSA8c3Bhbj4KICNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4gIC8vIGZvciByZW1vdmVfY3YsIGV0YwogCiAvLyBBZGRzIHNvbWUgbWFjcm8gZGVm
aW5lcyB1c3VhbGx5IGRlZmluZWQgaW4gX19jb25maWcuCkBAIC0zNyw0MTggKzI3LDI0IEBACiAj
ZGVmaW5lIF9XVEZfTElCQ1BQX1RFTVBMQVRFX1ZJUwogI2RlZmluZSBfV1RGX1ZTVEQgc3RkCiAK
LSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2RlZmluZSBfV1RGX0xJQkNQUF9BU1NFUlQg
QVNTRVJUCi0KIF9XVEZfTElCQ1BQX0JFR0lOX05BTUVTUEFDRQogCi1pbmxpbmUgY29uc3RleHBy
IHN0ZDo6c2l6ZV90IGR5bmFtaWNfZXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNp
emVfdD46Om1heCgpOwotdGVtcGxhdGUgPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVu
dCA9IGR5bmFtaWNfZXh0ZW50PiBjbGFzcyBTcGFuOwotCi0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+
Ci1zdHJ1Y3QgX19pc19zcGFuX2ltcGwgOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHt9OwotCi10
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50Pgotc3RydWN0IF9faXNfc3Bh
bl9pbXBsPFNwYW48X1RwLCBfRXh0ZW50Pj4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307Ci0K
LXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19pc19zcGFuIDogcHVibGljIF9faXNfc3Bh
bl9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+
Ci1zdHJ1Y3QgX19pc19zdGRfYXJyYXlfaW1wbCA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307
Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KLXN0cnVjdCBfX2lzX3N0
ZF9hcnJheV9pbXBsPHN0ZDo6YXJyYXk8X1RwLCBfU3o+PiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlw
ZSB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIF9UcD4KLXN0cnVjdCBfX2lzX3N0ZF9hcnJheSA6IHB1
YmxpYyBfX2lzX3N0ZF9hcnJheV9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4ge307Ci0KLXRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZSwgY2xhc3MgPSB2b2lkPgotc3Ry
dWN0IF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lciA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5
cGUge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZT4KLXN0cnVj
dCBfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8X1RwLCBfRWxlbWVudFR5cGUsCi0gICAg
ICAgIHN0ZDo6dm9pZF90PAotICAgICAgICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBT
cGFuCi0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhX19pc19zcGFuPF9UcD46
OnZhbHVlLCBzdGQ6Om51bGxwdHJfdD46OnR5cGUsCi0gICAgICAgIC8vIGlzIG5vdCBhIHNwZWNp
YWxpemF0aW9uIG9mIGFycmF5Ci0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwh
X19pc19zdGRfYXJyYXk8X1RwPjo6dmFsdWUsIHN0ZDo6bnVsbHB0cl90Pjo6dHlwZSwKLSAgICAg
ICAgLy8gc2Q6OmlzX2FycmF5X3Y8Q29udGFpbmVyPiBpcyBmYWxzZSwKLSAgICAgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2FycmF5X3Y8X1RwPiwgc3RkOjpudWxscHRy
X3Q+Ojp0eXBlLAotICAgICAgICAvLyBzdGQ6OmRhdGEoY29udCkgYW5kIHN0ZDo6c2l6ZShjb250
KSBhcmUgd2VsbCBmb3JtZWQKLSAgICAgICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6OmRl
Y2x2YWw8X1RwPigpKSksCi0gICAgICAgICAgICBkZWNsdHlwZShzdGQ6OnNpemUoc3RkOjpkZWNs
dmFsPF9UcD4oKSkpLAotICAgICAgICAvLyByZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRhdGEo
Y29udCkpPigqKVtdIGlzIGNvbnZlcnRpYmxlIHRvIEVsZW1lbnRUeXBlKCopW10KLSAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29u
dmVydGlibGVfdjxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8ZGVjbHR5cGUoc3RkOjpkYXRhKHN0ZDo6
ZGVjbHZhbDxfVHAgJj4oKSkpPigqKVtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0VsZW1lbnRUeXBlKCopW10+LAotICAgICAgICAgICAgICAgIHN0ZDo6bnVsbHB0cl90Pjo6
dHlwZQotICAgICAgICA+PgotICAgIDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHt9OwotCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+Ci1jbGFzcyBfV1RGX0xJ
QkNQUF9URU1QTEFURV9WSVMgU3BhbiB7Ci1wdWJsaWM6Ci0vLyAgY29uc3RhbnRzIGFuZCB0eXBl
cwotICAgIHVzaW5nIGVsZW1lbnRfdHlwZSAgICAgICAgICAgPSBfVHA7Ci0gICAgdXNpbmcgdmFs
dWVfdHlwZSAgICAgICAgICAgICA9IHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPjsKLSAgICB1c2luZyBz
aXplX3R5cGUgICAgICAgICAgICAgID0gc3RkOjpzaXplX3Q7Ci0gICAgdXNpbmcgZGlmZmVyZW5j
ZV90eXBlICAgICAgICA9IHN0ZDo6cHRyZGlmZl90OwotICAgIHVzaW5nIHBvaW50ZXIgICAgICAg
ICAgICAgICAgPSBfVHAgKjsKLSAgICB1c2luZyBjb25zdF9wb2ludGVyICAgICAgICAgID0gY29u
c3QgX1RwICo7Ci0gICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgICAgICA9IF9UcCAmOwotICAg
IHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfVHAgJjsKLSNpZiAoX1dURl9M
SUJDUFBfREVCVUdfTEVWRUwgPT0gMikgfHwgZGVmaW5lZChfV1RGX0xJQkNQUF9BQklfU1BBTl9Q
T0lOVEVSX0lURVJBVE9SUykKLSAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gcG9p
bnRlcjsKLSNlbHNlCi0gICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IF9fd3JhcF9p
dGVyPHBvaW50ZXI+OwotI2VuZGlmCi0gICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciAgICAgICA9
IF9XVEZfVlNURDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47Ci0KLSAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdHlwZSBleHRlbnQgPSBfRXh0ZW50OwotCi0vLyBbc3Bhbi5jb25zXSwgc3Bh
biBjb25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCi0gICAgdGVt
cGxhdGUgPHN0ZDo6c2l6ZV90IF9TeiA9IF9FeHRlbnQsIHN0ZDo6ZW5hYmxlX2lmX3Q8X1N6ID09
IDAsIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIFNwYW4oKSBub2V4Y2VwdCA6IF9fZGF0YXtudWxscHRyfSB7fQot
Ci0gICAgY29uc3RleHByIFNwYW4gICAgICAgICAgIChjb25zdCBTcGFuJikgbm9leGNlcHQgPSBk
ZWZhdWx0OwotICAgIGNvbnN0ZXhwciBTcGFuJiBvcGVyYXRvcj0oY29uc3QgU3BhbiYpIG5vZXhj
ZXB0ID0gZGVmYXVsdDsKLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0
ZXhwciBleHBsaWNpdCBTcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9f
ZGF0YXtfX3B0cn0KLSAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQo
X0V4dGVudCA9PSBfX2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3Ig
KHB0ciwgbGVuKSIpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3Rl
eHByIGV4cGxpY2l0IFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9
Ci0gICAgICAgIHsgKHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0g
c3RkOjpkaXN0YW5jZShfX2YsIF9fbCksICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1
Y3RvciAocHRyLCBwdHIpIik7IH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBTcGFuKGVsZW1lbnRfdHlwZSAoJl9fYXJyKVtfRXh0ZW50XSkgICAgICAgICAg
bm9leGNlcHQgOiBfX2RhdGF7X19hcnJ9IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVy
RWxlbWVudFR5cGUsCi0gICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252
ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIHN0
ZDo6bnVsbHB0cl90PiA9IG51bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkKLSAgICBjb25zdGV4cHIgU3BhbihzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0
ZW50PiYgX19hcnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0ge30KLQotICAgIHRl
bXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKLSAgICAgICAgICAgICAgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUoKilb
XSwgZWxlbWVudF90eXBlICgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cj4KLSAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IHN0
ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX2Fycikgbm9leGNlcHQgOiBf
X2RhdGF7X19hcnIuZGF0YSgpfSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+
Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4
cGxpY2l0IFNwYW4oICAgICAgX0NvbnRhaW5lciYgX19jLAotICAgICAgICAgICAgc3RkOjplbmFi
bGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6
dmFsdWUsIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCi0gICAgICAgIDogX19kYXRhe19XVEZf
VlNURDo6ZGF0YShfX2MpfSB7Ci0gICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVu
dCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0
cnVjdG9yIChyYW5nZSkiKTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9Db250
YWluZXI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3Rl
eHByIGV4cGxpY2l0IFNwYW4oY29uc3QgX0NvbnRhaW5lciYgX19jLAotICAgICAgICAgICAgc3Rk
OjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8Y29uc3QgX0NvbnRh
aW5lciwgX1RwPjo6dmFsdWUsIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCi0gICAgICAgIDog
X19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSB7Ci0gICAgICAgICAgICBfV1RGX0xJQkNQUF9B
U1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4g
U3BhbidzIGNvbnN0cnVjdG9yIChyYW5nZSkiKTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZCi0gICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUs
IF9FeHRlbnQ+JiBfX290aGVyLAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090
aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKLSAgICAgICAgOiBfX2RhdGF7
X19vdGhlci5kYXRhKCl9IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5
cGU+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHBy
IGV4cGxpY2l0IFNwYW4oY29uc3QgU3BhbjxfT3RoZXJFbGVtZW50VHlwZT4mIF9fb3RoZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBl
bGVtZW50X3R5cGUgKCopW10+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bGxw
dHJfdD4gPSBudWxscHRyKSBub2V4Y2VwdAotICAgICAgICA6IF9fZGF0YXtfX290aGVyLmRhdGEo
KX0geyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfX290aGVyLnNpemUoKSwgInNpemUg
bWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChvdGhlciBTcGFuKSIpOyB9Ci0KLQotLy8g
IH5TcGFuKCkgbm9leGNlcHQgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90
IF9Db3VudD4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhw
ciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBmaXJzdCgpIGNvbnN0IG5vZXhjZXB0Ci0gICAg
ewotICAgICAgICBzdGF0aWNfYXNzZXJ0KF9Db3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9m
IHJhbmdlIGluIFNwYW46OmZpcnN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90
eXBlLCBfQ291bnQ+e2RhdGEoKSwgX0NvdW50fTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8c3Rk
OjpzaXplX3QgX0NvdW50PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAg
Y29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGxhc3QoKSBjb25zdCBub2V4Y2Vw
dAotICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNvdW50
IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxl
bWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKLSAg
ICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBT
cGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50
KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291
bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIp
OwotICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07Ci0gICAgfQotCi0gICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUs
IGR5bmFtaWNfZXh0ZW50PiBsYXN0KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAot
ICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291
bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46Omxhc3QoY291bnQpIik7Ci0gICAgICAgIHJldHVybiB7
ZGF0YSgpICsgc2l6ZSgpIC0gX19jb3VudCwgX19jb3VudH07Ci0gICAgfQotCi0gICAgdGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IF9PZmZzZXQsIHN0ZDo6c2l6ZV90IF9Db3VudCA9IGR5bmFtaWNfZXh0
ZW50PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgY29uc3RleHByIGF1
dG8gc3Vic3BhbigpIGNvbnN0IG5vZXhjZXB0Ci0gICAgICAgIC0+IFNwYW48ZWxlbWVudF90eXBl
LCBfQ291bnQgIT0gZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD4K
LSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoX09mZnNldCA8PSBfRXh0ZW50LCAiT2Zmc2V0
IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChfQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IF9FeHRlbnQgLSBfT2Zmc2V0
LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOwotCi0g
ICAgICAgIHVzaW5nIF9SZXR1cm5UeXBlID0gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudCAhPSBk
eW5hbWljX2V4dGVudCA/IF9Db3VudCA6IF9FeHRlbnQgLSBfT2Zmc2V0PjsKLSAgICAgICAgcmV0
dXJuIF9SZXR1cm5UeXBle2RhdGEoKSArIF9PZmZzZXQsIF9Db3VudCA9PSBkeW5hbWljX2V4dGVu
dCA/IHNpemUoKSAtIF9PZmZzZXQgOiBfQ291bnR9OwotICAgIH0KLQotCi0gICAgX1dURl9MSUJD
UFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5
bmFtaWNfZXh0ZW50PgotICAgICAgIHN1YnNwYW4oc2l6ZV90eXBlIF9fb2Zmc2V0LCBzaXplX3R5
cGUgX19jb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fb2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2Yg
cmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX19jb3VudCAgPD0gc2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1pY19leHRl
bnQsICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIp
OwotICAgICAgICBpZiAoX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCkKLSAgICAgICAgICAgIHJl
dHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIHNpemUoKSAtIF9fb2Zmc2V0fTsKLSAgICAgICAgX1dU
Rl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBj
b3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAg
ICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBfX2NvdW50fTsKLSAgICB9Ci0KLSAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAg
ICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50OyB9Ci0gICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCAqIHNpemVvZihlbGVtZW50X3R5cGUpOyB9Ci0gICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGJvb2wgZW1wdHkoKSAgICAg
ICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCA9PSAwOyB9Ci0KLSAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10o
c2l6ZV90eXBlIF9faWR4KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgpLCAiU3BhbjxULE4+W10gaW5kZXggb3V0IG9mIGJvdW5k
cyIpOwotICAgICAgICByZXR1cm4gX19kYXRhW19faWR4XTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qg
bm9leGNlcHQKLSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNw
YW48VCwgTj46OmZyb250KCkgb24gZW1wdHkgU3BhbiIpOwotICAgICAgICByZXR1cm4gX19kYXRh
WzBdOwotICAgIH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoIWVtcHR5KCksICJTcGFuPFQsIE4+OjpiYWNrKCkgb24gZW1wdHkgU3BhbiIp
OwotICAgICAgICByZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kYXRhOyB9Ci0KLS8vIFtz
cGFuLml0ZXJdLCBTcGFuIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgIGJlZ2luKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpKTsgfQotICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgICBl
bmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkgKyBzaXplKCkpOyB9
Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRl
cmF0b3IgICAgICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRl
cmF0b3IoZW5kKCkpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3Rl
eHByIHJldmVyc2VfaXRlcmF0b3IgICAgICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KLQotcHJpdmF0ZToKLSAgICBwb2ludGVy
ICAgIF9fZGF0YTsKLQotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwPgotY2xhc3MgX1dU
Rl9MSUJDUFBfVEVNUExBVEVfVklTIFNwYW48X1RwLCBkeW5hbWljX2V4dGVudD4gewotcHJpdmF0
ZToKLQotcHVibGljOgotLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKLSAgICB1c2luZyBlbGVtZW50
X3R5cGUgICAgICAgICAgID0gX1RwOwotICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAgICAg
PSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47Ci0gICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgICAg
ICA9IHN0ZDo6c2l6ZV90OwotICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgICAgICAgPSBzdGQ6
OnB0cmRpZmZfdDsKLSAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgICAgID0gX1RwICo7Ci0g
ICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9UcCAqOwotICAgIHVzaW5n
IHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKLSAgICB1c2luZyBjb25zdF9yZWZlcmVu
Y2UgICAgICAgID0gY29uc3QgX1RwICY7Ci0jaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMID09
IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMpCi0g
ICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7Ci0jZWxzZQotICAgIHVz
aW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsKLSNlbmRp
ZgotICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJldmVyc2Vf
aXRlcmF0b3I8aXRlcmF0b3I+OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0
ZW50ID0gZHluYW1pY19leHRlbnQ7Ci0KLS8vIFtzcGFuLmNvbnNdLCBTcGFuIGNvbnN0cnVjdG9y
cywgY29weSwgYXNzaWdubWVudCwgYW5kIGRlc3RydWN0b3IKLSAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWSBjb25zdGV4cHIgU3BhbigpIG5vZXhjZXB0IDogX19kYXRhe251bGxwdHJ9
LCBfX3NpemV7MH0ge30KLQotICAgIGNvbnN0ZXhwciBTcGFuICAgICAgICAgICAoY29uc3QgU3Bh
biYpIG5vZXhjZXB0ID0gZGVmYXVsdDsKLSAgICBjb25zdGV4cHIgU3BhbiYgb3BlcmF0b3I9KGNv
bnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgU3Bhbihwb2ludGVyIF9fcHRyLCBzaXplX3R5cGUgX19jb3Vu
dCkgOiBfX2RhdGF7X19wdHJ9LCBfX3NpemV7X19jb3VudH0ge30KLSAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgU3Bhbihwb2ludGVyIF9fZiwgcG9pbnRlciBfX2wp
IDogX19kYXRhe19fZn0sIF9fc2l6ZXtzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oc3RkOjpkaXN0
YW5jZShfX2YsIF9fbCkpfSB7fQotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Tej4KLSAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuKGVsZW1l
bnRfdHlwZSAoJl9fYXJyKVtfU3pdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0s
IF9fc2l6ZXtfU3p9IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUs
IHN0ZDo6c2l6ZV90IF9TeiwKLSAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtd
Piwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cj4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuKHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5cGUs
IF9Tej4mIF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6
fSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVf
dCBfU3osCi0gICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJs
ZV92PGNvbnN0IF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIHN0
ZDo6bnVsbHB0cl90PiA9IG51bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkKLSAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBl
LCBfU3o+JiBfX2Fycikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIuZGF0YSgpfSwgX19zaXple19T
en0ge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgotICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZCi0gICAgICAgIGNvbnN0ZXhwciBTcGFuKCAgICAgIF9Db250YWlu
ZXImIF9fYywKLSAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGli
bGVfY29udGFpbmVyPF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBzdGQ6Om51bGxwdHJfdD4gPSBu
dWxscHRyKQotICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXso
c2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KLQotICAgIHRlbXBsYXRlIDxjbGFz
cyBfQ29udGFpbmVyPgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAg
IGNvbnN0ZXhwciBTcGFuKGNvbnN0IF9Db250YWluZXImIF9fYywKLSAgICAgICAgICAgIHN0ZDo6
ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPGNvbnN0IF9Db250YWlu
ZXIsIF9UcD46OnZhbHVlLCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQotICAgICAgICA6IF9f
ZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6
OnNpemUoX19jKX0ge30KLQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBl
LCBzdGQ6OnNpemVfdCBfT3RoZXJFeHRlbnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkKLSAgICAgICAgY29uc3RleHByIFNwYW4oY29uc3QgU3BhbjxfT3RoZXJFbGVtZW50VHlw
ZSwgX090aGVyRXh0ZW50PiYgX19vdGhlciwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJs
ZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpIG5vZXhjZXB0Ci0g
ICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSwgX19zaXple19fb3RoZXIuc2l6ZSgpfSB7
fQotCi0vLyAgICB+U3BhbigpIG5vZXhjZXB0ID0gZGVmYXVsdDsKLQotICAgIHRlbXBsYXRlIDxz
dGQ6OnNpemVfdCBfQ291bnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gZmlyc3QoKSBjb25zdCBub2V4
Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA8PSBzaXplKCks
ICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIpOwotICAgICAgICByZXR1cm4g
U3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291bnR9OwotICAgIH0KLQotICAg
IHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gbGFzdCgp
IGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50
IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KCkiKTsKLSAgICAg
ICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9D
b3VudCwgX0NvdW50fTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WQotICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0
KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9M
SUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNw
YW46OmZpcnN0KGNvdW50KSIpOwotICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07Ci0g
ICAgfQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIg
U3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBsYXN0IChzaXplX3R5cGUgX19jb3Vu
dCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2Nv
dW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KGNvdW50KSIp
OwotICAgICAgICByZXR1cm4ge2RhdGEoKSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9Owot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfT2Zmc2V0LCBzdGQ6OnNpemVfdCBf
Q291bnQgPSBkeW5hbWljX2V4dGVudD4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WQotICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBzdWJzcGFuKCkgY29u
c3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfT2Zmc2V0IDw9
IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbigpIik7Ci0gICAg
ICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgX0NvdW50
IDw9IHNpemUoKSAtIF9PZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bh
bjo6c3Vic3BhbigpIik7Ci0gICAgICAgIHJldHVybiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50
PntkYXRhKCkgKyBfT2Zmc2V0LCBfQ291bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBf
T2Zmc2V0IDogX0NvdW50fTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5
cGUsIGR5bmFtaWNfZXh0ZW50PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0g
ICAgc3Vic3BhbihzaXplX3R5cGUgX19vZmZzZXQsIHNpemVfdHlwZSBfX2NvdW50ID0gZHluYW1p
Y19leHRlbnQpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NF
UlQoX19vZmZzZXQgPD0gc2l6ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJz
cGFuKG9mZnNldCwgY291bnQpIik7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50
ICA8PSBzaXplKCkgfHwgX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCwgImNvdW50IG91dCBvZiBy
YW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7Ci0gICAgICAgIGlmIChfX2Nv
dW50ID09IGR5bmFtaWNfZXh0ZW50KQotICAgICAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBfX29m
ZnNldCwgc2l6ZSgpIC0gX19vZmZzZXR9OwotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19j
b3VudCA8PSBzaXplKCkgLSBfX29mZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBvZiByYW5nZSBp
biBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgp
ICsgX19vZmZzZXQsIF9fY291bnR9OwotICAgIH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZSgpICAgICAgIGNvbnN0IG5vZXhjZXB0
IHsgcmV0dXJuIF9fc2l6ZTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNv
bnN0ZXhwciBzaXplX3R5cGUgc2l6ZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9f
c2l6ZSAqIHNpemVvZihlbGVtZW50X3R5cGUpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIGJvb2wgZW1wdHkoKSAgICAgICAgICAgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gX19zaXplID09IDA7IH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIGNvbnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgX19pZHgpIGNvbnN0
IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19pZHggPCBzaXpl
KCksICJTcGFuPFQ+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICByZXR1cm4gX19k
YXRhW19faWR4XTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAg
IF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VD5bXS5mcm9udCgpIG9uIGVtcHR5
IFNwYW4iKTsKLSAgICAgICAgcmV0dXJuIF9fZGF0YVswXTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGJhY2soKSBjb25zdCBu
b2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgpLCAiU3Bh
bjxUPltdLmJhY2soKSBvbiBlbXB0eSBTcGFuIik7Ci0gICAgICAgIHJldHVybiBfX2RhdGFbc2l6
ZSgpLTFdOwotICAgIH0KLQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIHBvaW50ZXIgZGF0YSgpICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZXhj
ZXB0IHsgcmV0dXJuIF9fZGF0YTsgfQotCi0vLyBbc3Bhbi5pdGVyXSwgU3BhbiBpdGVyYXRvciBz
dXBwb3J0Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJh
dG9yICAgICAgICAgICAgICAgICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJh
dG9yKGRhdGEoKSk7IH0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1
cm4gaXRlcmF0b3IoZGF0YSgpICsgc2l6ZSgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAgICByYmVnaW4oKSBjb25z
dCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQotICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAg
ICAgIHJlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2lu
KCkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgcG9pbnRlciAgIF9fZGF0YTsKLSAgICBzaXplX3R5cGUg
X19zaXplOwotfTsKLQotI2lmICFkZWZpbmVkKF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMpCi10
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgotaW5saW5lIGNvbnN0ZXhw
ciBib29sIHN0ZDo6cmFuZ2VzOjplbmFibGVfYm9ycm93ZWRfcmFuZ2U8U3BhbjxfVHAsIF9FeHRl
bnQ+ID4gPSB0cnVlOwotI2VuZGlmIC8vICFkZWZpbmVkKF9XVEZfTElCQ1BQX0hBU19OT19SQU5H
RVMpCit0ZW1wbGF0ZTxjbGFzcyBDLCBzdGQ6OnNpemVfdCBFID0gc3RkOjpkeW5hbWljX2V4dGVu
dD4KK3VzaW5nIFNwYW4gPSBzdGQ6OnNwYW48QywgRT47CiAKIC8vICBhc0J5dGVzICYgYXNXcml0
YWJsZUJ5dGVzCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgogX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKIGF1dG8gYXNCeXRlcyhTcGFuPF9UcCwgX0V4dGVu
dD4gX19zKSBub2V4Y2VwdAotLT4gU3Bhbjxjb25zdCBzdGQ6OmJ5dGUsIF9FeHRlbnQgPT0gZHlu
YW1pY19leHRlbnQgPyBkeW5hbWljX2V4dGVudCA6IF9FeHRlbnQgKiBzaXplb2YoX1RwKT4KKy0+
IFNwYW48Y29uc3Qgc3RkOjpieXRlLCBfRXh0ZW50ID09IHN0ZDo6ZHluYW1pY19leHRlbnQgPyBz
dGQ6OmR5bmFtaWNfZXh0ZW50IDogX0V4dGVudCAqIHNpemVvZihfVHApPgogeyByZXR1cm4geyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHN0ZDo6Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNpemVf
Ynl0ZXMoKSB9OyB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+
CiBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogYXV0byBhc1dyaXRhYmxlQnl0ZXMoU3Bh
bjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNlcHQKLS0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfY29uc3RfdjxfVHA+LCBTcGFuPHN0ZDo6Ynl0ZSwgX0V4dGVudCA9PSBkeW5hbWljX2V4dGVu
dCA/IGR5bmFtaWNfZXh0ZW50IDogX0V4dGVudCAqIHNpemVvZihfVHApPj4KKy0+IHN0ZDo6ZW5h
YmxlX2lmX3Q8IXN0ZDo6aXNfY29uc3RfdjxfVHA+LCBTcGFuPHN0ZDo6Ynl0ZSwgX0V4dGVudCA9
PSBzdGQ6OmR5bmFtaWNfZXh0ZW50ID8gc3RkOjpkeW5hbWljX2V4dGVudCA6IF9FeHRlbnQgKiBz
aXplb2YoX1RwKT4+CiB7IHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpieXRlICo+KF9f
cy5kYXRhKCkpLCBfX3Muc2l6ZV9ieXRlcygpIH07IH0KIAotLy8gIERlZHVjdGlvbiBndWlkZXMK
LXRlbXBsYXRlPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX1N6PgotICAgIFNwYW4oX1RwICgmKVtf
U3pdKSAtPiBTcGFuPF9UcCwgX1N6PjsKLQotdGVtcGxhdGU8Y2xhc3MgX1RwLCBzdGQ6OnNpemVf
dCBfU3o+Ci0gICAgU3BhbihzdGQ6OmFycmF5PF9UcCwgX1N6PiYpIC0+IFNwYW48X1RwLCBfU3o+
OwotCi10ZW1wbGF0ZTxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KLSAgICBTcGFuKGNvbnN0
IHN0ZDo6YXJyYXk8X1RwLCBfU3o+JikgLT4gU3Bhbjxjb25zdCBfVHAsIF9Tej47Ci0KLXRlbXBs
YXRlPGNsYXNzIF9Db250YWluZXI+Ci0gICAgU3BhbihfQ29udGFpbmVyJikgLT4gU3Bhbjx0eXBl
bmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlPjsKLQotdGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5l
cj4KLSAgICBTcGFuKGNvbnN0IF9Db250YWluZXImKSAtPiBTcGFuPGNvbnN0IHR5cGVuYW1lIF9D
b250YWluZXI6OnZhbHVlX3R5cGU+OwotCiBfV1RGX0xJQkNQUF9FTkRfTkFNRVNQQUNFCiAKIHVz
aW5nIFdURjo6U3BhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmNwcAppbmRleCBjNWVjZWM5ZWU2ZTEuLjdmYjFlNzdjMjA3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCiBEZWNvZGVyOjpEZWNvZGVyKFNw
YW48Y29uc3QgdWludDhfdD4gc3BhbikKICAgICA6IG1fYnVmZmVyKHNwYW4pCi0gICAgLCBtX2J1
ZmZlclBvc2l0aW9uKHNwYW4uYmVnaW4oKSkKKyAgICAsIG1fYnVmZmVyUG9zaXRpb24oJipzcGFu
LmJlZ2luKCkpCiB7CiB9CiAKQEAgLTQzLDcgKzQzLDcgQEAgRGVjb2Rlcjo6fkRlY29kZXIoKQog
CiBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZl
ci5lbmQoKSAtIG1fYnVmZmVyUG9zaXRpb24pOworICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19j
YXN0PHNpemVfdD4oJiptX2J1ZmZlci5lbmQoKSAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCiBj
b25zdCB1aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplX3Qg
c2l6ZSkKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERh
dGEoU3Bhbjx1aW50OF90PiBzcGFuKQogCiBib29sIERlY29kZXI6OnJld2luZChzaXplX3Qgc2l6
ZSkKIHsKLSAgICBpZiAoc2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyUG9zaXRp
b24gLSBtX2J1ZmZlci5iZWdpbigpKSkgeworICAgIGlmIChzaXplIDw9IHN0YXRpY19jYXN0PHNp
emVfdD4obV9idWZmZXJQb3NpdGlvbiAtICYqbV9idWZmZXIuYmVnaW4oKSkpIHsKICAgICAgICAg
bV9idWZmZXJQb3NpdGlvbiAtPSBzaXplOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
IGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCA5
ZTVjYWYzYTJiMTIuLjNkNzdiMmMyY2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgfkRlY29kZXIoKTsKIAogICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KLSAgICBzaXplX3QgY3VycmVudE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyUG9zaXRpb24gLSBtX2J1ZmZlci5iZWdpbigpOyB9Cisg
ICAgc2l6ZV90IGN1cnJlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclBvc2l0aW9u
IC0gJiptX2J1ZmZlci5iZWdpbigpOyB9CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIHJld2luZChzaXplX3QpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5j
cHAKaW5kZXggYWE2OWEzNDA2MWE2Li44YTJlZjhiYjdjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQmFzZTY0LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5j
cHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgdm9pZCBiYXNlNjRFbmNvZGVJbnRlcm5hbChTcGFuPGNvbnN0IHVpbgogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgdm9pZCBiYXNlNjRFbmNvZGVJbnRlcm5h
bChTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIFNwYW48Q2hhcmFjdGVyVHlwZT4gZGVzdGlu
YXRpb25EYXRhQnVmZmVyLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVN
YXAgbWFwKQogewotICAgIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW4geyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCkgfSwgZGVzdGlu
YXRpb25EYXRhQnVmZmVyLCBwb2xpY3ksIG1hcCk7CisgICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwo
c3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgp
KSwgaW5wdXQuc2l6ZSgpIH0sIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgcG9saWN5LCBtYXApOwog
fQogCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29u
c3Qgc3RkOjpieXRlPiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5j
b2RlTWFwIG1hcCkKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgQmFzZTY0RQog
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uVmVj
dG9yKGRlc3RpbmF0aW9uTGVuZ3RoKTsKLSAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwg
U3BhbiB7IGRlc3RpbmF0aW9uVmVjdG9yIH0sIHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNv
ZGVJbnRlcm5hbChpbnB1dCwgc3RkOjpzcGFuIHsgZGVzdGluYXRpb25WZWN0b3IgfSwgcG9saWN5
LCBtYXApOwogICAgIHJldHVybiBkZXN0aW5hdGlvblZlY3RvcjsKIH0KIApAQCAtMjYzLDE1ICsy
NjMsMTUgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTcGFu
PGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIE9wdGlvblMKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgp
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgp
IH0sIG9wdGlvbnMsIG1hcCk7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHN0ZDo6
c3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlucHV0LmRhdGEoKSksIGlu
cHV0LnNpemUoKSB9LCBvcHRpb25zLCBtYXApOwogfQogCiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQsIE9wdGlvblNldDxCYXNlNjRE
ZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQogewogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGlucHV0Lmlz
OEJpdCgpKQotICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoU3BhbiB7IGlucHV0
LmNoYXJhY3RlcnM4KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOwotICAgIHJldHVybiBiYXNl
NjREZWNvZGVJbnRlcm5hbChTcGFuIHsgaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCB9LCBv
cHRpb25zLCBtYXApOworICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoc3RkOjpz
cGFuIHsgaW5wdXQuY2hhcmFjdGVyczgoKSwgbGVuZ3RoIH0sIG9wdGlvbnMsIG1hcCk7CisgICAg
cmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHN0ZDo6c3BhbiB7IGlucHV0LmNoYXJhY3RlcnMx
NigpLCBsZW5ndGggfSwgb3B0aW9ucywgbWFwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9CYXNlNjQuaAppbmRleCAxYjUwNjJmYjkzY2UuLmNlNDkwMDliMTNlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0Jhc2U2NC5oCkBAIC0zNTYsNyArMzU2LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0
aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgYmFzZTY0RW5jb2RlKG1fYmFzZTY0LmlucHV0LCBT
cGFuIHsgZGVzdGluYXRpb24sIG1fZW5jb2RlZExlbmd0aCB9LCBtX2Jhc2U2NC5wb2xpY3ksIG1f
YmFzZTY0Lm1hcCk7CisgICAgICAgIGJhc2U2NEVuY29kZShtX2Jhc2U2NC5pbnB1dCwgc3RkOjpz
cGFuIHsgZGVzdGluYXRpb24sIG1fZW5jb2RlZExlbmd0aCB9LCBtX2Jhc2U2NC5wb2xpY3ksIG1f
YmFzZTY0Lm1hcCk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggOWY1NDNkMDBmNDc0Li45MWE2OGQ3YzY2
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cApAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgQVNTRVJUKG1fcmVz
cG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwog
CiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykgewotICAgICAgICBTcGFuIGNodW5rIHsg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OworICAgICAgICBzdGQ6OnNwYW4gY2h1bmsg
eyBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH07CiAgICAgICAgIG1fY29uc3VtZURhdGFD
YWxsYmFjaygmY2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDA0LDcgKzQwNCw3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENv
bnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBTcGFuIGNodW5r
IHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBzdGQ6OnNw
YW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAg
IG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IDVjMDYyOGYwZWM2Yi4uMmFkNTUzNGFlYjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIGJvb2wgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2Jq
ZWN0U3RvcmVJbmZvCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBpbmZvLmlkZW50
aWZpZXIoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIGlu
Zm8ubmFtZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDMs
IGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3FsLT5iaW5kQmxvYig0LCAqa2V5UGF0aEJsb2IpICE9IFNRTElURV9PSworICAgICAgICAg
ICAgfHwgc3FsLT5iaW5kQmxvYig0LCBzdGQ6OnNwYW4geyBrZXlQYXRoQmxvYi0+ZGF0YSgpLCBr
ZXlQYXRoQmxvYi0+c2l6ZSgpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5i
aW5kSW50KDUsIGluZm8udW5pcXVlKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3Fs
LT5iaW5kSW50KDYsIGluZm8ubXVsdGlFbnRyeSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAg
IHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CkBAIC0xMTcwLDcgKzExNzAsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwg
c3FsLT5iaW5kSW50NjQoMSwgaW5mby5pZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwogICAgICAg
ICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCBpbmZvLm5hbWUoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsICprZXlQYXRoQmxvYikgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIHN0ZDo6c3BhbiB7IGtleVBhdGhCbG9iLT5k
YXRhKCksIGtleVBhdGhCbG9iLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBzcWwtPmJpbmRJbnQoNCwgaW5mby5hdXRvSW5jcmVtZW50KCkpICE9IFNRTElURV9PSwogICAg
ICAgICAgICAgfHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGFkZCBvYmplY3Qgc3RvcmUgJyVzJyB0byBPYmplY3RTdG9yZUlu
Zm8gdGFibGUgKCVpKSAtICVzIiwgaW5mby5uYW1lKCkudXRmOCgpLmRhdGEoKSwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKQEAgLTEzODQsNyAr
MTM4NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgICAgICB8fCBzcWwtPmJp
bmRJbnQ2NCgxLCBpbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBzcWwtPmJpbmRUZXh0KDIsIGluZm8ubmFtZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAg
IHx8IHNxbC0+YmluZEludDY0KDMsIGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCkpICE9IFNR
TElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCAqa2V5UGF0aEJsb2IpICE9
IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCBzdGQ6OnNwYW4geyBr
ZXlQYXRoQmxvYi0+ZGF0YSgpLCBrZXlQYXRoQmxvYi0+c2l6ZSgpIH0pICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDUsIGluZm8udW5pcXVlKCkpICE9IFNRTElURV9P
SwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDYsIGluZm8ubXVsdGlFbnRyeSgpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CkBA
IC0xNDU4LDcgKzE0NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hl
Y2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogICAgIGF1dG8gc3Fs
ID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6SGFzSW5kZXhSZWNvcmQsICJTRUxFQ1Qgcm93aWQgRlJP
TSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhU
KTsiX3MpOwogICAgIGlmICghc3FsCiAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIGluZm8u
aWRlbnRpZmllcigpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAq
aW5kZXhLZXlCdWZmZXIpICE9IFNRTElURV9PSykgeworICAgICAgICB8fCBzcWwtPmJpbmRCbG9i
KDIsIHN0ZDo6c3BhbiB7IGluZGV4S2V5QnVmZmVyLT5kYXRhKCksIGluZGV4S2V5QnVmZmVyLT5z
aXplKCkgfSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY2hlY2tp
bmcgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJFcnJvciBjaGVja2luZyBmb3IgaW5kZXggcmVjb3JkIGluIGRh
dGFiYXNlIl9zIH07CiAgICAgfQpAQCAtMTUzNSw4ICsxNTM1LDggQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGkKICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0
KDEsIGluZGV4SUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQo
Miwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRC
bG9iKDMsICppbmRleEtleUJ1ZmZlcikgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwt
PmJpbmRCbG9iKDQsICp2YWx1ZUJ1ZmZlcikgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBz
cWwtPmJpbmRCbG9iKDMsIHN0ZDo6c3BhbiB7IGluZGV4S2V5QnVmZmVyLT5kYXRhKCksIGluZGV4
S2V5QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJp
bmRCbG9iKDQsIHN0ZDo6c3BhbiB7IHZhbHVlQnVmZmVyLT5kYXRhKCksIHZhbHVlQnVmZmVyLT5z
aXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCg1LCBy
ZWNvcmRJRCkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHV0IGluZGV4IHJl
Y29yZCBmb3IgaW5kZXggJSIgUFJJaTY0ICIgaW4gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAiIGlu
IFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgaW5kZXhJRCwgb2JqZWN0U3RvcmVJRCwgbV9zcWxp
dGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKQEAgLTE2NTQs
NyArMTY1NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgYXV0byBzcWwgPSBjYWNo
ZWRTdGF0ZW1lbnQoU1FMOjpLZXlFeGlzdHNJbk9iamVjdFN0b3JlLCAiU0VMRUNUIGtleSBGUk9N
IFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhU
KSBMSU1JVCAxOyJfcyk7CiAgICAgaWYgKCFzcWwKICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQo
MSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNxbC0+YmluZEJsb2Io
MiwgKmtleUJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIHx8IHNxbC0+YmluZEJsb2Io
Miwgc3RkOjpzcGFuIHsga2V5QnVmZmVyLT5kYXRhKCksIGtleUJ1ZmZlci0+c2l6ZSgpIH0pICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgcmVjb3JkIGZy
b20gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAiIGZyb20gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMi
LCBvYmplY3RTdG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBJREJLZXkgaW4gb2JqZWN0IHN0b3JlIl9z
IH07CiAgICAgfQpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAog
CiAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBvYmpl
Y3RTdG9yZUlEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwg
KmtleUJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9i
KDIsIHN0ZDo6c3BhbiB7IGtleUJ1ZmZlci0+ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUoKSB9KSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRlbGV0ZSBy
ZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgJSIgUFJJaTY0ICIgKCVpKSAtICVzIiwgb2JqZWN0U3Rv
cmVJRCwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkZhaWxlZCB0
byBkZWxldGUgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIl9zIH07CiAgICAgICAgIH0KQEAgLTE3
ODcsNyArMTc4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVj
b3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKIAogICAgICAgICBpZiAoIXNx
bAogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICprZXlCdWZmZXIpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBzdGQ6OnNwYW4geyBrZXlC
dWZmZXItPmRhdGEoKSwga2V5QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAg
ICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgZGVsZXRlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSAlIiBQUklpNjQg
IiAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9z
cWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGRlbGV0ZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUi
X3MgfTsKQEAgLTE5NTgsOCArMTk1OCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAg
ICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6QWRkT2JqZWN0U3RvcmVSZWNvcmQs
ICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgQ0FTVCg/IEFTIFRFWFQpLCA/LCBOVUxM
KTsiX3MpOwogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQo
MSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDIsICprZXlCdWZmZXIpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3FsLT5iaW5kQmxvYigzLCAqdmFsdWUuZGF0YSgpLmRhdGEoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIHN0ZDo6c3BhbiB7IGtleUJ1ZmZlci0+
ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8
IHNxbC0+YmluZEJsb2IoMywgc3RkOjpzcGFuIHsgdmFsdWUuZGF0YSgpLmRhdGEoKS0+ZGF0YSgp
LCB2YWx1ZS5kYXRhKCkuc2l6ZSgpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3Fs
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IHB1dCByZWNvcmQgZm9yIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBpbiBSZWNvcmRzIHRh
YmxlICglaSkgLSAlcyIsIG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCksIG1fc3FsaXRlREIt
Pmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc3RvcmUgcmVjb3JkIGlu
IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTk3NCw3ICsxOTc0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpEZWxldGVP
YmplY3RTdG9yZVJlY29yZCwgIkRFTEVURSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJ
RCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhUKTsiX3MpOwogICAgICAgICBpZiAoIXNxbAog
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZp
ZXIoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICprZXlC
dWZmZXIpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBzdGQ6
OnNwYW4geyBrZXlCdWZmZXItPmRhdGEoKSwga2V5QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRF
X09LCiAgICAgICAgICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbmRleGluZyBuZXcgb2JqZWN0IHN0b3JlIHJlY29yZCBmYWlsZWQs
IGJ1dCB1bmFibGUgdG8gcmVtb3ZlIHRoZSBvYmplY3Qgc3RvcmUgcmVjb3JkIGl0c2VsZiIpOwog
ICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiSW5kZXhpbmcgbmV3
IG9iamVjdCBzdG9yZSByZWNvcmQgZmFpbGVkLCBidXQgdW5hYmxlIHRvIHJlbW92ZSB0aGUgb2Jq
ZWN0IHN0b3JlIHJlY29yZCBpdHNlbGYiX3MgfTsKQEAgLTIxNTksOCArMjE1OSw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3RpCiAKICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNx
bC0+YmluZEludDY0KDEsIG9iamVjdFN0b3JlSUQpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3FsLT5iaW5kQmxvYigyLCAqbG93ZXJCdWZmZXIpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3FsLT5iaW5kQmxvYigzLCAqdXBwZXJCdWZmZXIpICE9IFNRTElURV9PSykgeworICAg
ICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBzdGQ6OnNwYW4geyBsb3dlckJ1ZmZlci0+ZGF0
YSgpLCBsb3dlckJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwg
c3FsLT5iaW5kQmxvYigzLCBzdGQ6OnNwYW4geyB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBlckJ1
ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgZ2V0IGtleSByYW5nZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgJSIgUFJJaTY0
ICIgZnJvbSBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG9iamVjdFN0b3JlSUQsIG1fc3FsaXRl
REItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJGYWlsZWQgdG8gbG9vayB1cCByZWNv
cmQgaW4gb2JqZWN0IHN0b3JlIGJ5IGtleSByYW5nZSJfcyB9OwogICAgICAgICB9CkBAIC0yMjc2
LDggKzIyNzYsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbE9iamVj
dFN0b3JlUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aQogICAgIGF1dG8gc3FsID0gY2Fj
aGVkU3RhdGVtZW50Rm9yR2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGdldEFsbFJlY29yZHNEYXRh
KTsKICAgICBpZiAoIXNxbAogICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBnZXRBbGxSZWNv
cmRzRGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIpICE9IFNRTElURV9PSwotICAgICAgICB8fCBz
cWwtPmJpbmRCbG9iKDIsICpsb3dlckJ1ZmZlcikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNx
bC0+YmluZEJsb2IoMywgKnVwcGVyQnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgfHwg
c3FsLT5iaW5kQmxvYigyLCBzdGQ6OnNwYW4geyBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1
ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSworICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMs
IHN0ZDo6c3BhbiB7IHVwcGVyQnVmZmVyLT5kYXRhKCksIHVwcGVyQnVmZmVyLT5zaXplKCkgfSkg
IT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGdldCBrZXkgcmFu
Z2UgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAiIGZyb20gUmVjb3JkcyB0YWJs
ZSAoJWkpIC0gJXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIsIG1f
c3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkZhaWxlZCB0byBsb29rIHVwIHJl
Y29yZCBpbiBvYmplY3Qgc3RvcmUgYnkga2V5IHJhbmdlIl9zIH07CiAgICAgfQpAQCAtMjQzOCw3
ICsyNDM4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIGlmICghc3FsCiAgICAg
ICAgIHx8IHNxbC0+YmluZEludDY0KDEsIGluZGV4SUQpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBzcWwtPmJpbmRCbG9iKDIsICpidWZmZXIpICE9IFNRTElURV9PSykgeworICAgICAgICB8fCBz
cWwtPmJpbmRCbG9iKDIsIHN0ZDo6c3BhbiB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSB9KSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gbG9va3Vw
IGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gbG9va3VwIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJf
cyB9OwogICAgIH0KQEAgLTI1MjAsOCArMjUyMCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
CiAgICAgICAgIAogICAgICAgICBpZiAoIXN0YXRlbWVudAogICAgICAgICAgICAgfHwgc3RhdGVt
ZW50LT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwgKmxvd2VyQnVmZmVyKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMywgKnVwcGVyQnVmZmVy
KSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwg
c3RkOjpzcGFuIHsgbG93ZXJCdWZmZXItPmRhdGEoKSwgbG93ZXJCdWZmZXItPnNpemUoKSB9KSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMywgc3RkOjpz
cGFuIHsgdXBwZXJCdWZmZXItPmRhdGEoKSwgdXBwZXJCdWZmZXItPnNpemUoKSB9KSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNvdW50IHJlY29yZHMg
aW4gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAiIGZyb20gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMi
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUgZHVlIHRv
IGJpbmRpbmcgZmFpbHVyZSJfcyB9OwogICAgICAgICB9CkBAIC0yNTM3LDggKzI1MzcsOCBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3RpbwogCiAgICAgICAgIGlmICghc3RhdGVtZW50CiAgICAgICAg
ICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpbmRleElkZW50aWZpZXIpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCAqbG93ZXJCdWZmZXIp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigzLCAqdXBw
ZXJCdWZmZXIpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5k
QmxvYigyLCBzdGQ6OnNwYW4geyBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6
ZSgpIH0pICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigz
LCBzdGQ6OnNwYW4geyB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBlckJ1ZmZlci0+c2l6ZSgpIH0p
ICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY291bnQg
cmVjb3JkcyB3aXRoIGluZGV4ICUiIFBSSWk2NCAiIGZyb20gSW5kZXhSZWNvcmRzIHRhYmxlICgl
aSkgLSAlcyIsIGluZGV4SWRlbnRpZmllciwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3Fs
aXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBjb3VudCByZWNvcmRzIGZvciBpbmRleCBkdWUgdG8gYmlu
ZGluZyBmYWlsdXJlIl9zIH07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXgg
NDU1YWFjZTg4MGRkLi5lOWRiMDYwMThhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0y
NzEsMTMgKzI3MSwxMyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAg
ICAgfQogCiAgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExv
d2VyS2V5KTsKLSAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1l
bnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5k
QmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssIHN0ZDo6c3BhbiB7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9j
dXJyZW50VXBwZXJLZXkpOwotICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJp
bmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9zdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgc3RkOjpzcGFuIHsgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAodXBwZXIga2V5KSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzE3LDEzICszMTcsMTMgQEAgYm9vbCBTUUxp
dGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgp
CiAgICAgfQogCiAgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Ci0g
ICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQt
PmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgc3RkOjpzcGFuIHsgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobV9jdXJyZW50SW5kZXhSZWNvcmRWYWx1ZSk7Ci0gICAgaWYgKG1fcHJlSW5kZXhTdGF0
ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRF
X09LKSB7CisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5k
QXJndW1lbnQrKywgc3RkOjpzcGFuIHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0p
ICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFy
Z3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKHZhbHVlKSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcAppbmRleCAxOGU2YzliNDI3NDcuLjYwMmE5YWI4YmYyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0
by5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
ZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50SwogICAgIG1l
bWNweShrZXlJbmZvLmNsaWVudEtleSwgY2xpZW50S2V5cy5jbGllbnRQMjU2REhLZXlQYWlyLnB1
YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CiAgICAgbWVtY3B5KGtleUlu
Zm8uc2VydmVyS2V5LCBoZWFkZXIuc2VydmVyUHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5n
dGgpOwogCi0gICAgYXV0byBpa20gPSBobWFjU0hBMjU2KHBya0tleSwgU3BhbihyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPigma2V5SW5mbyksIHNpemVvZihrZXlJbmZvKSkpOworICAgIGF1dG8g
aWttID0gaG1hY1NIQTI1NihwcmtLZXksIHN0ZDo6c3BhbihyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPigma2V5SW5mbyksIHNpemVvZihrZXlJbmZvKSkpOwogCiAgICAgLyoKICAgICAgKiAjIEhL
REYtRXh0cmFjdChzYWx0LCBJS00pCkBAIC0xNTIsNyArMTUyLDcgQEAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMm
IGNsaWVudEsKICAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAx
KVswLi4xNV0KICAgICAgKi8KICAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAi
Q29udGVudC1FbmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOwotICAgIGF1dG8gY2VrID0gaG1h
Y1NIQTI1NihwcmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGF1
dG8gY2VrID0gaG1hY1NIQTI1NihwcmssIHN0ZDo6c3BhbihjZWtJbmZvLCBzaXplb2YoY2VrSW5m
bykgLSAxKSk7CiAgICAgY2VrLnNocmluaygxNik7CiAKICAgICAvKgpAQCAtMTYxLDExICsxNjEs
MTEgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ01QYXls
b2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEsKICAgICAgKiBOT05DRSA9IEhNQUMtU0hBLTI1
NihQUkssIG5vbmNlX2luZm8gfHwgMHgwMSlbMC4uMTFdCiAgICAgICovCiAgICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3Qgbm9uY2VJbmZvW10gPSAiQ29udGVudC1FbmNvZGluZzogbm9uY2VceDAwXHgw
MSI7Ci0gICAgYXV0byBub25jZSA9IGhtYWNTSEEyNTYocHJrLCBTcGFuKG5vbmNlSW5mbywgc2l6
ZW9mKG5vbmNlSW5mbykgLSAxKSk7CisgICAgYXV0byBub25jZSA9IGhtYWNTSEEyNTYocHJrLCBz
dGQ6OnNwYW4obm9uY2VJbmZvLCBzaXplb2Yobm9uY2VJbmZvKSAtIDEpKTsKICAgICBub25jZS5z
aHJpbmsoMTIpOwogCiAgICAgLy8gRmluYWxseSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQg
cmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRleHQuCi0gICAgYXV0byBjaXBoZXJUZXh0ID0gU3Bh
bihwYXlsb2FkLmRhdGEoKSArIHNpemVvZihoZWFkZXIpLCBwYXlsb2FkLnNpemUoKSAtIHNpemVv
ZihoZWFkZXIpKTsKKyAgICBhdXRvIGNpcGhlclRleHQgPSBzdGQ6OnNwYW4ocGF5bG9hZC5kYXRh
KCkgKyBzaXplb2YoaGVhZGVyKSwgcGF5bG9hZC5zaXplKCkgLSBzaXplb2YoaGVhZGVyKSk7CiAg
ICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9uY2UsIGNp
cGhlclRleHQpOwogICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBkZWNyeXB0QUVTR0NNUGF5bG9hZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRLZXlzCiAg
ICAgICovCiAgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgYXV0aEluZm9bXSA9ICJDb250ZW50LUVu
Y29kaW5nOiBhdXRoXHgwMFx4MDEiOwogICAgIGF1dG8gcHJrQ29tYmluZSA9IGhtYWNTSEEyNTYo
Y2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LCAqZWNkaFNlY3JldFJlc3VsdCk7Ci0gICAgYXV0
byBpa20gPSBobWFjU0hBMjU2KHBya0NvbWJpbmUsIFNwYW4oYXV0aEluZm8sIHNpemVvZihhdXRo
SW5mbykgLSAxKSk7CisgICAgYXV0byBpa20gPSBobWFjU0hBMjU2KHBya0NvbWJpbmUsIHN0ZDo6
c3BhbihhdXRoSW5mbywgc2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKICAgICBhdXRvIHByayA9IGht
YWNTSEEyNTYoc2FsdCwgaWttKTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKaW5kZXggM2Vi
ZmU3N2IwNzBiLi5jNjNlZmM0NmQ1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKQEAgLTEyMCw3ICsx
MjAsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3BhbjxjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dChjaXBoZXJUZXh0V2l0aFRhZy5z
aXplKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgpOwotICAgIGF1dG8gcmVzdWx0ID0gQ0NDcnlwdG9y
R0NNT25lc2hvdERlY3J5cHQoa0NDQWxnb3JpdGhtQUVTLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgp
LCBpdi5kYXRhKCksIGl2LnNpemUoKSwgbnVsbHB0ciAvKiBhZGRpdGlvbmFsRGF0YSAqLywgMCAv
KiBhZGRpdGlvbmFsRGF0YUxlbmd0aCAqLywgY2lwaGVyVGV4dFdpdGhUYWcuZGF0YSgpLCBjaXBo
ZXJUZXh0V2l0aFRhZy5zaXplKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIHBsYWluVGV4dC5kYXRh
KCksIGNpcGhlclRleHRXaXRoVGFnLmVuZCgpIC0gYWVzMTI4R0NNVGFnTGVuZ3RoLCBhZXMxMjhH
Q01UYWdMZW5ndGgpOworICAgIGF1dG8gcmVzdWx0ID0gQ0NDcnlwdG9yR0NNT25lc2hvdERlY3J5
cHQoa0NDQWxnb3JpdGhtQUVTLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCBpdi5kYXRhKCksIGl2
LnNpemUoKSwgbnVsbHB0ciAvKiBhZGRpdGlvbmFsRGF0YSAqLywgMCAvKiBhZGRpdGlvbmFsRGF0
YUxlbmd0aCAqLywgY2lwaGVyVGV4dFdpdGhUYWcuZGF0YSgpLCBjaXBoZXJUZXh0V2l0aFRhZy5z
aXplKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIHBsYWluVGV4dC5kYXRhKCksICYqY2lwaGVyVGV4
dFdpdGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0aCk7
CiAgICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1TaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNpbmsuY3BwCmluZGV4IGMzYWRlM2VlNTZjYS4uNDA3ZmUyOTBhNTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5r
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjplbnF1ZXVlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgYnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9jYWxsYmFjaykgewotICAgICAgICBTcGFuIGNodW5rIHsgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLmxlbmd0aCgpIH07CisgICAgICAgIHN0ZDo6c3BhbiBjaHVuayB7IGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSB9OwogICAgICAgICBtX2NhbGxiYWNrKCZjaHVuayk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2Vu
ZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAK
aW5kZXggNDJmNDE4MGRmYTg0Li5hNzhlMWRjNmZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIE5ldHdvcmtT
ZW5kUXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5z
aWduZWQgYnl0ZQogewogICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRv
KiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKTsK
LSAgICAgICAgbV93cml0ZVJhd0RhdGEoU3BhbiB7IGRhdGEgKyBieXRlT2Zmc2V0LCBieXRlTGVu
Z3RoIH0pOworICAgICAgICBtX3dyaXRlUmF3RGF0YShzdGQ6OnNwYW4geyBkYXRhICsgYnl0ZU9m
ZnNldCwgYnl0ZUxlbmd0aCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3F1ZXVl
LmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
YmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwpAQCAtMTA0LDcg
KzEwNCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHJlc3VsdCA9IGxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKSkgewotICAgICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKFNw
YW4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQt
PmJ5dGVMZW5ndGgoKSB9KTsKKyAgICAgICAgICAgICAgICBtX3dyaXRlUmF3RGF0YShzdGQ6OnNw
YW4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQt
PmJ5dGVMZW5ndGgoKSB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0aC5jcHAKaW5kZXggOTlkMDcwOGI3ZmQ1Li4zNzQ4NjdiMWZiNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwCkBAIC0yNDEsNyArMjQxLDcg
QEAgdm9pZCBDYW52YXNQYXRoOjpyZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1BhdGg6OnJvdW5kUmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBjb25zdCBSYWRpdXNW
YXJpYW50JiByYWRpaSkKIHsKLSAgICByZXR1cm4gcm91bmRSZWN0KHgsIHksIHdpZHRoLCBoZWln
aHQsIFNwYW4geyAmcmFkaWksIDEgfSk7CisgICAgcmV0dXJuIHJvdW5kUmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBzdGQ6OnNwYW4geyAmcmFkaWksIDEgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IENhbnZhc1BhdGg6OnJvdW5kUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBjb25zdCBTcGFuPGNvbnN0IFJhZGl1c1ZhcmlhbnQ+JiByYWRpaSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQxOTI2ODljOTY1MC4uNmU3NTZiMTFmM2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKQEAgLTgxNCw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25l
ZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRh
U3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCku
Z2V0KCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgc3RkOjpzcGFu
IHsgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpIH0pOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4
ZWN1dGVDb21tYW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5j
cHAKaW5kZXggYzBjZjllZjMyNTZhLi5hZDcyMmQzZjVlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJY29uTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmkKICAgICAgICAgZGF0YSA9IG51bGxwdHI7CiAKICAgICBjb25zdGV4cHIgdWlu
dDhfdCBwZGZNYWdpY051bWJlcltdID0geyAnJScsICdQJywgJ0QnLCAnRicgfTsKLSAgICBpZiAo
ZGF0YSAmJiBkYXRhLT5zdGFydHNXaXRoKFNwYW4geyBwZGZNYWdpY051bWJlciwgc3RkOjpzaXpl
KHBkZk1hZ2ljTnVtYmVyKSB9KSkgeworICAgIGlmIChkYXRhICYmIGRhdGEtPnN0YXJ0c1dpdGgo
c3RkOjpzcGFuIHsgcGRmTWFnaWNOdW1iZXIsIHN0ZDo6c2l6ZShwZGZNYWdpY051bWJlcikgfSkp
IHsKICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmco
KSAtIElnbm9yaW5nIGljb24gYXQgJXMgYmVjYXVzZSBpdCBhcHBlYXJzIHRvIGJlIGEgUERGIiwg
bV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBkYXRh
ID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b2xvclNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNw
cAppbmRleCA5NGM2YjFkMmM3ZGIuLjkwY2UwMzZkZjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb2xvclNhbXBsZXIuY3BwCkBAIC0yNjUsMTEgKzI2NSwxMSBAQCBzdGQ6Om9wdGlvbmFs
PENvbG9yPiBQYWdlQ29sb3JTYW1wbGVyOjpzYW1wbGVUb3AoUGFnZSYgcGFnZSkKICAgICB9CiAK
ICAgICBpZiAoIW5vbk1hdGNoaW5nQ29sb3JJbmRleCkKLSAgICAgICAgcmV0dXJuIGF2ZXJhZ2VD
b2xvcihTcGFuIHsgc2FtcGxlcyB9LnN1YnNwYW48MSwgbnVtU2FtcGxlcyAtIDE+KCkpOworICAg
ICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKHN0ZDo6c3BhbiB7IHNhbXBsZXMgfS5zdWJzcGFuPDEs
IG51bVNhbXBsZXMgLSAxPigpKTsKICAgICBlbHNlIGlmIChub25NYXRjaGluZ0NvbG9ySW5kZXgg
PT0gbnVtU2FtcGxlcyAtIDEpCi0gICAgICAgIHJldHVybiBhdmVyYWdlQ29sb3IoU3BhbiB7IHNh
bXBsZXMgfS5zdWJzcGFuPDAsIG51bVNhbXBsZXMgLSAxPigpKTsKKyAgICAgICAgcmV0dXJuIGF2
ZXJhZ2VDb2xvcihzdGQ6OnNwYW4geyBzYW1wbGVzIH0uc3Vic3BhbjwwLCBudW1TYW1wbGVzIC0g
MT4oKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKFNwYW4geyBzYW1w
bGVzIH0pOworICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKHN0ZDo6c3BhbiB7IHNhbXBsZXMg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGU1NjYyMWU0ZWU4ZC4uNTVhMmQyOTk4ZjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3Bhbjxjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRz
OwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQotICAgICAgICBhcHBseShTcGFu
IHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIH0pOwor
ICAgICAgICBhcHBseShzdGQ6OnNwYW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVu
dC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxTaGFy
ZWRCdWZmZXI+JiYpPiYgYXBwbHkpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IDRmYjkyYWVjNDkxMS4uMGUyOGE5ODQ4ODUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGVsc2UKICAgICAgICAgY2hhcmFjdGVycyA9
IHVwY29udmVydGVkQ2hhcmFjdGVyczsKIAotICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgU3Bh
biB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxl
bmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9KTsKKyAgICByZXR1cm4gYmluZEJsb2IoaW5kZXgsIHN0
ZDo6c3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0
ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9KTsKIH0KIAogaW50IFNRTGl0ZVN0YXRlbWVu
dDo6YmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCmluZGV4IDIwZTdhNzY5OGMxNi4uNmVkZDY5NWZjMzg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcApAQCAtNDY1LDEyICs0NjUsMTIgQEAgYm9vbCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHRE
YXRhPiYKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNiwgU3RyaW5n
VmlldyB7IHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlh
Q2FjaGUpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5i
aW5kVGV4dCg3LCBkYXRhLnNjcmlwdFVSTC5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAg
ICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDgsIFN0cmluZ1ZpZXcgeyB3b3JrZXJU
eXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSB9KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoOSwgU3BhbiB7IGNzcEVuY29kZXIuYnVmZmVy
KCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxMCwgU3BhbiB7IGNvZXBFbmNvZGVyLmJ1ZmZl
cigpLCBjb2VwRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDksIHN0ZDo6c3BhbiB7IGNzcEVuY29kZXIu
YnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSworICAgICAg
ICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxMCwgc3RkOjpzcGFuIHsgY29lcEVu
Y29kZXIuYnVmZmVyKCksIGNvZXBFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoMTEsIGRhdGEucmVmZXJy
ZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5i
aW5kQmxvYigxMiwgU3BhbiB7IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2Ny
aXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTMsIFNwYW4geyBjZXJ0aWZpY2F0
ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUo
KSB9KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJs
b2IoMTQsIFNwYW4geyBuYXZpZ2F0aW9uUHJlbG9hZFN0YXRlRW5jb2Rlci5idWZmZXIoKSwgbmF2
aWdhdGlvblByZWxvYWRTdGF0ZUVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxMiwgc3RkOjpzcGFuIHsg
c2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29k
ZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3Rh
dGVtZW50LT5iaW5kQmxvYigxMywgc3RkOjpzcGFuIHsgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5i
dWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRF
X09LCisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDE0LCBzdGQ6OnNw
YW4geyBuYXZpZ2F0aW9uUHJlbG9hZFN0YXRlRW5jb2Rlci5idWZmZXIoKSwgbmF2aWdhdGlvblBy
ZWxvYWRTdGF0ZUVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwogICAgICAgICAg
ICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gc3RvcmUgcmVn
aXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aAppbmRleCA3MjMzMTJjN2VkYjAuLmY3NjBiOTBlYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC02Miw3ICs2Miw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNwYW48VCwgRXh0
ZW50Pj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNwYW48VCwgRXh0ZW50PiYgc3BhbikKICAg
ICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoRXh0ZW50ID09IFdURjo6ZHluYW1pY19leHRlbnQp
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoRXh0ZW50ID09IHN0ZDo6ZHluYW1pY19leHRlbnQpCiAg
ICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzcGFuLnNpemUoKSk7
CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHNwYW4uZGF0YSgpKSwgc3Bhbi5zaXplKCkgKiBzaXplb2YoVCksIGFs
aWdub2YoVCkpOwogICAgIH0KQEAgLTcwLDcgKzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3BhbjxULCBFeHRlbnQ+PiB7CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3BhbjxULCBFeHRlbnQ+PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHNpemU7Ci0g
ICAgICAgIGlmIGNvbnN0ZXhwciAoRXh0ZW50ID09IFdURjo6ZHluYW1pY19leHRlbnQpIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChFeHRlbnQgPT0gc3RkOjpkeW5hbWljX2V4dGVudCkgewogICAg
ICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICAgICAgaWYgKCFzaXplKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJyYXlSZWZlcmVuY2UuaAppbmRleCA4M2EyN2U3NTQ3Y2YuLjE0YTE0ZGM4ODQ0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBAIC0zMSw2ICsz
MSw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IEV4dGVudCA9IFdURjo6ZHluYW1pY19leHRlbnQ+IHVzaW5nIEFycmF5UmVmZXJlbmNlID0gU3Bh
bjxjb25zdCBULCBFeHRlbnQ+OwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQg
PSBzdGQ6OmR5bmFtaWNfZXh0ZW50PiB1c2luZyBBcnJheVJlZmVyZW5jZSA9IHN0ZDo6c3Bhbjxj
b25zdCBULCBFeHRlbnQ+OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgKaW5kZXggNDkyZTA3MjA1ZGE5Li44MjZhNDA2
MDgxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVy
ZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5o
CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKIGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBzdHJpbmcpCiB7Ci0gICAgYWRkKGhhc2hlciwg
U3BhbiB7IHN0cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCkgfSk7CisgICAgYWRkKGhhc2hlciwg
c3RkOjpzcGFuIHsgc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSB9KTsKIH0KIAogaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdSZWZlcmVuY2UmIGEsIGNvbnN0IFN0cmluZ1Jl
ZmVyZW5jZSYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRi
b3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hF
eHRlbnNpb25Db2NvYS5tbQppbmRleCA1ZWFiODE2MjY2MmYuLjUzY2VmNGQwYjM4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5t
bQpAQCAtMzQxLDcgKzM0MSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpCiAKIGF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXpl
cl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhh
bmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNl
cnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2VuLCBmbGFncyk7Cisg
ICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6c3BhbiB7IHNlcnZpY2Vz
LmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2VuLCBmbGFncyk7CiB9CiAKIGF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihTdHJp
bmdWaWV3IHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikgLT4gc3RkOjpvcHRpb25hbDxI
YW5kbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFy
eVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFy
eVByb3BlcnR5TGlzdC5jcHAKaW5kZXggNzJmZmNkNjNkZTg5Li5iMzE1ZWQyNTYzMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5
TGlzdC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bnRlZ2VyQXJyYXkmIGEsIGNvbnN0IEludGVnZXJBcnJheSYgYikKIAogaW5saW5lIHZvaWQgYWRk
KEhhc2hlciYgaGFzaGVyLCBjb25zdCBJbnRlZ2VyQXJyYXkmIGFycmF5KQogewotICAgIGFkZCho
YXNoZXIsIFNwYW4geyBhcnJheS5pbnRlZ2VycygpLCBhcnJheS5zaXplKCkgfSk7CisgICAgYWRk
KGhhc2hlciwgc3RkOjpzcGFuIHsgYXJyYXkuaW50ZWdlcnMoKSwgYXJyYXkuc2l6ZSgpIH0pOwog
fQogCiBzdHJ1Y3QgSW50ZWdlckFycmF5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8SW50ZWdlckFy
cmF5PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458558</attachid>
            <date>2022-04-28 17:39:05 -0700</date>
            <delta_ts>2022-04-28 22:25:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237178-20220428173904.patch</filename>
            <type>text/plain</type>
            <size>61239</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIyLTA0LTI4ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNpdGlvbiBmcm9t
IFdURjo6U3BhbiB0byBzdGQ6OnNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERlZHVjdGlvbiBndWlkZXMgZG9uJ3Qgd29yayB3aXRoIHRlbXBsYXRl
IGFsaWFzZXMsIHNvIEkgY2hhbmdlZCB0aGUgU3BhbiBjb25zdHJ1Y3RvcnMgdGhhdAorICAgICAg
ICB1c2VkIHRoZSBkZWR1Y3Rpb24gZ3VpZGVzIHRvIHVzZSBzdGQ6OnNwYW4gZGlyZWN0bHkgdG8g
dXNlIGl0cyBkZWR1Y3Rpb24gZ3VpZGVzLgorCisgICAgICAgIGJlZ2luIGFuZCBlbmQgYWxzbyBu
byBsb25nZXIgcmV0dXJuIGEgcG9pbnRlciwgYnV0IGEgcHJvcGVyIGl0ZXJhdG9yIHRoYXQgY2Fu
J3QgYmUgdXNlZCBpbgorICAgICAgICBwb2ludGVyIGFyaXRobWV0aWMsIHNvIEkgdXNlZCAmKiB0
byB0dXJuIGl0IGludG8gYSBwb2ludGVyLgorCisgICAgICAgIERvaW5nIHRoaXMgYmVmb3JlIGFu
eSB1cGNvbWluZyBicmFuY2ggd2lsbCBtYWtlIGJyYW5jaCBtZXJnZXMgZWFzaWVyIGJlY2F1c2Ug
d2Ugd29uJ3QgaGF2ZQorICAgICAgICB0byB3b3JyeSBhYm91dCBzdGQ6OnNwYW4gdnMgV1RGOjpT
cGFuIGJlY2F1c2UgdGhleSB3aWxsIGJvdGggd29yay4KKworICAgICAgICAqIHd0Zi9TSEExLmg6
CisgICAgICAgIChXVEY6OlNIQTE6OmFkZEJ5dGVzKToKKyAgICAgICAgKiB3dGYvU3Bhbi5oOgor
ICAgICAgICAoc3RkOjppc19jb252ZXJ0aWJsZV92PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxkZWNs
dHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OkRlY29kZXIpOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpyZXdp
bmQpOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6Y3VycmVudE9mZnNldCBjb25zdCk6Cisg
ICAgICAgICogd3RmL3RleHQvQmFzZTY0LmNwcDoKKyAgICAgICAgKFdURjo6YmFzZTY0RW5jb2Rl
SW50ZXJuYWwpOgorICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGUpOgorICAgICAgICAqIHd0Zi90
ZXh0L0Jhc2U2NC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdUeXBlQWRhcHRlcjxCYXNlNjRTcGVj
aWZpY2F0aW9uPjo6d3JpdGVUbyBjb25zdCk6CisKIDIwMjItMDQtMjggIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoRE9NIEdQVVAp
OiBSaWNoIEhUTUwgZW1haWxzIG9uIHdhdGNoT1Mgbm8gbG9uZ2VyIHNob3cgdXAKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1NIQTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TSEExLmgJ
KHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJjZS9XVEYvd3RmL1NIQTEuaAkod29ya2luZyBjb3B5
KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVp
bnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgYWRkQnl0ZXMoU3Bh
biB7IGlucHV0LCBsZW5ndGggfSk7CisgICAgICAgIGFkZEJ5dGVzKHN0ZDo6c3BhbiB7IGlucHV0
LCBsZW5ndGggfSk7CiAgICAgfQogCiAgICAgLy8gU2l6ZSBvZiB0aGUgU0hBMSBoYXNoCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9TcGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3Bh
bi5oCShyZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9TcGFuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDIwICsxMCwxMCBAQAogI2lmbmRlZiBfV1RGX0xJQkNQUF9TUEFOCiAjZGVm
aW5lIF9XVEZfTElCQ1BQX1NQQU4KIAotLy8gSW1wb3J0cyBhIGNvcHkgb2YgPHNwYW4+IGZyb20g
ZTg5MjcwNWQ3NGM3MzY2YTE0MDRhM2IzNDcxMDAxZWRhYTc2NTlmOCBvZiB0aGUKLS8vIGxpYmMr
KyBwcm9qZWN0IChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0KSBhbmQg
bW9kaWZpZXMgaXQgdG8KLS8vIHdvcmsgb24gdG9wIG9mIGFueSBzdGFuZGFyZCBsaWJyYXJ5IGlt
cGxlbWVudGF0aW9uLgotLy8KLS8vIC0gUmVuYW1lcyBtYWNyb3Mgd2l0aCBfTElCQ1BQXyBwcmVm
aXggdG8gdXNlIHRoZSBwcmVmaXggX1dURl9MSUJDUFBfCi0vLyAtIFJlbmFtZXMgc3RkOjpzcGFu
IHRvIFdURjo6U3BhbgotLy8gLSBSZW5hbWVzIHN0ZDo6YXNfYnl0ZXMvc3RkOjphc193cml0YWJs
ZV9ieXRlcyB0byBXVEY6OmFzQnl0ZXMvV1RGOjphc1dyaXRhYmxlQnl0ZXMuCi0vLyAtIFN0b3Ag
I2luY2x1ZGluZyBpbnRlcm5hbCBsaWJjKysgaGVhZGVycy4KLS8vIC0gUmVtb3ZlIGNoZWNrIGZv
ciA+IGMrKzE3LgotLy8gLSBSZW1vdmUgcHVzaC9wb3AgYXZhaWxhYmlsaXR5IG9mIG1pbi9tYXgg
bWFjcm9zLgotCiAjaW5jbHVkZSA8YXJyYXk+ICAgICAgICAvLyBmb3IgYXJyYXkKICNpbmNsdWRl
IDxjc3RkZGVmPiAgICAgIC8vIGZvciBieXRlCiAjaW5jbHVkZSA8aXRlcmF0b3I+ICAgICAvLyBm
b3IgaXRlcmF0b3JzCisjaW5jbHVkZSA8c3Bhbj4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4gIC8v
IGZvciByZW1vdmVfY3YsIGV0YwogCiAvLyBBZGRzIHNvbWUgbWFjcm8gZGVmaW5lcyB1c3VhbGx5
IGRlZmluZWQgaW4gX19jb25maWcuCkBAIC0zNyw0MTggKzI3LDI0IEBACiAjZGVmaW5lIF9XVEZf
TElCQ1BQX1RFTVBMQVRFX1ZJUwogI2RlZmluZSBfV1RGX1ZTVEQgc3RkCiAKLSNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2RlZmluZSBfV1RGX0xJQkNQUF9BU1NFUlQgQVNTRVJUCi0KIF9X
VEZfTElCQ1BQX0JFR0lOX05BTUVTUEFDRQogCi1pbmxpbmUgY29uc3RleHByIHN0ZDo6c2l6ZV90
IGR5bmFtaWNfZXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCgp
OwotdGVtcGxhdGUgPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudCA9IGR5bmFtaWNf
ZXh0ZW50PiBjbGFzcyBTcGFuOwotCi0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19p
c19zcGFuX2ltcGwgOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50Pgotc3RydWN0IF9faXNfc3Bhbl9pbXBsPFNwYW48
X1RwLCBfRXh0ZW50Pj4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxj
bGFzcyBfVHA+Ci1zdHJ1Y3QgX19pc19zcGFuIDogcHVibGljIF9faXNfc3Bhbl9pbXBsPHN0ZDo6
cmVtb3ZlX2N2X3Q8X1RwPj4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19p
c19zdGRfYXJyYXlfaW1wbCA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRl
IDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KLXN0cnVjdCBfX2lzX3N0ZF9hcnJheV9pbXBs
PHN0ZDo6YXJyYXk8X1RwLCBfU3o+PiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7fTsKLQotdGVt
cGxhdGUgPGNsYXNzIF9UcD4KLXN0cnVjdCBfX2lzX3N0ZF9hcnJheSA6IHB1YmxpYyBfX2lzX3N0
ZF9hcnJheV9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4ge307Ci0KLXRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZSwgY2xhc3MgPSB2b2lkPgotc3RydWN0IF9faXNfc3Bh
bl9jb21wYXRpYmxlX2NvbnRhaW5lciA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZT4KLXN0cnVjdCBfX2lzX3NwYW5f
Y29tcGF0aWJsZV9jb250YWluZXI8X1RwLCBfRWxlbWVudFR5cGUsCi0gICAgICAgIHN0ZDo6dm9p
ZF90PAotICAgICAgICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBTcGFuCi0gICAgICAg
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhX19pc19zcGFuPF9UcD46OnZhbHVlLCBzdGQ6
Om51bGxwdHJfdD46OnR5cGUsCi0gICAgICAgIC8vIGlzIG5vdCBhIHNwZWNpYWxpemF0aW9uIG9m
IGFycmF5Ci0gICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhX19pc19zdGRfYXJy
YXk8X1RwPjo6dmFsdWUsIHN0ZDo6bnVsbHB0cl90Pjo6dHlwZSwKLSAgICAgICAgLy8gc2Q6Omlz
X2FycmF5X3Y8Q29udGFpbmVyPiBpcyBmYWxzZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX2FycmF5X3Y8X1RwPiwgc3RkOjpudWxscHRyX3Q+Ojp0eXBlLAot
ICAgICAgICAvLyBzdGQ6OmRhdGEoY29udCkgYW5kIHN0ZDo6c2l6ZShjb250KSBhcmUgd2VsbCBm
b3JtZWQKLSAgICAgICAgICAgIGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6OmRlY2x2YWw8X1RwPigp
KSksCi0gICAgICAgICAgICBkZWNsdHlwZShzdGQ6OnNpemUoc3RkOjpkZWNsdmFsPF9UcD4oKSkp
LAotICAgICAgICAvLyByZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRhdGEoY29udCkpPigqKVtd
IGlzIGNvbnZlcnRpYmxlIHRvIEVsZW1lbnRUeXBlKCopW10KLSAgICAgICAgICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxz
dGQ6OnJlbW92ZV9wb2ludGVyX3Q8ZGVjbHR5cGUoc3RkOjpkYXRhKHN0ZDo6ZGVjbHZhbDxfVHAg
Jj4oKSkpPigqKVtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0VsZW1lbnRU
eXBlKCopW10+LAotICAgICAgICAgICAgICAgIHN0ZDo6bnVsbHB0cl90Pjo6dHlwZQotICAgICAg
ICA+PgotICAgIDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHt9OwotCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+Ci1jbGFzcyBfV1RGX0xJQkNQUF9URU1QTEFU
RV9WSVMgU3BhbiB7Ci1wdWJsaWM6Ci0vLyAgY29uc3RhbnRzIGFuZCB0eXBlcwotICAgIHVzaW5n
IGVsZW1lbnRfdHlwZSAgICAgICAgICAgPSBfVHA7Ci0gICAgdXNpbmcgdmFsdWVfdHlwZSAgICAg
ICAgICAgICA9IHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPjsKLSAgICB1c2luZyBzaXplX3R5cGUgICAg
ICAgICAgICAgID0gc3RkOjpzaXplX3Q7Ci0gICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgICAg
ICA9IHN0ZDo6cHRyZGlmZl90OwotICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgICAgICAgPSBf
VHAgKjsKLSAgICB1c2luZyBjb25zdF9wb2ludGVyICAgICAgICAgID0gY29uc3QgX1RwICo7Ci0g
ICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgICAgICA9IF9UcCAmOwotICAgIHVzaW5nIGNvbnN0
X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfVHAgJjsKLSNpZiAoX1dURl9MSUJDUFBfREVCVUdf
TEVWRUwgPT0gMikgfHwgZGVmaW5lZChfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lOVEVSX0lURVJB
VE9SUykKLSAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gcG9pbnRlcjsKLSNlbHNl
Ci0gICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IF9fd3JhcF9pdGVyPHBvaW50ZXI+
OwotI2VuZGlmCi0gICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciAgICAgICA9IF9XVEZfVlNURDo6
cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dHlwZSBleHRlbnQgPSBfRXh0ZW50OwotCi0vLyBbc3Bhbi5jb25zXSwgc3BhbiBjb25zdHJ1Y3Rv
cnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCi0gICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IF9TeiA9IF9FeHRlbnQsIHN0ZDo6ZW5hYmxlX2lmX3Q8X1N6ID09IDAsIHN0ZDo6bnVs
bHB0cl90PiA9IG51bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIFNwYW4oKSBub2V4Y2VwdCA6IF9fZGF0YXtudWxscHRyfSB7fQotCi0gICAgY29uc3Rl
eHByIFNwYW4gICAgICAgICAgIChjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwotICAg
IGNvbnN0ZXhwciBTcGFuJiBvcGVyYXRvcj0oY29uc3QgU3BhbiYpIG5vZXhjZXB0ID0gZGVmYXVs
dDsKLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBleHBsaWNp
dCBTcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0YXtfX3B0cn0K
LSAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBf
X2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKHB0ciwgbGVuKSIp
OyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGV4cGxpY2l0
IFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9Ci0gICAgICAgIHsg
KHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gc3RkOjpkaXN0YW5j
ZShfX2YsIF9fbCksICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3RvciAocHRyLCBw
dHIpIik7IH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBT
cGFuKGVsZW1lbnRfdHlwZSAoJl9fYXJyKVtfRXh0ZW50XSkgICAgICAgICAgbm9leGNlcHQgOiBf
X2RhdGF7X19hcnJ9IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUs
Ci0gICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PF9P
dGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIHN0ZDo6bnVsbHB0cl90
PiA9IG51bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25z
dGV4cHIgU3BhbihzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIp
IG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0ge30KLQotICAgIHRlbXBsYXRlIDxjbGFz
cyBfT3RoZXJFbGVtZW50VHlwZSwKLSAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90
eXBlICgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cj4KLSAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8X090
aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX2Fycikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIu
ZGF0YSgpfSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Ci0gICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4o
ICAgICAgX0NvbnRhaW5lciYgX19jLAotICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lz
X3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIHN0ZDo6
bnVsbHB0cl90PiA9IG51bGxwdHIpCi0gICAgICAgIDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShf
X2MpfSB7Ci0gICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZT
VEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChyYW5n
ZSkiKTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Ci0gICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0
IFNwYW4oY29uc3QgX0NvbnRhaW5lciYgX19jLAotICAgICAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8Y29uc3QgX0NvbnRhaW5lciwgX1RwPjo6
dmFsdWUsIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCi0gICAgICAgIDogX19kYXRhe19XVEZf
VlNURDo6ZGF0YShfX2MpfSB7Ci0gICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVu
dCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0
cnVjdG9yIChyYW5nZSkiKTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhl
ckVsZW1lbnRUeXBlPgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAg
IGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBf
X290aGVyLAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5
cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0cikKLSAgICAgICAgOiBfX2RhdGF7X19vdGhlci5kYXRh
KCl9IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGU+Ci0gICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNw
YW4oY29uc3QgU3BhbjxfT3RoZXJFbGVtZW50VHlwZT4mIF9fb3RoZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUg
KCopW10+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bGxwdHJfdD4gPSBudWxs
cHRyKSBub2V4Y2VwdAotICAgICAgICA6IF9fZGF0YXtfX290aGVyLmRhdGEoKX0geyBfV1RGX0xJ
QkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfX290aGVyLnNpemUoKSwgInNpemUgbWlzbWF0Y2ggaW4g
U3BhbidzIGNvbnN0cnVjdG9yIChvdGhlciBTcGFuKSIpOyB9Ci0KLQotLy8gIH5TcGFuKCkgbm9l
eGNlcHQgPSBkZWZhdWx0OwotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Db3VudD4KLSAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1l
bnRfdHlwZSwgX0NvdW50PiBmaXJzdCgpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBz
dGF0aWNfYXNzZXJ0KF9Db3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNw
YW46OmZpcnN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+
e2RhdGEoKSwgX0NvdW50fTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0Nv
dW50PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgY29uc3RleHByIFNw
YW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGxhc3QoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNvdW50IG91dCBvZiByYW5n
ZSBpbiBTcGFuOjpsYXN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBf
Q291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKLSAgICB9Ci0KLSAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRf
dHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4
Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgp
LCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIpOwotICAgICAgICBy
ZXR1cm4ge2RhdGEoKSwgX19jb3VudH07Ci0gICAgfQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0
ZW50PiBsYXN0KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJh
bmdlIGluIFNwYW46Omxhc3QoY291bnQpIik7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgc2l6
ZSgpIC0gX19jb3VudCwgX19jb3VudH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6
ZV90IF9PZmZzZXQsIHN0ZDo6c2l6ZV90IF9Db3VudCA9IGR5bmFtaWNfZXh0ZW50PgotICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgY29uc3RleHByIGF1dG8gc3Vic3Bhbigp
IGNvbnN0IG5vZXhjZXB0Ci0gICAgICAgIC0+IFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0g
ZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD4KLSAgICB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoX09mZnNldCA8PSBfRXh0ZW50LCAiT2Zmc2V0IG91dCBvZiByYW5n
ZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPT0g
ZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IF9FeHRlbnQgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsg
Y291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOwotCi0gICAgICAgIHVzaW5n
IF9SZXR1cm5UeXBlID0gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudCAhPSBkeW5hbWljX2V4dGVu
dCA/IF9Db3VudCA6IF9FeHRlbnQgLSBfT2Zmc2V0PjsKLSAgICAgICAgcmV0dXJuIF9SZXR1cm5U
eXBle2RhdGEoKSArIF9PZmZzZXQsIF9Db3VudCA9PSBkeW5hbWljX2V4dGVudCA/IHNpemUoKSAt
IF9PZmZzZXQgOiBfQ291bnR9OwotICAgIH0KLQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50
PgotICAgICAgIHN1YnNwYW4oc2l6ZV90eXBlIF9fb2Zmc2V0LCBzaXplX3R5cGUgX19jb3VudCA9
IGR5bmFtaWNfZXh0ZW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9fb2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bh
bjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQo
X19jb3VudCAgPD0gc2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1pY19leHRlbnQsICJDb3VudCBv
dXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAgICAgICBp
ZiAoX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCkKLSAgICAgICAgICAgIHJldHVybiB7ZGF0YSgp
ICsgX19vZmZzZXQsIHNpemUoKSAtIF9fb2Zmc2V0fTsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNT
RVJUKF9fY291bnQgPD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2Yg
cmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOwotICAgICAgICByZXR1cm4g
e2RhdGEoKSArIF9fb2Zmc2V0LCBfX2NvdW50fTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAgICAgICBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50OyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gX0V4dGVudCAqIHNpemVvZihlbGVtZW50X3R5cGUpOyB9Ci0gICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGJvb2wgZW1wdHkoKSAgICAgICAgICAgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCA9PSAwOyB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9f
aWR4KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9f
aWR4IDwgc2l6ZSgpLCAiU3BhbjxULE4+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAg
ICByZXR1cm4gX19kYXRhW19faWR4XTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQKLSAg
ICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VCwgTj46OmZy
b250KCkgb24gZW1wdHkgU3BhbiIpOwotICAgICAgICByZXR1cm4gX19kYXRhWzBdOwotICAgIH0K
LQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2Ug
YmFjaygpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQo
IWVtcHR5KCksICJTcGFuPFQsIE4+OjpiYWNrKCkgb24gZW1wdHkgU3BhbiIpOwotICAgICAgICBy
ZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kYXRhOyB9Ci0KLS8vIFtzcGFuLml0ZXJdLCBT
cGFuIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgICBlbmQoKSBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkgKyBzaXplKCkpOyB9Ci0gICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAgICAg
IHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkp
OyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2Vf
aXRlcmF0b3IgICAgICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2Vf
aXRlcmF0b3IoYmVnaW4oKSk7IH0KLQotcHJpdmF0ZToKLSAgICBwb2ludGVyICAgIF9fZGF0YTsK
LQotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwPgotY2xhc3MgX1dURl9MSUJDUFBfVEVN
UExBVEVfVklTIFNwYW48X1RwLCBkeW5hbWljX2V4dGVudD4gewotcHJpdmF0ZToKLQotcHVibGlj
OgotLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKLSAgICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAg
ICAgID0gX1RwOwotICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92
ZV9jdl90PF9UcD47Ci0gICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgICAgICA9IHN0ZDo6c2l6
ZV90OwotICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgICAgICAgPSBzdGQ6OnB0cmRpZmZfdDsK
LSAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgICAgID0gX1RwICo7Ci0gICAgdXNpbmcgY29u
c3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9UcCAqOwotICAgIHVzaW5nIHJlZmVyZW5jZSAg
ICAgICAgICAgICAgPSBfVHAgJjsKLSAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0g
Y29uc3QgX1RwICY7Ci0jaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmlu
ZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMpCi0gICAgdXNpbmcgaXRl
cmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7Ci0jZWxzZQotICAgIHVzaW5nIGl0ZXJhdG9y
ICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsKLSNlbmRpZgotICAgIHVzaW5n
IHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRl
cmF0b3I+OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gZHluYW1p
Y19leHRlbnQ7Ci0KLS8vIFtzcGFuLmNvbnNdLCBTcGFuIGNvbnN0cnVjdG9ycywgY29weSwgYXNz
aWdubWVudCwgYW5kIGRlc3RydWN0b3IKLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WSBjb25zdGV4cHIgU3BhbigpIG5vZXhjZXB0IDogX19kYXRhe251bGxwdHJ9LCBfX3NpemV7MH0g
e30KLQotICAgIGNvbnN0ZXhwciBTcGFuICAgICAgICAgICAoY29uc3QgU3BhbiYpIG5vZXhjZXB0
ID0gZGVmYXVsdDsKLSAgICBjb25zdGV4cHIgU3BhbiYgb3BlcmF0b3I9KGNvbnN0IFNwYW4mKSBu
b2V4Y2VwdCA9IGRlZmF1bHQ7Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgU3Bhbihwb2ludGVyIF9fcHRyLCBzaXplX3R5cGUgX19jb3VudCkgOiBfX2RhdGF7
X19wdHJ9LCBfX3NpemV7X19jb3VudH0ge30KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgU3Bhbihwb2ludGVyIF9fZiwgcG9pbnRlciBfX2wpIDogX19kYXRhe19f
Zn0sIF9fc2l6ZXtzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oc3RkOjpkaXN0YW5jZShfX2YsIF9f
bCkpfSB7fQotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Tej4KLSAgICBfV1RGX0xJQkNQ
UF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0ZXhwciBTcGFuKGVsZW1lbnRfdHlwZSAoJl9f
YXJyKVtfU3pdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0sIF9fc2l6ZXtfU3p9
IHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90
IF9TeiwKLSAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgc3RkOjpudWxs
cHRyX3Q+ID0gbnVsbHB0cj4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAg
IGNvbnN0ZXhwciBTcGFuKHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9Tej4mIF9fYXJy
KSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6fSB7fQotCi0gICAg
dGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBfU3osCi0gICAg
ICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PGNvbnN0IF9P
dGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIHN0ZDo6bnVsbHB0cl90
PiA9IG51bGxwdHI+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25z
dGV4cHIgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfU3o+JiBfX2Fy
cikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIuZGF0YSgpfSwgX19zaXple19Ten0ge30KLQotICAg
IHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCi0gICAgICAgIGNvbnN0ZXhwciBTcGFuKCAgICAgIF9Db250YWluZXImIF9fYywKLSAg
ICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVy
PF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQotICAg
ICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBf
V1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVy
PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAgIGNvbnN0ZXhwciBT
cGFuKGNvbnN0IF9Db250YWluZXImIF9fYywKLSAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8
X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPGNvbnN0IF9Db250YWluZXIsIF9UcD46OnZh
bHVlLCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQotICAgICAgICA6IF9fZGF0YXtfV1RGX1ZT
VEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0g
e30KLQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVf
dCBfT3RoZXJFeHRlbnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAg
ICAgY29uc3RleHByIFNwYW4oY29uc3QgU3BhbjxfT3RoZXJFbGVtZW50VHlwZSwgX090aGVyRXh0
ZW50PiYgX19vdGhlciwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVs
ZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpIG5vZXhjZXB0Ci0gICAgICAgIDogX19k
YXRhe19fb3RoZXIuZGF0YSgpfSwgX19zaXple19fb3RoZXIuc2l6ZSgpfSB7fQotCi0vLyAgICB+
U3BhbigpIG5vZXhjZXB0ID0gZGVmYXVsdDsKLQotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBf
Q291bnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIg
U3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gZmlyc3QoKSBjb25zdCBub2V4Y2VwdAotICAgIHsK
LSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA8PSBzaXplKCksICJDb3VudCBvdXQg
b2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIpOwotICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50
X3R5cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291bnR9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxz
dGQ6OnNpemVfdCBfQ291bnQ+Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gbGFzdCgpIGNvbnN0IG5vZXhj
ZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50IDw9IHNpemUoKSwg
IkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KCkiKTsKLSAgICAgICAgcmV0dXJuIFNw
YW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50
fTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0
ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBf
X2NvdW50KSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJU
KF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNv
dW50KSIpOwotICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07Ci0gICAgfQotCi0gICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50
X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBsYXN0IChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9l
eGNlcHQKLSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUo
KSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KGNvdW50KSIpOwotICAgICAgICBy
ZXR1cm4ge2RhdGEoKSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9OwotICAgIH0KLQotICAg
IHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfT2Zmc2V0LCBzdGQ6OnNpemVfdCBfQ291bnQgPSBkeW5h
bWljX2V4dGVudD4KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGNvbnN0
ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBzdWJzcGFuKCkgY29uc3Qgbm9leGNlcHQK
LSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfT2Zmc2V0IDw9IHNpemUoKSwgIk9m
ZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbigpIik7Ci0gICAgICAgIF9XVEZfTElC
Q1BQX0FTU0VSVChfQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IHNpemUoKSAt
IF9PZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3Bhbigp
Iik7Ci0gICAgICAgIHJldHVybiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCkgKyBf
T2Zmc2V0LCBfQ291bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBfT2Zmc2V0IDogX0Nv
dW50fTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNf
ZXh0ZW50PgotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgc3Vic3Bhbihz
aXplX3R5cGUgX19vZmZzZXQsIHNpemVfdHlwZSBfX2NvdW50ID0gZHluYW1pY19leHRlbnQpIGNv
bnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19vZmZzZXQg
PD0gc2l6ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwg
Y291bnQpIik7Ci0gICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50ICA8PSBzaXplKCkg
fHwgX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCwgImNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFu
OjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7Ci0gICAgICAgIGlmIChfX2NvdW50ID09IGR5bmFt
aWNfZXh0ZW50KQotICAgICAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBfX29mZnNldCwgc2l6ZSgp
IC0gX19vZmZzZXR9OwotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXpl
KCkgLSBfX29mZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJz
cGFuKG9mZnNldCwgY291bnQpIik7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQs
IF9fY291bnR9OwotICAgIH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNv
bnN0ZXhwciBzaXplX3R5cGUgc2l6ZSgpICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9f
c2l6ZTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzaXpl
X3R5cGUgc2l6ZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fc2l6ZSAqIHNpemVv
ZihlbGVtZW50X3R5cGUpOyB9Ci0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIGJvb2wgZW1wdHkoKSAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19z
aXplID09IDA7IH0KLQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgX19pZHgpIGNvbnN0IG5vZXhjZXB0Ci0g
ICAgewotICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19pZHggPCBzaXplKCksICJTcGFuPFQ+
W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICByZXR1cm4gX19kYXRhW19faWR4XTsK
LSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVm
ZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAgIF9XVEZfTElCQ1BQ
X0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VD5bXS5mcm9udCgpIG9uIGVtcHR5IFNwYW4iKTsKLSAg
ICAgICAgcmV0dXJuIF9fZGF0YVswXTsKLSAgICB9Ci0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGJhY2soKSBjb25zdCBub2V4Y2VwdAotICAg
IHsKLSAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgpLCAiU3BhbjxUPltdLmJhY2so
KSBvbiBlbXB0eSBTcGFuIik7Ci0gICAgICAgIHJldHVybiBfX2RhdGFbc2l6ZSgpLTFdOwotICAg
IH0KLQotCi0gICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHBvaW50
ZXIgZGF0YSgpICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IF9fZGF0YTsgfQotCi0vLyBbc3Bhbi5pdGVyXSwgU3BhbiBpdGVyYXRvciBzdXBwb3J0Ci0gICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9yICAgICAgICAg
ICAgICAgICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSk7
IH0KLSAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgaXRlcmF0b3Ig
ICAgICAgICAgICAgICAgICAgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gaXRlcmF0b3Io
ZGF0YSgpICsgc2l6ZSgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNv
bnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAgICByYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQotICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAgICAgIHJlbmQoKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgcG9pbnRlciAgIF9fZGF0YTsKLSAgICBzaXplX3R5cGUgX19zaXplOwotfTsK
LQotI2lmICFkZWZpbmVkKF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMpCi10ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgotaW5saW5lIGNvbnN0ZXhwciBib29sIHN0ZDo6
cmFuZ2VzOjplbmFibGVfYm9ycm93ZWRfcmFuZ2U8U3BhbjxfVHAsIF9FeHRlbnQ+ID4gPSB0cnVl
OwotI2VuZGlmIC8vICFkZWZpbmVkKF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMpCit0ZW1wbGF0
ZTxjbGFzcyBDLCBzdGQ6OnNpemVfdCBFID0gc3RkOjpkeW5hbWljX2V4dGVudD4KK3VzaW5nIFNw
YW4gPSBzdGQ6OnNwYW48QywgRT47CiAKIC8vICBhc0J5dGVzICYgYXNXcml0YWJsZUJ5dGVzCiB0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgogX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKIGF1dG8gYXNCeXRlcyhTcGFuPF9UcCwgX0V4dGVudD4gX19zKSBub2V4
Y2VwdAotLT4gU3Bhbjxjb25zdCBzdGQ6OmJ5dGUsIF9FeHRlbnQgPT0gZHluYW1pY19leHRlbnQg
PyBkeW5hbWljX2V4dGVudCA6IF9FeHRlbnQgKiBzaXplb2YoX1RwKT4KKy0+IFNwYW48Y29uc3Qg
c3RkOjpieXRlLCBfRXh0ZW50ID09IHN0ZDo6ZHluYW1pY19leHRlbnQgPyBzdGQ6OmR5bmFtaWNf
ZXh0ZW50IDogX0V4dGVudCAqIHNpemVvZihfVHApPgogeyByZXR1cm4geyByZWludGVycHJldF9j
YXN0PGNvbnN0IHN0ZDo6Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNpemVfYnl0ZXMoKSB9OyB9
CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+CiBfV1RGX0xJQkNQ
UF9JTkxJTkVfVklTSUJJTElUWQogYXV0byBhc1dyaXRhYmxlQnl0ZXMoU3BhbjxfVHAsIF9FeHRl
bnQ+IF9fcykgbm9leGNlcHQKLS0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfY29uc3Rfdjxf
VHA+LCBTcGFuPHN0ZDo6Ynl0ZSwgX0V4dGVudCA9PSBkeW5hbWljX2V4dGVudCA/IGR5bmFtaWNf
ZXh0ZW50IDogX0V4dGVudCAqIHNpemVvZihfVHApPj4KKy0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfY29uc3RfdjxfVHA+LCBTcGFuPHN0ZDo6Ynl0ZSwgX0V4dGVudCA9PSBzdGQ6OmR5bmFt
aWNfZXh0ZW50ID8gc3RkOjpkeW5hbWljX2V4dGVudCA6IF9FeHRlbnQgKiBzaXplb2YoX1RwKT4+
CiB7IHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpieXRlICo+KF9fcy5kYXRhKCkpLCBf
X3Muc2l6ZV9ieXRlcygpIH07IH0KIAotLy8gIERlZHVjdGlvbiBndWlkZXMKLXRlbXBsYXRlPGNs
YXNzIF9UcCwgc3RkOjpzaXplX3QgX1N6PgotICAgIFNwYW4oX1RwICgmKVtfU3pdKSAtPiBTcGFu
PF9UcCwgX1N6PjsKLQotdGVtcGxhdGU8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+Ci0gICAg
U3BhbihzdGQ6OmFycmF5PF9UcCwgX1N6PiYpIC0+IFNwYW48X1RwLCBfU3o+OwotCi10ZW1wbGF0
ZTxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KLSAgICBTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8
X1RwLCBfU3o+JikgLT4gU3Bhbjxjb25zdCBfVHAsIF9Tej47Ci0KLXRlbXBsYXRlPGNsYXNzIF9D
b250YWluZXI+Ci0gICAgU3BhbihfQ29udGFpbmVyJikgLT4gU3Bhbjx0eXBlbmFtZSBfQ29udGFp
bmVyOjp2YWx1ZV90eXBlPjsKLQotdGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KLSAgICBTcGFu
KGNvbnN0IF9Db250YWluZXImKSAtPiBTcGFuPGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZh
bHVlX3R5cGU+OwotCiBfV1RGX0xJQkNQUF9FTkRfTkFNRVNQQUNFCiAKIHVzaW5nIFdURjo6U3Bh
bjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVj
b2Rlci5jcHAJKHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCiBEZWNvZGVyOjpEZWNvZGVyKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikKICAgICA6IG1fYnVmZmVyKHNwYW4pCi0gICAgLCBtX2J1ZmZlclBvc2l0aW9u
KHNwYW4uYmVnaW4oKSkKKyAgICAsIG1fYnVmZmVyUG9zaXRpb24oJipzcGFuLmJlZ2luKCkpCiB7
CiB9CiAKQEAgLTQzLDcgKzQzLDcgQEAgRGVjb2Rlcjo6fkRlY29kZXIoKQogCiBib29sIERlY29k
ZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlci5lbmQoKSAtIG1f
YnVmZmVyUG9zaXRpb24pOworICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4o
JiptX2J1ZmZlci5lbmQoKSAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCiBjb25zdCB1aW50OF90
KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplX3Qgc2l6ZSkKQEAgLTY5
LDcgKzY5LDcgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEoU3BhbgogCiBi
b29sIERlY29kZXI6OnJld2luZChzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA8PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyUG9zaXRpb24gLSBtX2J1ZmZlci5iZWdpbigpKSkgewor
ICAgIGlmIChzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9idWZmZXJQb3NpdGlvbiAtICYq
bV9idWZmZXIuYmVnaW4oKSkpIHsKICAgICAgICAgbV9idWZmZXJQb3NpdGlvbiAtPSBzaXplOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgJKHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RGVjb2Rl
cigpOwogCiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUo
KTsgfQotICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJQ
b3NpdGlvbiAtIG1fYnVmZmVyLmJlZ2luKCk7IH0KKyAgICBzaXplX3QgY3VycmVudE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyUG9zaXRpb24gLSAmKm1fYnVmZmVyLmJlZ2luKCk7IH0K
ICAgICAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgcmV3
aW5kKHNpemVfdCk7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAJKHJldmlzaW9uIDI5MzU5
NykKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyLDcgKzE0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyAK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgYmFzZTY0RW5j
b2RlSW50ZXJuYWwoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBTcGFuPENoYXJhY3RlclR5
cGU+IGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFz
ZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChTcGFuIHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgp
IH0sIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgcG9saWN5LCBtYXApOworICAgIGJhc2U2NEVuY29k
ZUludGVybmFsKHN0ZDo6c3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlu
cHV0LmRhdGEoKSksIGlucHV0LnNpemUoKSB9LCBkZXN0aW5hdGlvbkRhdGFCdWZmZXIsIHBvbGlj
eSwgbWFwKTsKIH0KIAogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVJbnRlcm5h
bChTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ks
IEJhc2U2NEVuY29kZU1hcCBtYXApCkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBiYXNlNjRFbmNvZGVJbnRlcgogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uVmVjdG9yKGRlc3RpbmF0aW9uTGVuZ3RoKTsKLSAgICBi
YXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgU3BhbiB7IGRlc3RpbmF0aW9uVmVjdG9yIH0sIHBv
bGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgc3RkOjpzcGFuIHsg
ZGVzdGluYXRpb25WZWN0b3IgfSwgcG9saWN5LCBtYXApOwogICAgIHJldHVybiBkZXN0aW5hdGlv
blZlY3RvcjsKIH0KIApAQCAtMjYzLDE1ICsyNjMsMTUgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NERlYwogewogICAgIGlmIChpbnB1dC5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKFNwYW4geyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCkgfSwgb3B0aW9ucywg
bWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoc3RkOjpzcGFuIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpIH0s
IG9wdGlvbnMsIG1hcCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjREZWNvZGUoU3RyaW5nVmlldyBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+
IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgaW5wdXQuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgaW5wdXQuY2hhcmFjdGVyczgo
KSwgbGVuZ3RoIH0sIG9wdGlvbnMsIG1hcCk7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVy
bmFsKFNwYW4geyBpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoIH0sIG9wdGlvbnMsIG1hcCk7
CisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChzdGQ6OnNwYW4geyBpbnB1dC5j
aGFyYWN0ZXJzOCgpLCBsZW5ndGggfSwgb3B0aW9ucywgbWFwKTsKKyAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwoc3RkOjpzcGFuIHsgaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCB9
LCBvcHRpb25zLCBtYXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvQmFzZTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9C
YXNlNjQuaAkocmV2aXNpb24gMjkzNTk3KQorKysgU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBk
ZXN0aW5hdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIGJhc2U2NEVuY29kZShtX2Jhc2U2NC5p
bnB1dCwgU3BhbiB7IGRlc3RpbmF0aW9uLCBtX2VuY29kZWRMZW5ndGggfSwgbV9iYXNlNjQucG9s
aWN5LCBtX2Jhc2U2NC5tYXApOworICAgICAgICBiYXNlNjRFbmNvZGUobV9iYXNlNjQuaW5wdXQs
IHN0ZDo6c3BhbiB7IGRlc3RpbmF0aW9uLCBtX2VuY29kZWRMZW5ndGggfSwgbV9iYXNlNjQucG9s
aWN5LCBtX2Jhc2U2NC5tYXApOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI5MzU5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDU2IEBACisyMDIyLTA0LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gdHJhbnNpdGlvbiBmcm9tIFdURjo6
U3BhbiB0byBzdGQ6OnNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0
SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpi
aW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFU0dDTVBheWxvYWQpOgorICAgICAgICAqIE1vZHVs
ZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ00pOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVucXVldWUpOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVlOjplbnF1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdl
cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNQYXRoOjpyb3VuZFJlY3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29sb3JTYW1wbGVyOjpzYW1wbGVUb3ApOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNo
U2VnbWVudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKwog
MjAyMi0wNC0yOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gUGlwZXdpcmUgZGlzcGxheSBjYXB0dXJlIGJyb2tlbgpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCShyZXZpc2lv
biAyOTM1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpkaWRSZWNlaQogICAgIEFTU0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UgfHwgbV9jb25zdW1lRGF0YUNhbGxiYWNrKTsKIAogICAgIGlmIChtX2NvbnN1
bWVEYXRhQ2FsbGJhY2spIHsKLSAgICAgICAgU3BhbiBjaHVuayB7IGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkgfTsKKyAgICAgICAgc3RkOjpzcGFuIGNodW5rIHsgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVECiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgU3BhbiBjaHVu
ayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgc3RkOjpz
cGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAg
ICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OTYsNyArNjk2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmFkZEV4aXN0aW5nSQogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgaW5mby5pZGVu
dGlmaWVyKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCBp
bmZvLm5hbWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgz
LCBpbmZvLm9iamVjdFN0b3JlSWRlbnRpZmllcigpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IHNxbC0+YmluZEJsb2IoNCwgKmtleVBhdGhCbG9iKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHNxbC0+YmluZEJsb2IoNCwgc3RkOjpzcGFuIHsga2V5UGF0aEJsb2ItPmRhdGEoKSwg
a2V5UGF0aEJsb2ItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+
YmluZEludCg1LCBpbmZvLnVuaXF1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNx
bC0+YmluZEludCg2LCBpbmZvLm11bHRpRW50cnkoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewpAQCAtMTE3MCw3ICsxMTcwLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYgogICAgICAgICBpZiAoIXNx
bAogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgaW5mby5pZGVudGlmaWVyKCkpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCBpbmZvLm5hbWUoKSkg
IT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsICprZXlQYXRoQmxv
YikgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIHN0ZDo6c3Bh
biB7IGtleVBhdGhCbG9iLT5kYXRhKCksIGtleVBhdGhCbG9iLT5zaXplKCkgfSkgIT0gU1FMSVRF
X09LCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQoNCwgaW5mby5hdXRvSW5jcmVtZW50KCkp
ICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGFkZCBvYmplY3Qgc3RvcmUgJyVz
JyB0byBPYmplY3RTdG9yZUluZm8gdGFibGUgKCVpKSAtICVzIiwgaW5mby5uYW1lKCkudXRmOCgp
LmRhdGEoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1z
ZygpKTsKQEAgLTEzODQsNyArMTM4NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlSW4KICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIGluZm8uaWRlbnRp
ZmllcigpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMiwgaW5m
by5uYW1lKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMywg
aW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBzcWwtPmJpbmRCbG9iKDQsICprZXlQYXRoQmxvYikgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDQsIHN0ZDo6c3BhbiB7IGtleVBhdGhCbG9iLT5kYXRhKCksIGtl
eVBhdGhCbG9iLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPmJp
bmRJbnQoNSwgaW5mby51bmlxdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwt
PmJpbmRJbnQoNiwgaW5mby5tdWx0aUVudHJ5KCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
fHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2UKICAgICBhdXRvIHNxbCA9IGNh
Y2hlZFN0YXRlbWVudChTUUw6Okhhc0luZGV4UmVjb3JkLCAiU0VMRUNUIHJvd2lkIEZST00gSW5k
ZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgPSBDQVNUKD8gQVMgVEVYVCk7Il9z
KTsKICAgICBpZiAoIXNxbAogICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBpbmZvLmlkZW50
aWZpZXIoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmluZGV4
S2V5QnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBz
dGQ6OnNwYW4geyBpbmRleEtleUJ1ZmZlci0+ZGF0YSgpLCBpbmRleEtleUJ1ZmZlci0+c2l6ZSgp
IH0pICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNoZWNraW5nIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiRXJyb3IgY2hlY2tpbmcgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFz
ZSJfcyB9OwogICAgIH0KQEAgLTE1MzUsOCArMTUzNSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2UKICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNx
bC0+YmluZEludDY0KDEsIGluZGV4SUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3Fs
LT5iaW5kSW50NjQoMiwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBzcWwtPmJpbmRCbG9iKDMsICppbmRleEtleUJ1ZmZlcikgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwtPmJpbmRCbG9iKDQsICp2YWx1ZUJ1ZmZlcikgIT0gU1FMSVRFX09LCisgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIHN0ZDo6c3BhbiB7IGluZGV4S2V5QnVmZmVyLT5k
YXRhKCksIGluZGV4S2V5QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDQsIHN0ZDo6c3BhbiB7IHZhbHVlQnVmZmVyLT5kYXRhKCksIHZh
bHVlQnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPmJp
bmRJbnQ2NCg1LCByZWNvcmRJRCkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
cHV0IGluZGV4IHJlY29yZCBmb3IgaW5kZXggJSIgUFJJaTY0ICIgaW4gb2JqZWN0IHN0b3JlICUi
IFBSSWk2NCAiIGluIFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgaW5kZXhJRCwgb2JqZWN0U3Rv
cmVJRCwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KTsKQEAgLTE2NTQsNyArMTY1NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
a2V5RXhpc3QKICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudChTUUw6OktleUV4aXN0c0lu
T2JqZWN0U3RvcmUsICJTRUxFQ1Qga2V5IEZST00gUmVjb3JkcyBXSEVSRSBvYmplY3RTdG9yZUlE
ID0gPyBBTkQga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIExJTUlUIDE7Il9zKTsKICAgICBpZiAoIXNx
bAogICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBvYmplY3RTdG9yZUlEKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqa2V5QnVmZmVyKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBzdGQ6OnNwYW4geyBrZXlCdWZmZXItPmRh
dGEoKSwga2V5QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGdldCByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgJSIgUFJJaTY0ICIg
ZnJvbSBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG9iamVjdFN0b3JlSUQsIG1fc3FsaXRlREIt
Pmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBjaGVjayBmb3IgZXhpc3RlbmNl
IG9mIElEQktleSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKICAgICB9CkBAIC0xNzQwLDcgKzE3NDAs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlCiAKICAgICAgICAg
aWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIG9iamVjdFN0b3JlSUQp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqa2V5QnVmZmVy
KSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgc3RkOjpz
cGFuIHsga2V5QnVmZmVyLT5kYXRhKCksIGtleUJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9P
SykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZGVsZXRlIHJlY29yZCBmcm9t
IG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlELCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGRlbGV0ZSBy
ZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUiX3MgfTsKICAgICAgICAgfQpAQCAtMTc4Nyw3ICsxNzg3
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZQogCiAgICAgICAg
IGlmICghc3FsCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBvYmplY3RTdG9yZUlE
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmtleUJ1ZmZl
cikgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIHN0ZDo6c3Bh
biB7IGtleUJ1ZmZlci0+ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBkZWxldGUgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlICUi
IFBSSWk2NCAiICglaSkgLSAlcyIsIG9iamVjdFN0b3JlSUQsIG1fc3FsaXRlREItPmxhc3RFcnJv
cigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJGYWlsZWQgdG8gZGVsZXRlIHJlY29yZCBmcm9tIG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMTk1OCw4ICsxOTU4LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjphZGRSZWNvcgogICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudChT
UUw6OkFkZE9iamVjdFN0b3JlUmVjb3JkLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8s
IENBU1QoPyBBUyBURVhUKSwgPywgTlVMTCk7Il9zKTsKICAgICAgICAgaWYgKCFzcWwKICAgICAg
ICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCkp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqa2V5QnVmZmVy
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywgKnZhbHVlLmRh
dGEoKS5kYXRhKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigy
LCBzdGQ6OnNwYW4geyBrZXlCdWZmZXItPmRhdGEoKSwga2V5QnVmZmVyLT5zaXplKCkgfSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIHN0ZDo6c3BhbiB7IHZh
bHVlLmRhdGEoKS5kYXRhKCktPmRhdGEoKSwgdmFsdWUuZGF0YSgpLnNpemUoKSB9KSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwdXQgcmVjb3JkIGZvciBvYmplY3Qgc3RvcmUg
JSIgUFJJaTY0ICIgaW4gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUluZm8u
aWRlbnRpZmllcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHN0b3JlIHJlY29yZCBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE5NzQsNyAr
MTk3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3IKICAgICAg
ICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpEZWxldGVPYmplY3RTdG9yZVJlY29y
ZCwgIkRFTEVURSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA9
IENBU1QoPyBBUyBURVhUKTsiX3MpOwogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwg
c3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICprZXlCdWZmZXIpICE9IFNRTElU
RV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBzdGQ6OnNwYW4geyBrZXlCdWZm
ZXItPmRhdGEoKSwga2V5QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbmRleGluZyBuZXcgb2JqZWN0IHN0b3JlIHJlY29yZCBmYWlsZWQsIGJ1dCB1bmFibGUgdG8g
cmVtb3ZlIHRoZSBvYmplY3Qgc3RvcmUgcmVjb3JkIGl0c2VsZiIpOwogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiSW5kZXhpbmcgbmV3IG9iamVjdCBzdG9yZSBy
ZWNvcmQgZmFpbGVkLCBidXQgdW5hYmxlIHRvIHJlbW92ZSB0aGUgb2JqZWN0IHN0b3JlIHJlY29y
ZCBpdHNlbGYiX3MgfTsKQEAgLTIxNTksOCArMjE1OSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3IKIAogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwg
c3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDIsICpsb3dlckJ1ZmZlcikgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsICp1cHBlckJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIHN0ZDo6c3BhbiB7IGxvd2VyQnVmZmVyLT5k
YXRhKCksIGxvd2VyQnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8
fCBzcWwtPmJpbmRCbG9iKDMsIHN0ZDo6c3BhbiB7IHVwcGVyQnVmZmVyLT5kYXRhKCksIHVwcGVy
QnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBnZXQga2V5IHJhbmdlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSAlIiBQUklp
NjQgIiBmcm9tIFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgb2JqZWN0U3RvcmVJRCwgbV9zcWxp
dGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkZhaWxlZCB0byBsb29rIHVwIHJl
Y29yZCBpbiBvYmplY3Qgc3RvcmUgYnkga2V5IHJhbmdlIl9zIH07CiAgICAgICAgIH0KQEAgLTIy
NzYsOCArMjI3Niw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2IK
ICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudEZvckdldEFsbE9iamVjdFN0b3JlUmVjb3Jk
cyhnZXRBbGxSZWNvcmRzRGF0YSk7CiAgICAgaWYgKCFzcWwKICAgICAgICAgfHwgc3FsLT5iaW5k
SW50NjQoMSwgZ2V0QWxsUmVjb3Jkc0RhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqbG93ZXJCdWZmZXIpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsICp1cHBlckJ1ZmZlcikgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgc3RkOjpzcGFuIHsgbG93ZXJCdWZm
ZXItPmRhdGEoKSwgbG93ZXJCdWZmZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
fHwgc3FsLT5iaW5kQmxvYigzLCBzdGQ6OnNwYW4geyB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBl
ckJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCBnZXQga2V5IHJhbmdlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSAlIiBQUklpNjQg
IiBmcm9tIFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgZ2V0QWxsUmVjb3Jkc0RhdGEub2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJG
YWlsZWQgdG8gbG9vayB1cCByZWNvcmQgaW4gb2JqZWN0IHN0b3JlIGJ5IGtleSByYW5nZSJfcyB9
OwogICAgIH0KQEAgLTI0MzgsNyArMjQzOCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2UKIAogICAgIGlmICghc3FsCiAgICAgICAgIHx8IHNxbC0+YmluZEludDY0
KDEsIGluZGV4SUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICpi
dWZmZXIpICE9IFNRTElURV9PSykgeworICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIHN0ZDo6
c3BhbiB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gbG9va3VwIGluZGV4IHJlY29yZCBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gbG9va3VwIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwogICAgIH0KQEAgLTI1MjAs
OCArMjUyMCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQKICAg
ICAgICAgCiAgICAgICAgIGlmICghc3RhdGVtZW50CiAgICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmRJbnQ2NCgxLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCAqbG93ZXJCdWZmZXIpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigzLCAqdXBwZXJCdWZmZXIpICE9
IFNRTElURV9PSykgeworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCBzdGQ6
OnNwYW4geyBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigzLCBzdGQ6OnNwYW4g
eyB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBlckJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9P
SykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY291bnQgcmVjb3JkcyBpbiBv
YmplY3Qgc3RvcmUgJSIgUFJJaTY0ICIgZnJvbSBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREIt
Pmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBjb3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSBkdWUgdG8gYmlu
ZGluZyBmYWlsdXJlIl9zIH07CiAgICAgICAgIH0KQEAgLTI1MzcsOCArMjUzNyw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQKIAogICAgICAgICBpZiAoIXN0YXRl
bWVudAogICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kSW50NjQoMSwgaW5kZXhJZGVudGlm
aWVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwg
Kmxvd2VyQnVmZmVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+Ymlu
ZEJsb2IoMywgKnVwcGVyQnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZEJsb2IoMiwgc3RkOjpzcGFuIHsgbG93ZXJCdWZmZXItPmRhdGEoKSwgbG93
ZXJCdWZmZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZEJsb2IoMywgc3RkOjpzcGFuIHsgdXBwZXJCdWZmZXItPmRhdGEoKSwgdXBwZXJCdWZm
ZXItPnNpemUoKSB9KSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGNvdW50IHJlY29yZHMgd2l0aCBpbmRleCAlIiBQUklpNjQgIiBmcm9tIEluZGV4UmVj
b3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBpbmRleElkZW50aWZpZXIsIG1fc3FsaXRlREItPmxhc3RF
cnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gY291bnQgcmVjb3JkcyBmb3IgaW5k
ZXggZHVlIHRvIGJpbmRpbmcgZmFpbHVyZSJfcyB9OwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcAkocmV2aXNpb24gMjkzNTk3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3MSwxMyArMjcxLDEzIEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkK
ICAgICB9CiAKICAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50
TG93ZXJLZXkpOwotICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1
bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9zdGF0ZW1lbnQtPmJp
bmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgc3RkOjpzcGFuIHsgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSht
X2N1cnJlbnRVcHBlcktleSk7Ci0gICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgeworICAgIGlmIChtX3N0YXRl
bWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCBzdGQ6OnNwYW4geyBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50ICh1cHBlciBrZXkpIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zMTcsMTMgKzMxNywxMyBAQCBib29sIFNR
TGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJCiAgICAgfQogCiAgICAgYXV0byBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7Ci0gICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJn
dW1lbnQrKywgc3RkOjpzcGFuIHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0pICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3Vt
ZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50SW5kZXhSZWNv
cmRWYWx1ZSk7Ci0gICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRC
aW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fcHJlSW5k
ZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgc3RkOjpzcGFuIHsg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0pICE9IFNRTElURV9PSykgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQg
KHZhbHVlKSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAJ
KHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aE1lc3NhZ2VDcnlwdG8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRQogICAgIG1lbWNweShrZXlJbmZv
LmNsaWVudEtleSwgY2xpZW50S2V5cy5jbGllbnRQMjU2REhLZXlQYWlyLnB1YmxpY0tleS5kYXRh
KCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CiAgICAgbWVtY3B5KGtleUluZm8uc2VydmVyS2V5
LCBoZWFkZXIuc2VydmVyUHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgpOwogCi0gICAg
YXV0byBpa20gPSBobWFjU0hBMjU2KHBya0tleSwgU3BhbihyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPigma2V5SW5mbyksIHNpemVvZihrZXlJbmZvKSkpOworICAgIGF1dG8gaWttID0gaG1hY1NI
QTI1NihwcmtLZXksIHN0ZDo6c3BhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigma2V5SW5m
byksIHNpemVvZihrZXlJbmZvKSkpOwogCiAgICAgLyoKICAgICAgKiAjIEhLREYtRXh0cmFjdChz
YWx0LCBJS00pCkBAIC0xNTIsNyArMTUyLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRlY3J5cHRBRQogICAgICAqIENFSyA9IEhNQUMtU0hBLTI1NihQUkssIGNla19pbmZvIHx8
IDB4MDEpWzAuLjE1XQogICAgICAqLwogICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGNla0luZm9b
XSA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY21ceDAwXHgwMSI7Ci0gICAgYXV0byBjZWsg
PSBobWFjU0hBMjU2KHByaywgU3BhbihjZWtJbmZvLCBzaXplb2YoY2VrSW5mbykgLSAxKSk7Cisg
ICAgYXV0byBjZWsgPSBobWFjU0hBMjU2KHByaywgc3RkOjpzcGFuKGNla0luZm8sIHNpemVvZihj
ZWtJbmZvKSAtIDEpKTsKICAgICBjZWsuc2hyaW5rKDE2KTsKIAogICAgIC8qCkBAIC0xNjEsMTEg
KzE2MSwxMSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFCiAgICAg
ICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZvIHx8IDB4MDEpWzAuLjExXQog
ICAgICAqLwogICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNlSW5mb1tdID0gIkNvbnRlbnQt
RW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOwotICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2KHBy
aywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOworICAgIGF1dG8gbm9u
Y2UgPSBobWFjU0hBMjU2KHByaywgc3RkOjpzcGFuKG5vbmNlSW5mbywgc2l6ZW9mKG5vbmNlSW5m
bykgLSAxKSk7CiAgICAgbm9uY2Uuc2hyaW5rKDEyKTsKIAogICAgIC8vIEZpbmFsbHksIGRlY3J5
cHQgd2l0aCBBRVMxMjhHQ00gYW5kIHJldHVybiB0aGUgdW5wYWRkZWQgcGxhaW50ZXh0LgotICAg
IGF1dG8gY2lwaGVyVGV4dCA9IFNwYW4ocGF5bG9hZC5kYXRhKCkgKyBzaXplb2YoaGVhZGVyKSwg
cGF5bG9hZC5zaXplKCkgLSBzaXplb2YoaGVhZGVyKSk7CisgICAgYXV0byBjaXBoZXJUZXh0ID0g
c3RkOjpzcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6ZSgp
IC0gc2l6ZW9mKGhlYWRlcikpOwogICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0gZGVjcnlwdEFF
UzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKICAgICBpZiAoIXBsYWluVGV4dFJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzOSw3ICsyMzksNyBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFCiAgICAgICovCiAgICAgc3RhdGlj
IGNvbnN0IHVpbnQ4X3QgYXV0aEluZm9bXSA9ICJDb250ZW50LUVuY29kaW5nOiBhdXRoXHgwMFx4
MDEiOwogICAgIGF1dG8gcHJrQ29tYmluZSA9IGhtYWNTSEEyNTYoY2xpZW50S2V5cy5zaGFyZWRB
dXRoU2VjcmV0LCAqZWNkaFNlY3JldFJlc3VsdCk7Ci0gICAgYXV0byBpa20gPSBobWFjU0hBMjU2
KHBya0NvbWJpbmUsIFNwYW4oYXV0aEluZm8sIHNpemVvZihhdXRoSW5mbykgLSAxKSk7CisgICAg
YXV0byBpa20gPSBobWFjU0hBMjU2KHBya0NvbWJpbmUsIHN0ZDo6c3BhbihhdXRoSW5mbywgc2l6
ZW9mKGF1dGhJbmZvKSAtIDEpKTsKICAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwgaWtt
KTsKIAogICAgIC8qCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29h
L1B1c2hDcnlwdG9Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRvQ29jb2EuY3BwCShyZXZpc2lvbiAyOTM1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZGVjcnlwdEFFCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFl
czEyOEdDTVRhZ0xlbmd0aCk7Ci0gICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90
RGVjcnlwdChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEo
KSwgaXYuc2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9u
YWxEYXRhTGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRo
VGFnLnNpemUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgY2lwaGVy
VGV4dFdpdGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0
aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlwdChrQ0NBbGdv
cml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEoKSwgaXYuc2l6ZSgpLCBu
dWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9uYWxEYXRhTGVuZ3RoICov
LCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFl
czEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgJipjaXBoZXJUZXh0V2l0aFRhZy5l
bmQoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgYWVzMTI4R0NNVGFnTGVuZ3RoKTsKICAgICBpZiAo
cmVzdWx0ICE9IGtDQ1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuY3BwCShyZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjplCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2NhbGxiYWNrKSB7Ci0gICAgICAgIFNwYW4gY2h1bmsgeyBi
dWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkgfTsKKyAgICAgICAgc3RkOjpzcGFuIGNodW5r
IHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpIH07CiAgICAgICAgIG1fY2FsbGJhY2so
JmNodW5rKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAJKHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
dm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKGNvbnN0IEpTQwogewogICAgIGlmIChtX3F1
ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKTsKLSAgICAgICAgbV93cml0ZVJhd0RhdGEoU3Bh
biB7IGRhdGEgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0pOworICAgICAgICBtX3dyaXRlUmF3
RGF0YShzdGQ6OnNwYW4geyBkYXRhICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBtX3F1ZXVlLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9m
ZnNldCwgYnl0ZUxlbmd0aCkpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya1NlbmRR
dWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGNvbnN0IGF1dG8mIHJlc3VsdCA9IGxvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKSkgewotICAg
ICAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKFNwYW4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSB9KTsKKyAgICAgICAg
ICAgICAgICBtX3dyaXRlUmF3RGF0YShzdGQ6OnNwYW4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSB9KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZXJyb3JD
b2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwCShy
ZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgQ2FudmFzUGF0aDo6
cmVjdChmbG9hdCB4LCBmbG9hdCB5LCAKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUGF0aDo6
cm91bmRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGNv
bnN0IFJhZGl1c1ZhcmlhbnQmIHJhZGlpKQogewotICAgIHJldHVybiByb3VuZFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCwgU3BhbiB7ICZyYWRpaSwgMSB9KTsKKyAgICByZXR1cm4gcm91bmRSZWN0
KHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0ZDo6c3BhbiB7ICZyYWRpaSwgMSB9KTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gQ2FudmFzUGF0aDo6cm91bmRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGNvbnN0IFNwYW48Y29uc3QgUmFkaXVzVmFyaWFudD4m
IHJhZGlpKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyOTM1OTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MTQsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBw
YXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkp
Ci0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZEJsb2IoMSwgc3RkOjpzcGFuIHsgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpIH0pOwogICAgIH0KICAgICAKICAgICBpZiAo
IWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDcgKzExNSw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmUKICAg
ICAgICAgZGF0YSA9IG51bGxwdHI7CiAKICAgICBjb25zdGV4cHIgdWludDhfdCBwZGZNYWdpY051
bWJlcltdID0geyAnJScsICdQJywgJ0QnLCAnRicgfTsKLSAgICBpZiAoZGF0YSAmJiBkYXRhLT5z
dGFydHNXaXRoKFNwYW4geyBwZGZNYWdpY051bWJlciwgc3RkOjpzaXplKHBkZk1hZ2ljTnVtYmVy
KSB9KSkgeworICAgIGlmIChkYXRhICYmIGRhdGEtPnN0YXJ0c1dpdGgoc3RkOjpzcGFuIHsgcGRm
TWFnaWNOdW1iZXIsIHN0ZDo6c2l6ZShwZGZNYWdpY051bWJlcikgfSkpIHsKICAgICAgICAgTE9H
KEljb25EYXRhYmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIElnbm9yaW5nIGlj
b24gYXQgJXMgYmVjYXVzZSBpdCBhcHBlYXJzIHRvIGJlIGEgUERGIiwgbV9yZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBkYXRhID0gbnVsbHB0cjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHJldmlz
aW9uIDI5MzU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2NSwxMSArMjY1LDExIEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3I+
IFBhZ2VDb2xvclNhbXBsZXI6OnMKICAgICB9CiAKICAgICBpZiAoIW5vbk1hdGNoaW5nQ29sb3JJ
bmRleCkKLSAgICAgICAgcmV0dXJuIGF2ZXJhZ2VDb2xvcihTcGFuIHsgc2FtcGxlcyB9LnN1YnNw
YW48MSwgbnVtU2FtcGxlcyAtIDE+KCkpOworICAgICAgICByZXR1cm4gYXZlcmFnZUNvbG9yKHN0
ZDo6c3BhbiB7IHNhbXBsZXMgfS5zdWJzcGFuPDEsIG51bVNhbXBsZXMgLSAxPigpKTsKICAgICBl
bHNlIGlmIChub25NYXRjaGluZ0NvbG9ySW5kZXggPT0gbnVtU2FtcGxlcyAtIDEpCi0gICAgICAg
IHJldHVybiBhdmVyYWdlQ29sb3IoU3BhbiB7IHNhbXBsZXMgfS5zdWJzcGFuPDAsIG51bVNhbXBs
ZXMgLSAxPigpKTsKKyAgICAgICAgcmV0dXJuIGF2ZXJhZ2VDb2xvcihzdGQ6OnNwYW4geyBzYW1w
bGVzIH0uc3Vic3BhbjwwLCBudW1TYW1wbGVzIC0gMT4oKSk7CiAgICAgZWxzZQotICAgICAgICBy
ZXR1cm4gYXZlcmFnZUNvbG9yKFNwYW4geyBzYW1wbGVzIH0pOworICAgICAgICByZXR1cm4gYXZl
cmFnZUNvbG9yKHN0ZDo6c3BhbiB7IHNhbXBsZXMgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAkocmV2
aXNpb24gMjkzNTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ20KIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
ICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKLSAgICAgICAgYXBwbHkoU3BhbiB7
IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKKyAg
ICAgICAgYXBwbHkoc3RkOjpzcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCiB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZv
ckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVk
QnVmZmVyPiYmKT4mIGFwcGx5KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAJKHJldmlzaW9uIDI5MzU5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGlu
ZGV4LAogICAgIGVsc2UKICAgICAgICAgY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVy
czsKIAotICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgU3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFy
KSB9KTsKKyAgICByZXR1cm4gYmluZEJsb2IoaW5kZXgsIHN0ZDo6c3BhbiB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9m
KFVDaGFyKSB9KTsKIH0KIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZFRleHQoaW50IGluZGV4
LCBTdHJpbmdWaWV3IHRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkocmV2
aXNpb24gMjkzNTk3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwxMiArNDY1LDEy
IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMKICAgICAgICAgICAg
IHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoNiwgU3RyaW5nVmlldyB7IHVwZGF0ZVZpYUNh
Y2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUpIH0pICE9IFNRTElU
RV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg3LCBkYXRhLnNj
cmlwdFVSTC5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0
ZW1lbnQtPmJpbmRUZXh0KDgsIFN0cmluZ1ZpZXcgeyB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53
b3JrZXJUeXBlKSB9KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVu
dC0+YmluZEJsb2IoOSwgU3BhbiB7IGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVm
ZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kQmxvYigxMCwgU3BhbiB7IGNvZXBFbmNvZGVyLmJ1ZmZlcigpLCBjb2VwRW5jb2Rlci5i
dWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1l
bnQtPmJpbmRCbG9iKDksIHN0ZDo6c3BhbiB7IGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29k
ZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3Rh
dGVtZW50LT5iaW5kQmxvYigxMCwgc3RkOjpzcGFuIHsgY29lcEVuY29kZXIuYnVmZmVyKCksIGNv
ZXBFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGlu
c2VydFN0YXRlbWVudC0+YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxMiwgU3BhbiB7
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNv
ZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0
YXRlbWVudC0+YmluZEJsb2IoMTMsIFNwYW4geyBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZl
cigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTQsIFNwYW4geyBuYXZp
Z2F0aW9uUHJlbG9hZFN0YXRlRW5jb2Rlci5idWZmZXIoKSwgbmF2aWdhdGlvblByZWxvYWRTdGF0
ZUVuY29kZXIuYnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5z
ZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxMiwgc3RkOjpzcGFuIHsgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6ZSgpIH0p
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigx
Mywgc3RkOjpzcGFuIHsgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNh
dGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8
fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDE0LCBzdGQ6OnNwYW4geyBuYXZpZ2F0aW9uUHJl
bG9hZFN0YXRlRW5jb2Rlci5idWZmZXIoKSwgbmF2aWdhdGlvblByZWxvYWRTdGF0ZUVuY29kZXIu
YnVmZmVyU2l6ZSgpIH0pICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50
byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjkzNTk3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0yOCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEJlZ2luIHRyYW5zaXRpb24g
ZnJvbSBXVEY6OlNwYW4gdG8gc3RkOjpzcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcxNzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJpbmdSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6YWRkKToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCk6CisKIDIwMjItMDQt
MjggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIER5bmFt
aWNhbGx5IHN3aXRjaCBtZXNzYWdlIGZpbHRlcgpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnUKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTcGFuPFQsIEV4dGVudD4mIHNwYW4pCiAgICAgewotICAgICAgICBp
ZiBjb25zdGV4cHIgKEV4dGVudCA9PSBXVEY6OmR5bmFtaWNfZXh0ZW50KQorICAgICAgICBpZiBj
b25zdGV4cHIgKEV4dGVudCA9PSBzdGQ6OmR5bmFtaWNfZXh0ZW50KQogICAgICAgICAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3Bhbi5zaXplKCkpOwogICAgICAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzcGFuLmRhdGEoKSksIHNwYW4uc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAg
ICB9CkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+
IHN0cnUKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPFQsIEV4dGVudD4+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
c2l6ZTsKLSAgICAgICAgaWYgY29uc3RleHByIChFeHRlbnQgPT0gV1RGOjpkeW5hbWljX2V4dGVu
dCkgeworICAgICAgICBpZiBjb25zdGV4cHIgKEV4dGVudCA9PSBzdGQ6OmR5bmFtaWNfZXh0ZW50
KSB7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgICAgICAgICBpZiAoIXNpemUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaAkocmV2aXNpb24gMjkzNTk3KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBFeHRlbnQgPSBXVEY6OmR5bmFtaWNfZXh0ZW50PiB1c2luZyBBcnJheVJl
ZmVyZW5jZSA9IFNwYW48Y29uc3QgVCwgRXh0ZW50PjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgRXh0ZW50ID0gc3RkOjpkeW5hbWljX2V4dGVudD4gdXNpbmcgQXJyYXlSZWZlcmVuY2Ug
PSBzdGQ6OnNwYW48Y29uc3QgVCwgRXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuaAkocmV2aXNp
b24gMjkzNTk3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogaW5saW5lIHZv
aWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBTdHJpbmdSZWZlcmVuY2UmIHN0cmluZykKIHsK
LSAgICBhZGQoaGFzaGVyLCBTcGFuIHsgc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSB9KTsK
KyAgICBhZGQoaGFzaGVyLCBzdGQ6OnNwYW4geyBzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgp
IH0pOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1JlZmVyZW5jZSYg
YSwgY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBiKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkocmV2aXNpb24gMjkzNTk3
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+
IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE1hY2hC
b290c3RyYXBPcHRpb25zIG1hY2hCb290c3RyYXBPcHRpb25zLCBPcHRpb25TZXQ8RmxhZ3M+IGZs
YWdzKSAtPiBWZWN0b3I8SGFuZGxlPgogewotICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4oKSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0
VG9rZW4sIG1hY2hCb290c3RyYXBPcHRpb25zLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6c3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2Vz
LnNpemUoKSB9LCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywgZmxhZ3MpOwogfQog
CiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4o
U3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjkz
NTk3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBCZWdpbiB0cmFuc2l0aW9uIGZyb20gV1RGOjpT
cGFuIHRvIHN0ZDo6c3BhbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM3MTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBIaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHA6CisgICAgICAgIChhZGQp
OgorCiAyMDIyLTA0LTI2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJlbW92ZSBBcmlhUmVmbGVjdGlvbkVuYWJsZWQgcnVudGltZSBmbGFnCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQ
cm9wZXJ0eUxpc3QuY3BwCShyZXZpc2lvbiAyOTM1OTcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlZ2VyQXJyYQogCiBp
bmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEludGVnZXJBcnJheSYgYXJyYXkp
CiB7Ci0gICAgYWRkKGhhc2hlciwgU3BhbiB7IGFycmF5LmludGVnZXJzKCksIGFycmF5LnNpemUo
KSB9KTsKKyAgICBhZGQoaGFzaGVyLCBzdGQ6OnNwYW4geyBhcnJheS5pbnRlZ2VycygpLCBhcnJh
eS5zaXplKCkgfSk7CiB9CiAKIHN0cnVjdCBJbnRlZ2VyQXJyYXlIYXNoVHJhaXRzIDogSGFzaFRy
YWl0czxJbnRlZ2VyQXJyYXk+IHsK
</data>
<flag name="commit-queue"
          id="487420"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>