<?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>78418</bug_id>
          
          <creation_ts>2012-02-11 11:13:58 -0800</creation_ts>
          <short_desc>It should be possible to send all JSC debug logging to a file</short_desc>
          <delta_ts>2012-02-11 19:22:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554652</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 11:13:58 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554654</commentid>
    <comment_count>1</comment_count>
      <attachid>126639</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 11:28:54 -0800</bug_when>
    <thetext>Created attachment 126639
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554656</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 11:34:56 -0800</bug_when>
    <thetext>Attachment 126639 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/DebugLogging.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:610:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:625:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:626:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:627:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:628:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:629:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:630:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/bytecode/CodeBlock.cpp:1396:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 10 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554659</commentid>
    <comment_count>3</comment_count>
      <attachid>126639</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 11:55:07 -0800</bug_when>
    <thetext>Comment on attachment 126639
the patch

Attachment 126639 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11505202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554660</commentid>
    <comment_count>4</comment_count>
      <attachid>126639</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-11 11:55:43 -0800</bug_when>
    <thetext>Comment on attachment 126639
the patch

Attachment 126639 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11509162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554661</commentid>
    <comment_count>5</comment_count>
      <attachid>126639</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-11 11:58:26 -0800</bug_when>
    <thetext>Comment on attachment 126639
the patch

Attachment 126639 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11509161</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554666</commentid>
    <comment_count>6</comment_count>
      <attachid>126640</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 12:24:06 -0800</bug_when>
    <thetext>Created attachment 126640
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554668</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 12:27:15 -0800</bug_when>
    <thetext>Attachment 126640 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/DebugLogging.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:610:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:625:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:626:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:627:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:628:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:629:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:630:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/bytecode/CodeBlock.cpp:1396:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 10 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554685</commentid>
    <comment_count>8</comment_count>
      <attachid>126644</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 13:45:38 -0800</bug_when>
    <thetext>Created attachment 126644
the patch

- Fixing build

- As per chat with Sam, changed the name from &quot;debug logging&quot; to &quot;data log&quot;.  &quot;debugPrintf&quot; becomes &quot;dataLog&quot;, &quot;debugFile&quot; becomes &quot;dataFile&quot;, and &quot;DebugLogging.h&quot; becomes &quot;DataLog.h&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554687</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 13:49:27 -0800</bug_when>
    <thetext>Going to wait on EWS for this patch, since it&apos;s big and juicy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554701</commentid>
    <comment_count>10</comment_count>
      <attachid>126649</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 14:48:11 -0800</bug_when>
    <thetext>Created attachment 126649
the patch

Rebased patch, putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554703</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 14:52:22 -0800</bug_when>
    <thetext>Attachment 126649 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/profiler/ProfileNode.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:610:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:625:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:626:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:627:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:628:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:629:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/interpreter/Interpreter.cpp:630:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/bytecode/CodeBlock.cpp:1396:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/wtf/DataLog.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 11 in 53 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554762</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 19:20:17 -0800</bug_when>
    <thetext>OK, it looks like the bots are as green as they&apos;re going to get.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554763</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 19:22:17 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/107499</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554764</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-11 19:22:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/10849720&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126639</attachid>
            <date>2012-02-11 11:28:54 -0800</date>
            <delta_ts>2012-02-11 12:24:06 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>debuglog_patch_1.diff</filename>
            <type>text/plain</type>
            <size>215627</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0MgZGVidWcgbG9nZ2luZyB0byBh
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJbnRyb2R1Y2VkIHd0Zi9EZWJ1Z0xvZ2dpbmcsIHdoaWNoIGRlZmluZXMgV1RGOjpkZWJ1
Z0ZpbGUsIFdURjo6ZGVidWdQcmludGYsCisgICAgICAgIGFuZCBXVEY6OmRlYnVnVlByaW50Zi4g
Q2hhbmdlZCBhbGwgZGVidWdnaW5nLSBhbmQgcHJvZmlsaW5nLXJlbGF0ZWQgcHJpbnRmcworICAg
ICAgICB0byB1c2UgV1RGOjpkZWJ1Z1ByaW50ZigpIG9yIG9uZSBvZiBpdHMgZnJpZW5kcy4gQnkg
ZGVmYXVsdCwgZGVidWcgbG9nZ2luZworICAgICAgICBnb2VzIHRvIHN0ZGVyciwgdW5sZXNzIHlv
dSBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gd3RmL0RlYnVnTG9nZ2luZy5jcHAuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcExpbmtT
dGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAg
ICAqIGFzc2VtYmxlci9TSDRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVy
Ojp2cHJpbnRmU3Rkb3V0SW5zdHIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRVbmFyeU9wKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpwcmludEJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmlu
dENvbmRpdGlvbmFsSnVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlk
T3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50Q2FsbE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcCk6CisgICAgICAgIChKU0M6OnByaW50R2xvYmFs
UmVzb2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpwcmludFN0cnVjdHVyZVN0dWJJbmZvKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1w
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp0
YWxseUZyZXF1ZW50RXhpdFNpdGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wVmFs
dWVQcm9maWxlcyk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6T3Bjb2RlU3RhdHM6On5PcGNvZGVTdGF0cyk6CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdGbGFnczo6c3RvcCk6CisgICAgICAg
IChKU0M6OlNhbXBsaW5nUmVnaW9uOjpkdW1wSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpTYW1w
bGluZ1Rvb2w6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAg
ICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByaW50V2hp
dGVTcGFjZSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2luKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OnByZWRpY3RBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcv
REZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJvcGFnYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Zml4cG9pbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0ZvcndhcmQp
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdz
QmFja3dhcmQpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZU5vZGVQ
cmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlUHJl
ZGljdGlvbnNGb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdh
dGVQcmVkaWN0aW9uc0JhY2t3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpk
b1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmZp
eHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Zml4dXApOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnN0YXJ0SW5kZXhGb3JDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6ZW5kSW5kZXhGb3JQdXJlQ1NFKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpzZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6
UHJvcGFnYXRvcjo6ZWxpbWluYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpw
ZXJmb3JtTm9kZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6bG9jYWxDU0Up
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmFsbG9jYXRlVmlydHVhbFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybUJsb2NrQ0ZBKToKKyAg
ICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwZXJmb3JtRm9yd2FyZENGQSk6CisgICAgICAg
ICogZGZnL0RGR1JlZ2lzdGVyQmFuay5oOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyQmFu
azo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR1Njb3JlQm9hcmQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTY29yZUJvYXJkOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpkdW1wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhlYXA6OmRlc3Ryb3kpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6
OmR1bXBDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YSk6CisgICAgICAg
IChKU0M6OlByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUpOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OmRlYnVn
UHJpbnREYXRhKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhU2Ft
cGxlU3R5bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjpkdW1wUmVnRXhwVHJhY2UpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJw
cmV0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1bXApOgorICAgICAgICAqIHJ1bnRpbWUv
U2FtcGxpbmdDb3VudGVyLmg6CisgICAgICAgIChKU0M6OkRlbGV0YWJsZVNhbXBsaW5nQ291bnRl
cjo6fkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9TY29wZUNo
YWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnByaW50KToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZHVtcFN0
YXRpc3RpY3MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcFN0YXRpc3RpY3NFeGl0TG9nZ2Vy
Ojp+UHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlcik6CisgICAgICAgICogdG9vbHMvQ29k
ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlUHJvZmlsZTo6cmVwb3J0KToKKyAgICAg
ICAgKiB0b29scy9Qcm9maWxlVHJlZU5vZGUuaDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZVRyZWVO
b2RlOjpkdW1wSW50ZXJuYWwpOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvRGVidWdMb2dnaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjppbml0aWFsaXplTG9nRmlsZU9uY2UpOgorICAgICAgICAoV1RGOjppbml0aWFsaXpl
TG9nRmlsZSk6CisgICAgICAgIChXVEY6OmRlYnVnRmlsZSk6CisgICAgICAgIChXVEY6OmRlYnVn
VlByaW50Zik6CisgICAgICAgIChXVEY6OmRlYnVnUHJpbnRmKToKKyAgICAgICAgKiB3dGYvRGVi
dWdMb2dnaW5nLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvSGFzaFRh
YmxlLmNwcDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6On5IYXNoVGFibGVTdGF0cyk6
CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3BwOgorICAgICAgICAoV1RGOjpNZXRhQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoK
KyAgICAgICAgKFN0cmluZzo6c2hvdyk6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmR1bXBEaXNqdW5jdGlvbik6
CisKIDIwMTItMDItMTAgIFZpbmVldCBDaGF1ZGhhcnkgIDxyZ2Y3NDhAbW90b3JvbGEuY29tPgog
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1NgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC01NjQsNiArNTY0LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EYXRlTWF0aC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2lu
Zy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVidWdMb2dnaW5nLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RlY29kZXIuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBAQAogICAgICAg
ICAgICAgJ3d0Zi9EYXRlTWF0aC5oJywKICAgICAgICAgICAgICd3dGYvRGVjaW1hbE51bWJlci5o
JywKICAgICAgICAgICAgICd3dGYvRGVjb2Rlci5oJywKKyAgICAgICAgICAgICd3dGYvRGVidWdM
b2dnaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi9EZXF1ZS5oJywKICAgICAgICAgICAgICd3dGYv
RGlzYWxsb3dDVHlwZS5oJywKICAgICAgICAgICAgICd3dGYvRG91Ymx5TGlua2VkTGlzdC5oJywK
QEAgLTU2MCw2ICs1NjEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9DdXJyZW50VGltZS5jcHAnLAog
ICAgICAgICAgICAgJ3d0Zi9EYXRlTWF0aC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9EZWNpbWFs
TnVtYmVyLmNwcCcsCisgICAgICAgICAgICAnd3RmL0RlYnVnTG9nZ2luZy5jcHAnLAogICAgICAg
ICAgICAgJ3d0Zi9EeW5hbWljQW5ub3RhdGlvbnMuY3BwJywKICAgICAgICAgICAgICd3dGYvRHlu
YW1pY0Fubm90YXRpb25zLmgnLAogICAgICAgICAgICAgJ3d0Zi9GYXN0TWFsbG9jLmNwcCcsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTczMyw2ICs3MzMsMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRGVidWdMb2dnaW5nLmNwcCIKKwkJCT4KKwkJPC9GaWxl
PgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRGVidWdMb2dnaW5nLmgiCisJ
CQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXERlcXVl
LmgiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw4
IEBACiAJCTBGOTYzQjJEMTNGODU0MDIwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyQTEzRjg1M0JE
MDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjJGMTNGQzY2QkIwMDAyRDlCMiAvKiBNZXRhQWxs
b2NhdG9ySGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjk2M0IyRTEzRkM2NkFFMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjM4
MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1
ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOENEMTRFNjEyRDUw
MEQ1MkFFMCAvKiBEZWJ1Z0xvZ2dpbmcuY3BwICovOyB9OworCQkwRjlGQzhEMTE0RTYxMkRBMDBE
NTJBRTAgLyogRGVidWdMb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCQzBB
RTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCRDdFNjkx
NDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3Jp
Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTg5Niw2ICs4OTgsOCBAQAogCQkwRjk2M0IyQjEzRjg1M0M3MDAwMkQ5QjIgLyogTWV0YUFsbG9j
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhQWxsb2Nh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMkUxM0ZDNjZBRTAw
MDJEOUIyIC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWV0YUFsbG9jYXRvckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnTG9nZ2luZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUZDOENFMTRFNjEyRDUwMEQ1MkFFMCAv
KiBEZWJ1Z0xvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdM
b2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEw
MEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTY0LDYgKzE5NjgsOCBAQAogCQk2NTE2MkVGMTA4RTZB
MjFDMDA3NTU2Q0QgLyogd3RmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmNwcCAq
LywKKwkJCQkwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmggKi8sCiAJ
CQkJQTFENzY0NTExMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oICovLAogCQkJCTkzQUE0
Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxpbmUuaCAqLywKIAkJCQlBNzNCRTE1NDE0
ODQyMDUyMDA5MTIwNEIgLyogQXJyYXlCdWZmZXIuY3BwICovLApAQCAtMzEyOCw2ICszMTM0LDcg
QEAKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR05vZGVSZWZlcmVuY2VC
bG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZH
Tm9kZVVzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RkM4RDExNEU2MTJEQTAwRDUyQUUwIC8q
IERlYnVnTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjc0LDYgKzM2ODEsNyBAQAogCQkJ
CTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2Nh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUZDOEQwMTRFNjEyRDgwMEQ1MkFFMCAvKiBE
ZWJ1Z0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAogI2luY2x1ZGUgPE1hY3JvQXNzZW1i
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0RlYnVnTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTMxOSwxMyArMzIwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGxpbmtDb3VudCsrOwogICAgICAgICB0b3RhbEluaXRpYWxTaXplICs9IGlu
aXRpYWxTaXplOwogICAgICAgICB0b3RhbEZpbmFsU2l6ZSArPSBmaW5hbFNpemU7Ci0gICAgICAg
IHByaW50ZigibGluayAlcDogb3JpZyAldSwgY29tcGFjdCAldSAoZGVsdGEgJXUsICUuMmYlJSlc
biIsIAotICAgICAgICAgICAgICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxT
aXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZpbmFsU2l6ZSksCi0gICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpLAotICAgICAgICAg
ICAgICAgMTAwLjAgKiAoaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpIC8gaW5pdGlhbFNpemUpOwot
ICAgICAgICBwcmludGYoIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1
LCAlLjJmJSUpXG4iLCAKLSAgICAgICAgICAgICAgIGxpbmtDb3VudCwgdG90YWxJbml0aWFsU2l6
ZSwgdG90YWxGaW5hbFNpemUsIHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSwKLSAg
ICAgICAgICAgICAgIDEwMC4wICogKHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSkg
LyB0b3RhbEluaXRpYWxTaXplKTsKKyAgICAgICAgZGVidWdQcmludGYoImxpbmsgJXA6IG9yaWcg
JXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAlLjJmJSUpXG4iLCAKKyAgICAgICAgICAgICAgICAg
ICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxTaXplKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZpbmFsU2l6ZSksCisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbml0aWFsU2l6ZSAtIGZpbmFsU2l6ZSksCisgICAgICAgICAgICAgICAgICAgIDEw
MC4wICogKGluaXRpYWxTaXplIC0gZmluYWxTaXplKSAvIGluaXRpYWxTaXplKTsKKyAgICAgICAg
ZGVidWdQcmludGYoIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAl
LjJmJSUpXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgbGlua0NvdW50LCB0b3RhbEluaXRpYWxT
aXplLCB0b3RhbEZpbmFsU2l6ZSwgdG90YWxJbml0aWFsU2l6ZSAtIHRvdGFsRmluYWxTaXplLAor
ICAgICAgICAgICAgICAgICAgICAxMDAuMCAqICh0b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5h
bFNpemUpIC8gdG90YWxJbml0aWFsU2l6ZSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC0zNDIs
MTcgKzM0MywxNyBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgdHNpemUgPSBzaXplIC8gc2l6
ZW9mKHNob3J0KTsKICAgICAgICAgY2hhciBuYW1lQnVmWzEyOF07CiAgICAgICAgIHNucHJpbnRm
KG5hbWVCdWYsIHNpemVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2RlQ291bnQrKyk7Ci0g
ICAgICAgIHByaW50ZigiXHQuc3ludGF4IHVuaWZpZWRcbiIKLSAgICAgICAgICAgICAgICJcdC5z
ZWN0aW9uXHRfX1RFWFQsX190ZXh0LHJlZ3VsYXIscHVyZV9pbnN0cnVjdGlvbnNcbiIKLSAgICAg
ICAgICAgICAgICJcdC5nbG9ibFx0JXNcbiIKLSAgICAgICAgICAgICAgICJcdC5hbGlnbiAyXG4i
Ci0gICAgICAgICAgICAgICAiXHQuY29kZSAxNlxuIgotICAgICAgICAgICAgICAgIlx0LnRodW1i
X2Z1bmNcdCVzXG4iCi0gICAgICAgICAgICAgICAiIyAlcFxuIgotICAgICAgICAgICAgICAgIiVz
OlxuIiwgbmFtZUJ1ZiwgbmFtZUJ1ZiwgY29kZSwgbmFtZUJ1Zik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCJcdC5zeW50YXggdW5pZmllZFxuIgorICAgICAgICAgICAgICAgICAgICAiXHQuc2VjdGlv
blx0X19URVhULF9fdGV4dCxyZWd1bGFyLHB1cmVfaW5zdHJ1Y3Rpb25zXG4iCisgICAgICAgICAg
ICAgICAgICAgICJcdC5nbG9ibFx0JXNcbiIKKyAgICAgICAgICAgICAgICAgICAgIlx0LmFsaWdu
IDJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlx0LmNvZGUgMTZcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIlx0LnRodW1iX2Z1bmNcdCVzXG4iCisgICAgICAgICAgICAgICAgICAgICIjICVwXG4i
CisgICAgICAgICAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIG5hbWVCdWYsIGNvZGUsIG5h
bWVCdWYpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXpl
OyBpKyspCi0gICAgICAgICAgICBwcmludGYoIlx0LnNob3J0XHQweCV4XG4iLCB0Y29kZVtpXSk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXHQuc2hvcnRcdDB4JXhcbiIsIHRjb2RlW2ldKTsK
ICNlbmRpZgogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9TSDRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9EZWJ1Z0xvZ2dpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDI1LDcgKzIw
MjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdnByaW50ZlN0ZG91dEluc3RyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQogICAgIHsKICAgICAgICAgaWYgKGdldGVudigi
SmF2YVNjcmlwdENvcmVEdW1wSklUIikpCi0gICAgICAgICAgICB2ZnByaW50ZihzdGRvdXQsIGZv
cm1hdCwgYXJncyk7CisgICAgICAgICAgICBXVEY6OmRlYnVnVlByaW50Zihmb3JtYXQsIGFyZ3Mp
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHByaW50QmxvY2tJbnN0cih1aW50MTZfdCogZmly
c3QsIHVuc2lnbmVkIGludCBvZmZzZXQsIGludCBuYkluc3RyKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50VW5hcnlPcChFeGVj
U3RhdGUqIAogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogCi0gICAgcHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVzXG4iLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGVidWdQcmludGYoIlslNGRdICVzXHRcdCAlcywgJXNc
biIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50QmluYXJ5
T3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yJiBpdCwgY29uc3QgY2hhciogb3ApIGNvbnN0CkBAIC0xNjIsMTQgKzE2Miwx
NCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRCaW5hcnlPcChFeGVjU3RhdGUqCiAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0XHQg
JXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMiku
ZGF0YSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gJXNcdFx0ICVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CiB9CiAKIHZv
aWQgQ29kZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKSBjb25z
dAogewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludGYoIlslNGRdICVzXHRcdCAlcywgJWQoLT4lZClc
biIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgIGRlYnVnUHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVk
KC0+JWQpXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYgaXQsIGNvbnN0IGNoYXIqIG9wKSBjb25zdApAQCAtMTc3LDcgKzE3
Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0
ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgZGVidWdQcmludGYoIlslNGRdICVzXHQgJXMsICVzLCAl
c1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpKTsKICAgICBpdCArPSA1OwogfQogCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OnByaW50Q2FsbE9wKEV4ZWNTdGF0ZSogZQogICAgIGludCBmdW5jID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgaW50IGFyZ0NvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAl
c1x0ICVzLCAlZCwgJWRcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMp
LmRhdGEoKSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICBkZWJ1Z1ByaW50ZigiWyU0
ZF0gJXNcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBm
dW5jKS5kYXRhKCksIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CiAgICAgaXQgKz0gMjsKIH0K
IApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChFeGVj
U3RhdGUKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgaWQwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJp
bnRmKCJbJTRkXSAlc1x0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGVidWdQcmludGYoIlslNGRd
ICVzXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICBpdCArPSA1OwogfQogCkBAIC0yNDMsNDggKzI0
Myw0OCBAQCBzdGF0aWMgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXRGb3JOdGgoCiAKIHN0YXRp
YyB2b2lkIHByaW50R2xvYmFsUmVzb2x2ZUluZm8oY29uc3QgR2xvYmFsUmVzb2x2ZUluZm8mIHJl
c29sdmVJbmZvLCB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCkKIHsKLSAgICBwcmludGYoIiAg
WyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInJlc29sdmVfZ2xvYmFsIiwgcG9p
bnRlclRvU291cmNlU3RyaW5nKHJlc29sdmVJbmZvLnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7
CisgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwg
InJlc29sdmVfZ2xvYmFsIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHJlc29sdmVJbmZvLnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50U3RydWN0dXJlU3R1
YkluZm8oY29uc3QgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbk9mZnNldCkKIHsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBj
YXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAl
c1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfc2VsZiIsIHBvaW50ZXJUb1NvdXJj
ZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3NlbGYiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKLSAgICAg
ICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0
X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFBy
b3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0
cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhz
dHViSW5mby51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
LCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBl
U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNj
ZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNl
U3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRDaGFpbi5j
aGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzOiAl
cywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRD
aGFpbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFj
Y2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVz
ICglZClcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCIsIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVM
aXN0KS51dGY4KCkuZGF0YSgpLCBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7
CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzOiAlcyAoJWQpXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgIm9wX2dldF9ieV9pZF9zZWxmX2xpc3QiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmco
c3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdCkudXRmOCgpLmRhdGEoKSwg
c3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6Ci0gICAgICAgIHByaW50ZigiICBb
JTRkXSAlczogJXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlfaWRfcHJv
dG9fbGlzdCIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90b0xp
c3Quc3RydWN0dXJlTGlzdCkudXRmOCgpLmRhdGEoKSwgc3R1YkluZm8udS5nZXRCeUlkUHJvdG9M
aXN0Lmxpc3RTaXplKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzICglZClc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QiLCBwb2ludGVy
VG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Qp
LnV0ZjgoKS5kYXRhKCksIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAg
ICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5w
dXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRl
clRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlKS51
dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFsl
NGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90cmFu
c2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRp
b24ucHJldmlvdXNTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmlu
ZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwg
cG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4p
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5
X2lkX3JlcGxhY2U6Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3JlcGxhY2UiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgInB1dF9ieV9pZF9yZXBsYWNlIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZv
LnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcHJpbnRmKCIg
IFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInVuc2V0Iik7CisgICAgICAgIGRlYnVn
UHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInVuc2V0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfZ2VuZXJpYzoKLSAgICAgICAg
cHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9ieV9pZF9n
ZW5lcmljIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgIm9wX2dldF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIGFjY2Vzc19wdXRfYnlfaWRfZ2VuZXJpYzoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVz
XG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX3B1dF9ieV9pZF9nZW5lcmljIik7CisgICAgICAg
IGRlYnVnUHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX3B1dF9i
eV9pZF9nZW5lcmljIik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYXJy
YXlfbGVuZ3RoOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXNcbiIsIGluc3RydWN0aW9uT2Zm
c2V0LCAib3BfZ2V0X2FycmF5X2xlbmd0aCIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRk
XSAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYXJyYXlfbGVuZ3RoIik7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKLSAgICAgICAg
cHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9zdHJpbmdf
bGVuZ3RoIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgIm9wX2dldF9zdHJpbmdfbGVuZ3RoIik7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NSw3ICsyOTUsNyBA
QCBzdGF0aWMgdm9pZCBwcmludFN0cnVjdHVyZVN0dWJJbmZvKGNvbnN0CiB2b2lkIENvZGVCbG9j
azo6cHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQ
QywgaW50IG9wZXJhbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQg
PSB2UEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHByaW50ZigiICBbJTRkXSAlczog
JXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBD
W29wZXJhbmRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICBkZWJ1Z1ByaW50Zigi
ICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3Vy
Y2VTdHJpbmcodlBDW29wZXJhbmRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKIH0KIAog
dm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiogdlBDKSBj
b25zdApAQCAtMzEyLDE1ICszMTIsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJl
cyhjb25zdCBJbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8pKSB7Ci0gICAg
ICAgIHByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdl
dF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRkXSAlczogJXMsICVz
XG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJj
ZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJj
ZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKLSAgICAgICAgcHJpbnRmKCIgIFslNGRd
ICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90cmFuc2l0
aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRh
dGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRmOCgpLmRh
dGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pKSB7Ci0gICAgICAgIHByaW50ZigiICBb
JTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIs
IHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCks
IHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQ
Q1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQ
Q1s1XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkKSkgewpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmlu
dFN0cnVjdHVyZXMoY29uc3QgSW4KIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIHsKICAgICBpZiAoIW1faW5zdHJ1Y3Rpb25zKSB7Ci0gICAgICAgIHByaW50Zigi
Tm8gaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZS5cbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiTm8g
aW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBj
bwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9
IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAg
cHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVy
KHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKKyAgICBkZWJ1Z1ByaW50ZigiJWx1IG1f
aW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVl
IHJlZ2lzdGVyKHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGlu
c3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0
cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKICAgICAgICAgdGhpcywg
bV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CkBAIC0zNjcsMzUgKzM2Nywz
NSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgICAgIGR1
bXAoZXhlYywgYmVnaW4sIGl0KTsKIAogICAgIGlmICghbV9pZGVudGlmaWVycy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgcHJpbnRmKCJcbklkZW50aWZpZXJzOlxuIik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCJcbklkZW50aWZpZXJzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAg
ZG8gewotICAgICAgICAgICAgcHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50aWZpZXJzLnNpemUoKSk7
CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHkoKSkgewotICAg
ICAgICBwcmludGYoIlxuQ29uc3RhbnRzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbkNv
bnN0YW50czpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIHByaW50ZigiICAgayV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwg
dmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgpKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICBrJXUgPSAlc1xuIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIG1fY29u
c3RhbnRSZWdpc3RlcnNbaV0uZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytp
OwogICAgICAgICB9IHdoaWxlIChpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCkpOwogICAg
IH0KIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5tX3JlZ2V4cHM6XG4iKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIlxubV9yZWdleHBzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAg
ZG8gewotICAgICAgICAgICAgcHJpbnRmKCIgIHJlJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCByZWdleHBUb1NvdXJjZVN0cmluZyhtX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaV0u
Z2V0KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgcmUldSA9
ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHJlZ2V4cFRvU291cmNlU3RyaW5nKG1f
cmFyZURhdGEtPm1fcmVnZXhwc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuc2l6ZSgp
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQogICAgIGlmICghbV9nbG9iYWxSZXNvbHZlSW5m
b3MuaXNFbXB0eSgpIHx8ICFtX3N0cnVjdHVyZVN0dWJJbmZvcy5pc0VtcHR5KCkpCi0gICAgICAg
IHByaW50ZigiXG5TdHJ1Y3R1cmVzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcblN0cnVj
dHVyZXM6XG4iKTsKIAogICAgIGlmICghbV9nbG9iYWxSZXNvbHZlSW5mb3MuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHNpemVfdCBpID0gMDsKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgaWYgKCFtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuaXNFbXB0eSgpIHx8ICFt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcHJpbnRmKCJc
blN0cnVjdHVyZXM6XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuU3RydWN0dXJlczpcbiIp
OwogCiAgICAgaWYgKCFtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHNpemVfdCBpID0gMDsKQEAgLTQzMywzNiArNDMzLDM2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZURhdGEg
JiYgIW1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHByaW50ZigiXG5FeGNlcHRpb24gSGFuZGxlcnM6XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYo
IlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIlx0ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6
IFslNGRdIHRhcmdldDogWyU0ZF0gfVxuIiwgaSArIDEsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5k
LCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldLnRhcmdldCk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBb
JTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5zdGFy
dCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
fSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpKTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1faW1tZWRpYXRl
U3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJpbnRmKCJJbW1lZGlhdGUg
U3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJJbW1lZGlhdGUg
U3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9
IDA7CiAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVu
ZCgpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zm
c2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCEqaXRlcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOworICAgICAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8
IG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0
Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICBwcmludGYoIlxuQ2hhcmFjdGVyIFN3
aXRjaCBKdW1wIFRhYmxlczpcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiXG5DaGFyYWN0ZXIg
U3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9
IDA7CiAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVu
ZCgpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zm
c2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CkBAIC00NzAsMjcg
KzQ3MCwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsg
bV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZG
KSk7CiAgICAgICAgICAgICAgICAgVUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkg
KyBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAg
ICAgICAgICAgICBwcmludGYoIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZygmY2gsIDEp
LnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXHRc
dFwiJXNcIiA9PiAlMDRkXG4iLCBVU3RyaW5nKCZjaCwgMSkudXRmOCgpLmRhdGEoKSwgKml0ZXIp
OwogICAgICAgICB9Ci0gICAgICAgICAgICBwcmludGYoIiAgICAgIH1cbiIpOworICAgICAgICAg
ICAgZGVidWdQcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9
IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLnNpemUo
KSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5TdHJp
bmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcblN0cmlu
ZyBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgU3RyaW5nSnVt
cFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAg
ICAgICAgZm9yIChTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNl
dFRhYmxlLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgcHJp
bnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5k
YXRhKCksIGl0ZXItPnNlY29uZC5icmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgcHJpbnRmKCIg
ICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXHRcdFwiJXNcIiA9PiAl
MDRkXG4iLCBVU3RyaW5nKGl0ZXItPmZpcnN0KS51dGY4KCkuZGF0YSgpLCBpdGVyLT5zZWNvbmQu
YnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICB9XG4iKTsKICAg
ICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIHByaW50ZigiXG4iKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiXG4iKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4s
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCkgY29uc3QKQEAgLTQ5OCw3
MyArNDk4LDczIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICBpbnQgbG9jYXRpb24gPSBpdCAtIGJlZ2luOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+Z2V0T3Bjb2RlSUQoaXQtPnUub3Bjb2RlKSkgewogICAgICAgICBjYXNlIG9wX2VudGVy
OiB7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGVudGVyXG4iLCBsb2NhdGlvbik7CisgICAg
ICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZW50ZXJcbiIsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
cHJpbnRmKCJbJTRkXSBjcmVhdGVfYWN0aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBj
cmVhdGVfYWN0aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
Y3JlYXRlX2FyZ3VtZW50czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2luaXRfbGF6eV9yZWc6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBpbml0X2xhenlf
cmVnXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gb3Bf
Z2V0X2NhbGxlZSAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBvcF9nZXRfY2FsbGVlICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY3JlYXRlX3RoaXMgJXMg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGNy
ZWF0ZV90aGlzICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY29u
dmVydF90aGlzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gY29udmVydF90aGlzXHQgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsKICAgICAgICAg
ICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd2ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgYXJndikuZGF0YSgpLCBhcmdjKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRk
XSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJndikuZGF0YSgpLCBhcmdjKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1
ZmZlcjogewogICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmdj
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG5ld19hcnJh
eV9idWZmZXIgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3Qp
LmRhdGEoKSwgYXJndiwgYXJnYyk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbmV3
X2FycmF5X2J1ZmZlciAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmUwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG5ld19yZWdleHBcdCAlcywgIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCJbJTRkXSBuZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAocjAgPj0wICYmIHIwIDwgKGludCludW1iZXJP
ZlJlZ0V4cHMoKSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiVzXG4iLCByZWdleHBOYW1lKHJl
MCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIiVz
XG4iLCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJiYWRfcmVnZXhwKCVkKVxuIiwgcmUwKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiYmFkX3JlZ2V4cCglZClcbiIsIHJlMCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbW92XHRcdCAlcywg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIG1v
dlx0XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CkBAIC02MTMsMTIgKzYxMywxMiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50
ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3ByZV9kZWM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwcmVfZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJb
JTRkXSBwcmVfZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cG9zdF9pbmM6IHsKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5z
dGFuY2U6IHsKICAgICAgICAgICAgIGludCBiYXNlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6IHsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIzKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGluc3RhbmNl
b2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90eXBlb2Y6IHsKQEAgLTc0MCw3
ICs3NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gcmVzb2x2ZVx0XHQgJXMs
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShp
ZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzQ4LDE0ICs3NDgsMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX3NraXBcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmll
cnNbaWQwXSkuZGF0YSgpLCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJb
JTRkXSByZXNvbHZlX3NraXBcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
LCBza2lwTGV2ZWxzKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxcdCAl
cywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmlu
dGYoIlslNGRdIHJlc29sdmVfZ2xvYmFsXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpKTsKICAgICAgICAgICAgIGl0ICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBKU1ZhbHVlKCgrK2l0KS0+dS5qc0Nl
bGwuZ2V0KCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGludCBkZXB0aCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX2dsb2Jh
bF9keW5hbWljXHQgJXMsICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMs
ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
dmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKICAgICAgICAgICAgICsraXQ7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBnZXRfc2NvcGVkX3Zhclx0ICVzLCAlZCwgJWRcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaW5kZXgsIHNraXBMZXZl
bHMpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGdldF9zY29wZWRfdmFyXHQgJXMs
ICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRl
eCwgc2tpcExldmVscyk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTc4MSw0MSArNzgxLDQxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBwdXRfc2NvcGVkX3Zhclx0ICVkLCAlZCwgJXNcbiIsIGxvY2F0aW9uLCBpbmRleCwgc2tp
cExldmVscywgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIlslNGRdIHB1dF9zY29wZWRfdmFyXHQgJWQsICVkLCAlc1xuIiwgbG9jYXRpb24s
IGluZGV4LCBza2lwTGV2ZWxzLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBnZXRfZ2xvYmFsX3Zhclx0ICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCBpbmRleCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZ2V0
X2dsb2JhbF92YXJcdCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaW5kZXgpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAg
IGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHB1dF9nbG9iYWxfdmFy
XHQgJWQsICVzXG4iLCBsb2NhdGlvbiwgaW5kZXgsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhclx0ICVk
LCAlc1xuIiwgbG9jYXRpb24sIGluZGV4LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVf
YmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaXNTdHJp
Y3QgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2
ZV9iYXNlJXNcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBpc1N0cmljdCA/ICJfc3RyaWN0IiA6ICIi
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHJlc29sdmVf
YmFzZSVzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNb
aWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJv
cGVydHlfZXhpc3RzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlfZXhpc3RzXHQgJXMsICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX2Jhc2U6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfd2l0aF9iYXNlICVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEo
KSk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTgyMyw3ICs4MjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAl
cywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gcmVzb2x2ZV93aXRo
X3RoaXMgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlm
aWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC05MDUsMjUgKzkwNSwyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBw
dXRfZ2V0dGVyX3NldHRlclx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIy
KS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHB1dF9nZXR0ZXJfc2V0
dGVyXHQgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21ldGhvZF9jaGVj
azogewotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBtZXRob2RfY2hlY2tcbiIsIGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBtZXRob2RfY2hlY2tcbiIsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVs
X2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBkZWxfYnlfaWRc
dCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJz
W2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZGVsX2J5X2lk
XHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfdmFsOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRd
IGdldF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZ2V0X2J5
X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZ2V0X2FyZ3VtZW50
X2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBnZXRfYXJndW1l
bnRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC05NDIsMzggKzk0MiwzOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHI1ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9i
eV9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBnZXRfYnlfcG5hbWVcdCAlcywg
JXMsICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByNCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHB1
dF9ieV9pbmRleFx0ICVzLCAldSwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7CiAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlsl
NGRdIGptcFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBqbXBcdFx0ICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3A6IHsKICAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbG9v
cFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBsb29wXHRcdCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qdHJ1ZTogewpAQCAtMTAwNCwxMjkgKzEwMDQsMTI5
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGpuZXFfcHRyXHRcdCAlcywgJXMsICVkKC0+JWQp
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNzOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZGVidWdQcmludGYoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludGYoIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gam5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQo
LT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+
JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9p
Zl9sZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3Bf
aWZfbGVzc2VxXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbG9vcF9p
Zl9sZXNzZXFcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVz
LCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9o
aW50OiB7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24p
OworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hf
aW1tOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSBzd2l0Y2hfaW1tXHQgJWQsICVkKC0+JWQpLCAlc1xuIiwgbG9j
YXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRhcmdl
dCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGVidWdQcmludGYoIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwgJWQoLT4lZCksICVzXG4i
LCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0
VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFy
OiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxvY2F0
aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQs
IHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVkLCAlZCgtPiVkKSwgJXNcbiIs
IGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRU
YXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmlu
ZzogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxv
Y2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJn
ZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQsICVkKC0+JWQpLCAl
c1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVu
YzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzaG91bGRDaGVj
ayA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfZnVu
Y1x0XHQgJXMsIGYlZCwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgZjAsIHNob3VsZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBuZXdfZnVuY1x0XHQgJXMsIGYlZCwgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3VsZENoZWNr
ID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVk
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVkXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewpAQCAtMTE0MiwzNSArMTE0
MiwzNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAg
ICAgICBpbnQgdGhpc1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
YXJndW1lbnRzID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVl
UmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
Y2FsbF92YXJhcmdzXHQgJXMsICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rl
cik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVz
LCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRlYXJfb2Zm
X2FjdGl2YXRpb25cdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90
ZWFyX29mZl9hcmd1bWVudHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gdGVhcl9vZmZfYXJndW1lbnRzICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXRcdFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQ
cmludGYoIlslNGRdIHJldFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gb3BfY2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3JldF9vYmpl
Y3Rfb3JfdGhpczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2NvbnN0cnVjdDogewpAQCAtMTE4MSwxMyArMTE4MSwxMyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludGYoIlslNGRdIHN0cmNhdFx0XHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291
bnQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHN0cmNhdFx0XHQgJXMsICVzLCAl
ZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgY291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRvX3ByaW1pdGl2ZVx0ICVzLCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gdG9fcHJpbWl0
aXZlXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczogewpAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAg
aW50IHIyID0gaXRbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIzID0gaXRbNF0udS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzVdLnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gZ2V0X3BuYW1lc1x0ICVzLCAlcywgJXMsICVzLCAlZCgtPiVk
KVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAlcywgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwogICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKSAtIDE7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTIwNyw3OCArMTIwNyw3OCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
c2l6ZSA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpdGVyID0gaXRbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzZdLnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJWQo
LT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVzdCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaXRl
cikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBuZXh0X3BuYW1lXHQgJXMsICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKVxu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpdGVyKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgaXQgKz0gT1BDT0RF
X0xFTkdUSChvcF9uZXh0X3BuYW1lKSAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1c2hfc2NvcGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwdXNoX3Njb3BlXHQg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gcHVzaF9zY29wZVx0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsKLSAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gcG9wX3Njb3BlXG4iLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0
ZF0gcG9wX3Njb3BlXG4iLCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1c2hfbmV3X3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVu
dGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3Blczog
ewogICAgICAgICAgICAgaW50IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gam1wX3Njb3Blc1x0XiVkLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHNjb3BlRGVs
dGEsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGVidWdQcmludGYo
IlslNGRdIGptcF9zY29wZXNcdF4lZCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBzY29wZURlbHRh
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjYXRjaFx0XHQgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gY2F0Y2hcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF90aHJvdzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRocm93XHRcdCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCJbJTRkXSB0aHJvd1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3Rocm93X3JlZmVyZW5jZV9lcnJvcjogewogICAgICAgICAgICAgaW50IGswID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRocm93X3JlZmVyZW5jZV9lcnJv
clx0ICVzXG4iLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4ZWMsIGswLCBnZXRDb25zdGFudChr
MCkpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gdGhyb3dfcmVmZXJl
bmNlX2Vycm9yXHQgJXNcbiIsIGxvY2F0aW9uLCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENv
bnN0YW50KGswKSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfanNyOiB7CiAgICAgICAgICAgICBpbnQgcmV0QWRkckRzdCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqc3JcdFx0ICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByZXRBZGRyRHN0KS5kYXRhKCksIG9mZnNldCwgbG9jYXRp
b24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGpzclx0XHQgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHJldEFkZHJEc3QpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3NyZXQ6IHsKICAgICAgICAgICAgIGludCByZXRBZGRy
U3JjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHNyZXRc
dFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHJldEFkZHJTcmMpLmRhdGEo
KSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gc3JldFx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkclNyYykuZGF0YSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVidWc6IHsKICAgICAgICAgICAg
IGludCBkZWJ1Z0hvb2tJRCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGZp
cnN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxhc3RMaW5lID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGRlYnVnXHRcdCAl
cywgJWQsICVkXG4iLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0
TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGRlYnVnXHRc
dCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZp
cnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDogewogICAgICAgICAgICAgaW50IGZ1bmN0aW9u
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHByb2ZpbGVf
d2lsbF9jYWxsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5k
YXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxs
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcm9maWxlX2Rp
ZF9jYWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGVidWdQcmludGYoIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxcdCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZW5kOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZW5kXHRcdCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCJbJTRkXSBlbmRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMzgyLDI5ICsxMzgyLDI5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcygp
CiAgICAgdG90YWxTaXplICs9IHN5bWJvbFRhYmxlVG90YWxTaXplOwogICAgIHRvdGFsU2l6ZSAr
PSAobGl2ZUNvZGVCbG9ja1NldC5zaXplKCkgKiBzaXplb2YoQ29kZUJsb2NrKSk7CiAKLSAgICBw
cmludGYoIk51bWJlciBvZiBsaXZlIENvZGVCbG9ja3M6ICVkXG4iLCBsaXZlQ29kZUJsb2NrU2V0
LnNpemUoKSk7Ci0gICAgcHJpbnRmKCJTaXplIG9mIGEgc2luZ2xlIENvZGVCbG9jayBbc2l6ZW9m
KENvZGVCbG9jayldOiAlenVcbiIsIHNpemVvZihDb2RlQmxvY2spKTsKLSAgICBwcmludGYoIlNp
emUgb2YgYWxsIENvZGVCbG9ja3M6ICV6dVxuIiwgdG90YWxTaXplKTsKLSAgICBwcmludGYoIkF2
ZXJhZ2Ugc2l6ZSBvZiBhIENvZGVCbG9jazogJXp1XG4iLCB0b3RhbFNpemUgLyBsaXZlQ29kZUJs
b2NrU2V0LnNpemUoKSk7Ci0KLSAgICBwcmludGYoIk51bWJlciBvZiBGdW5jdGlvbkNvZGUgQ29k
ZUJsb2NrczogJXp1ICglLjNmJSUpXG4iLCBpc0Z1bmN0aW9uQ29kZSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihpc0Z1bmN0aW9uQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsK
LSAgICBwcmludGYoIk51bWJlciBvZiBHbG9iYWxDb2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUl
KVxuIiwgaXNHbG9iYWxDb2RlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGlzR2xvYmFsQ29kZSkgKiAx
MDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKLSAgICBwcmludGYoIk51bWJlciBvZiBF
dmFsQ29kZSBDb2RlQmxvY2tzOiAlenUgKCUuM2YlJSlcbiIsIGlzRXZhbENvZGUsIHN0YXRpY19j
YXN0PGRvdWJsZT4oaXNFdmFsQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgp
KTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIGxpdmUgQ29kZUJsb2NrczogJWRcbiIsIGxp
dmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiU2l6ZSBvZiBhIHNpbmds
ZSBDb2RlQmxvY2sgW3NpemVvZihDb2RlQmxvY2spXTogJXp1XG4iLCBzaXplb2YoQ29kZUJsb2Nr
KSk7CisgICAgZGVidWdQcmludGYoIlNpemUgb2YgYWxsIENvZGVCbG9ja3M6ICV6dVxuIiwgdG90
YWxTaXplKTsKKyAgICBkZWJ1Z1ByaW50ZigiQXZlcmFnZSBzaXplIG9mIGEgQ29kZUJsb2NrOiAl
enVcbiIsIHRvdGFsU2l6ZSAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKworICAgIGRlYnVn
UHJpbnRmKCJOdW1iZXIgb2YgRnVuY3Rpb25Db2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxu
IiwgaXNGdW5jdGlvbkNvZGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaXNGdW5jdGlvbkNvZGUpICog
MTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7CisgICAgZGVidWdQcmludGYoIk51bWJl
ciBvZiBHbG9iYWxDb2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNHbG9iYWxDb2Rl
LCBzdGF0aWNfY2FzdDxkb3VibGU+KGlzR2xvYmFsQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxv
Y2tTZXQuc2l6ZSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIEV2YWxDb2RlIENvZGVC
bG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNFdmFsQ29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihp
c0V2YWxDb2RlKSAqIDEwMC4wIC8gbGl2ZUNvZGVCbG9ja1NldC5zaXplKCkpOwogCi0gICAgcHJp
bnRmKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRoIHJhcmUgZGF0YTogJXp1ICglLjNmJSUpXG4i
LCBoYXNSYXJlRGF0YSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihoYXNSYXJlRGF0YSkgKiAxMDAuMCAv
IGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIENv
ZGVCbG9ja3Mgd2l0aCByYXJlIGRhdGE6ICV6dSAoJS4zZiUlKVxuIiwgaGFzUmFyZURhdGEsIHN0
YXRpY19jYXN0PGRvdWJsZT4oaGFzUmFyZURhdGEpICogMTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0
LnNpemUoKSk7CiAKLSAgICAjZGVmaW5lIFBSSU5UX1NUQVRTKG5hbWUpIHByaW50ZigiTnVtYmVy
IG9mIENvZGVCbG9ja3Mgd2l0aCAiICNuYW1lICI6ICV6dVxuIiwgbmFtZSMjSXNOb3RFbXB0eSk7
IHByaW50ZigiU2l6ZSBvZiBhbGwgIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI1RvdGFsU2l6ZSk7
IAorICAgICNkZWZpbmUgUFJJTlRfU1RBVFMobmFtZSkgZGVidWdQcmludGYoIk51bWJlciBvZiBD
b2RlQmxvY2tzIHdpdGggIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI0lzTm90RW1wdHkpOyBkZWJ1
Z1ByaW50ZigiU2l6ZSBvZiBhbGwgIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI1RvdGFsU2l6ZSk7
IAogICAgICAgICBGT1JfRUFDSF9NRU1CRVJfVkVDVE9SKFBSSU5UX1NUQVRTKQogICAgICAgICBG
T1JfRUFDSF9NRU1CRVJfVkVDVE9SX1JBUkVfREFUQShQUklOVF9TVEFUUykKICAgICAjdW5kZWYg
UFJJTlRfU1RBVFMKIAotICAgIHByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9ja3Mgd2l0aCBldmFs
Q29kZUNhY2hlOiAlenVcbiIsIGV2YWxDb2RlQ2FjaGVJc05vdEVtcHR5KTsKLSAgICBwcmludGYo
Ik51bWJlciBvZiBDb2RlQmxvY2tzIHdpdGggc3ltYm9sVGFibGU6ICV6dVxuIiwgc3ltYm9sVGFi
bGVJc05vdEVtcHR5KTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9ja3Mgd2l0
aCBldmFsQ29kZUNhY2hlOiAlenVcbiIsIGV2YWxDb2RlQ2FjaGVJc05vdEVtcHR5KTsKKyAgICBk
ZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9ja3Mgd2l0aCBzeW1ib2xUYWJsZTogJXp1XG4i
LCBzeW1ib2xUYWJsZUlzTm90RW1wdHkpOwogCi0gICAgcHJpbnRmKCJTaXplIG9mIGFsbCBzeW1i
b2xUYWJsZXM6ICV6dVxuIiwgc3ltYm9sVGFibGVUb3RhbFNpemUpOworICAgIGRlYnVnUHJpbnRm
KCJTaXplIG9mIGFsbCBzeW1ib2xUYWJsZXM6ICV6dVxuIiwgc3ltYm9sVGFibGVUb3RhbFNpemUp
OwogCiAjZWxzZQotICAgIHByaW50ZigiRHVtcGluZyBDb2RlQmxvY2sgc3RhdGlzdGljcyBpcyBu
b3QgZW5hYmxlZC5cbiIpOworICAgIGRlYnVnUHJpbnRmKCJEdW1waW5nIENvZGVCbG9jayBzdGF0
aXN0aWNzIGlzIG5vdCBlbmFibGVkLlxuIik7CiAjZW5kaWYKIH0KIApAQCAtMTczNiw3ICsxNzM2
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgIC8vIENo
ZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYg
KCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0Rh
dGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtp
bmcpCi0gICAgICAgICAgICBwcmludGYoIkNvZGUgYmxvY2sgJXAgaGFzIGRlYWQgd2VhayByZWZl
cmVuY2VzLCBqZXR0aXNvbmluZyBkdXJpbmcgR0MuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJDb2RlIGJsb2NrICVwIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlz
b25pbmcgZHVyaW5nIEdDLlxuIiwgdGhpcyk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIGJhc2VsaW5lIEpJVCBrbm93cyB0aGF0IGl0IHNob3VsZCByZS13YXJtLXVwIGJlZm9yZQog
ICAgICAgICAvLyBvcHRpbWl6aW5nLgpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGNh
bGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8o
aSkuY2FsbGVlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KQotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIGNhbGwgZnJvbSAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiQ2xlYXJpbmcgY2FsbCBm
cm9tICVwLlxuIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnVubGlu
aygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZQpAQCAtMTc2NCw3ICsxNzY0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBm
b3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0
cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0
dXJlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIHJlc29sdmUgaW5mbyBpbiAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiQ2xlYXJpbmcgcmVzb2x2
ZSBpbmZvIGluICVwLlxuIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5mb3NbaV0uc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTE3NzgsNyArMTc3OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBz
dHJ1Y3R1cmUgY2FjaGUgKGtpbmQgJWQpIGluICVwLlxuIiwgc3R1YkluZm8uYWNjZXNzVHlwZSwg
dGhpcyk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIkNsZWFyaW5nIHN0cnVjdHVyZSBj
YWNoZSAoa2luZCAlZCkgaW4gJXAuXG4iLCBzdHViSW5mby5hY2Nlc3NUeXBlLCB0aGlzKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzR2V0QnlJZEFjY2VzcyhhY2Nlc3NUeXBlKSkg
ewogICAgICAgICAgICAgICAgIGlmIChnZXRKSVRDb2RlKCkuaml0VHlwZSgpID09IEpJVENvZGU6
OkRGR0pJVCkKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICB8fCAhSGVhcDo6aXNNYXJrZWQobV9tZXRo
b2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZEZ1bmN0aW9uLmdldCgpKQogICAgICAgICAgICAgICAg
IHx8ICFIZWFwOjppc01hcmtlZChtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90
eXBlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIG1ldGhvZCBjYWxsIGluICVwLlxuIiwg
dGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJDbGVhcmluZyBtZXRob2Qg
Y2FsbCBpbiAlcC5cbiIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FsbExpbmtJ
bmZvc1tpXS5yZXNldChyZXBhdGNoQnVmZmVyLCBnZXRKSVRUeXBlKCkpOwogCiAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1YkluZm8obV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmJ5dGVjb2RlSW5kZXgpOwpAQCAtMjIxMSw3ICsyMjExLDcgQEAgdm9p
ZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9w
dGltaXplTm93KCkKIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50Zigi
Q29uc2lkZXJpbmcgb3B0aW1pemluZyAlcC4uLlxuIiwgdGhpcyk7CisgICAgZGVidWdQcmludGYo
IkNvbnNpZGVyaW5nIG9wdGltaXppbmcgJXAuLi5cbiIsIHRoaXMpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KCkKICAgICB9CiAKICNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQotICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRv
dWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9m
aWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CisgICAgZGVi
dWdQcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChkb3VibGUpbnVtYmVyT2ZM
aXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCksIChk
b3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZC
dWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOwogI2VuZGlmCiAKICAgICBpZiAoKCFu
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB8fCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50
VmFsdWVQcm9maWxlcyAvIG51bWJlck9mVmFsdWVQcm9maWxlcygpID49IE9wdGlvbnM6OmRlc2ly
ZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsICJPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3IgY29kZSBibG9jayAlcCBvY2N1
cnJlZCBmcmVxdWVudGx5OyBjb3VudGluZyBhcyBmcmVxdWVudCBleGl0IHNpdGUuXG4iLCBpLCBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBERkc6OmV4
aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0aGlzKTsKKyAgICAgICAgZGVidWdQcmludGYo
Ik9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwIG9jY3VycmVk
IGZyZXF1ZW50bHk7IGNvdW50aW5nIGFzIGZyZXF1ZW50IGV4aXQgc2l0ZS5cbiIsIGksIGV4aXQu
bV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGV4aXQubV9ub2RlSW5kZXgsIERGRzo6ZXhpdEtp
bmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRoaXMpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMjI3
OSwzMCArMjI3OSwzMCBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcygp
CiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKIHZvaWQgQ29kZUJsb2NrOjpkdW1w
VmFsdWVQcm9maWxlcygpCiB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJWYWx1ZVByb2ZpbGUgZm9y
ICVwOlxuIiwgdGhpcyk7CisgICAgZGVidWdQcmludGYoIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4i
LCB0aGlzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA8IDApIHsKICAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0
ID09IC0xKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgYXJnID0gJXU6ICIsIGkp
OworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgIGFyZyA9ICV1OiAiLCBpKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6ICIsIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgIGJjID0g
JWQ6ICIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBpZiAoIXByb2ZpbGUt
Pm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUtPm1fcHJlZGljdGlvbiA9PSBQcmVkaWN0Tm9u
ZSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8ZW1wdHk+XG4iKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCI8ZW1wdHk+XG4iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIHByb2ZpbGUtPmR1bXAoc3RkZXJyKTsKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICJcbiIpOworICAgICAgICBwcm9maWxlLT5kdW1wKFdURjo6ZGVidWdGaWxlKCkpOwor
ICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICJS
YXJlQ2FzZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGVidWdQcmludGYoIlJhcmVD
YXNlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBSYXJlQ2FzZVBy
b2ZpbGUqIHByb2ZpbGUgPSByYXJlQ2FzZVByb2ZpbGUoaSk7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQsIHByb2Zp
bGUtPm1fY291bnRlcik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICBiYyA9ICVkOiAldVxuIiwg
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCwgcHJvZmlsZS0+bV9jb3VudGVyKTsKICAgICB9Ci0g
ICAgZnByaW50ZihzdGRlcnIsICJTcGVjaWFsRmFzdENhc2VQcm9maWxlIGZvciAlcDpcbiIsIHRo
aXMpOworICAgIGRlYnVnUHJpbnRmKCJTcGVjaWFsRmFzdENhc2VQcm9maWxlIGZvciAlcDpcbiIs
IHRoaXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlNwZWNpYWxGYXN0
Q2FzZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBSYXJlQ2FzZVByb2ZpbGUqIHByb2ZpbGUg
PSBzcGVjaWFsRmFzdENhc2VQcm9maWxlKGkpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
IGJjID0gJWQ6ICV1XG4iLCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0LCBwcm9maWxlLT5tX2Nv
dW50ZXIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQsIHByb2ZpbGUtPm1fY291bnRlcik7CiAgICAgfQogfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAkocmV2aXNp
b24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCwxOSArMTE4LDE5IEBAIE9wY29kZVN0YXRzOjp+T3Bjb2Rl
U3RhdHMoKQogICAgICAgICAgICAgKihjdXJyZW50UGFpckluZGV4KyspID0gbWFrZV9wYWlyKGks
IGopOwogICAgIHFzb3J0KHNvcnRlZFBhaXJJbmRpY2VzLCBudW1PcGNvZGVJRHMgKiBudW1PcGNv
ZGVJRHMsIHNpemVvZihwYWlyPGludCwgaW50PiksIGNvbXBhcmVPcGNvZGVQYWlySW5kaWNlcyk7
CiAgICAgCi0gICAgcHJpbnRmKCJcbkV4ZWN1dGVkIG9wY29kZSBzdGF0aXN0aWNzXG4iKTsgCisg
ICAgZGVidWdQcmludGYoIlxuRXhlY3V0ZWQgb3Bjb2RlIHN0YXRpc3RpY3NcbiIpOyAKICAgICAK
LSAgICBwcmludGYoIlRvdGFsIGluc3RydWN0aW9ucyBleGVjdXRlZDogJWxsZFxuXG4iLCB0b3Rh
bEluc3RydWN0aW9ucyk7CisgICAgZGVidWdQcmludGYoIlRvdGFsIGluc3RydWN0aW9ucyBleGVj
dXRlZDogJWxsZFxuXG4iLCB0b3RhbEluc3RydWN0aW9ucyk7CiAKLSAgICBwcmludGYoIkFsbCBv
cGNvZGVzIGJ5IGZyZXF1ZW5jeTpcblxuIik7CisgICAgZGVidWdQcmludGYoIkFsbCBvcGNvZGVz
IGJ5IGZyZXF1ZW5jeTpcblxuIik7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29k
ZUlEczsgKytpKSB7CiAgICAgICAgIGludCBpbmRleCA9IHNvcnRlZEluZGljZXNbaV07Ci0gICAg
ICAgIHByaW50ZigiJXM6JXMgJWxsZCAtICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhdLCBw
YWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleCwgMjgpLCBvcGNvZGVDb3VudHNbaW5kZXhdLCAo
KGRvdWJsZSkgb3Bjb2RlQ291bnRzW2luZGV4XSkgLyAoKGRvdWJsZSkgdG90YWxJbnN0cnVjdGlv
bnMpICogMTAwLjApOyAgICAKKyAgICAgICAgZGVidWdQcmludGYoIiVzOiVzICVsbGQgLSAlLjJm
JSVcbiIsIG9wY29kZU5hbWVzW2luZGV4XSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXgs
IDI4KSwgb3Bjb2RlQ291bnRzW2luZGV4XSwgKChkb3VibGUpIG9wY29kZUNvdW50c1tpbmRleF0p
IC8gKChkb3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25zKSAqIDEwMC4wKTsgICAgCiAgICAgfQogICAg
IAotICAgIHByaW50ZigiXG4iKTsKLSAgICBwcmludGYoIjItb3Bjb2RlIHNlcXVlbmNlcyBieSBm
cmVxdWVuY3k6ICVsbGRcblxuIiwgdG90YWxJbnN0cnVjdGlvbnMpOworICAgIGRlYnVnUHJpbnRm
KCJcbiIpOworICAgIGRlYnVnUHJpbnRmKCIyLW9wY29kZSBzZXF1ZW5jZXMgYnkgZnJlcXVlbmN5
OiAlbGxkXG5cbiIsIHRvdGFsSW5zdHJ1Y3Rpb25zKTsKICAgICAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEcyAqIG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgIHBhaXI8
aW50LCBpbnQ+IGluZGV4UGFpciA9IHNvcnRlZFBhaXJJbmRpY2VzW2ldOwpAQCAtMTM5LDExICsx
MzksMTEgQEAgT3Bjb2RlU3RhdHM6On5PcGNvZGVTdGF0cygpCiAgICAgICAgIGlmICghY291bnQp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHByaW50ZigiJXMlcyAlczol
cyAlbGxkICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLmZpcnN0XSwgcGFkT3Bjb2Rl
TmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLmZpcnN0LCAyOCksIG9wY29kZU5hbWVzW2luZGV4UGFp
ci5zZWNvbmRdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIuc2Vjb25kLCAyOCks
IGNvdW50LCAoKGRvdWJsZSkgY291bnQpIC8gKChkb3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25QYWly
cykgKiAxMDAuMCk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlcyVzICVzOiVzICVsbGQgJS4yZiUl
XG4iLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuZmlyc3RdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJ
RClpbmRleFBhaXIuZmlyc3QsIDI4KSwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLnNlY29uZF0sIHBh
ZE9wY29kZU5hbWUoKE9wY29kZUlEKWluZGV4UGFpci5zZWNvbmQsIDI4KSwgY291bnQsICgoZG91
YmxlKSBjb3VudCkgLyAoKGRvdWJsZSkgdG90YWxJbnN0cnVjdGlvblBhaXJzKSAqIDEwMC4wKTsK
ICAgICB9CiAgICAgCi0gICAgcHJpbnRmKCJcbiIpOwotICAgIHByaW50ZigiTW9zdCBjb21tb24g
b3Bjb2RlcyBhbmQgc2VxdWVuY2VzOlxuIik7CisgICAgZGVidWdQcmludGYoIlxuIik7CisgICAg
ZGVidWdQcmludGYoIk1vc3QgY29tbW9uIG9wY29kZXMgYW5kIHNlcXVlbmNlczpcbiIpOwogCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICBpbnQg
aW5kZXggPSBzb3J0ZWRJbmRpY2VzW2ldOwpAQCAtMTUxLDcgKzE1MSw3IEBAIE9wY29kZVN0YXRz
Ojp+T3Bjb2RlU3RhdHMoKQogICAgICAgICBkb3VibGUgb3Bjb2RlUHJvcG9ydGlvbiA9ICgoZG91
YmxlKSBvcGNvZGVDb3VudCkgLyAoKGRvdWJsZSkgdG90YWxJbnN0cnVjdGlvbnMpOwogICAgICAg
ICBpZiAob3Bjb2RlUHJvcG9ydGlvbiA8IDAuMDAwMSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBwcmludGYoIlxuJXM6JXMgJWxsZCAtICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhd
LCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleCwgMjgpLCBvcGNvZGVDb3VudCwgb3Bjb2Rl
UHJvcG9ydGlvbiAqIDEwMC4wKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuJXM6JXMgJWxsZCAt
ICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClp
bmRleCwgMjgpLCBvcGNvZGVDb3VudCwgb3Bjb2RlUHJvcG9ydGlvbiAqIDEwMC4wKTsKIAogICAg
ICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bU9wY29kZUlEcyAqIG51bU9wY29kZUlEczsgKytq
KSB7CiAgICAgICAgICAgICBwYWlyPGludCwgaW50PiBpbmRleFBhaXIgPSBzb3J0ZWRQYWlySW5k
aWNlc1tqXTsKQEAgLTE2NCwxMSArMTY0LDExIEBAIE9wY29kZVN0YXRzOjp+T3Bjb2RlU3RhdHMo
KQogICAgICAgICAgICAgaWYgKGluZGV4UGFpci5maXJzdCAhPSBpbmRleCAmJiBpbmRleFBhaXIu
c2Vjb25kICE9IGluZGV4KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBwcmludGYoIiAgICAlcyVzICVzOiVzICVsbGQgLSAlLjJmJSVcbiIsIG9wY29kZU5hbWVzW2lu
ZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUoKE9wY29kZUlEKWluZGV4UGFpci5maXJzdCwg
MjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vjb25kXSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2Rl
SUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBwYWlyQ291bnQsIHBhaXJQcm9wb3J0aW9uICogMTAw
LjApOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAlcyVzICVzOiVzICVsbGQgLSAlLjJm
JSVcbiIsIG9wY29kZU5hbWVzW2luZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUoKE9wY29k
ZUlEKWluZGV4UGFpci5maXJzdCwgMjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vjb25kXSwg
cGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBwYWlyQ291bnQs
IHBhaXJQcm9wb3J0aW9uICogMTAwLjApOwogICAgICAgICB9CiAgICAgICAgIAogICAgIH0KLSAg
ICBwcmludGYoIlxuIik7CisgICAgZGVidWdQcmludGYoIlxuIik7CiB9CiAKIHZvaWQgT3Bjb2Rl
U3RhdHM6OnJlY29yZEluc3RydWN0aW9uKGludCBvcGNvZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDE0ICs2NywxNCBAQCB2b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3Ao
KQogICAgICAgICB0b3RhbCArPSBzX2ZsYWdDb3VudHNbaV07CiAKICAgICBpZiAodG90YWwpIHsK
LSAgICAgICAgcHJpbnRmKCJcblNhbXBsaW5nRmxhZ3M6IHNhbXBsZSBjb3VudHMgd2l0aCBmbGFn
cyBzZXQ6ICglbGxkIHRvdGFsKVxuIiwgdG90YWwpOworICAgICAgICBkZWJ1Z1ByaW50ZigiXG5T
YW1wbGluZ0ZsYWdzOiBzYW1wbGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0OiAoJWxsZCB0b3RhbClc
biIsIHRvdGFsKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSAzMjsgKytpKSB7
CiAgICAgICAgICAgICBpZiAoc19mbGFnQ291bnRzW2ldKQotICAgICAgICAgICAgICAgIHByaW50
ZigiICBbICUwMmQgXSA6ICVsbGRcdFx0KCUwMy4yZiUlKVxuIiwgaSwgc19mbGFnQ291bnRzW2ld
LCAoMTAwLjAgKiBzX2ZsYWdDb3VudHNbaV0pIC8gdG90YWwpOworICAgICAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCIgIFsgJTAyZCBdIDogJWxsZFx0XHQoJTAzLjJmJSUpXG4iLCBpLCBzX2ZsYWdD
b3VudHNbaV0sICgxMDAuMCAqIHNfZmxhZ0NvdW50c1tpXSkgLyB0b3RhbCk7CiAgICAgICAgIH0K
LSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9
IGVsc2UKLSAgICBwcmludGYoIlxuU2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7Cisg
ICAgZGVidWdQcmludGYoIlxuU2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7CiB9CiB1
aW50NjRfdCBTYW1wbGluZ0ZsYWdzOjpzX2ZsYWdDb3VudHNbMzNdOwogCkBAIC0xNTEsNyArMTUx
LDcgQEAgdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpCiB2b2lkIFNhbXBsaW5nUmVnaW9uOjpk
dW1wSW50ZXJuYWwoKQogewogICAgIGlmICghc19zcGVjdHJ1bSkgewotICAgICAgICBwcmludGYo
IlxuU2FtcGxpbmdSZWdpb246IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKKyAgICAgICAgZGVi
dWdQcmludGYoIlxuU2FtcGxpbmdSZWdpb246IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTE2MSwxMCArMTYxLDEwIEBAIHZvaWQgU2Ft
cGxpbmdSZWdpb246OmR1bXBJbnRlcm5hbCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5z
aXplKCk7IGktLTspCiAgICAgICAgIHRvdGFsICs9IGxpc3RbaV0uY291bnQ7CiAgICAgCi0gICAg
cHJpbnRmKCJcblNhbXBsaW5nUmVnaW9uOiBzYW1wbGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1
IHNhbXBsZXMpXG4iLCB0b3RhbCk7CisgICAgZGVidWdQcmludGYoIlxuU2FtcGxpbmdSZWdpb246
IHNhbXBsZSBjb3VudHMgZm9yIHJlZ2lvbnM6ICglbHUgc2FtcGxlcylcbiIsIHRvdGFsKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07KQotICAgICAgICBwcmludGYo
IiAgICAlMy4ybGYlJSAgJXNcbiIsICgxMDAuMCAqIGxpc3RbaV0uY291bnQpIC8gdG90YWwsIGxp
c3RbaV0ua2V5KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICAlMy4ybGYlJSAgJXNcbiIsICgx
MDAuMCAqIGxpc3RbaV0uY291bnQpIC8gdG90YWwsIGxpc3RbaV0ua2V5KTsKIH0KICNlbHNlIC8v
IEVOQUJMRShTQU1QTElOR19SRUdJT05TKQogdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpIHsg
fQpAQCAtMzczLDEwICszNzMsMTAgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgLy8gKDIpIFByaW50IE9wY29kZSBzYW1wbGluZyByZXN1bHRzLgogCi0g
ICAgcHJpbnRmKCJcbkJ5dGVjb2RlIHNhbXBsZXMgWypdXG4iKTsKLSAgICBwcmludGYoIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlICAgJSUgb2YgICAgICAgJSUgb2YgICAgIHwg
ICBjdGkgICAgIGN0aSAlJVxuIik7Ci0gICAgcHJpbnRmKCJvcGNvZGUgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50ICAgICBWTSAgICAgICAgdG90YWwgICAgfCAgY291bnQgICBvZiBzZWxmXG4i
KTsKLSAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gICB8ICAtLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkZWJ1Z1ByaW50
ZigiXG5CeXRlY29kZSBzYW1wbGVzIFsqXVxuIik7CisgICAgZGVidWdQcmludGYoIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlICAgJSUgb2YgICAgICAgJSUgb2YgICAgIHwgICBj
dGkgICAgIGN0aSAlJVxuIik7CisgICAgZGVidWdQcmludGYoIm9wY29kZSAgICAgICAgICAgICAg
ICAgICAgICAgY291bnQgICAgIFZNICAgICAgICB0b3RhbCAgICB8ICBjb3VudCAgIG9mIHNlbGZc
biIpOworICAgIGRlYnVnUHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgfCAgLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgIGxvbmcgbG9u
ZyBjb3VudCA9IG9wY29kZVNhbXBsZUluZm9baV0uY291bnQ7CkBAIC0zOTEsMTggKzM5MSwxOCBA
QCB2b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGRvdWJs
ZSBwZXJjZW50T2ZUb3RhbCA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50KSAqIDEwMCkgLyBt
X3NhbXBsZUNvdW50OwogICAgICAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0aW9ucyA9IG9w
Y29kZVNhbXBsZUluZm9baV0uY291bnRJbkNUSUZ1bmN0aW9uczsKICAgICAgICAgZG91YmxlIHBl
cmNlbnRJbkNUSUZ1bmN0aW9ucyA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50SW5DVElGdW5j
dGlvbnMpICogMTAwKSAvIGNvdW50OwotICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzOiVzJS02
bGxkICUuM2YlJVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBvcGNvZGVOYW1lLCBv
cGNvZGVQYWRkaW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRvdGFsLCBjb3VudElu
Q1RJRnVuY3Rpb25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOworICAgICAgICBkZWJ1Z0RlYnVn
UHJpbnRmKCIlczolcyUtNmxsZCAlLjNmJSVcdCUuM2YlJVx0ICB8ICAgJS02bGxkICUuM2YlJVxu
Iiwgb3Bjb2RlTmFtZSwgb3Bjb2RlUGFkZGluZywgY291bnQsIHBlcmNlbnRPZlZNLCBwZXJjZW50
T2ZUb3RhbCwgY291bnRJbkNUSUZ1bmN0aW9ucywgcGVyY2VudEluQ1RJRnVuY3Rpb25zKTsKICAg
ICB9CiAgICAgCi0gICAgcHJpbnRmKCJcblsqXSBTYW1wbGVzIGluc2lkZSBob3N0IGNvZGUgYXJl
IG5vdCBjaGFyZ2VkIHRvIGFueSBCeXRlY29kZS5cblxuIik7Ci0gICAgcHJpbnRmKCJcdFNhbXBs
ZXMgaW5zaWRlIFZNOlx0XHQlbGxkIC8gJWxsZCAoJS4zZiUlKVxuIiwgbV9vcGNvZGVTYW1wbGVD
b3VudCwgbV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9vcGNvZGVTYW1wbGVD
b3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7Ci0gICAgcHJpbnRmKCJcdFNhbXBsZXMgaW5z
aWRlIGhvc3QgY29kZTpcdCVsbGQgLyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2FtcGxlQ291bnQg
LSBtX29wY29kZVNhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihtX3NhbXBsZUNvdW50IC0gbV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVD
b3VudCk7Ci0gICAgcHJpbnRmKCJcdHNhbXBsZSBjb3VudDpcdHNhbXBsZXMgaW5zaWRlIHRoaXMg
b3Bjb2RlXG4iKTsKLSAgICBwcmludGYoIlx0JSUgb2YgVk06XHRzYW1wbGUgY291bnQgLyBhbGwg
b3Bjb2RlIHNhbXBsZXNcbiIpOwotICAgIHByaW50ZigiXHQlJSBvZiB0b3RhbDpcdHNhbXBsZSBj
b3VudCAvIGFsbCBzYW1wbGVzXG4iKTsKLSAgICBwcmludGYoIlx0LS0tLS0tLS0tLS0tLS1cbiIp
OwotICAgIHByaW50ZigiXHRjdGkgY291bnQ6XHRzYW1wbGVzIGluc2lkZSBhIENUSSBmdW5jdGlv
biBjYWxsZWQgYnkgdGhpcyBvcGNvZGVcbiIpOwotICAgIHByaW50ZigiXHRjdGkgJSUgb2Ygc2Vs
ZjpcdGN0aSBjb3VudCAvIHNhbXBsZSBjb3VudFxuIik7CisgICAgZGVidWdQcmludGYoIlxuWypd
IFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgbm90IGNoYXJnZWQgdG8gYW55IEJ5dGVjb2Rl
LlxuXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHRTYW1wbGVzIGluc2lkZSBWTTpcdFx0JWxsZCAv
ICVsbGQgKCUuM2YlJSlcbiIsIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIChz
dGF0aWNfY2FzdDxkb3VibGU+KG1fb3Bjb2RlU2FtcGxlQ291bnQpICogMTAwKSAvIG1fc2FtcGxl
Q291bnQpOworICAgIGRlYnVnUHJpbnRmKCJcdFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZTpcdCVs
bGQgLyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNv
dW50LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3NhbXBsZUNvdW50IC0g
bV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7CisgICAgZGVidWdQ
cmludGYoIlx0c2FtcGxlIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgdGhpcyBvcGNvZGVcbiIpOwor
ICAgIGRlYnVnUHJpbnRmKCJcdCUlIG9mIFZNOlx0c2FtcGxlIGNvdW50IC8gYWxsIG9wY29kZSBz
YW1wbGVzXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHQlJSBvZiB0b3RhbDpcdHNhbXBsZSBjb3Vu
dCAvIGFsbCBzYW1wbGVzXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHQtLS0tLS0tLS0tLS0tLVxu
Iik7CisgICAgZGVidWdQcmludGYoIlx0Y3RpIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgYSBDVEkg
ZnVuY3Rpb24gY2FsbGVkIGJ5IHRoaXMgb3Bjb2RlXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHRj
dGkgJSUgb2Ygc2VsZjpcdGN0aSBjb3VudCAvIHNhbXBsZSBjb3VudFxuIik7CiAgICAgCiAjaWYg
RU5BQkxFKENPREVCTE9DS19TQU1QTElORykKIApAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU2Ft
cGxpbmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vICg0KSBQcmludCBkYXRh
IGZyb20gJ2NvZGVCbG9ja1NhbXBsZXMnIGFycmF5LgogCi0gICAgcHJpbnRmKCJcbkNvZGVCbG9j
ayBzYW1wbGVzXG5cbiIpOyAKKyAgICBkZWJ1Z1ByaW50ZigiXG5Db2RlQmxvY2sgc2FtcGxlc1xu
XG4iKTsgCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNjb3BlQ291bnQ7ICsraSkgewogICAg
ICAgICBTY3JpcHRTYW1wbGVSZWNvcmQqIHJlY29yZCA9IGNvZGVCbG9ja1NhbXBsZXNbaV07CkBA
IC00MjgsMjEgKzQyOCwyMSBAQCB2b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAgICAgaWYgKGJsb2NrUGVyY2VudCA+PSAxKSB7CiAgICAgICAgICAgICAvL0lu
c3RydWN0aW9uKiBjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
ICAgICAgICAgcHJpbnRmKCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQgKCUuM2YlJSlcbiIsIGkgKyAx
LCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSwgY29kZUJs
b2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJlY29yZC0+bV9zYW1wbGVDb3Vu
dCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJjZW50KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQgKCUuM2YlJSlcbiIsIGkgKyAxLCByZWNvcmQtPm1fZXhl
Y3V0YWJsZS0+c291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVy
Rm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJlY29yZC0+bV9zYW1wbGVDb3VudCwgbV9zYW1wbGVDb3Vu
dCwgYmxvY2tQZXJjZW50KTsKICAgICAgICAgICAgIGlmIChpIDwgMTApIHsKICAgICAgICAgICAg
ICAgICBIYXNoTWFwPHVuc2lnbmVkLHVuc2lnbmVkPiBsaW5lQ291bnRzOwogICAgICAgICAgICAg
ICAgIGNvZGVCbG9jay0+ZHVtcChleGVjKTsKIAotICAgICAgICAgICAgICAgIHByaW50ZigiICAg
IE9wY29kZSBhbmQgbGluZSBudW1iZXIgc2FtcGxlcyBbKl1cblxuIik7CisgICAgICAgICAgICAg
ICAgZGVidWdQcmludGYoIiAgICBPcGNvZGUgYW5kIGxpbmUgbnVtYmVyIHNhbXBsZXMgWypdXG5c
biIpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3AgPSAwOyBvcCA8IHJlY29yZC0+
bV9zaXplOyArK29wKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCA9IHJlY29yZC0+
bV9zYW1wbGVzW29wXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIiAgICBbJSA0ZF0gaGFzIHNhbXBsZSBjb3VudDogJSA0
ZFxuIiwgb3AsIGNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgWyUgNGRdIGhhcyBzYW1wbGUgY291bnQ6ICUgNGRcbiIsIG9wLCBjb3VudCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gY29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQob3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50cy5z
ZXQobGluZSwgKGxpbmVDb3VudHMuY29udGFpbnMobGluZSkgPyBsaW5lQ291bnRzLmdldChsaW5l
KSA6IDApICsgY291bnQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1By
aW50ZigiXG4iKTsKIAogICAgICAgICAgICAgICAgIGludCBsaW5lc0NvdW50ID0gbGluZUNvdW50
cy5zaXplKCk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPExpbmVDb3VudEluZm8+IGxpbmVDb3Vu
dEluZm8obGluZXNDb3VudCk7CkBAIC00NTUsMTIgKzQ1NSwxMiBAQCB2b2lkIFNhbXBsaW5nVG9v
bDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgcXNvcnQobGluZUNvdW50
SW5mby5iZWdpbigpLCBsaW5lc0NvdW50LCBzaXplb2YoTGluZUNvdW50SW5mbyksIGNvbXBhcmVM
aW5lQ291bnRJbmZvU2FtcGxpbmcpOwogCiAgICAgICAgICAgICAgICAgZm9yIChsaW5lbm8gPSAw
OyBsaW5lbm8gPCBsaW5lc0NvdW50OyArK2xpbmVubykgewotICAgICAgICAgICAgICAgICAgICBw
cmludGYoIiAgICBMaW5lICMlZCBoYXMgc2FtcGxlIGNvdW50ICVkLlxuIiwgbGluZUNvdW50SW5m
b1tsaW5lbm9dLmxpbmUsIGxpbmVDb3VudEluZm9bbGluZW5vXS5jb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgTGluZSAjJWQgaGFzIHNhbXBsZSBjb3VudCAlZC5c
biIsIGxpbmVDb3VudEluZm9bbGluZW5vXS5saW5lLCBsaW5lQ291bnRJbmZvW2xpbmVub10uY291
bnQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7Ci0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgWypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBh
cmUgY2hhcmdlZCB0byB0aGUgY2FsbGluZyBCeXRlY29kZS5cbiIpOwotICAgICAgICAgICAgICAg
IHByaW50ZigiICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJldHVybiBib3VuZGFyeSBhcmUg
bm90IGNoYXJnZWQgdG8gYSBzcGVjaWZpYyBvcGNvZGUgb3IgbGluZS5cblxuIik7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJldHVybiBi
b3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxuXG4iLCByZWNvcmQtPm1fc2FtcGxlQ291bnQgLSBy
ZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQsIHJlY29yZC0+bV9zYW1wbGVDb3VudCwgKHN0YXRp
Y19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3NhbXBsZUNvdW50IC0gcmVjb3JkLT5tX29wY29kZVNh
bXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQtPm1fc2FtcGxlQ291bnQpOworICAgICAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJcbiIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
WypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgY2hhcmdlZCB0byB0aGUgY2FsbGluZyBC
eXRlY29kZS5cbiIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICAgIFNhbXBs
ZXMgb24gYSBjYWxsIC8gcmV0dXJuIGJvdW5kYXJ5IGFyZSBub3QgY2hhcmdlZCB0byBhIHNwZWNp
ZmljIG9wY29kZSBvciBsaW5lLlxuXG4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
ICAgICAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwgLyByZXR1cm4gYm91bmRhcnk6ICVkIC8gJWQg
KCUuM2YlJSlcblxuIiwgcmVjb3JkLT5tX3NhbXBsZUNvdW50IC0gcmVjb3JkLT5tX29wY29kZVNh
bXBsZUNvdW50LCByZWNvcmQtPm1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3VibGU+KHJl
Y29yZC0+bV9zYW1wbGVDb3VudCAtIHJlY29yZC0+bV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDAp
IC8gcmVjb3JkLT5tX3NhbXBsZUNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDE0ICsxNTMsMTQgQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogICAgIGlmIChtZXJnZU1vZGUg
IT0gRG9udE1lcmdlIHx8ICFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgZm9yIChzaXplX3Qg
YXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKythcmd1bWVudCkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgICBNZXJnaW5nIHN0YXRlIGZv
ciBhcmd1bWVudCAlenUuXG4iLCBhcmd1bWVudCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
ICAgICAgICBNZXJnaW5nIHN0YXRlIGZvciBhcmd1bWVudCAlenUuXG4iLCBhcmd1bWVudCk7CiAj
ZW5kaWYKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChibG9jay0+dmFs
dWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwgbV92YXJpYWJsZXMuYXJndW1lbnQoYXJndW1l
bnQpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKICNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIiAg
ICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwgbG9jYWwpOworICAgICAgICAg
ICAgZGVidWdQcmludGYoIiAgICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwg
bG9jYWwpOwogI2VuZGlmCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlU3RhdGVBdFRhaWwo
YmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChsb2NhbCksIG1fdmFyaWFibGVzLmxvY2FsKGxvY2Fs
KSwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkpOwogICAgICAgICB9CkBAIC05
MzcsNyArOTM3LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgSXQncyBsaXZlLCBu
b2RlIEAldS5cbiIsIG5vZGVJbmRleCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAg
ICAgIEl0J3MgbGl2ZSwgbm9kZSBAJXUuXG4iLCBub2RlSW5kZXgpOwogI2VuZGlmCiAKICAgICBz
d2l0Y2ggKG5vZGUub3ApIHsKQEAgLTk0Nyw3ICs5NDcsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFj
dFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMgdGhl
IHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgogICAgICAgICBzb3VyY2UgPSAmaW5WYXJpYWJsZTsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiICAgICAgICAgIFRyYW5zZmVyaW5nIGZyb20gaGVhZCB0byB0YWlsLlxuIik7CisgICAgICAg
IGRlYnVnUHJpbnRmKCIgICAgICAgICAgVHJhbnNmZXJpbmcgZnJvbSBoZWFkIHRvIHRhaWwuXG4i
KTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtOTU1LDcgKzk1NSw3
IEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgLy8g
VGhlIGJsb2NrIHJlZmluZXMgdGhlIHZhbHVlIHdpdGggYWRkaXRpb25hbCBzcGVjdWxhdGlvbnMu
CiAgICAgICAgIHNvdXJjZSA9ICZmb3JOb2RlKG5vZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShE
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICAgICAgICBSZWZp
bmluZy5cbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAgICAgIFJlZmluaW5nLlxuIik7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTk2NCw3ICs5NjQsNyBA
QCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgIC8vIGJl
Zm9yZSBhbmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgc291cmNlID0gJmZvck5vZGUobm9k
ZS5jaGlsZDEoKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICBwcmludGYoIiAgICAgICAgICBTZXR0aW5nLlxuIik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgICAgICAgU2V0dGluZy5cbiIpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKQEAgLTk3OCw3ICs5NzgsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJn
ZVN0YXRlQXRUCiAgICAgICAgIC8vIEFic3RyYWN0IGV4ZWN1dGlvbiBkaWQgbm90IGNoYW5nZSB0
aGUgb3V0cHV0IHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgZm9yIHRoaXMKICAgICAgICAgLy8gYmFz
aWMgYmxvY2ssIG9uIHRoaXMgaXRlcmF0aW9uLgogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAgICAgICAgTm90IGNoYW5nZWQhXG4i
KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICAgICAgICBOb3QgY2hhbmdlZCFcbiIpOwogI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05ODgsNyArOTg4LDcgQEAgaW5s
aW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgIC8vIHRydWUgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgZml4cG9pbnQgbXVzdCBnbyBvbiEKICAgICBkZXN0aW5hdGlvbiA9ICpz
b3VyY2U7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgIHBy
aW50ZigiICAgICAgICAgIENoYW5nZWQhXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiICAgICAgICAg
IENoYW5nZWQhXG4iKTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODksNyArNTg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
QVNTRVJUKHByb2ZpbGUpOwogICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgICAgIHByaW50ZigiRHluYW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjog
JXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRp
Y3Rpb24pKTsKKyAgICAgICAgZGVidWdQcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRp
Y3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmlu
ZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIHJldHVybiBwcmVkaWN0
aW9uOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZUluZGV4OwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNv
dW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9w
TmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3ApLCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5l
Z2F0aXZlWmVybykpOworICAgICAgICBkZWJ1Z1ByaW50ZigiTWFraW5nICVzIEAldSBzYWZlIGF0
IGJjIyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNvdW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmls
ZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3ApLCBu
b2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9j
b3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwogI2VuZGlmCiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCkgewpAQCAtNjQyLDEzICs2
NDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkK
ICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpIHsKICNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRh
a2UgZGVlcGVzdCBzbG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2UgZGVlcGVzdCBzbG93IGNhc2UuXG4i
LCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5kZXhd
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoTm9kZU1heU92ZXJmbG93IHwgTm9kZU1heU5lZ1plcm8pOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pmxpa2VseVRvVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAgICAg
ICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQotICAgICAgICAgICAgICAgIHByaW50ZigiTWFraW5nIEFyaXRoTXVsIEAldSB0YWtlIGZhc3Rl
ciBzbG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2UgZmFzdGVyIHNsb3cgY2FzZS5cbiIsIG5vZGVJbmRl
eCk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGVJbmRleF0ubWVyZ2VBcml0
aE5vZGVGbGFncyhOb2RlTWF5TmVnWmVybyk7CiAgICAgICAgICAgICB9CkBAIC02NzgsNyArNjc4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgIAog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJNYWtpbmcgJXMg
QCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlzIGF0
ICV1IGFuZCBleGl0IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFw
aFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRp
dmVaZXJvKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMj
JXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBleGl0IHBy
b2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9w
KSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50
SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSk7CiAjZW5k
aWYKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBt
YWtlIHRoaXMgbW9yZSBncmFudWxhci4gVGhlIERGRyBjZXJ0YWlubHkgY2FuCkBAIC05MTIsNyAr
OTEyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnRlcnByZQogICAgIGVu
dW0geyBDb25zdGFudEZ1bmN0aW9uLCBMaW5rZWRGdW5jdGlvbiwgVW5rbm93bkZ1bmN0aW9uIH0g
Y2FsbFR5cGU7CiAgICAgICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgcHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUvJXU7
IGV4aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAg
IGRlYnVnUHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUv
JXU7IGV4aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgs
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwog
I2VuZGlmCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcigKQEAgLTEwMjksNyArMTAyOSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICBBU1NFUlQoY2FuSW5saW5lRnVuY3Rpb25G
b3IoY29kZUJsb2NrLCBraW5kKSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgcHJpbnRmKCJJbmxpbmluZyBleGVjdXRhYmxlICVwLlxuIiwgZXhlY3V0YWJsZSk7CisgICAg
ZGVidWdQcmludGYoIklubGluaW5nIGV4ZWN1dGFibGUgJXAuXG4iLCBleGVjdXRhYmxlKTsKICNl
bmRpZgogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFy
ZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCkBAIC0xMTEwLDcg
KzExMTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAg
ICAgIC8vIGNhbGxlci4gSXQgZG9lc24ndCBuZWVkIHRvIGJlIGxpbmtlZCB0bywgYnV0IGl0IG5l
ZWRzIG91dGdvaW5nIGxpbmtzLgogICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnkubV91bmxp
bmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgICAgICBwcmludGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVw
IGZyb20gYmMjJXUgdG8gYmMjJXUgKGlubGluZSByZXR1cm4gY2FzZSkuXG4iLCBsYXN0QmxvY2ss
IGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAg
ZGVidWdQcmludGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVwIGZyb20g
YmMjJXUgdG8gYmMjJXUgKGlubGluZSByZXR1cm4gY2FzZSkuXG4iLCBsYXN0QmxvY2ssIGxhc3RC
bG9jay0+Ynl0ZWNvZGVCZWdpbiwgbV9jdXJyZW50SW5kZXgpOwogI2VuZGlmCiAgICAgICAgICAg
ICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzZXQgdGhlIGJ5dGVjb2RlQmVnaW4uIE5vdGUg
dGhhdCB0aGlzIGRvZXNuJ3QgbWF0dGVyCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWls
ZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFy
Z2V0CkBAIC0xMTIyLDcgKzExMjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhib29sCiAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrcy5sYXN0
KCkuZ2V0KCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiRG9uZSBpbmxpbmluZyBleGVjdXRhYmxlICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlv
biBhdCBlcGlsb2d1ZS5cbiIsIGV4ZWN1dGFibGUpOworICAgICAgICBkZWJ1Z1ByaW50ZigiRG9u
ZSBpbmxpbmluZyBleGVjdXRhYmxlICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlvbiBhdCBl
cGlsb2d1ZS5cbiIsIGV4ZWN1dGFibGUpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTExNDksNyArMTE0OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKGJvb2wKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3Ig
dGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIE93blB0cjxCYXNpY0Jsb2NrPiBi
bG9jayA9IGFkb3B0UHRyKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fZ3JhcGguc2l6ZSgp
LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgcHJpbnRmKCJDcmVhdGluZyBpbmxpbmUgZXBpbG9ndWUgYmFzaWMgYmxvY2sg
JXAsICMlenUgZm9yICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJsb2NrLmdldCgp
LCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgp
LCBtX2N1cnJlbnRJbmRleCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICBkZWJ1Z1ByaW50ZigiQ3Jl
YXRpbmcgaW5saW5lIGVwaWxvZ3VlIGJhc2ljIGJsb2NrICVwLCAjJXp1IGZvciAlcCBiYyMldSBh
dCBpbmxpbmUgZGVwdGggJXUuXG4iLCBibG9jay5nZXQoKSwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXpl
KCksIG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbV9jdXJyZW50SW5kZXgsIENvZGVP
cmlnaW46OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5l
Q2FsbEZyYW1lKSk7CiAjZW5kaWYKICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwog
ICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJn
ZXRzLmlzRW1wdHkoKSB8fCBtX2dyYXBoLm1fYmxvY2tzW21faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpXS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRP
ZmZzZXQpOwpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoYm9vbAogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgcmV0dXJuIGFuZCBjb250aW51
ZSB0byBnZW5lcmF0ZSBjb2RlIGZvciB0aGUgY2FsbGVyLCBidXQKICAgICAvLyBpbiB0aGUgbmV3
IGJhc2ljIGJsb2NrLgogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBwcmludGYo
IkRvbmUgaW5saW5pbmcgZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdlbmVyYXRpb24g
aW4gbmV3IGJsb2NrLlxuIiwgZXhlY3V0YWJsZSk7CisgICAgZGVidWdQcmludGYoIkRvbmUgaW5s
aW5pbmcgZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdlbmVyYXRpb24gaW4gbmV3IGJs
b2NrLlxuIiwgZXhlY3V0YWJsZSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEz
NDMsNyArMTM0Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCkp
OwogICAgICAgICAgICAgZWxzZSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAg
ICAgICAgICAgICAgIHByaW50ZigiUmVmdXNpbmcgdG8gcGxhbnQganVtcCBhdCBsaW1pdCAldSBi
ZWNhdXNlIGJsb2NrICVwIGlzIGVtcHR5LlxuIiwgbGltaXQsIG1fY3VycmVudEJsb2NrKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiUmVmdXNpbmcgdG8gcGxhbnQganVtcCBhdCBsaW1p
dCAldSBiZWNhdXNlIGJsb2NrICVwIGlzIGVtcHR5LlxuIiwgbGltaXQsIG1fY3VycmVudEJsb2Nr
KTsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZENvbnRp
bnVlUGFyc2luZzsKQEAgLTE3NjcsNyArMTc2Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIAog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiU2xvdyBj
YXNlIGNvdW50IGZvciBHZXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4i
LCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5k
ZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
U2xvdyBjYXNlIGNvdW50IGZvciBHZXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6
ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJy
ZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CiAjZW5kaWYKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMuaXNTaW1wbGVEaXJlY3QoKQpAQCAtMTgw
Nyw3ICsxODA3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgYm9vbCBoYXNFeGl0U2l0ZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKTsKICAgICAgICAgICAg
IAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiU2xv
dyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVk
XG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50
SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50
ZigiU2xvdyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2Zp
bGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9j
dXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CiAjZW5kaWYgICAgICAgICAg
ICAKIAogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2lt
cGxlUmVwbGFjZSgpKSB7CkBAIC0yMTg2LDEyICsyMTg2LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YUZv
clBoaSA9IG1fZ3JhcGhbZW50cnkubV9waGldLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogCiAjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAg
IEhhbmRsaW5nIHBoaSBlbnRyeSBmb3IgdmFyICV1LCBwaGkgQCV1LlxuIiwgZW50cnkubV92YXJO
bywgZW50cnkubV9waGkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgSGFuZGxpbmcgcGhpIGVu
dHJ5IGZvciB2YXIgJXUsIHBoaSBAJXUuXG4iLCBlbnRyeS5tX3Zhck5vLCBlbnRyeS5tX3BoaSk7
CiAjZW5kaWYKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWRlY2Vzc29ycy5z
aXplKCk7ICsraSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
LSAgICAgICAgICAgIHByaW50ZigiICAgICBEZWFsaW5nIHdpdGggcHJlZGVjZXNzb3IgYmxvY2sg
JXUuXG4iLCBwcmVkZWNlc3NvcnNbaV0pOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAg
RGVhbGluZyB3aXRoIHByZWRlY2Vzc29yIGJsb2NrICV1LlxuIiwgcHJlZGVjZXNzb3JzW2ldKTsK
ICNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ckJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1twcmVkZWNlc3NvcnNbaV1dLmdldCgpOwpAQCAtMjIw
MSw3ICsyMjAxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkKICAg
ICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZUluUHJlZGVjZXNzb3IgPSB2YXI7CiAgICAgICAgICAg
ICBpZiAodmFsdWVJblByZWRlY2Vzc29yID09IE5vTm9kZSkgewogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgIERp
ZCBub3QgZmluZCBub2RlLCBhZGRpbmcgcGhpLlxuIik7CisgICAgICAgICAgICAgICAgZGVidWdQ
cmludGYoIiAgICAgIERpZCBub3QgZmluZCBub2RlLCBhZGRpbmcgcGhpLlxuIik7CiAjZW5kaWYK
IAogICAgICAgICAgICAgICAgIHZhbHVlSW5QcmVkZWNlc3NvciA9IGFkZFRvR3JhcGgoUGhpLCBP
cEluZm8obmV3VmFyaWFibGVBY2Nlc3NEYXRhKHN0YWNrVHlwZSA9PSBBcmd1bWVudFBoaVN0YWNr
ID8gYXJndW1lbnRUb09wZXJhbmQodmFyTm8pIDogc3RhdGljX2Nhc3Q8aW50Pih2YXJObykpKSk7
CkBAIC0yMjEzLDcgKzIyMTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3Rh
Y2soKQogICAgICAgICAgICAgICAgIHBoaVN0YWNrLmFwcGVuZChQaGlTdGFja0VudHJ5KHByZWRl
Y2Vzc29yQmxvY2ssIHZhbHVlSW5QcmVkZWNlc3NvciwgdmFyTm8pKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wID09IEdldExvY2FsKSB7CiAj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAg
IHByaW50ZigiICAgICAgRm91bmQgR2V0TG9jYWwgQCV1LlxuIiwgdmFsdWVJblByZWRlY2Vzc29y
KTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAgRm91bmQgR2V0TG9jYWwgQCV1
LlxuIiwgdmFsdWVJblByZWRlY2Vzc29yKTsKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgLy8g
V2Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgVmFyaWFibGVBY2Nlc3NEYXRhcyBhcmUgaWRlbnRp
Y2FsIGJldHdlZW4gdGhlCkBAIC0yMjI1LDcgKzIyMjUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgICAgIHZhbHVlSW5QcmVkZWNlc3NvciA9
IG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBGb3VuZCBAJXUuXG4iLCB2YWx1ZUluUHJlZGVj
ZXNzb3IpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBGb3VuZCBAJXUuXG4i
LCB2YWx1ZUluUHJlZGVjZXNzb3IpOwogI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBBU1NFUlQobV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wID09IFNldExvY2FsIHx8IG1f
Z3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5vcCA9PSBQaGkgfHwgbV9ncmFwaFt2YWx1ZUluUHJl
ZGVjZXNzb3JdLm9wID09IEZsdXNoIHx8IChtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3Ag
PT0gU2V0QXJndW1lbnQgJiYgc3RhY2tUeXBlID09IEFyZ3VtZW50UGhpU3RhY2spKTsKQEAgLTIy
MzYsNDggKzIyMzYsNDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkK
IAogICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9ICZtX2dyYXBoW2VudHJ5Lm1fcGhpXTsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmlu
dGYoIiAgICAgIFJlZiBjb3VudCBvZiBAJXUgPSAldS5cbiIsIGVudHJ5Lm1fcGhpLCBwaGlOb2Rl
LT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBSZWYgY291bnQg
b2YgQCV1ID0gJXUuXG4iLCBlbnRyeS5tX3BoaSwgcGhpTm9kZS0+cmVmQ291bnQoKSk7CiAjZW5k
aWYKICAgICAgICAgICAgIGlmIChwaGlOb2RlLT5yZWZDb3VudCgpKSB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAg
ICAgUmVmZmluZyBAJXUuXG4iLCB2YWx1ZUluUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCIgICAgICBSZWZmaW5nIEAldS5cbiIsIHZhbHVlSW5QcmVkZWNlc3Nvcik7
CiAjZW5kaWYKICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZih2YWx1ZUluUHJlZGVjZXNzb3Ip
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXBoaU5vZGUtPmNoaWxkMSgpKSB7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAg
ICAgIHByaW50ZigiICAgICAgU2V0dGluZyBAJXUtPmNoaWxkMSA9IEAldS5cbiIsIGVudHJ5Lm1f
cGhpLCB2YWx1ZUluUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgICBTZXR0aW5nIEAldS0+Y2hpbGQxID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5Q
cmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5z
ZXRDaGlsZDEoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBD
aGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAgICAgICAgICAgICBwaGlOb2Rl
LT5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgICAgICBwcmludGYoIi5cbiIpOwor
ICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVu
dHJ5Lm1fcGhpKTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpk
ZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIi5cbiIpOwogI2VuZGlm
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoIXBoaU5vZGUtPmNoaWxkMigpKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgICAgU2V0dGluZyBAJXUtPmNo
aWxkMiA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1ZUluUHJlZGVjZXNzb3IpOworICAgICAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQyID0gQCV1Llxu
IiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAg
ICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNz
b3IpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsK
LSAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAgICAgICAg
ICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
ICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKKyAgICAgICAgICAgICAgICBwaGlO
b2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICAgICAgZGVi
dWdQcmludGYoIi5cbiIpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXBoaU5vZGUtPmNoaWxkMygpKSB7CiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50
ZigiICAgICAgU2V0dGluZyBAJXUtPmNoaWxkMyA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1
ZUluUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBTZXR0
aW5nIEAldS0+Y2hpbGQzID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nv
cik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDMo
Tm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBv
ZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hp
bGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhp
KTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUo
KSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIi5cbiIpOwogI2VuZGlmCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0yMjg1LDcgKzIyODUsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgTm9kZUlu
ZGV4IG5ld1BoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8oZGF0YUZvclBoaSkpOwogICAgICAg
ICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAg
ICAgICAgcHJpbnRmKCIgICAgICBTcGxpdHRpbmcgQCV1LCBjcmVhdGVkIEAldS5cbiIsIGVudHJ5
Lm1fcGhpLCBuZXdQaGkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAgIFNwbGl0dGlu
ZyBAJXUsIGNyZWF0ZWQgQCV1LlxuIiwgZW50cnkubV9waGksIG5ld1BoaSk7CiAjZW5kaWYKIAog
ICAgICAgICAgICAgcGhpTm9kZSA9ICZtX2dyYXBoW2VudHJ5Lm1fcGhpXTsgLy8gcmVsb2FkIGFm
dGVyIHZlY3RvciByZXNpemUKQEAgLTIyOTYsMTcgKzIyOTYsMTcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkKICAgICAgICAgICAgIG5ld1BoaU5vZGUuY2hpbGRyZW4g
PSBwaGlOb2RlLT5jaGlsZHJlbjsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBu
ZXdQaGkpOwotICAgICAgICAgICAgbmV3UGhpTm9kZS5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAg
ICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAg
Q2hpbGRyZW4gb2YgQCV1OiAiLCBuZXdQaGkpOworICAgICAgICAgICAgbmV3UGhpTm9kZS5kdW1w
Q2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLlxu
Iik7CiAjZW5kaWYKIAogICAgICAgICAgICAgcGhpTm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShu
ZXdQaGksIHZhbHVlSW5QcmVkZWNlc3NvciwgTm9Ob2RlKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgQ2hpbGRy
ZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7Ci0gICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hp
bGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CisgICAg
ICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiLlxuIik7CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KQEAgLTIz
MjQsNyArMjMyNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2MK
ICAgICBjYXNlIEp1bXA6CiAgICAgICAgIG5vZGUuc2V0VGFrZW5CbG9ja0luZGV4KG1fZ3JhcGgu
YmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgbm9kZS50YWtlbkJ5
dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICBwcmludGYoIkxpbmtlZCBiYXNpYyBibG9jayAlcCB0byAlcCwgIyV1Llxu
IiwgYmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCks
IG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiTGlua2VkIGJh
c2ljIGJsb2NrICVwIHRvICVwLCAjJXUuXG4iLCBibG9jaywgbV9ncmFwaC5tX2Jsb2Nrc1tub2Rl
LnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwgbm9kZS50YWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMjMzMiwxMyArMjMzMiwxMyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jCiAgICAgICAgIG5vZGUuc2V0VGFr
ZW5CbG9ja0luZGV4KG1fZ3JhcGguYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KHBvc3NpYmxl
VGFyZ2V0cywgbm9kZS50YWtlbkJ5dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7CiAgICAg
ICAgIG5vZGUuc2V0Tm90VGFrZW5CbG9ja0luZGV4KG1fZ3JhcGguYmxvY2tJbmRleEZvckJ5dGVj
b2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgbm9kZS5ub3RUYWtlbkJ5dGVjb2RlT2Zmc2V0RHVy
aW5nUGFyc2luZygpKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBw
cmludGYoIkxpbmtlZCBiYXNpYyBibG9jayAlcCB0byAlcCwgIyV1IGFuZCAlcCwgIyV1LlxuIiwg
YmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCksIG5v
ZGUudGFrZW5CbG9ja0luZGV4KCksIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS5ub3RUYWtlbkJsb2Nr
SW5kZXgoKV0uZ2V0KCksIG5vZGUubm90VGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBkZWJ1
Z1ByaW50ZigiTGlua2VkIGJhc2ljIGJsb2NrICVwIHRvICVwLCAjJXUgYW5kICVwLCAjJXUuXG4i
LCBibG9jaywgbV9ncmFwaC5tX2Jsb2Nrc1tub2RlLnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwg
bm9kZS50YWtlbkJsb2NrSW5kZXgoKSwgbV9ncmFwaC5tX2Jsb2Nrc1tub2RlLm5vdFRha2VuQmxv
Y2tJbmRleCgpXS5nZXQoKSwgbm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5kaWYKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAjaWYgREZHX0VOQUJMRShERUJV
R19WRVJCT1NFKQotICAgICAgICBwcmludGYoIk1hcmtpbmcgYmFzaWMgYmxvY2sgJXAgYXMgbGlu
a2VkLlxuIiwgYmxvY2spOworICAgICAgICBkZWJ1Z1ByaW50ZigiTWFya2luZyBiYXNpYyBibG9j
ayAlcCBhcyBsaW5rZWQuXG4iLCBibG9jayk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMjQ5NSw3ICsyNDk1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxv
Y2soKQogICAgICAgICAvLyBUaGUgbWF4aW11bSBieXRlY29kZSBvZmZzZXQgdG8gZ28gaW50byB0
aGUgY3VycmVudCBiYXNpY2Jsb2NrIGlzIGVpdGhlciB0aGUgbmV4dCBqdW1wIHRhcmdldCwgb3Ig
dGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb25zLgogICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGp1
bXBUYXJnZXRJbmRleCA8IGNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpID8gY29kZUJs
b2NrLT5qdW1wVGFyZ2V0KGp1bXBUYXJnZXRJbmRleCkgOiBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiUGFyc2luZyBieXRlY29kZSB3aXRoIGxpbWl0ICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAl
dS5cbiIsIG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbGltaXQsIENvZGVPcmlnaW46
OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGltaXQg
JXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0
YWJsZSgpLCBsaW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxp
bmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQo
bV9jdXJyZW50SW5kZXggPCBsaW1pdCk7CiAKQEAgLTI1MTcsMTMgKzI1MTcsMTMgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICAvLyBD
aGFuZ2UgaXRzIGJ5dGVjb2RlIGJlZ2luIGFuZCBjb250aW51ZS4KICAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKS5nZXQoKTsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVh
c2NyaWJpbmcgYnl0ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0byBiYyMldSAo
cGVlcGhvbGUgY2FzZSkuXG4iLCBtX2N1cnJlbnRCbG9jaywgbV9jdXJyZW50QmxvY2stPmJ5dGVj
b2RlQmVnaW4sIG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWdQcmlu
dGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVwIGZyb20gYmMjJXUgdG8g
YmMjJXUgKHBlZXBob2xlIGNhc2UpLlxuIiwgbV9jdXJyZW50QmxvY2ssIG1fY3VycmVudEJsb2Nr
LT5ieXRlY29kZUJlZ2luLCBtX2N1cnJlbnRJbmRleCk7CiAjZW5kaWYKICAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBPd25QdHI8QmFzaWNC
bG9jaz4gYmxvY2sgPSBhZG9wdFB0cihuZXcgQmFzaWNCbG9jayhtX2N1cnJlbnRJbmRleCwgbV9n
cmFwaC5zaXplKCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscykpOwogI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDcmVhdGluZyBi
YXNpYyBibG9jayAlcCwgIyV6dSBmb3IgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwg
YmxvY2suZ2V0KCksIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpLCBtX2lubGluZVN0YWNrVG9wLT5l
eGVjdXRhYmxlKCksIG1fY3VycmVudEluZGV4LCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNh
bGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkpOworICAgICAgICAg
ICAgICAgICAgICBkZWJ1Z1ByaW50ZigiQ3JlYXRpbmcgYmFzaWMgYmxvY2sgJXAsICMlenUgZm9y
ICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJsb2NrLmdldCgpLCBtX2dyYXBoLm1f
YmxvY2tzLnNpemUoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBtX2N1cnJlbnRJ
bmRleCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxpbmVTdGFja1Rv
cC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9p
bmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkgfHwgbV9ncmFwaC5tX2Js
b2Nrc1ttX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrSW5k
ZXhdLT5ieXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOwpAQCAtMjU3MSwxNCArMjU3MSwx
NCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVT
dGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtp
bmdUYXJnZXRzKTsKICAgICBkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgcHJpbnRmKCJQcm9jZXNzaW5nIGxvY2Fs
IHZhcmlhYmxlIHBoaXMuXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiUHJvY2Vzc2luZyBsb2NhbCB2
YXJpYWJsZSBwaGlzLlxuIik7CiAjZW5kaWYKICAgICAKICAgICBtX2N1cnJlbnRQcm9maWxpbmdJ
bmRleCA9IG1fY3VycmVudEluZGV4OwogICAgIAogICAgIHByb2Nlc3NQaGlTdGFjazxMb2NhbFBo
aVN0YWNrPigpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICBwcmludGYoIlByb2Nlc3NpbmcgYXJndW1lbnQgcGhpcy5cbiIpOworICAgIGRlYnVnUHJpbnRm
KCJQcm9jZXNzaW5nIGFyZ3VtZW50IHBoaXMuXG4iKTsKICNlbmRpZgogICAgIHByb2Nlc3NQaGlT
dGFjazxBcmd1bWVudFBoaVN0YWNrPigpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAvLyBF
bWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGNvZGUuCiAjZGVm
aW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMAogLy8gTG9n
IGV2ZXJ5IHNwZWN1bGF0aW9uIGZhaWx1cmUuCi0jZGVmaW5lIERGR19FTkFCTEVfVkVSQk9TRV9T
UEVDVUxBVElPTl9GQUlMVVJFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1NQRUNVTEFU
SU9OX0ZBSUxVUkUgMQogLy8gRGlzYWJsZSB0aGUgREZHIEpJVCB3aXRob3V0IGhhdmluZyB0byB0
b3VjaCBQbGF0Zm9ybS5oCiAjZGVmaW5lIERGR19ERUJVR19MT0NBTF9ESVNCQUxFIDAKIC8vIEVu
YWJsZSBPU1IgZW50cnkgZnJvbSBiYXNlbGluZSBKSVQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogICAgIEFTU0VSVChj
b2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRl
cnIsICJERkcgY29tcGlsaW5nIGNvZGUgYmxvY2sgJXAoJXApLCBudW1iZXIgb2YgaW5zdHJ1Y3Rp
b25zID0gJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpOworICAgIGRlYnVnUHJpbnRmKCJERkcgY29tcGlsaW5n
IGNvZGUgYmxvY2sgJXAoJXApLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gJXUuXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCkpOwogI2VuZGlmCiAgICAgCiAgICAgR3JhcGggZGZnOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3
IEBAIGNvbnN0IGNoYXIqIEdyYXBoOjpuYW1lT2ZWYXJpYWJsZUFjY2Vzc0QKIHN0YXRpYyB2b2lk
IHByaW50V2hpdGVTcGFjZSh1bnNpZ25lZCBhbW91bnQpCiB7CiAgICAgd2hpbGUgKGFtb3VudC0t
ID4gMCkKLSAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIik7CiB9
CiAKIHZvaWQgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC0x
MDcsMTMgKzEwNywxMyBAQCB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihOb2RlSW5kZXggbm9k
CiAgICAgLy8gUHJpbnQgdGhlIHBvcHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNJ
bmxpbmVTdGFjay5zaXplKCk7IGktLSA+IGluZGV4T2ZEaXZlcmdlbmNlOykgewogICAgICAgICBw
cmludFdoaXRlU3BhY2UoaSAqIDIpOwotICAgICAgICBwcmludGYoIjwtLSAlcFxuIiwgcHJldmlv
dXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAg
ICAgICBkZWJ1Z1ByaW50ZigiPC0tICVwXG4iLCBwcmV2aW91c0lubGluZVN0YWNrW2ldLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50
IHRoZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhPZkRpdmVyZ2VuY2U7IGkg
PCBjdXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgcHJpbnRXaGl0ZVNw
YWNlKGkgKiAyKTsKLSAgICAgICAgcHJpbnRmKCItLT4gJXBcbiIsIGN1cnJlbnRJbmxpbmVTdGFj
a1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICBkZWJ1Z1By
aW50ZigiLS0+ICVwXG4iLCBjdXJyZW50SW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5l
eGVjdXRhYmxlLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw2NCArMTUwLDY0IEBAIHZvaWQg
R3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCwgQ28KICAgICAvLyAgICAgICAgICQjICAg
LSB0aGUgaW5kZXggaW4gdGhlIENvZGVCbG9jayBvZiBhIGNvbnN0YW50IHsgZm9yIG51bWVyaWMg
Y29uc3RhbnRzIHRoZSB2YWx1ZSBpcyBkaXNwbGF5ZWQgfCBmb3IgaW50ZWdlcnMsIGluIGJvdGgg
ZGVjaW1hbCBhbmQgaGV4IH0uCiAgICAgLy8gICAgICAgICBpZCMgIC0gdGhlIGluZGV4IGluIHRo
ZSBDb2RlQmxvY2sgb2YgYW4gaWRlbnRpZmllciB7IGlmIGNvZGVCbG9jayBpcyBwYXNzZWQgdG8g
ZHVtcCgpLCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlzIGRpc3BsYXllZCB9LgogICAgIC8v
ICAgICAgICAgdmFyIyAtIHRoZSBpbmRleCBvZiBhIHZhciBvbiB0aGUgZ2xvYmFsIG9iamVjdCwg
dXNlZCBieSBHZXRHbG9iYWxWYXIvUHV0R2xvYmFsVmFyIG9wZXJhdGlvbnMuCi0gICAgcHJpbnRm
KCIlIDRkOiVzPCVjJXU6IiwgKGludClub2RlSW5kZXgsIHNraXBwZWQgPyAiICBza2lwcGVkICAi
IDogIiAgICAgICAgICAgIiwgbXVzdEdlbmVyYXRlID8gJyEnIDogJyAnLCByZWZDb3VudCk7Cisg
ICAgZGVidWdQcmludGYoIiUgNGQ6JXM8JWMldToiLCAoaW50KW5vZGVJbmRleCwgc2tpcHBlZCA/
ICIgIHNraXBwZWQgICIgOiAiICAgICAgICAgICAiLCBtdXN0R2VuZXJhdGUgPyAnIScgOiAnICcs
IHJlZkNvdW50KTsKICAgICBpZiAobm9kZS5oYXNSZXN1bHQoKSAmJiAhc2tpcHBlZCAmJiBub2Rl
Lmhhc1ZpcnR1YWxSZWdpc3RlcigpKQotICAgICAgICBwcmludGYoIiV1Iiwgbm9kZS52aXJ0dWFs
UmVnaXN0ZXIoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIldSIsIG5vZGUudmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgIGVsc2UKLSAgICAgICAgcHJpbnRmKCItIik7Ci0gICAgcHJpbnRmKCI+XHQl
cygiLCBvcE5hbWUob3ApKTsKKyAgICAgICAgZGVidWdQcmludGYoIi0iKTsKKyAgICBkZWJ1Z1By
aW50ZigiPlx0JXMoIiwgb3BOYW1lKG9wKSk7CiAgICAgYm9vbCBoYXNQcmludGVkID0gZmFsc2U7
CiAgICAgaWYgKG9wICYgTm9kZUhhc1ZhckFyZ3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBj
aGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgp
ICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKSB7CiAgICAgICAgICAgICBpZiAoaGFz
UHJpbnRlZCkKLSAgICAgICAgICAgICAgICBwcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAg
ZGVidWdQcmludGYoIiwgIik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFz
UHJpbnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBwcmludGYoIkAldSIsIG1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdLmluZGV4KCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIkAldSIsIG1f
dmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdLmluZGV4KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDEoKSkKLSAgICAgICAgICAgIHByaW50ZigiQCV1
Iiwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJAJXUi
LCBub2RlLmNoaWxkMSgpLmluZGV4KCkpOwogICAgICAgICBpZiAoISFub2RlLmNoaWxkMigpKQot
ICAgICAgICAgICAgcHJpbnRmKCIsIEAldSIsIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSk7CisgICAg
ICAgICAgICBkZWJ1Z1ByaW50ZigiLCBAJXUiLCBub2RlLmNoaWxkMigpLmluZGV4KCkpOwogICAg
ICAgICBpZiAoISFub2RlLmNoaWxkMygpKQotICAgICAgICAgICAgcHJpbnRmKCIsIEAldSIsIG5v
ZGUuY2hpbGQzKCkuaW5kZXgoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLCBAJXUiLCBu
b2RlLmNoaWxkMygpLmluZGV4KCkpOwogICAgICAgICBoYXNQcmludGVkID0gISFub2RlLmNoaWxk
MSgpOwogICAgIH0KIAogICAgIGlmIChub2RlLmhhc0FyaXRoTm9kZUZsYWdzKCkpIHsKLSAgICAg
ICAgcHJpbnRmKCIlcyVzIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgYXJpdGhOb2RlRmxhZ3NB
c1N0cmluZyhub2RlLnJhd0FyaXRoTm9kZUZsYWdzKCkpKTsKKyAgICAgICAgZGVidWdQcmludGYo
IiVzJXMiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKG5v
ZGUucmF3QXJpdGhOb2RlRmxhZ3MoKSkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgaWYgKG5vZGUuaGFzVmFyTnVtYmVyKCkpIHsKLSAgICAgICAgcHJpbnRmKCIlc3Zh
ciV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS52YXJOdW1iZXIoKSk7CisgICAgICAg
IGRlYnVnUHJpbnRmKCIlc3ZhciV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS52YXJO
dW1iZXIoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAobm9k
ZS5oYXNJZGVudGlmaWVyKCkpIHsKICAgICAgICAgaWYgKGNvZGVCbG9jaykKLSAgICAgICAgICAg
IHByaW50ZigiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRp
Zmllck51bWJlcigpLCBjb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVy
KCkpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIl
c2lkJXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5pZGVudGlmaWVyTnVtYmVy
KCksIGNvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkudXN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGYoIiVz
aWQldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsK
KyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIlc2lkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIi
LCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwog
ICAgIH0KICAgICBpZiAobm9kZS5oYXNTdHJ1Y3R1cmVTZXQoKSkgewogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIHByaW50ZigiJXNzdHJ1Y3QoJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9k
ZS5zdHJ1Y3R1cmVTZXQoKVtpXSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiJXNzdHJ1Y3Qo
JXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVTZXQoKVtpXSk7CiAg
ICAgICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAo
bm9kZS5oYXNTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpKSB7Ci0gICAgICAgIHByaW50ZigiJXNz
dHJ1Y3QoJXAgLT4gJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVU
cmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLCBub2RlLnN0cnVjdHVyZVRyYW5zaXRp
b25EYXRhKCkubmV3U3RydWN0dXJlKTsKKyAgICAgICAgZGVidWdQcmludGYoIiVzc3RydWN0KCVw
IC0+ICVwKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuc3RydWN0dXJlVHJhbnNpdGlv
bkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZSwgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgp
Lm5ld1N0cnVjdHVyZSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBp
ZiAobm9kZS5oYXNTdG9yYWdlQWNjZXNzRGF0YSgpKSB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NE
YXRhJiBzdG9yYWdlQWNjZXNzRGF0YSA9IG1fc3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS5zdG9yYWdl
QWNjZXNzRGF0YUluZGV4KCldOwogICAgICAgICBpZiAoY29kZUJsb2NrKQotICAgICAgICAgICAg
cHJpbnRmKCIlc2lkJXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgc3RvcmFnZUFjY2Vz
c0RhdGEuaWRlbnRpZmllck51bWJlciwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0b3JhZ2VBY2Nl
c3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCIlc2lkJXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
c3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciwgY29kZUJsb2NrLT5pZGVudGlmaWVy
KHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlc2lkJXUiLCBoYXNQcmlu
dGVkID8gIiwgIiA6ICIiLCBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIlc2lkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBz
dG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgCi0gICAgICAgIHBy
aW50ZigiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzdG9yYWdlQWNjZXNzRGF0
YS5vZmZzZXQpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiwgJWx1Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0KSk7CiAgICAgICAgIGhhc1ByaW50
ZWQgPSB0cnVlOwogICAgIH0KICAgICBBU1NFUlQobm9kZS5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEo
KSA9PSBub2RlLmhhc0xvY2FsKCkpOwpAQCAtMjE1LDgzICsyMTUsODMgQEAgdm9pZCBHcmFwaDo6
ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4LCBDbwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAg
IGludCBvcGVyYW5kID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCk7CiAgICAgICAgIGlm
IChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKLSAgICAgICAgICAgIHByaW50ZigiJXNhcmcl
dSglcykiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5k
KSwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAg
ICAgICAgZGVidWdQcmludGYoIiVzYXJnJXUoJXMpIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
b3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCksIG5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YSh2YXJp
YWJsZUFjY2Vzc0RhdGEpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlc3Il
dSglcykiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBvcGVyYW5kLCBuYW1lT2ZWYXJpYWJsZUFj
Y2Vzc0RhdGEodmFyaWFibGVBY2Nlc3NEYXRhKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
JXNyJXUoJXMpIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgb3BlcmFuZCwgbmFtZU9mVmFyaWFi
bGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNjZXNzRGF0YSkpOwogICAgICAgICBoYXNQcmludGVkID0g
dHJ1ZTsKICAgICB9CiAgICAgaWYgKG5vZGUuaGFzQ29uc3RhbnRCdWZmZXIoKSAmJiBjb2RlQmxv
Y2spIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICBwcmludGYoIiwgIik7
Ci0gICAgICAgIHByaW50ZigiJXU6WyIsIG5vZGUuc3RhcnRDb25zdGFudCgpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCIsICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiJXU6WyIsIG5vZGUu
c3RhcnRDb25zdGFudCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUu
bnVtQ29uc3RhbnRzKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAg
ICAgcHJpbnRmKCIsICIpOwotICAgICAgICAgICAgcHJpbnRmKCIlcyIsIGNvZGVCbG9jay0+Y29u
c3RhbnRCdWZmZXIobm9kZS5zdGFydENvbnN0YW50KCkpW2ldLmRlc2NyaXB0aW9uKCkpOworICAg
ICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIsICIpOworICAgICAgICAgICAgZGVidWdQcmludGYo
IiVzIiwgY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2RlLnN0YXJ0Q29uc3RhbnQoKSlbaV0u
ZGVzY3JpcHRpb24oKSk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCJdIik7CisgICAgICAg
IGRlYnVnUHJpbnRmKCJdIik7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAg
ICBpZiAob3AgPT0gSlNDb25zdGFudCkgewotICAgICAgICBwcmludGYoIiVzJCV1IiwgaGFzUHJp
bnRlZCA/ICIsICIgOiAiIiwgbm9kZS5jb25zdGFudE51bWJlcigpKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIiVzJCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5jb25zdGFudE51bWJl
cigpKTsKICAgICAgICAgaWYgKGNvZGVCbG9jaykgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaywgbm9kZUluZGV4KTsKLSAgICAgICAgICAg
IHByaW50ZigiID0gJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCIgPSAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOwogICAgICAgICB9CiAgICAgICAg
IGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAob3AgPT0gV2Vha0pTQ29uc3RhbnQp
IHsKLSAgICAgICAgcHJpbnRmKCIlcyVwIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS53
ZWFrQ29uc3RhbnQoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlcyVwIiwgaGFzUHJpbnRlZCA/
ICIsICIgOiAiIiwgbm9kZS53ZWFrQ29uc3RhbnQoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0
cnVlOwogICAgIH0KICAgICBpZiAgKG5vZGUuaXNCcmFuY2goKSB8fCBub2RlLmlzSnVtcCgpKSB7
Ci0gICAgICAgIHByaW50ZigiJXNUOiMldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUu
dGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiJXNUOiMldSIsIGhhc1By
aW50ZWQgPyAiLCAiIDogIiIsIG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOwogICAgICAgICBoYXNQ
cmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgIChub2RlLmlzQnJhbmNoKCkpIHsKLSAgICAg
ICAgcHJpbnRmKCIlc0Y6IyV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5ub3RUYWtl
bkJsb2NrSW5kZXgoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlc0Y6IyV1IiwgaGFzUHJpbnRl
ZCA/ICIsICIgOiAiIiwgbm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKSk7CiAgICAgICAgIGhhc1By
aW50ZWQgPSB0cnVlOwogICAgIH0KICAgICAodm9pZCloYXNQcmludGVkOwogICAgIAotICAgIHBy
aW50ZigiKSIpOworICAgIGRlYnVnUHJpbnRmKCIpIik7CiAKICAgICBpZiAoIXNraXBwZWQpIHsK
ICAgICAgICAgaWYgKG5vZGUuaGFzVmFyaWFibGVBY2Nlc3NEYXRhKCkpCi0gICAgICAgICAgICBw
cmludGYoIiAgcHJlZGljdGluZyAlcywgZG91YmxlIHJhdGlvICVsZiVzIiwgcHJlZGljdGlvblRv
U3RyaW5nKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSksIG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCktPmRvdWJsZVZvdGVSYXRpbygpLCBub2RlLnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIsIGZvcmNpbmcgZG91YmxlIiA6ICIi
KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgIHByZWRpY3RpbmcgJXMsIGRvdWJsZSByYXRp
byAlbGYlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5w
cmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5kb3VibGVWb3RlUmF0aW8o
KSwgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgPyAi
LCBmb3JjaW5nIGRvdWJsZSIgOiAiIik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFzSGVhcFBy
ZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGlj
dGlvblRvU3RyaW5nKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLmdldEhl
YXBQcmVkaWN0aW9uKCkpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5oYXNWYXJOdW1iZXIoKSkK
LSAgICAgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5n
KGdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZS52YXJOdW1iZXIoKSkpKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCIgIHByZWRpY3RpbmcgJXMiLCBwcmVkaWN0aW9uVG9TdHJpbmcoZ2V0R2xv
YmFsVmFyUHJlZGljdGlvbihub2RlLnZhck51bWJlcigpKSkpOwogICAgIH0KICAgICAKLSAgICBw
cmludGYoIlxuIik7CisgICAgZGVidWdQcmludGYoIlxuIik7CiB9CiAKIHZvaWQgR3JhcGg6OmR1
bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgZm9yIChzaXplX3QgYiA9IDA7IGIgPCBt
X2Jsb2Nrcy5zaXplKCk7ICsrYikgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmxv
Y2tzW2JdLmdldCgpOwotICAgICAgICBwcmludGYoIkJsb2NrICMldSAoYmMjJXUpOiAlcyVzXG4i
LCAoaW50KWIsIGJsb2NrLT5ieXRlY29kZUJlZ2luLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6
ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIp
OwotICAgICAgICBwcmludGYoIiAgdmFycyBiZWZvcmU6ICIpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiQmxvY2sgIyV1IChiYyMldSk6ICVzJXNcbiIsIChpbnQpYiwgYmxvY2stPmJ5dGVjb2RlQmVn
aW4sIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JU
YXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIHZh
cnMgYmVmb3JlOiAiKTsKICAgICAgICAgaWYgKGJsb2NrLT5jZmFIYXNWaXNpdGVkKQotICAgICAg
ICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdEhlYWQsIHN0ZG91dCk7CisgICAgICAg
ICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkZWJ1Z0ZpbGUoKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiPGVtcHR5PiIpOwotICAgICAgICBw
cmludGYoIlxuIik7Ci0gICAgICAgIHByaW50ZigiICB2YXIgbGlua3M6ICIpOwotICAgICAgICBk
dW1wT3BlcmFuZHMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCwgc3Rkb3V0KTsKLSAgICAgICAgcHJp
bnRmKCJcbiIpOworICAgICAgICAgICAgZGVidWdQcmludGYoIjxlbXB0eT4iKTsKKyAgICAgICAg
ZGVidWdQcmludGYoIlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIHZhciBsaW5rczogIik7
CisgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFyaWFibGVzQXRIZWFkLCBXVEY6OmRlYnVn
RmlsZSgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBibG9jay0+YmVnaW47IGkgPCBibG9jay0+ZW5kOyArK2kpCiAgICAgICAgICAgICBkdW1w
KGksIGNvZGVCbG9jayk7Ci0gICAgICAgIHByaW50ZigiICB2YXJzIGFmdGVyOiAiKTsKKyAgICAg
ICAgZGVidWdQcmludGYoIiAgdmFycyBhZnRlcjogIik7CiAgICAgICAgIGlmIChibG9jay0+Y2Zh
SGFzVmlzaXRlZCkKLSAgICAgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFsdWVzQXRUYWls
LCBzdGRvdXQpOworICAgICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdFRhaWws
IFdURjo6ZGVidWdGaWxlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGYoIjxl
bXB0eT4iKTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgZGVidWdQcmludGYo
IjxlbXB0eT4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgfQotICAgIHByaW50
ZigiUGhpIE5vZGVzOlxuIik7CisgICAgZGVidWdQcmludGYoIlBoaSBOb2RlczpcbiIpOwogICAg
IGZvciAoc2l6ZV90IGkgPSBtX2Jsb2Nrcy5sYXN0KCktPmVuZDsgaSA8IHNpemUoKTsgKytpKQog
ICAgICAgICBkdW1wKGksIGNvZGVCbG9jayk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBH
cmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMoQ29kZUJsbwogICAgICAgICBhdChtX2FyZ3VtZW50
c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcm9maWxlLT5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKLSAgICAgICAgcHJpbnRmKCJBcmd1bWVudCBbJXp1XSBwcmVkaWN0aW9uOiAlc1xuIiwgYXJn
LCBwcmVkaWN0aW9uVG9TdHJpbmcoYXQobV9hcmd1bWVudHNbYXJnXSkudmFyaWFibGVBY2Nlc3NE
YXRhKCktPnByZWRpY3Rpb24oKSkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiQXJndW1lbnQgWyV6
dV0gcHJlZGljdGlvbjogJXNcbiIsIGFyZywgcHJlZGljdGlvblRvU3RyaW5nKGF0KG1fYXJndW1l
bnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICNlbmRpZgog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIHsKICAgICAvLyBMaW5rIHRoZSBj
b2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiSklUIGNvZGUgZm9y
ICVwIHN0YXJ0IGF0IFslcCwgJXApLiBTaXplID0gJXp1LlxuIiwgbV9jb2RlQmxvY2ssIGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVn
QWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCksIGxpbmtCdWZmZXIuZGVidWdTaXpl
KCkpOworICAgIGRlYnVnUHJpbnRmKCJKSVQgY29kZSBmb3IgJXAgc3RhcnQgYXQgWyVwLCAlcCku
IFNpemUgPSAlenUuXG4iLCBtX2NvZGVCbG9jaywgbGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSwg
c3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZl
ci5kZWJ1Z1NpemUoKSwgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSk7CiAjZW5kaWYKIAogICAgIC8v
IExpbmsgYWxsIGNhbGxzIG91dCBmcm9tIHRoZSBKSVQgY29kZSB0byB0aGVpciByZXNwZWN0aXZl
IGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnku
Y3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtYmVy
T2ZERkdPU1JFbnRyaWVzKCkpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBw
cmludGYoIk9TUiBpbiAlcCglcCkgZnJvbSBiYyMldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2st
PmFsdGVybmF0aXZlKCksIGJ5dGVjb2RlSW5kZXgpOworICAgIGRlYnVnUHJpbnRmKCJPU1IgaW4g
JXAoJXApIGZyb20gYmMjJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
LCBieXRlY29kZUluZGV4KTsKICNlbmRpZgogICAgIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CkBAIC04MCw5ICs4MCw5IEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMo
KTsgKythcmd1bWVudCkgewogICAgICAgICBpZiAoYXJndW1lbnQgPj0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAg
ICAgICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgYXJndW1lbnQgJXp1IHdhcyBu
b3QgcGFzc2VkLCBleHBlY3RlZCAiLCBhcmd1bWVudCk7Ci0gICAgICAgICAgICBlbnRyeS0+bV9l
eHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkuZHVtcChzdGRvdXQpOwotICAgICAgICAg
ICAgcHJpbnRmKCIuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgT1NSIGZhaWxl
ZCBiZWNhdXNlIGFyZ3VtZW50ICV6dSB3YXMgbm90IHBhc3NlZCwgZXhwZWN0ZWQgIiwgYXJndW1l
bnQpOworICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMuYXJndW1lbnQoYXJndW1l
bnQpLmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLlxu
Iik7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC05NSw5ICs5
NSw5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAg
CiAgICAgICAgIGlmICghZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMuYXJndW1lbnQoYXJndW1lbnQp
LnZhbGlkYXRlKHZhbHVlKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAg
ICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgYXJndW1lbnQgJXp1IGlzICVzLCBl
eHBlY3RlZCAiLCBhcmd1bWVudCwgdmFsdWUuZGVzY3JpcHRpb24oKSk7Ci0gICAgICAgICAgICBl
bnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkuZHVtcChzdGRvdXQpOwot
ICAgICAgICAgICAgcHJpbnRmKCIuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
T1NSIGZhaWxlZCBiZWNhdXNlIGFyZ3VtZW50ICV6dSBpcyAlcywgZXhwZWN0ZWQgIiwgYXJndW1l
bnQsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRW
YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpLmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiLlxuIik7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNT
dGF0ZSogZXhlYywgQwogICAgICAgICBpZiAoZW50cnktPm1fbG9jYWxzRm9yY2VkRG91YmxlLmdl
dChsb2NhbCkpIHsKICAgICAgICAgICAgIGlmICghZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxdLmpz
VmFsdWUoKS5pc051bWJlcigpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAg
ICAgICAgICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgJXp1IGlz
ICVzLCBleHBlY3RlZCBudW1iZXIuXG4iLCBsb2NhbCwgZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxd
LmpzVmFsdWUoKS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
ICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkIG51bWJl
ci5cbiIsIGxvY2FsLCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0
aW9uKCkpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9
CkBAIC0xMTUsOSArMTE1LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQwogICAgICAgICB9CiAgICAgICAgIGlmICghZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9j
YWwobG9jYWwpLnZhbGlkYXRlKGV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsXS5qc1ZhbHVlKCkpKSB7
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiICAgIE9T
UiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGxvY2FsLCBl
eGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOwotICAgICAg
ICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLmR1bXAoc3Rkb3V0KTsK
LSAgICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAg
IE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGxvY2Fs
LCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOworICAg
ICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLmR1bXAoV1RGOjpk
ZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLlxuIik7CiAjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzIsMTMgKzEzMiwxMyBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgCiAgICAgaWYgKCFnbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJz
KClbY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSB7CiAjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHN0YWNr
IGdyb3d0aCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICBPU1IgZmFpbGVk
IGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC5cbiIpOwogI2VuZGlmCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50
ZigiICAgIE9TUiBzaG91bGQgc3VjY2VlZC5cbiIpOworICAgIGRlYnVnUHJpbnRmKCIgICAgT1NS
IHNob3VsZCBzdWNjZWVkLlxuIik7CiAjZW5kaWYKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQpA
QCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IEMKICAgICB2b2lkKiByZXN1bHQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxl
QWRkcmVzc0F0T2Zmc2V0KGVudHJ5LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKICAgICAKICNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiICAgIE9TUiByZXR1cm5pbmcgbWFj
aGluZSBjb2RlIGFkZHJlc3MgJXAuXG4iLCByZXN1bHQpOworICAgIGRlYnVnUHJpbnRmKCIgICAg
T1NSIHJldHVybmluZyBtYWNoaW5lIGNvZGUgYWRkcmVzcyAlcC5cbiIsIHJlc3VsdCk7CiAjZW5k
aWYKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDEw
NzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNSArMzYsMTUgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogewogICAgIC8vIDEpIFByby1mb3JtYSBzdHVmZi4K
ICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJPU1Ig
ZXhpdCBmb3IgTm9kZSBAJWQgKCIsIChpbnQpZXhpdC5tX25vZGVJbmRleCk7CisgICAgZGVidWdQ
cmludGYoIk9TUiBleGl0IGZvciBOb2RlIEAlZCAoIiwgKGludClleGl0Lm1fbm9kZUluZGV4KTsK
ICAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyA7IGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiYmMjJXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBkZWJ1Z1ByaW50ZigiYmMjJXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIC0+ICVwICIsIGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAtPiAlcCAi
LCBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgfQot
ICAgIGZwcmludGYoc3RkZXJyLCAiKSBhdCBKSVQgb2Zmc2V0IDB4JXggICIsIG1faml0LmRlYnVn
T2Zmc2V0KCkpOwotICAgIGV4aXQuZHVtcChzdGRlcnIpOworICAgIGRlYnVnUHJpbnRmKCIpIGF0
IEpJVCBvZmZzZXQgMHgleCAgIiwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CisgICAgZXhpdC5kdW1w
KFdURjo6ZGVidWdGaWxlKCkpOwogI2VuZGlmCiAjaWYgREZHX0VOQUJMRShWRVJCT1NFX1NQRUNV
TEFUSU9OX0ZBSUxVUkUpCiAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0lu
Zm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvOwpAQCAtNjUzLDcgKzY1Myw3IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICBtX2ppdC5qdW1w
KEdQUkluZm86OnJlZ1QyKTsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgIC0+ICVwXG4iLCBqdW1wVGFyZ2V0KTsKKyAgICBkZWJ1Z1ByaW50
ZigiICAgLT4gJXBcbiIsIGp1bXBUYXJnZXQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZp
c2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE1IEBAIHZvaWQgT1NSRXhp
dENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKIHsKICAgICAvLyAxKSBQcm8tZm9ybWEgc3R1
ZmYuCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAi
T1NSIGV4aXQgZm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOworICAgIGRl
YnVnUHJpbnRmKCJPU1IgZXhpdCBmb3IgTm9kZSBAJWQgKCIsIChpbnQpZXhpdC5tX25vZGVJbmRl
eCk7CiAgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsg
OyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgImJjIyV1IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgZGVidWdQcmludGYoImJjIyV1IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
ICAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAtPiAlcCAiLCBjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgLT4g
JXAgIiwgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAg
IH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIikgICIpOwotICAgIGV4aXQuZHVtcChzdGRlcnIpOwor
ICAgIGRlYnVnUHJpbnRmKCIpICAiKTsKKyAgICBleGl0LmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7
CiAjZW5kaWYKICNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKICAg
ICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlv
bkZhaWx1cmVEZWJ1Z0luZm87CkBAIC0xODQsMjQgKzE4NCwyNCBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgfQogICAgIAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIik7CisgICAgZGVidWdQcmludGYo
IiAgIik7CiAgICAgaWYgKG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKQotICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlBvaXNvbmVkPSV1ICIsIG51bWJlck9mUG9pc29uZWRWaXJ0dWFs
UmVnaXN0ZXJzKTsKKyAgICAgICAgZGVidWdQcmludGYoIlBvaXNvbmVkPSV1ICIsIG51bWJlck9m
UG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKTsKICAgICBpZiAobnVtYmVyT2ZEaXNwbGFjZWRWaXJ0
dWFsUmVnaXN0ZXJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRpc3BsYWNlZD0ldSAiLCBu
dW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpOworICAgICAgICBkZWJ1Z1ByaW50Zigi
RGlzcGxhY2VkPSV1ICIsIG51bWJlck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycyk7CiAgICAg
aWYgKGhhdmVVbmJveGVkSW50MzJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYm94ZWRJ
bnQzMiAiKTsKKyAgICAgICAgZGVidWdQcmludGYoIlVuYm94ZWRJbnQzMiAiKTsKICAgICBpZiAo
aGF2ZVVuYm94ZWREb3VibGVzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYm94ZWREb3Vi
bGVzICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiVW5ib3hlZERvdWJsZXMgIik7CiAgICAgaWYg
KGhhdmVVSW50MzJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVJbnQzMiAiKTsKKyAgICAg
ICAgZGVidWdQcmludGYoIlVJbnQzMiAiKTsKICAgICBpZiAoaGF2ZUZQUnMpCi0gICAgICAgIGZw
cmludGYoc3RkZXJyLCAiRlBSICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiRlBSICIpOwogICAg
IGlmIChoYXZlQ29uc3RhbnRzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvbnN0YW50cyAi
KTsKKyAgICAgICAgZGVidWdQcmludGYoIkNvbnN0YW50cyAiKTsKICAgICBpZiAoaGF2ZVVuZGVm
aW5lZCkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmRlZmluZWQgIik7Ci0gICAgZnByaW50
ZihzdGRlcnIsICIgIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJVbmRlZmluZWQgIik7CisgICAg
ZGVidWdQcmludGYoIiAiKTsKICNlbmRpZgogICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3Jh
dGNoQnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihtX2ppdC5nbG9iYWxEYXRh
KCktPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBzdGQ6Om1h
eChoYXZlVUludDMycyA/IDJ1IDogMHUsIG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJz
ICsgKG51bWJlck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycyA8PSBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA/IDAgOiBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpKSkpOwpA
QCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICBtX2ppdC5qdW1wKEdQUkluZm86OnJlZ1QxKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIi0+ICVwXG4iLCBqdW1wVGFyZ2V0KTsK
KyAgICBkZWJ1Z1ByaW50ZigiLT4gJXBcbiIsIGp1bXBUYXJnZXQpOwogI2VuZGlmCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJs
b2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0
aW5nIE9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwLlxuIiwg
ZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUlu
ZGV4LCBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgY29kZUJsb2NrKTsKKyAgICBkZWJ1
Z1ByaW50ZigiR2VuZXJhdGluZyBPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3IgY29k
ZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgZXhpdC5tX25vZGVJbmRleCwgZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIGNvZGVC
bG9jayk7CiAjZW5kaWYKIAogICAgIHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBjb21waWxlT1NS
RXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGV4aXQubV9jb2RlID0gcGF0Y2hCdWZmZXIu
ZmluYWxpemVDb2RlKCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiT1NSIGV4aXQgY29kZSBhdCBbJXAsICVwKS5cbiIsIHBhdGNoQnVm
ZmVyLmRlYnVnQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocGF0Y2hCdWZmZXIuZGVidWdB
ZGRyZXNzKCkpICsgcGF0Y2hCdWZmZXIuZGVidWdTaXplKCkpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiT1NSIGV4aXQgY29kZSBhdCBbJXAsICVwKS5cbiIsIHBhdGNoQnVmZmVyLmRlYnVnQWRkcmVz
cygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocGF0Y2hCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgcGF0
Y2hCdWZmZXIuZGVidWdTaXplKCkpOwogI2VuZGlmCiAgICAgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIERGR19PUEVSQVRJT04gZGVidWdPcGVy
YXRpb25QcmludFNwCiAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8g
PSBzdGF0aWNfY2FzdDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihkZWJ1Z0luZm9SYXcp
OwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2RlQmxvY2s7CiAgICAg
Q29kZUJsb2NrKiBhbHRlcm5hdGl2ZSA9IGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBw
cmludGYoIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0ZUNvdW50
ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyID0gJXUsIHN1Y2Nlc3MvZmFpbCAldS8ldVxuIiwgY29kZUJsb2NrLCBkZWJ1Z0lu
Zm8tPm5vZGVJbmRleCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50
ZXIoKSA6IDAsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxh
eUNvdW50ZXIoKSA6IDAsIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBj
b2RlQmxvY2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CisgICAgZGVidWdQcmludGYoIlNw
ZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
ID0gJXUsIHN1Y2Nlc3MvZmFpbCAldS8ldVxuIiwgY29kZUJsb2NrLCBkZWJ1Z0luZm8tPm5vZGVJ
bmRleCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSA6IDAs
IGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkg
OiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
KSA6IDAsIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2st
PnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCwyOCArNjQsMjggQEAgcHVibGljOgogICAgICAgICBmaXh1cCgpOwogICAgICAg
ICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHBy
aW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb24gZml4dXA6XG4iKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIkdyYXBoIGFmdGVyIHByb3BhZ2F0aW9uIGZpeHVwOlxuIik7CiAgICAgICAgIG1fZ3Jh
cGguZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYKIAogICAgICAgICBsb2NhbENTRSgpOwogCiAj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYo
IkdyYXBoIGFmdGVyIENTRTpcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiR3JhcGggYWZ0ZXIg
Q1NFOlxuIik7CiAgICAgICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYKIAog
ICAgICAgICBhbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMoKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJHcmFwaCBhZnRlciB2aXJ0
dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb246XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIkdyYXBo
IGFmdGVyIHZpcnR1YWwgcmVnaXN0ZXIgYWxsb2NhdGlvbjpcbiIpOwogICAgICAgICBtX2dyYXBo
LmR1bXAobV9jb2RlQmxvY2spOwogI2VuZGlmCiAKICAgICAgICAgZ2xvYmFsQ0ZBKCk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIg
cHJvcGFnYXRpb246XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIkdyYXBoIGFmdGVyIHByb3Bh
Z2F0aW9uOlxuIik7CiAgICAgICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYK
ICAgICB9CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZsYWdzID0g
bm9kZS5yYXdBcml0aE5vZGVGbGFncygpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICAgJXMgQCV1OiAlcyAiLCBH
cmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgsIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmco
ZmxhZ3MpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICVzIEAldTogJXMgIiwgR3JhcGg6Om9w
TmFtZShvcCksIG1fY29tcGlsZUluZGV4LCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKGZsYWdzKSk7
CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGZsYWdzICY9IE5vZGVVc2VkQXNNYXNrOwpAQCAt
MjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIlc1xuIiwgY2hhbmdlZCA/
ICJDSEFOR0VEIiA6ICIiKTsKKyAgICAgICAgZGVidWdQcmludGYoIiVzXG4iLCBjaGFuZ2VkID8g
IkNIQU5HRUQiIDogIiIpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0g
Y2hhbmdlZDsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvcGFnYXRl
QXJpdGhOb2RlRmxhZ3NGb3J3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMg
bm9kZSBmbGFncyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRlYnVnUHJp
bnRmKCJQcm9wYWdhdGluZyBhcml0aG1ldGljIG5vZGUgZmxhZ3MgZm9yd2FyZCBbJXVdXG4iLCAr
K21fY291bnQpOwogI2VuZGlmCiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSAwOyBtX2Nv
bXBpbGVJbmRleCA8IG1fZ3JhcGguc2l6ZSgpOyArK21fY29tcGlsZUluZGV4KQogICAgICAgICAg
ICAgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3MobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAt
MjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9wYWdhdGVBcml0aE5vZGVGbGFn
c0JhY2t3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9kZSBmbGFncyBi
YWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOworICAgICAgICBkZWJ1Z1ByaW50ZigiUHJvcGFn
YXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7
CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOyBt
X2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAgICAgICBwcm9wYWdhdGVBcml0aE5vZGVGbGFn
cyhtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICVzIEAldTogIiwgR3JhcGg6
Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICVz
IEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKICNlbmRpZgogICAg
ICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CkBAIC02MzYsNyArNjM2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICBwcmludGYoIiVzXG4iLCBwcmVkaWN0aW9uVG9TdHJpbmcobV9ncmFw
aFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIl
c1xuIiwgcHJlZGljdGlvblRvU3RyaW5nKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rp
b24oKSkpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0gY2hhbmdlZDsK
QEAgLTY0NSw3ICs2NDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvcGFnYXRlUHJlZGljdGlv
bnNGb3J3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGZvcndhcmQgWyV1
XVxuIiwgKyttX2NvdW50KTsKKyAgICAgICAgZGVidWdQcmludGYoIlByb3BhZ2F0aW5nIHByZWRp
Y3Rpb25zIGZvcndhcmQgWyV1XVxuIiwgKyttX2NvdW50KTsKICNlbmRpZgogICAgICAgICBmb3Ig
KG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKytt
X2NvbXBpbGVJbmRleCkKICAgICAgICAgICAgIHByb3BhZ2F0ZU5vZGVQcmVkaWN0aW9ucyhtX2dy
YXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC02NTQsNyArNjU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHByb3BhZ2F0ZVByZWRpY3Rpb25zQmFja3dhcmQoKQogICAgIHsKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUHJvcGFnYXRpbmcg
cHJlZGljdGlvbnMgYmFja3dhcmQgWyV1XVxuIiwgKyttX2NvdW50KTsKKyAgICAgICAgZGVidWdQ
cmludGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3Vu
dCk7CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgp
OyBtX2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAgICAgICBwcm9wYWdhdGVOb2RlUHJlZGlj
dGlvbnMobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkb1JvdW5kT2ZEb3VibGVWb3RpbmcoKQogICAgIHsKICNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiVm90aW5nIG9u
IGRvdWJsZSB1c2VzIG9mIGxvY2FscyBbJXVdXG4iLCBtX2NvdW50KTsKKyAgICAgICAgZGVidWdQ
cmludGYoIlZvdGluZyBvbiBkb3VibGUgdXNlcyBvZiBsb2NhbHMgWyV1XVxuIiwgbV9jb3VudCk7
CiAjZW5kaWYKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGgubV92YXJp
YWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyaWFi
bGVBY2Nlc3NEYXRhW2ldLmZpbmQoKS0+Y2xlYXJWb3RlcygpOwpAQCAtODIwLDcgKzgyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKIAogI2lmIERGR19FTkFC
TEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6
ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTg0NSw3ICs4NDUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIg
IEAldSAtPiAlcyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6
ICJHZXRTdHJpbmdMZW5ndGgiKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgIEAldSAtPiAl
cyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6ICJHZXRTdHJp
bmdMZW5ndGgiKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKGlzQXJyYXkpCiAgICAgICAgICAg
ICAgICAgbm9kZS5vcCA9IEdldEFycmF5TGVuZ3RoOwpAQCAtODk5LDE0ICs4OTksMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbiIpOwog
I2VuZGlmCiAgICAgfQogICAgIAogICAgIHZvaWQgZml4dXAoKQogICAgIHsKICNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUGVyZm9ybWlu
ZyBGaXh1cFxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJQZXJmb3JtaW5nIEZpeHVwXG4iKTsK
ICNlbmRpZgogICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXgg
PCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKICAgICAgICAgICAgIGZpeHVwTm9k
ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC05NjcsNyArOTY3LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIE5vZGVJbmRleCByZXN1bHQgPSBjb21wdXRlU3RhcnRJbmRleEZvckNo
aWxkcmVuKGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgIGxvb2tiYWNrICV1OiAiLCByZXN1
bHQpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBsb29rYmFjayAldTogIiwgcmVzdWx0KTsKICNl
bmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIEFTU0VSVChyZXN1bHQgPD0g
bV9jb21waWxlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9T
RSkKLSAgICAgICAgcHJpbnRmKCIgIGxpbWl0ICV1OiAiLCByZXN1bHQpOworICAgICAgICBkZWJ1
Z1ByaW50ZigiICBsaW1pdCAldTogIiwgcmVzdWx0KTsKICNlbmRpZgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICBSZXBsYWNpbmcgQCV1IC0+IEAldSIsIG1fY29tcGls
ZUluZGV4LCByZXBsYWNlbWVudCk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICBSZXBsYWNpbmcg
QCV1IC0+IEAldSIsIG1fY29tcGlsZUluZGV4LCByZXBsYWNlbWVudCk7CiAjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKQEAgLTE0
MDUsNyArMTQwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGltaW5hdGUoKQogICAgIHsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
ICAgRWxpbWluYXRpbmcgQCV1IiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiICAgRWxpbWluYXRpbmcgQCV1IiwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAg
IAogICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07CkBAIC0xNDMx
LDcgKzE0MzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
ICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwg
bV9jb21waWxlSW5kZXgpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgJXMgQCV1OiAiLCBHcmFw
aDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwgbV9jb21waWxlSW5kZXgpOwog
I2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBOT1RFOiB0aGVyZSBhcmUgc29tZSBub2RlcyB0
aGF0IHdlIGRlbGliZXJhdGVseSBkb24ndCBDU0UgZXZlbiB0aG91Z2ggd2UKQEAgLTE1NTksNyAr
MTU1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX2xhc3RTZWVuW25vZGUub3Ag
JiBOb2RlSWRNYXNrXSA9IG1fY29tcGlsZUluZGV4OwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkZWJ1Z1By
aW50ZigiXG4iKTsKICNlbmRpZgogICAgIH0KICAgICAKQEAgLTE1NzQsNyArMTU3NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBsb2NhbENTRSgpCiAgICAgewogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQZXJmb3JtaW5nIGxvY2FsIENT
RToiKTsKKyAgICAgICAgZGVidWdQcmludGYoIlBlcmZvcm1pbmcgbG9jYWwgQ1NFOiIpOwogI2Vu
ZGlmCiAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2sgPSAwOyBibG9jayA8IG1fZ3JhcGgubV9i
bG9ja3Muc2l6ZSgpOyArK2Jsb2NrKQogICAgICAgICAgICAgcGVyZm9ybUJsb2NrQ1NFKCptX2dy
YXBoLm1fYmxvY2tzW2Jsb2NrXSk7CkBAIC0xNTgzLDkgKzE1ODMsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWxsb2NhdGVWaXJ0dWFsUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIlByZXNlcnZlZCB2YXJzOiAiKTsKLSAgICAg
ICAgbV9ncmFwaC5tX3ByZXNlcnZlZFZhcnMuZHVtcChzdGRvdXQpOwotICAgICAgICBwcmludGYo
IlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJQcmVzZXJ2ZWQgdmFyczogIik7CisgICAgICAg
IG1fZ3JhcGgubV9wcmVzZXJ2ZWRWYXJzLmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAg
IGRlYnVnUHJpbnRmKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIFNjb3JlQm9hcmQgc2NvcmVCb2Fy
ZChtX2dyYXBoLCBtX2dyYXBoLm1fcHJlc2VydmVkVmFycyk7CiAgICAgICAgIHVuc2lnbmVkIHNp
emVFeGNsdWRpbmdQaGlOb2RlcyA9IG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpLT5lbmQ7CkBAIC0x
NjI5LDcgKzE2MjksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoKHVuc2lnbmVkKW1fY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA8IGNhbGxlZVJlZ2lzdGVycykKICAgICAgICAgICAg
IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA9IGNhbGxlZVJlZ2lzdGVyczsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiTnVtIGNhbGxlZSBy
ZWdpc3RlcnM6ICV1XG4iLCBjYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBkZWJ1Z1ByaW50Zigi
TnVtIGNhbGxlZSByZWdpc3RlcnM6ICV1XG4iLCBjYWxsZWVSZWdpc3RlcnMpOwogI2VuZGlmCiAg
ICAgfQogICAgIApAQCAtMTYzOSw0MiArMTYzOSw0MiBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
IWJsb2NrLT5jZmFTaG91bGRSZXZpc2l0KQogICAgICAgICAgICAgcmV0dXJuOwogI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICBCbG9j
ayAjJXUgKGJjIyV1KTpcbiIsIGJsb2NrSW5kZXgsIGJsb2NrLT5ieXRlY29kZUJlZ2luKTsKKyAg
ICAgICAgZGVidWdQcmludGYoIiAgIEJsb2NrICMldSAoYmMjJXUpOlxuIiwgYmxvY2tJbmRleCwg
YmxvY2stPmJ5dGVjb2RlQmVnaW4pOwogI2VuZGlmCiAgICAgICAgIHN0YXRlLmJlZ2luQmFzaWNC
bG9jayhibG9jayk7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICBwcmludGYoIiAgICAgIGhlYWQgdmFyczogIik7Ci0gICAgICAgIGR1bXBPcGVyYW5k
cyhibG9jay0+dmFsdWVzQXRIZWFkLCBzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7Cisg
ICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBoZWFkIHZhcnM6ICIpOworICAgICAgICBkdW1wT3Bl
cmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgIGRl
YnVnUHJpbnRmKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIGZvciAoTm9kZUluZGV4IG5vZGVJbmRl
eCA9IGJsb2NrLT5iZWdpbjsgbm9kZUluZGV4IDwgYmxvY2stPmVuZDsgKytub2RlSW5kZXgpIHsK
ICAgICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlSW5kZXhdLnNob3VsZEdlbmVyYXRlKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpv
cE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4KTsKLSAgICAgICAgICAgIHN0
YXRlLmR1bXAoc3Rkb3V0KTsKLSAgICAgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2Rl
SW5kZXhdLm9wKSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIHN0YXRlLmR1bXAoV1RGOjpkZWJ1
Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICNlbmRpZgogICAgICAg
ICAgICAgaWYgKCFzdGF0ZS5leGVjdXRlKG5vZGVJbmRleCkpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIHByaW50ZigiICAgICAgdGFpbCByZWdzOiAiKTsKLSAgICAgICAgc3RhdGUuZHVt
cChzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgICB0YWlsIHJlZ3M6ICIpOworICAgICAgICBzdGF0ZS5kdW1wKFdURjo6ZGVidWdGaWxlKCkp
OworICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICNlbmRpZgogICAgICAgICBtX2NoYW5nZWQg
fD0gc3RhdGUuZW5kQmFzaWNCbG9jayhBYnN0cmFjdFN0YXRlOjpNZXJnZVRvU3VjY2Vzc29ycyk7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmlu
dGYoIiAgICAgIHRhaWwgdmFyczogIik7Ci0gICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFs
dWVzQXRUYWlsLCBzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRlYnVn
UHJpbnRmKCIgICAgICB0YWlsIHZhcnM6ICIpOworICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2st
PnZhbHVlc0F0VGFpbCwgV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJc
biIpOwogI2VuZGlmCiAgICAgfQogICAgIAogICAgIHZvaWQgcGVyZm9ybUZvcndhcmRDRkEoQWJz
dHJhY3RTdGF0ZSYgc3RhdGUpCiAgICAgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJDRkEgWyV1XVxuIiwgKyttX2NvdW50KTsKKyAg
ICAgICAgZGVidWdQcmludGYoIkNGQSBbJXVdXG4iLCArK21fY291bnQpOwogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2sgPSAwOyBibG9jayA8IG1fZ3JhcGgu
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsMTEg
KzIzMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIHJlZ2lzdGVyLCBwcmludCB0
aGUgVmlydHVhbFJlZ2lzdGVyICduYW1lJy4KICAgICAgICAgZm9yICh1aW50MzJfdCBpID0wOyBp
IDwgTlVNX1JFR1M7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZGF0YVtpXS5uYW1lICE9IElu
dmFsaWRWaXJ0dWFsUmVnaXN0ZXIpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJb
JTAyZF0iLCBtX2RhdGFbaV0ubmFtZSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIlsl
MDJkXSIsIG1fZGF0YVtpXS5uYW1lKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlstLV0iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
Wy0tXSIpOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICAg
ICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDI2ICsxMTksMjYgQEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAo
KQogICAgIHsKLSAgICAgICAgcHJpbnRmKCIgICAgVVNFRDogWyAiKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIiAgICBVU0VEOiBbICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV91c2VkLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZnJlZS5jb250YWlucyhp
KSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiJWQ6IiwgaSk7CisgICAgICAgICAgICAgICAg
ZGVidWdQcmludGYoIiVkOiIsIGkpOwogICAgICAgICAgICAgICAgIGlmIChtX3VzZWRbaV0gPT0g
bWF4KCkpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigibG9jYWwgIik7CisgICAgICAgICAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJsb2NhbCAiKTsKICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV91c2VkW2ldKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGVidWdQcmludGYoIiVkICIsIG1fdXNlZFtpXSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCJdXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIl1c
biIpOwogCi0gICAgICAgIHByaW50ZigiICAgIEZSRUU6IFsgIik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgRlJFRTogWyAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dXNlZC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZnJlZS5jb250YWlucyhpKSAm
JiBtX3VzZWRbaV0gIT0gbWF4KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fdXNlZFtp
XSk7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBpKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiJWQgIiwgaSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnRmKCJdXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIl1cbiIpOwogICAgIH0KIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4
NCw3ICs5ODQsNyBAQCB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCBub2RlSW5kZXgsIERhdGFGb3Jt
YXQmIHJldHVybkZvcm1hdCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAg
ZnByaW50ZihzdGRlcnIsICJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICBkZWJ1Z1By
aW50ZigiU3BlY0ludEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBpZiAoaXNLbm93
bk5vdEludGVnZXIobm9kZUluZGV4KSkgewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKQEAgLTEwODAsNyAr
MTA4MCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludFMKIEZQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4
KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwg
IlNwZWNEb3VibGVAJWQgICAiLCBub2RlSW5kZXgpOworICAgIGRlYnVnUHJpbnRmKCJTcGVjRG91
YmxlQCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAgIGlmIChpc0tub3duTm90TnVtYmVy
KG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CkBAIC0xMjEwLDcgKzEyMTAsNyBAQCBG
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0NlbGxAJWQg
ICAiLCBub2RlSW5kZXgpOworICAgIGRlYnVnUHJpbnRmKCJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJ
bmRleCk7CiAjZW5kaWYKICAgICBpZiAoaXNLbm93bk5vdENlbGwobm9kZUluZGV4KSkgewogICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlKTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgp
OworICAgICBkZWJ1Z1ByaW50ZigiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlm
CiAgICAgaWYgKGlzS25vd25Ob3RCb29sZWFuKG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw3ICs5ODQs
NyBAQCB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCBub2RlSW5kZXgsIERhdGFGb3JtYXQmIHJldHVy
bkZvcm1hdCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50Zihz
dGRlcnIsICJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICBkZWJ1Z1ByaW50ZigiU3Bl
Y0ludEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9k
ZUluZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0
dWFsUmVnaXN0ZXIoKTsKQEAgLTExMjksNyArMTEyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludFMKIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNEb3VibGVAJWQgICAiLCBub2RlSW5kZXgp
OworICAgIGRlYnVnUHJpbnRmKCJTcGVjRG91YmxlQCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRp
ZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtMTI4MCw3ICsxMjgw
LDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogewog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWND
ZWxsQCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICBkZWJ1Z1ByaW50ZigiU3BlY0NlbGxAJWQgICAi
LCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVy
KCk7CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVDZWxsCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAg
IGZwcmludGYoc3RkZXJyLCAiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOworICAgIGRlYnVn
UHJpbnRmKCJTcGVjQm9vbEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBOb2RlJiBu
b2RlID0gYXQobm9kZUluZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMwLDMzICs0MzAsMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRTdHJp
bmcoRGF0YQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZHVtcChjb25zdCBjaGFyKiBsYWJlbCkKIHsK
ICAgICBpZiAobGFiZWwpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiPCVzPlxuIiwgbGFiZWwp
OworICAgICAgICBkZWJ1Z1ByaW50ZigiPCVzPlxuIiwgbGFiZWwpOwogCi0gICAgZnByaW50Zihz
dGRlcnIsICIgIGdwcnM6XG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiICBncHJzOlxuIik7CiAgICAg
bV9ncHJzLmR1bXAoKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgZnByczpcbiIpOworICAgIGRl
YnVnUHJpbnRmKCIgIGZwcnM6XG4iKTsKICAgICBtX2ZwcnMuZHVtcCgpOwotICAgIGZwcmludGYo
c3RkZXJyLCAiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAgZGVidWdQcmludGYoIiAgVmly
dHVhbFJlZ2lzdGVyczpcbiIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVy
YXRpb25JbmZvLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0g
bV9nZW5lcmF0aW9uSW5mb1tpXTsKICAgICAgICAgaWYgKGluZm8uYWxpdmUoKSkKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiICAgICUgM2Q6JXMlcyIsIGksIGRhdGFGb3JtYXRTdHJpbmco
aW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0
KCkpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgJSAzZDolcyVzIiwgaSwgZGF0YUZv
cm1hdFN0cmluZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8u
c3BpbGxGb3JtYXQoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiAgICAlIDNkOltfX11bX19dIiwgaSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAg
ICUgM2Q6W19fXVtfX10iLCBpKTsKICAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI6ZnByJWRc
biIsIGluZm8uZnByKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIjpmcHIlZFxuIiwgaW5m
by5mcHIoKSk7CiAgICAgICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgICAgICAmJiAhKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykKICNlbmRpZgogICAgICAgICAgICAgKSB7
CiAgICAgICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiOiVzXG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5n
cHIoKSkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdO
YW1lKGluZm8uZ3ByKCkpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlxuIik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9CiAgICAg
aWYgKGxhYmVsKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwvJXM+XG4iLCBsYWJlbCk7Cisg
ICAgICAgIGRlYnVnUHJpbnRmKCI8LyVzPlxuIiwgbGFiZWwpOwogfQogI2VuZGlmCiAKQEAgLTQ2
OCwxMyArNDY4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVuY3koKQog
CiAgICAgZm9yIChncHJfaXRlcmF0b3IgaXRlciA9IG1fZ3Bycy5iZWdpbigpOyBpdGVyICE9IG1f
Z3Bycy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChpdGVyLmlzTG9ja2VkKCkpIHsKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDog
Z3ByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGdwciAlcyBpcyBsb2NrZWQu
XG4iLCBpdGVyLmRlYnVnTmFtZSgpKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZm9yIChmcHJfaXRlcmF0b3IgaXRlciA9IG1fZnBycy5iZWdpbigp
OyBpdGVyICE9IG1fZnBycy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChpdGVyLmlzTG9j
a2VkKCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NI
RUNLIGZhaWxlZDogZnByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOworICAg
ICAgICAgICAgZGVidWdQcmludGYoIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGZwciAl
cyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVnTmFtZSgpKTsKICAgICAgICAgICAgIGZhaWxlZCA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gaW5m
by5ncHIoKTsKICAgICAgICAgICAgIEFTU0VSVChncHIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAg
ICAgICAgICBpZiAobV9ncHJzLm5hbWUoZ3ByKSAhPSB2aXJ0dWFsUmVnaXN0ZXIpIHsKLSAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6
IG5hbWUgbWlzbWF0Y2ggZm9yIHZpcnR1YWwgcmVnaXN0ZXIgJWQgKGdwciAlcykuXG4iLCB2aXJ0
dWFsUmVnaXN0ZXIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBm
b3IgdmlydHVhbCByZWdpc3RlciAlZCAoZ3ByICVzKS5cbiIsIHZpcnR1YWxSZWdpc3RlciwgR1BS
SW5mbzo6ZGVidWdOYW1lKGdwcikpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjaGVja0NvbnNpc3RlbmN5KCkKICAgICAgICAgICAgIEZQUlJlZyBm
cHIgPSBpbmZvLmZwcigpOwogICAgICAgICAgICAgQVNTRVJUKGZwciAhPSBJbnZhbGlkRlBSUmVn
KTsKICAgICAgICAgICAgIGlmIChtX2ZwcnMubmFtZShmcHIpICE9IHZpcnR1YWxSZWdpc3Rlcikg
ewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNL
IGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgdmlydHVhbCByZWdpc3RlciAlZCAoZnByICVzKS5c
biIsIHZpcnR1YWxSZWdpc3RlciwgRlBSSW5mbzo6ZGVidWdOYW1lKGZwcikpOworICAgICAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1p
c21hdGNoIGZvciB2aXJ0dWFsIHJlZ2lzdGVyICVkIChmcHIgJXMpLlxuIiwgdmlydHVhbFJlZ2lz
dGVyLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSk7CiAgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI3LDE4ICs1Mjcs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby5ncHIo
KSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sg
ZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxu
IiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBn
cHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVh
bFJlZ2lzdGVyKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KICNlbHNl
CiAgICAgICAgIGlmICghKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykpIHsK
ICAgICAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby5ncHIoKSkgewotICAgICAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFt
ZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVi
dWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYo
IkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IG5hbWUgbWlzbWF0Y2ggZm9yIGdwciAlcyAo
dmlydHVhbCByZWdpc3RlciAlZCkuXG4iLCBpdGVyLmRlYnVnTmFtZSgpLCB2aXJ0dWFsUmVnaXN0
ZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8udGFnR1BS
KCkgJiYgaXRlci5yZWdJRCgpICE9IGluZm8ucGF5bG9hZEdQUigpKSB7Ci0gICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1p
c21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05h
bWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiREZH
X0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0
dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7
CiAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVu
Y3koKQogCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2
aXJ0dWFsUmVnaXN0ZXJdOwogICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8uZnByKCkp
IHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZh
aWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZnByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIs
IGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBkZWJ1Z1By
aW50ZigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZnBy
ICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxS
ZWdpc3Rlcik7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9j
ayYKICAgICAgICAgbV9jb2RlT3JpZ2luRm9yT1NSID0gbm9kZS5jb2RlT3JpZ2luOwogICAgICAg
ICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY3VsYXRpdmVKSVQgc2tpcHBp
bmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAgICIsIChpbnQpbV9jb21w
aWxlSW5kZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNl
dCgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJTcGVjdWxhdGl2ZUpJVCBza2lwcGluZyBO
b2RlIEAlZCAoYmMjJXUpIGF0IEpJVCBvZmZzZXQgMHgleCAgICAgIiwgKGludCltX2NvbXBpbGVJ
bmRleCwgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1faml0LmRlYnVnT2Zmc2V0KCkp
OwogI2VuZGlmCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKICAgICAgICAgICAgIGNh
c2UgU2V0TG9jYWw6CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShCYXNpY0Jsb2NrJgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgCiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTcGVj
dWxhdGl2ZUpJVCBnZW5lcmF0aW5nIE5vZGUgQCVkIChiYyMldSkgYXQgSklUIG9mZnNldCAweCV4
ICAgIiwgKGludCltX2NvbXBpbGVJbmRleCwgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgs
IG1faml0LmRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlNwZWN1bGF0
aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAi
LCAoaW50KW1fY29tcGlsZUluZGV4LCBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbV9q
aXQuZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKICNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9F
VkVSWV9OT0RFKQogICAgICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwpAQCAtMTAxMSwyMCAr
MTAxMSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICAgICAgaWYgKG5vZGUuaGFzUmVzdWx0
KCkpIHsKICAgICAgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlv
bkluZm9bbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKV07Ci0gICAgICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICItPiAlcywgdnIjJWQiLCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSwgKGludClub2RlLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiLT4gJXMsIHZyIyVkIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSksIChpbnQpbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiwgJXMiLCBGUFJJ
bmZvOjpkZWJ1Z05hbWUoaW5mby5mcHIoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVi
dWdQcmludGYoIiwgJXMiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5mcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiLCAlcyAlcyIsIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnRhZ0dQUigpKSwg
R1BSSW5mbzo6ZGVidWdOYW1lKGluZm8ucGF5bG9hZEdQUigpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z1ByaW50ZigiLCAlcyAlcyIsIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnRh
Z0dQUigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8ucGF5bG9hZEdQUigpKSk7CiAjZW5kaWYK
ICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIsICVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIsICVzIiwgR1BSSW5mbzo6ZGVidWdOYW1l
KGluZm8uZ3ByKCkpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgICAgIik7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAiKTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAg
ICIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgIik7CiAjZW5kaWYKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTEwMzIsMTQgKzEwMzIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
YXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgY29tcHV0ZVZhbHVlUmVjb3ZlcnlG
b3IoYXJndW1lbnRUb09wZXJhbmQoaSkpLmR1bXAoc3RkZXJyKTsKICAgICAgICAgCi0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiIDogIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgOiAiKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IG9wZXJhbmQgPSAwOyBvcGVyYW5kIDwgKGludCltX3Zh
cmlhYmxlcy5zaXplKCk7ICsrb3BlcmFuZCkKICAgICAgICAgICAgIGNvbXB1dGVWYWx1ZVJlY292
ZXJ5Rm9yKG9wZXJhbmQpLmR1bXAoc3RkZXJyKTsKICNlbmRpZgogCiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgIGRl
YnVnUHJpbnRmKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGUgYWJzdHJhY3Qgc3RhdGUgaXMgcmVtYXRlcmlhbGl6ZWQgZm9yIHRoZSBuZXh0IG5v
ZGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IEdDVGltZXIgewogICAgIH0KICAgICB+R0NUaW1lcigp
CiAgICAgewotICAgICAgICBwcmludGYoIiVzOiAlLjJsZm1zIChhdmcuICUuMmxmLCBtaW4uICUu
MmxmLCBtYXguICUuMmxmKVxuIiwgbV9uYW1lLCBtX3RpbWUgKiAxMDAwLCBtX3RpbWUgKiAxMDAw
IC8gbV9jb3VudCwgbV9taW4qMTAwMCwgbV9tYXgqMTAwMCk7CisgICAgICAgIGRlYnVnUHJpbnRm
KCIlczogJS4ybGZtcyAoYXZnLiAlLjJsZiwgbWluLiAlLjJsZiwgbWF4LiAlLjJsZilcbiIsIG1f
bmFtZSwgbV90aW1lICogMTAwMCwgbV90aW1lICogMTAwMCAvIG1fY291bnQsIG1fbWluKjEwMDAs
IG1fbWF4KjEwMDApOwogICAgIH0KICAgICBkb3VibGUgbV90aW1lOwogICAgIGRvdWJsZSBtX21p
bjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgR0NDb3VudGVyIHsKICAgICB9CiAgICAgfkdD
Q291bnRlcigpCiAgICAgewotICAgICAgICBwcmludGYoIiVzOiAlenUgdmFsdWVzIChhdmcuICV6
dSwgbWluLiAlenUsIG1heC4gJXp1KVxuIiwgbV9uYW1lLCBtX3RvdGFsLCBtX3RvdGFsIC8gbV9j
b3VudCwgbV9taW4sIG1fbWF4KTsKKyAgICAgICAgZGVidWdQcmludGYoIiVzOiAlenUgdmFsdWVz
IChhdmcuICV6dSwgbWluLiAlenUsIG1heC4gJXp1KVxuIiwgbV9uYW1lLCBtX3RvdGFsLCBtX3Rv
dGFsIC8gbV9jb3VudCwgbV9taW4sIG1fbWF4KTsKICAgICB9CiAgICAgY29uc3QgY2hhciogbV9u
YW1lOwogICAgIHNpemVfdCBtX2NvdW50OwpAQCAtMzgxLDggKzM4MSw4IEBAIHZvaWQgSGVhcDo6
ZGVzdHJveSgpCiAgICAgQVNTRVJUKCFzaXplKCkpOwogICAgIAogI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCi0gICAgbV9zbG90VmlzaXRvci5tX3Zpc2l0ZWRUeXBlQ291bnRzLmR1
bXAoc3RkZXJyLCAiVmlzaXRlZCBUeXBlIENvdW50cyIpOwotICAgIG1fZGVzdHJveWVkVHlwZUNv
dW50cy5kdW1wKHN0ZGVyciwgIkRlc3Ryb3llZCBUeXBlIENvdW50cyIpOworICAgIG1fc2xvdFZp
c2l0b3IubV92aXNpdGVkVHlwZUNvdW50cy5kdW1wKFdURjo6ZGVidWdGaWxlKCksICJWaXNpdGVk
IFR5cGUgQ291bnRzIik7CisgICAgbV9kZXN0cm95ZWRUeXBlQ291bnRzLmR1bXAoV1RGOjpkZWJ1
Z0ZpbGUoKSwgIkRlc3Ryb3llZCBUeXBlIENvdW50cyIpOwogI2VuZGlmCiAgICAgCiAgICAgcmVs
ZWFzZUZyZWVCbG9ja3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
IkhlYXBCbG9jay5oIgogCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2luY2x1ZGUgPHd0Zi9E
ZWJ1Z0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5oPgpAQCAtMzYsOSArMzcsMTEgQEAKICNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVf
VFJBTlNJVElPTlMgMAogCiAjaWYgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMKLSNk
ZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihibG9jaykgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHByaW50ZigiJXM6JWQgJXM6IGJs
b2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sICNibG9j
aywgKGJsb2NrKSwgKGJsb2NrKS0+bV9zdGF0ZSk7IFwKKyNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTihibG9jaykgZG8geyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgZGVidWdQcmludGYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXywgX19GVU5DVElPTl9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICNibG9jaywgKGJsb2NrKSwgKGJsb2NrKS0+bV9zdGF0ZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCiAjZGVmaW5lIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT04oYmxvY2spICgodm9pZCkwKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDEwNzAy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgQ2FsbEZyYW1lOjpkdW1wQ2FsbGVy
KCkKICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwogICAgIAogICAgIGludGVycHJldGVyKCktPnJldHJp
ZXZlTGFzdENhbGxlcih0aGlzLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5n
LCBmdW5jdGlvbik7Ci0gICAgcHJpbnRmKCJDYWxscG9pbnQgPT4gJXM6JWRcbiIsIHVybFN0cmlu
Zy51dGY4KCkuZGF0YSgpLCBzaWduZWRMaW5lTnVtYmVyKTsKKyAgICBkZWJ1Z1ByaW50ZigiQ2Fs
bHBvaW50ID0+ICVzOiVkXG4iLCB1cmxTdHJpbmcudXRmOCgpLmRhdGEoKSwgc2lnbmVkTGluZU51
bWJlcik7CiB9CiAKIFJlZ2lzdGVyRmlsZSogQ2FsbEZyYW1lOjpyZWdpc3RlckZpbGUoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsMTAgKzU5MiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpkdW1wQ2FsbEZyYW1lKENhbGxGcmFtCiAKIHZvaWQgSW50ZXJwcmV0
ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcHJpbnRmKCJS
ZWdpc3RlciBmcmFtZTogXG5cbiIpOwotICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c
biIpOwotICAgIHByaW50ZigiICAgICAgICAgICAgdXNlICAgICAgICAgICAgfCAgIGFkZHJlc3Mg
IHwgICAgICAgICAgICAgICAgdmFsdWUgICAgICAgICAgICAgICBcbiIpOwotICAgIHByaW50Zigi
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgIGRlYnVnUHJpbnRmKCJSZWdpc3RlciBmcmFt
ZTogXG5cbiIpOworICAgIGRlYnVnUHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Cisg
ICAgZGVidWdQcmludGYoIiAgICAgICAgICAgIHVzZSAgICAgICAgICAgIHwgICBhZGRyZXNzICB8
ICAgICAgICAgICAgICAgIHZhbHVlICAgICAgICAgICAgICAgXG4iKTsKKyAgICBkZWJ1Z1ByaW50
ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGNvbnN0IFJlZ2lzdGVyKiBpdDsKQEAgLTYw
NSwzMCArNjA1LDMwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0K
ICAgICBpdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlclNpemUgLSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKICAgICB2ID0gKCppdCku
anNWYWx1ZSgpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgcHJpbnRmKCJbdGhpc10gICAg
ICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAweCVsbHggXG4iLCBpdCwgdi5kZXNjcmlw
dGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0OworICAgIGRlYnVnUHJpbnRmKCJbdGhp
c10gICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAweCVsbHggXG4iLCBpdCwgdi5k
ZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0OwogI2Vsc2UKLSAgICBwcmlu
dGYoIlt0aGlzXSAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgaXQs
IHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsgKytpdDsKKyAgICBkZWJ1Z1By
aW50ZigiW3RoaXNdICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgJXAgXG4iLCBp
dCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0OwogI2VuZGlmCiAg
ICAgZW5kID0gaXQgKyBtYXgoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxLCAwKTsgLy8g
LSAxIHRvIHNraXAgInRoaXMiCiAgICAgaWYgKGl0ICE9IGVuZCkgewogICAgICAgICBkbyB7CiAg
ICAgICAgICAgICB2ID0gKCppdCkuanNWYWx1ZSgpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgICAgICBwcmludGYoIltwYXJhbV0gICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUt
MTZzIDB4JWxseCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiW3BhcmFtXSAgICAgICAgICAgICAgICAgICAgfCAl
MTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5j
b2RlKHYpKTsKICNlbHNlCi0gICAgICAgICAgICBwcmludGYoIltwYXJhbV0gICAgICAgICAgICAg
ICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1
ZTo6ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbcGFyYW1dICAgICAgICAg
ICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpT
VmFsdWU6OmVuY29kZSh2KSk7CiAjZW5kaWYKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgIH0g
d2hpbGUgKGl0ICE9IGVuZCk7CiAgICAgfQotICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS1cbiIpOwotICAgIHByaW50ZigiW0NvZGVCbG9ja10gICAgICAgICAgICAgICAgfCAlMTBwIHwg
JXAgXG4iLCBpdCwgKCppdCkuY29kZUJsb2NrKCkpOyArK2l0OwotICAgIHByaW50ZigiW1Njb3Bl
Q2hhaW5dICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuc2NvcGVDaGFp
bigpKTsgKytpdDsKLSAgICBwcmludGYoIltDYWxsZXJSZWdpc3RlcnNdICAgICAgICAgIHwgJTEw
cCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsraXQ7Ci0gICAgcHJpbnRmKCJbUmV0dXJuUENd
ICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBcbiIsIGl0LCAoKml0KS52UEMoKSk7ICsraXQ7
Ci0gICAgcHJpbnRmKCJbQXJndW1lbnRDb3VudF0gICAgICAgICAgICB8ICUxMHAgfCAlZCBcbiIs
IGl0LCAoKml0KS5pKCkpOyArK2l0OwotICAgIHByaW50ZigiW0NhbGxlZV0gICAgICAgICAgICAg
ICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuZnVuY3Rpb24oKSk7ICsraXQ7Ci0gICAg
cHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGVidWdQcmludGYoIi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiW0NvZGVCbG9ja10gICAgICAg
ICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuY29kZUJsb2NrKCkpOyArK2l0Owor
ICAgIGRlYnVnUHJpbnRmKCJbU2NvcGVDaGFpbl0gICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBc
biIsIGl0LCAoKml0KS5zY29wZUNoYWluKCkpOyArK2l0OworICAgIGRlYnVnUHJpbnRmKCJbQ2Fs
bGVyUmVnaXN0ZXJzXSAgICAgICAgICB8ICUxMHAgfCAlZCBcbiIsIGl0LCAoKml0KS5pKCkpOyAr
K2l0OworICAgIGRlYnVnUHJpbnRmKCJbUmV0dXJuUENdICAgICAgICAgICAgICAgICB8ICUxMHAg
fCAlcCBcbiIsIGl0LCAoKml0KS52UEMoKSk7ICsraXQ7CisgICAgZGVidWdQcmludGYoIltBcmd1
bWVudENvdW50XSAgICAgICAgICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsr
aXQ7CisgICAgZGVidWdQcmludGYoIltDYWxsZWVdICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8
ICVwIFxuIiwgaXQsICgqaXQpLmZ1bmN0aW9uKCkpOyArK2l0OworICAgIGRlYnVnUHJpbnRmKCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAKICAgICBpbnQgcmVnaXN0ZXJDb3VudCA9IDA7CiAK
QEAgLTYzNywzMCArNjM3LDMwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2Fs
bEZyYW0KICAgICAgICAgZG8gewogICAgICAgICAgICAgdiA9ICgqaXQpLmpzVmFsdWUoKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgcHJpbnRmKCJbciUyZF0gICAgICAgICAg
ICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQs
IHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4
IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2Rl
KHYpKTsKICNlbHNlCi0gICAgICAgICAgICBwcmludGYoIltyJTJkXSAgICAgICAgICAgICAgICAg
ICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0
aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiW3Il
MmRdICAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgcmVnaXN0ZXJD
b3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbmRpZgog
ICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgICsrcmVnaXN0ZXJDb3VudDsKICAgICAgICAg
fSB3aGlsZSAoaXQgIT0gZW5kKTsKICAgICB9Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuIik7CisgICAgZGVidWdQcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAog
ICAgIGVuZCA9IGl0ICsgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAtIGNvZGVCbG9j
ay0+bV9udW1WYXJzOwogICAgIGlmIChpdCAhPSBlbmQpIHsKICAgICAgICAgZG8gewogICAgICAg
ICAgICAgdiA9ICgqaXQpLmpzVmFsdWUoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICAgICAgcHJpbnRmKCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMg
MHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6
ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbciUyZF0gICAgICAgICAgICAg
ICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYu
ZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCi0gICAgICAgICAgICBw
cmludGYoIltyJTJkXSAgICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIs
IHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiW3IlMmRdICAgICAgICAgICAgICAgICAgICAgIHwg
JTEwcCB8ICUtMTZzICVwIFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwg
SlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbmRpZgogICAgICAgICAgICAgKytpdDsKICAgICAgICAg
ICAgICsrcmVnaXN0ZXJDb3VudDsKICAgICAgICAgfSB3aGlsZSAoaXQgIT0gZW5kKTsKICAgICB9
Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGVidWdQcmludGYo
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIG1fbGFiZWxzW21fYnl0ZWNvZGVP
ZmZzZXRdID0gbGFiZWwoKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkKLSAgICAgICAgcHJp
bnRmKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yIGJjIyV1IGF0IG9mZnNldCAweCVseC5cbiIs
IG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICBkZWJ1Z1By
aW50ZigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQgMHglbHguXG4i
LCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKICNlbmRpZgogCiAgICAg
ICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9u
LT51Lm9wY29kZSkpIHsKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yIGJjIyV1IGF0IG9mZnNldCAw
eCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAg
ICBkZWJ1Z1ByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yIGJjIyV1IGF0IG9m
ZnNldCAweCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwog
I2VuZGlmCiAKICAgICAgICAgc3dpdGNoIChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJy
ZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSkgewpAQCAtNzA2LDcgKzcwNiw3IEBAIEpJVENvZGUg
SklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICBDb2RlUmVmIHJlc3VsdCA9IHBh
dGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkK
LSAgICBwcmludGYoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBt
X2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4
ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOworICAgIGRlYnVnUHJpbnRmKCJKSVQgZ2VuZXJhdGVk
IGNvZGUgZm9yICVwIGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVjdXRh
YmxlTWVtb3J5KCktPnN0YXJ0KCksIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCktPmVuZCgpKTsK
ICNlbmRpZgogICAgIAogICAgIHJldHVybiBKSVRDb2RlKHJlc3VsdCwgSklUQ29kZTo6QmFzZWxp
bmVKSVQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlz
aW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMxLDE2ICsxOTMxLDE2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tG
cmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAg
IHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9
ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2st
PnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyKCkpOworICAgIGRlYnVnUHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9v
cCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0g
JXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1
dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29k
ZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChj
b2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIkNvbnNpZGVyaW5nIGxvb3AgT1NSIGludG8gJXAo
JXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJl
cGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNz
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50
ZXIoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJDb25zaWRlcmluZyBsb29wIE9TUiBpbnRvICVw
KCVwKSB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vz
c0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3Vu
dGVyKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNo
b3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKLSAgICAgICAgICAgIHByaW50ZigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCgl
cCkgKGluIGxvb3ApLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwor
ICAgICAgICAgICAgZGVidWdQcmludGYoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAo
JXApIChpbiBsb29wKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsK
ICNlbmRpZgogICAgICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcHRpbWl6ZV9mcm9tCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2stPnNo
b3VsZE9wdGltaXplTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAg
ICAgICAgcHJpbnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChpbiBsb29wKSBiZWNh
dXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuXG4iLCBjb2RlQmxvY2spOworICAgICAgICAg
ICAgZGVidWdQcmludGYoIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIGxvb3ApIGJl
Y2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk1OCwxNCArMTk1OCwxNCBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGNvZGVCbG9jay0+Y29tcGlsZU9wdGltaXplZChjYWxsRnJhbWUsIHNjb3BlQ2hh
aW4pOwogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCiAgICAgICAgIGlmIChlcnJvcikKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogb3B0aW1pemVkIGNvbXBpbGF0aW9u
IGZyb20gbG9vcCBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJXQVJOSU5H
OiBvcHRpbWl6ZWQgY29tcGlsYXRpb24gZnJvbSBsb29wIGZhaWxlZC5cbiIpOwogI2Vsc2UKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgaWYg
KGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSA9PSBjb2RlQmxvY2spIHsKICNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQotICAgICAgICAgICAgcHJpbnRmKCJPcHRpbWl6aW5nICVwIGZyb20gbG9v
cCBmYWlsZWQuXG4iLCBjb2RlQmxvY2spOworICAgICAgICAgICAgZGVidWdQcmludGYoIk9wdGlt
aXppbmcgJXAgZnJvbSBsb29wIGZhaWxlZC5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKQEAgLTE5NzksNyArMTk3OSw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICAKICAgICBpZiAodm9pZCogYWRkcmVzcyA9
IERGRzo6cHJlcGFyZU9TUkVudHJ5KGNhbGxGcmFtZSwgb3B0aW1pemVkQ29kZUJsb2NrLCBieXRl
Y29kZUluZGV4KSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50
ZigiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3VjY2VlZGVkLCBwZXJmb3JtaW5nIE9TUiBhZnRl
ciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKKyAgICAgICAgZGVidWdQcmludGYoIk9wdGltaXppbmcgJXAgZnJvbSBs
b29wIHN1Y2NlZWRlZCwgcGVyZm9ybWluZyBPU1IgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYK
IAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwpAQCAtMTk4OSw3ICsxOTg5LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIH0KICAgICAK
ICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiT3B0aW1pemluZyAlcCBm
cm9tIGxvb3Agc3VjY2VlZGVkLCBPU1IgZmFpbGVkLCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBk
ZWJ1Z1ByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3VjY2VlZGVkLCBPU1IgZmFpbGVk
LCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXph
dGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgLy8gQ291bnQgdGhlIE9TUiBmYWls
dXJlIGFzIGEgc3BlY3VsYXRpb24gZmFpbHVyZS4gSWYgdGhpcyBoYXBwZW5zIGEgbG90LCB0aGVu
CkBAIC0xOTk3LDcgKzE5OTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6
ZV9mcm9tCiAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5jb3VudFNwZWN1bGF0aW9uRmFpbHVyZSgp
OwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJFbmNvdW50
ZXJlZCBsb29wIE9TUiBmYWlsdXJlIGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1
LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVw
bGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxh
Y2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CisgICAgZGVidWdQcmludGYoIkVu
Y291bnRlcmVkIGxvb3AgT1NSIGZhaWx1cmUgaW50byAlcCglcCkgd2l0aCBzdWNjZXNzL2ZhaWwg
JXUvJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgY29kZUJsb2Nr
LT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+
cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsKICNlbmRpZgogCiAgICAg
Ly8gV2UgYXJlIGEgbG90IG1vcmUgY29uc2VydmF0aXZlIGFib3V0IHRyaWdnZXJpbmcgcmVvcHRp
bWl6YXRpb24gYWZ0ZXIgT1NSIGZhaWx1cmUgdGhhbgpAQCAtMjAxMCw3ICsyMDEwLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIC8vIHJlb3B0aW1pemF0
aW9uIHRyaWdnZXIuCiAgICAgaWYgKG9wdGltaXplZENvZGVCbG9jay0+c2hvdWxkUmVvcHRpbWl6
ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJU
cmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCBhZnRlciBPU1IgZmFp
bCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAgICAgIGRl
YnVnUHJpbnRmKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCBh
ZnRlciBPU1IgZmFpbCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7
CiAjZW5kaWYKICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIwMjksMjAgKzIwMjksMjAgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0
aW1pemVfZnJvbQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50
ZXJlZCBvcHRpbWl6ZV9mcm9tX3JldCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4i
LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7
CisgICAgZGVidWdQcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9yZXQgd2l0aCBleGVjdXRl
Q291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBj
b2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICAgICAgcHJpbnRmKCJSZXR1cm5pbmcgZnJvbSBvbGQgSklUIGNhbGwgZnJhbWUgd2l0aCBvcHRp
bWl6ZWQgcmVwbGFjZW1lbnQgJXAoJXApLCB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldSIsIGNvZGVC
bG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkt
PnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5z
cGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiUmV0dXJuaW5n
IGZyb20gb2xkIEpJVCBjYWxsIGZyYW1lIHdpdGggb3B0aW1pemVkIHJlcGxhY2VtZW50ICVwKCVw
KSwgd2l0aCBzdWNjZXNzL2ZhaWwgJXUvJXUiLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3Vu
dGVyKCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigp
KTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJh
bWUoKTsKICAgICAgICAgaWYgKGNhbGxlckZyYW1lKQotICAgICAgICAgICAgcHJpbnRmKCIsIGNh
bGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxlciBjb2RlIGJsb2NrID0gJXAiLCBj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCksIGNhbGxlckZyYW1lLT5j
b2RlQmxvY2soKSk7Ci0gICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCIsIGNhbGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxlciBjb2RlIGJsb2Nr
ID0gJXAiLCBjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCksIGNhbGxl
ckZyYW1lLT5jb2RlQmxvY2soKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbiIpOwogI2VuZGlm
CiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJlb3B0aW1pemVO
b3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBwcmludGYo
IlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4pLlxuIiwgY29k
ZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAgICAgICAgICAgZGVidWdQcmlu
dGYoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4pLlxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwogI2VuZGlmCiAgICAgICAgICAg
ICBjb2RlQmxvY2stPnJlb3B0aW1pemUoKTsKICAgICAgICAgfQpAQCAtMjA1Myw3ICsyMDUzLDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIAogICAgIGlm
ICghY29kZUJsb2NrLT5zaG91bGRPcHRpbWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChp
biByZXR1cm4pIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9j
ayk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChp
biByZXR1cm4pIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9j
ayk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNjIsMTEgKzIwNjIsMTEg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogCiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gY29kZUJsb2NrLT5jb21waWxlT3B0aW1pemVkKGNhbGxGcmFtZSwgc2NvcGVD
aGFpbik7CiAgICAgaWYgKGVycm9yKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6
IG9wdGltaXplZCBjb21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZGVi
dWdQcmludGYoIldBUk5JTkc6IG9wdGltaXplZCBjb21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQu
XG4iKTsKICAgICAKICAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNvZGVCbG9j
aykgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50ZigiT3B0aW1p
emluZyAlcCBmcm9tIHJldHVybiBmYWlsZWQuXG4iLCBjb2RlQmxvY2spOworICAgICAgICBkZWJ1
Z1ByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIHJldHVybiBmYWlsZWQuXG4iLCBjb2RlQmxvY2sp
OwogI2VuZGlmCiAKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKQEAgLTIwNzcsNyArMjA3Nyw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICBBU1NFUlQoY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKIAogI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJPcHRpbWl6aW5nICVwIGZyb20gcmV0dXJuIHN1
Y2NlZWRlZCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9w
dGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkZWJ1Z1ByaW50ZigiT3B0aW1pemluZyAl
cCBmcm9tIHJldHVybiBzdWNjZWVkZWQgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKICAgICAK
ICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8d3RmL0RlYnVnTG9nZ2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTAyLDcgKzEwMyw3IEBAIHZvaWQgUHJvZmlsZTo6cmVzdG9yZUFsbCgpCiAjaWZuZGVmIE5ERUJV
Rwogdm9pZCBQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YSgpIGNvbnN0CiB7Ci0gICAgcHJpbnRmKCJD
YWxsIGdyYXBoOlxuIik7CisgICAgZGVidWdQcmludGYoIkNhbGwgZ3JhcGg6XG4iKTsKICAgICBt
X2hlYWQtPmRlYnVnUHJpbnREYXRhKDApOwogfQogCkBAIC0xMTgsMTggKzExOSwxOCBAQCB2b2lk
IFByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoCiAgICAgdHlwZWRlZiBWZWN0b3I8
TmFtZUNvdW50UGFpcj4gTmFtZUNvdW50UGFpclZlY3RvcjsKIAogICAgIEZ1bmN0aW9uQ2FsbEhh
c2hDb3VudCBjb3VudGVkRnVuY3Rpb25zOwotICAgIHByaW50ZigiQ2FsbCBncmFwaDpcbiIpOwor
ICAgIGRlYnVnUHJpbnRmKCJDYWxsIGdyYXBoOlxuIik7CiAgICAgbV9oZWFkLT5kZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKDAsIGNvdW50ZWRGdW5jdGlvbnMpOwogCi0gICAgcHJpbnRmKCJcblRv
dGFsIG51bWJlciBpbiBzdGFjazpcbiIpOworICAgIGRlYnVnUHJpbnRmKCJcblRvdGFsIG51bWJl
ciBpbiBzdGFjazpcbiIpOwogICAgIE5hbWVDb3VudFBhaXJWZWN0b3Igc29ydGVkRnVuY3Rpb25z
KGNvdW50ZWRGdW5jdGlvbnMuc2l6ZSgpKTsKICAgICBjb3B5VG9WZWN0b3IoY291bnRlZEZ1bmN0
aW9ucywgc29ydGVkRnVuY3Rpb25zKTsKIAogICAgIHN0ZDo6c29ydChzb3J0ZWRGdW5jdGlvbnMu
YmVnaW4oKSwgc29ydGVkRnVuY3Rpb25zLmVuZCgpLCBmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21w
YXJhdG9yKTsKICAgICBmb3IgKE5hbWVDb3VudFBhaXJWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gc29y
dGVkRnVuY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHNvcnRlZEZ1bmN0aW9ucy5lbmQoKTsgKytpdCkK
LSAgICAgICAgcHJpbnRmKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNlY29uZCwgVVN0cmlu
ZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
ICAgICUtMTJkJXNcbiIsICgqaXQpLnNlY29uZCwgVVN0cmluZygoKml0KS5maXJzdCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBwcmludGYoIlxuU29ydCBieSB0b3Agb2Ygc3RhY2ssIHNhbWUgY29s
bGFwc2VkICh3aGVuID49IDUpOlxuIik7CisgICAgZGVidWdQcmludGYoIlxuU29ydCBieSB0b3Ag
b2Ygc3RhY2ssIHNhbWUgY29sbGFwc2VkICh3aGVuID49IDUpOlxuIik7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3Bw
CShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
UHJvZmlsZXIuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgorI2luY2x1ZGUgPHd0Zi9EZWJ1Z0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtMjkzLDkgKzI5NCw5IEBAIHZvaWQgUHJv
ZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhKGludCBpbmQKIHsKICAgICAvLyBQcmludCBmdW5jdGlv
biBuYW1lcwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kZW50TGV2ZWw7ICsraSkKLSAgICAg
ICAgcHJpbnRmKCIgICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAiKTsKIAotICAgIHByaW50
ZigiRnVuY3Rpb24gTmFtZSAlcyAlZCBTZWxmVGltZSAlLjNmbXMvJS4zZiUlIFRvdGFsVGltZSAl
LjNmbXMvJS4zZiUlIFZTZWxmICUuM2ZtcyBWVG90YWwgJS4zZm1zIFZpc2libGUgJXMgTmV4dCBT
aWJsaW5nICVzXG4iLAorICAgIGRlYnVnUHJpbnRmKCJGdW5jdGlvbiBOYW1lICVzICVkIFNlbGZU
aW1lICUuM2Ztcy8lLjNmJSUgVG90YWxUaW1lICUuM2Ztcy8lLjNmJSUgVlNlbGYgJS4zZm1zIFZU
b3RhbCAlLjNmbXMgVmlzaWJsZSAlcyBOZXh0IFNpYmxpbmcgJXNcbiIsCiAgICAgICAgIGZ1bmN0
aW9uTmFtZSgpLnV0ZjgoKS5kYXRhKCksIAogICAgICAgICBtX251bWJlck9mQ2FsbHMsIG1fYWN0
dWFsU2VsZlRpbWUsIHNlbGZQZXJjZW50KCksIG1fYWN0dWFsVG90YWxUaW1lLCB0b3RhbFBlcmNl
bnQoKSwKICAgICAgICAgbV92aXNpYmxlU2VsZlRpbWUsIG1fdmlzaWJsZVRvdGFsVGltZSwgCkBA
IC0zMTIsMjAgKzMxMywyMCBAQCB2b2lkIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YShpbnQg
aW5kCiAvLyBwcmludCB0aGUgcHJvZmlsZWQgZGF0YSBpbiBhIGZvcm1hdCB0aGF0IG1hdGNoZXMg
dGhlIHRvb2wgc2FtcGxlJ3Mgb3V0cHV0LgogZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKGludCBpbmRlbnRMZXZlbCwgRnVuY3Rpb25DYWxsSGFzaENvdW50JiBj
b3VudGVkRnVuY3Rpb25zKSBjb25zdAogewotICAgIHByaW50ZigiICAgICIpOworICAgIGRlYnVn
UHJpbnRmKCIgICAgIik7CiAKICAgICAvLyBQcmludCBmdW5jdGlvbiBuYW1lcwogICAgIGNvbnN0
IGNoYXIqIG5hbWUgPSBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpOwogICAgIGRvdWJsZSBz
YW1wbGVDb3VudCA9IG1fYWN0dWFsVG90YWxUaW1lICogMTAwMDsKICAgICBpZiAoaW5kZW50TGV2
ZWwpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnRMZXZlbDsgKytpKQotICAg
ICAgICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgIik7CiAK
ICAgICAgICAgIGNvdW50ZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uTmFtZSgpLmltcGwoKSk7CiAK
LSAgICAgICAgcHJpbnRmKCIlLjBmICVzXG4iLCBzYW1wbGVDb3VudCA/IHNhbXBsZUNvdW50IDog
MSwgbmFtZSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlLjBmICVzXG4iLCBzYW1wbGVDb3VudCA/
IHNhbXBsZUNvdW50IDogMSwgbmFtZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHByaW50ZigiJXNc
biIsIG5hbWUpOworICAgICAgICBkZWJ1Z1ByaW50ZigiJXNcbiIsIG5hbWUpOwogCiAgICAgKytp
bmRlbnRMZXZlbDsKIApAQCAtMzM3LDExICszMzgsMTEgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpk
ZWJ1Z1ByaW50RGF0YVNhbXBsZQogICAgIHN1bU9mQ2hpbGRyZW5zQ291bnQgKj0gMTAwMDsgICAg
Ly8KICAgICAvLyBQcmludCByZW1haW5kZXIgb2Ygc2FtcGxlcyB0byBtYXRjaCBzYW1wbGUncyBv
dXRwdXQKICAgICBpZiAoc3VtT2ZDaGlsZHJlbnNDb3VudCA8IHNhbXBsZUNvdW50KSB7Ci0gICAg
ICAgIHByaW50ZigiICAgICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICIpOwogICAgICAg
ICB3aGlsZSAoaW5kZW50TGV2ZWwtLSkKLSAgICAgICAgICAgIHByaW50ZigiICAiKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCIgICIpOwogCi0gICAgICAgIHByaW50ZigiJS4wZiAlc1xuIiwg
c2FtcGxlQ291bnQgLSBzdW1PZkNoaWxkcmVuc0NvdW50LCBmdW5jdGlvbk5hbWUoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiUuMGYgJXNcbiIsIHNhbXBsZUNvdW50IC0g
c3VtT2ZDaGlsZHJlbnNDb3VudCwgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1fYWN0dWFsVG90YWxUaW1lOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6ZHVtcFJlZ0V4
cFRyYWNlKCkKICAgICBSVFRyYWNlTGlzdDo6aXRlcmF0b3IgaXRlciA9ICsrbV9ydFRyYWNlTGlz
dC0+YmVnaW4oKTsKICAgICAKICAgICBpZiAoaXRlciAhPSBtX3J0VHJhY2VMaXN0LT5lbmQoKSkg
ewotICAgICAgICBwcmludGYoIlxuUmVnRXhwIFRyYWNpbmdcbiIpOwotICAgICAgICBwcmludGYo
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoKCkgICAgbWF0Y2hlc1xuIik7Ci0gICAgICAgIHByaW50ZigiUmVndWxhciBFeHBy
ZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICBKSVQgQWRkcmVzcyAgICAgIGNhbGxzICAg
ICAgZm91bmRcbiIpOwotICAgICAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS1cbiIp
OworICAgICAgICBkZWJ1Z1ByaW50ZigiXG5SZWdFeHAgVHJhY2luZ1xuIik7CisgICAgICAgIGRl
YnVnUHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCgpICAgIG1hdGNoZXNcbiIpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiUmVndWxhciBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICBKSVQgQWRkcmVz
cyAgICAgIGNhbGxzICAgICAgZm91bmRcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0rLS0tLS0tLS0tLVxuIik7CiAgICAgCiAgICAgICAgIHVuc2lnbmVkIHJlQ291bnQgPSAw
OwogICAgIAogICAgICAgICBmb3IgKDsgaXRlciAhPSBtX3J0VHJhY2VMaXN0LT5lbmQoKTsgKytp
dGVyLCArK3JlQ291bnQpCiAgICAgICAgICAgICAoKml0ZXIpLT5wcmludFRyYWNlRGF0YSgpOwog
Ci0gICAgICAgIHByaW50ZigiJWQgUmVndWxhciBFeHByZXNzaW9uc1xuIiwgcmVDb3VudCk7Cisg
ICAgICAgIGRlYnVnUHJpbnRmKCIlZCBSZWd1bGFyIEV4cHJlc3Npb25zXG4iLCByZUNvdW50KTsK
ICAgICB9CiAgICAgCiAgICAgbV9ydFRyYWNlTGlzdC0+Y2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEzLDI0ICs0MTMsMjQgQEAgdm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRl
cgogICAgICAgICAgICAgZGlmZmVyZW5jZXMrKzsKIAogICAgIGlmIChkaWZmZXJlbmNlcykgewot
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZ0V4cCBEaXNjcmVwZW5jeSBmb3IgLyVzL1xuICAg
IHN0cmluZyBpbnB1dCAiLCBwYXR0ZXJuKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVn
UHJpbnRmKCJSZWdFeHAgRGlzY3JlcGVuY3kgZm9yIC8lcy9cbiAgICBzdHJpbmcgaW5wdXQgIiwg
cGF0dGVybigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB1bnNpZ25lZCBzZWdtZW50TGVuID0g
cy5sZW5ndGgoKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCk7CiAKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsIChzZWdtZW50TGVuIDwgMTUwKSA/ICJcIiVzXCJcbiIgOiAiXCIl
MTQ4cy4uLlwiXG4iLCBzLnV0ZjgoKS5kYXRhKCkgKyBzdGFydE9mZnNldCk7CisgICAgICAgIGRl
YnVnUHJpbnRmKChzZWdtZW50TGVuIDwgMTUwKSA/ICJcIiVzXCJcbiIgOiAiXCIlMTQ4cy4uLlwi
XG4iLCBzLnV0ZjgoKS5kYXRhKCkgKyBzdGFydE9mZnNldCk7CiAKICAgICAgICAgaWYgKGppdFJl
c3VsdCAhPSBpbnRlcnByZXRlclJlc3VsdCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgICAgSklUIHJlc3VsdCA9ICVkLCBibGFoIGludGVycHJldGVkIHJlc3VsdCA9ICVkXG4iLCBq
aXRSZXN1bHQsIGludGVycHJldGVyUmVzdWx0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgSklUIHJlc3VsdCA9ICVkLCBibGFoIGludGVycHJldGVkIHJlc3VsdCA9ICVkXG4iLCBqaXRS
ZXN1bHQsIGludGVycHJldGVyUmVzdWx0KTsKICAgICAgICAgICAgIGRpZmZlcmVuY2VzLS07CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBDb3JyZWN0
IHJlc3VsdCA9ICVkXG4iLCBqaXRSZXN1bHQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAg
ICBDb3JyZWN0IHJlc3VsdCA9ICVkXG4iLCBqaXRSZXN1bHQpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGRpZmZlcmVuY2VzKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAyLCBp
ID0gMDsgaSA8IG1fbnVtU3VicGF0dGVybnM7IGogKz0yLCBpKyspIHsKICAgICAgICAgICAgICAg
ICBpZiAob2Zmc2V0VmVjdG9yW2pdICE9IGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2pdKQotICAg
ICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgb2Zmc2V0WyVkXSA9ICVk
LCBpbnRlcnByZXRlZCBvZmZzZXRbJWRdID0gJWRcbiIsIGosIG9mZnNldFZlY3RvcltqXSwgaiwg
aW50ZXJwcmV0ZXJPZmZzZXRWZWN0b3Jbal0pOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z1By
aW50ZigiICAgIEpJVCBvZmZzZXRbJWRdID0gJWQsIGludGVycHJldGVkIG9mZnNldFslZF0gPSAl
ZFxuIiwgaiwgb2Zmc2V0VmVjdG9yW2pdLCBqLCBpbnRlcnByZXRlck9mZnNldFZlY3RvcltqXSk7
CiAgICAgICAgICAgICAgICAgaWYgKChvZmZzZXRWZWN0b3Jbal0gPj0gMCkgJiYgKG9mZnNldFZl
Y3RvcltqKzFdICE9IGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2orMV0pKQotICAgICAgICAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgb2Zmc2V0WyVkXSA9ICVkLCBpbnRlcnBy
ZXRlZCBvZmZzZXRbJWRdID0gJWRcbiIsIGorMSwgb2Zmc2V0VmVjdG9yW2orMV0sIGorMSwgaW50
ZXJwcmV0ZXJPZmZzZXRWZWN0b3JbaisxXSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgSklUIG9mZnNldFslZF0gPSAlZCwgaW50ZXJwcmV0ZWQgb2Zmc2V0WyVkXSA9ICVk
XG4iLCBqKzEsIG9mZnNldFZlY3RvcltqKzFdLCBqKzEsIGludGVycHJldGVyT2Zmc2V0VmVjdG9y
W2orMV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuY3BwCShyZXZpc2lv
biAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgdm9pZCBBYnN0cmFjdFNh
bXBsaW5nQ291bnRlcjo6ZHVtcCgpCiB7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQog
ICAgIGlmIChzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXJDaGFpbkVuZCkgewotICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRl
ciBWYWx1ZXM6XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBW
YWx1ZXM6XG4iKTsKICAgICAgICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNv
dW50ZXIgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAm
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291
bnRlci0+bV9uZXh0KQotICAgICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJD
b3VudGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOwotICAgICAgICBwcmludGYo
IlxuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJD
b3VudGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOworICAgICAgICBkZWJ1Z1By
aW50ZigiXG5cbiIpOwogICAgIH0KICAgICBzX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5o
CShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ0NvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoK
ICAgICB+RGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyKCkKICAgICB7CiAgICAgICAgIGlmICghc19j
b21wbGV0ZWQpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRlbGV0YWJsZVNhbXBsaW5n
Q291bnRlciBcIiVzXCIgZGVsZXRlZCBlYXJseSAod2l0aCBjb3VudCAlbGxkKVxuIiwgbV9uYW1l
LCBtX2NvdW50ZXIpOworICAgICAgICAgICAgZGVidWdGaWxlKCJEZWxldGFibGVTYW1wbGluZ0Nv
dW50ZXIgXCIlc1wiIGRlbGV0ZWQgZWFybHkgKHdpdGggY291bnQgJWxsZClcbiIsIG1fbmFtZSwg
bV9jb3VudGVyKTsKICAgICAgICAgLy8gT3VyIG1fcmVmZXJlciBwb2ludGVyIHNob3VsZCBrbm93
IHdoZXJlIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBpcywKICAgICAgICAgLy8gYW5kIG1fbmV4
dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0aGUgcHJldmlvdXMgbm9kZSBpbiB0aGUg
bGlzdC4KICAgICAgICAgQVNTRVJUKCptX3JlZmVyZXIgPT0gdGhpcyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDEyICs0MiwxMiBAQCB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpwcmludCgp
CiAgICAgICAgIG8tPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobywgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEVuZCA9
IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBb
c2NvcGUgJXBdIC0tLS0tXG4iLCBvKTsKKyAgICAgICAgZGVidWdQcmludGYoIi0tLS0tIFtzY29w
ZSAlcF0gLS0tLS1cbiIsIG8pOwogICAgICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBwcm9wSXRlciA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgcHJvcEl0ZXIgIT0g
cHJvcEVuZDsgcHJvcEl0ZXIrKykgewogICAgICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gKnBy
b3BJdGVyOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcywgIiwgbmFtZS51c3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiJXMsICIsIG5hbWUu
dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9u
IDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1w
U3RhdGlzdGljcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcmludGYoIk51bWJlciBvZiBs
aXZlIFN0cnVjdHVyZXM6ICVkXG4iLCBsaXZlU3RydWN0dXJlU2V0LnNpemUoKSk7Ci0gICAgcHJp
bnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB1c2luZyB0aGUgc2luZ2xlIGl0ZW0gb3B0aW1pemF0
aW9uIGZvciB0cmFuc2l0aW9uIG1hcDogJWRcbiIsIG51bWJlclVzaW5nU2luZ2xlU2xvdCk7Ci0g
ICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IGFyZSBsZWFmIG5vZGVzOiAlZFxu
IiwgbnVtYmVyTGVhZik7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IHNp
bmdsZXRvbnM6ICVkXG4iLCBudW1iZXJTaW5nbGV0b25zKTsKLSAgICBwcmludGYoIk51bWJlciBv
ZiBTdHJ1Y3R1cmVzIHdpdGggUHJvcGVydHlNYXBzOiAlZFxuIiwgbnVtYmVyV2l0aFByb3BlcnR5
TWFwcyk7Ci0KLSAgICBwcmludGYoIlNpemUgb2YgYSBzaW5nbGUgU3RydWN0dXJlczogJWRcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplb2YoU3RydWN0dXJlKSkpOwotICAgIHByaW50Zigi
U2l6ZSBvZiBzdW0gb2YgYWxsIHByb3BlcnR5IG1hcHM6ICVkXG4iLCB0b3RhbFByb3BlcnR5TWFw
c1NpemUpOwotICAgIHByaW50ZigiU2l6ZSBvZiBhdmVyYWdlIG9mIGFsbCBwcm9wZXJ0eSBtYXBz
OiAlZlxuIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbFByb3BlcnR5TWFwc1NpemUpIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihsaXZlU3RydWN0dXJlU2V0LnNpemUoKSkpOworICAgIGRlYnVnUHJp
bnRmKCJOdW1iZXIgb2YgbGl2ZSBTdHJ1Y3R1cmVzOiAlZFxuIiwgbGl2ZVN0cnVjdHVyZVNldC5z
aXplKCkpOworICAgIGRlYnVnUHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB1c2luZyB0aGUg
c2luZ2xlIGl0ZW0gb3B0aW1pemF0aW9uIGZvciB0cmFuc2l0aW9uIG1hcDogJWRcbiIsIG51bWJl
clVzaW5nU2luZ2xlU2xvdCk7CisgICAgZGVidWdQcmludGYoIk51bWJlciBvZiBTdHJ1Y3R1cmVz
IHRoYXQgYXJlIGxlYWYgbm9kZXM6ICVkXG4iLCBudW1iZXJMZWFmKTsKKyAgICBkZWJ1Z1ByaW50
ZigiTnVtYmVyIG9mIFN0cnVjdHVyZXMgdGhhdCBzaW5nbGV0b25zOiAlZFxuIiwgbnVtYmVyU2lu
Z2xldG9ucyk7CisgICAgZGVidWdQcmludGYoIk51bWJlciBvZiBTdHJ1Y3R1cmVzIHdpdGggUHJv
cGVydHlNYXBzOiAlZFxuIiwgbnVtYmVyV2l0aFByb3BlcnR5TWFwcyk7CisKKyAgICBkZWJ1Z1By
aW50ZigiU2l6ZSBvZiBhIHNpbmdsZSBTdHJ1Y3R1cmVzOiAlZFxuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemVvZihTdHJ1Y3R1cmUpKSk7CisgICAgZGVidWdQcmludGYoIlNpemUgb2Ygc3Vt
IG9mIGFsbCBwcm9wZXJ0eSBtYXBzOiAlZFxuIiwgdG90YWxQcm9wZXJ0eU1hcHNTaXplKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiU2l6ZSBvZiBhdmVyYWdlIG9mIGFsbCBwcm9wZXJ0eSBtYXBzOiAlZlxu
Iiwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbFByb3BlcnR5TWFwc1NpemUpIC8gc3RhdGljX2Nh
c3Q8ZG91YmxlPihsaXZlU3RydWN0dXJlU2V0LnNpemUoKSkpOwogI2Vsc2UKLSAgICBwcmludGYo
IkR1bXBpbmcgU3RydWN0dXJlIHN0YXRpc3RpY3MgaXMgbm90IGVuYWJsZWQuXG4iKTsKKyAgICBk
ZWJ1Z1ByaW50ZigiRHVtcGluZyBTdHJ1Y3R1cmUgc3RhdGlzdGljcyBpcyBub3QgZW5hYmxlZC5c
biIpOwogI2VuZGlmCiB9CiAKQEAgLTYwMSwxMSArNjAxLDExIEBAIHN0YXRpYyBQcm9wZXJ0eU1h
cFN0YXRpc3RpY3NFeGl0TG9nZ2VyIGwKIAogUHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dl
cjo6flByb3BlcnR5TWFwU3RhdGlzdGljc0V4aXRMb2dnZXIoKQogewotICAgIHByaW50ZigiXG5K
U0M6OlByb3BlcnR5TWFwIHN0YXRpc3RpY3NcblxuIik7Ci0gICAgcHJpbnRmKCIlZCBwcm9iZXNc
biIsIG51bVByb2Jlcyk7Ci0gICAgcHJpbnRmKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBu
dW1Db2xsaXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOwotICAgIHBy
aW50ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKLSAgICBwcmludGYoIiVkIHJlbW92
ZXNcbiIsIG51bVJlbW92ZXMpOworICAgIGRlYnVnUHJpbnRmKCJcbkpTQzo6UHJvcGVydHlNYXAg
c3RhdGlzdGljc1xuXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiJWQgcHJvYmVzXG4iLCBudW1Qcm9i
ZXMpOworICAgIGRlYnVnUHJpbnRmKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBudW1Db2xs
aXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOworICAgIGRlYnVnUHJp
bnRmKCIlZCByZWhhc2hlc1xuIiwgbnVtUmVoYXNoZXMpOworICAgIGRlYnVnUHJpbnRmKCIlZCBy
ZW1vdmVzXG4iLCBudW1SZW1vdmVzKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENvZGVQcm9maWxlOjpzYW1wbGUodm9pZCogcGMsIHZv
aWQqCiAKIHZvaWQgQ29kZVByb2ZpbGU6OnJlcG9ydCgpCiB7Ci0gICAgZnByaW50ZihzdGRvdXQs
ICI8Q29kZVByb2ZpbGluZyAlczolZD5cbiIsIG1fZmlsZS5kYXRhKCksIG1fbGluZU5vKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiPENvZGVQcm9maWxpbmcgJXM6JWQ+XG4iLCBtX2ZpbGUuZGF0YSgpLCBt
X2xpbmVObyk7CiAKICAgICAvLyBIb3cgbWFueSBmcmFtZXMgb2YgQy1jb2RlIHRvIHByaW50IC0g
MCwgaWYgbm90IHZlcmJvc2UsIDEgaWYgdmVyYm9zZSwgdXAgdG8gMTAyNCBpZiB2ZXJ5IHZlcmJv
c2UuCiAgICAgdW5zaWduZWQgcmVjdXJzaW9uTGltaXQgPSBDb2RlUHJvZmlsaW5nOjpiZVZlcnlW
ZXJib3NlKCkgPyAxMDI0IDogQ29kZVByb2ZpbGluZzo6YmVWZXJib3NlKCk7CkBAIC0xNzYsMTMg
KzE3NiwxMyBAQCB2b2lkIENvZGVQcm9maWxlOjpyZXBvcnQoKQogICAgIH0KIAogICAgIC8vIE91
dHB1dCB0aGUgcHJvZmlsZSB0cmVlLgotICAgIGZwcmludGYoc3Rkb3V0LCAiVG90YWwgc2FtcGxl
czogJWxsZFxuIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihwcm9maWxlLmNoaWxkQ291bnQoKSkp
OworICAgIGRlYnVnUHJpbnRmKCJUb3RhbCBzYW1wbGVzOiAlbGxkXG4iLCBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KHByb2ZpbGUuY2hpbGRDb3VudCgpKSk7CiAgICAgcHJvZmlsZS5kdW1wKCk7CiAg
ICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDAgOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkK
ICAgICAgICAgbV9jaGlsZHJlbltpXS0+cmVwb3J0KCk7CiAKLSAgICBmcHJpbnRmKHN0ZG91dCwg
IjwvQ29kZVByb2ZpbGluZyAlczolZD5cbiIsIG1fZmlsZS5kYXRhKCksIG1fbGluZU5vKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiPC9Db2RlUHJvZmlsaW5nICVzOiVkPlxuIiwgbV9maWxlLmRhdGEoKSwg
bV9saW5lTm8pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJv
ZmlsZVRyZWVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1Byb2ZpbGVUcmVlTm9kZS5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFByaW50IHRoZSBudW1iZXIgb2Ygc2FtcGxl
cywgdGhlIG5hbWUgb2YgdGhpcyBub2RlLCBhbmQgdGhlIG51bWJlciBvZiBzYW1wbGVzIHRoYXQg
YXJlIHN0YWNrLXRvcAogICAgICAgICAgICAgLy8gaW4gdGhpcyBub2RlIChzYW1wbGVzIGRpcmVj
dGx5IHdpdGhpbiB0aGlzIG5vZGUsIGV4Y2x1ZGluZyBzYW1wbGVzIGluIGNoaWxkcmVuLgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZGVudDsgKytpKQotICAgICAgICAg
ICAgICAgIGZwcmludGYoc3Rkb3V0LCAiICAgICIpOwotICAgICAgICAgICAgZnByaW50ZihzdGRv
dXQsICIlIDhsbGQ6ICVzICglbGxkIHN0YWNrIHRvcClcbiIsCisgICAgICAgICAgICAgICAgZGVi
dWdQcmludGYoIiAgICAiKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIlIDhsbGQ6ICVzICgl
bGxkIHN0YWNrIHRvcClcbiIsCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PihlbnRyeS0+c2Vjb25kLmNvdW50KCkpLAogICAgICAgICAgICAgICAgIGVudHJ5LT5maXJzdC51
dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZW50
cnktPnNlY29uZC5jb3VudCgpIC0gZW50cnktPnNlY29uZC5jaGlsZENvdW50KCkpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTcsNiArMTcsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBDcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oCiAgICAgQ3VycmVudFRpbWUuaAogICAgIERhdGVNYXRoLmgKKyAg
ICBEZWJ1Z0xvZ2dpbmcuaAogICAgIERlY2ltYWxOdW1iZXIuaAogICAgIERlY29kZXIuaAogICAg
IERlcXVlLmgKQEAgLTE0MCw2ICsxNDEsNyBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICBDcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKICAgICBDdXJyZW50VGltZS5jcHAKICAgICBEYXRl
TWF0aC5jcHAKKyAgICBEZWJ1Z0xvZ2dpbmcuY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAKICAg
ICBEeW5hbWljQW5ub3RhdGlvbnMuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVidWdMb2dnaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2luZy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2luZy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlYnVnTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworI2RlZmluZSBERUJVR19MT0dfVE9fRklMRSAwCisK
Ky8vIFVuY29tbWVudCB0byBmb3JjZSBsb2dnaW5nIHRvIHRoZSBnaXZlbiBmaWxlIHJlZ2FyZGxl
c3Mgb2YgCisvLyAjZGVmaW5lIERFQlVHX0xPR19GSUxFTkFNRSAiL3RtcC9XVEZMb2cudHh0Igor
CituYW1lc3BhY2UgV1RGIHsKKworI2lmIERFQlVHX0xPR19UT19GSUxFCitzdGF0aWMgRklMRSog
ZmlsZTsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCkKK3sKKyNpZmRlZiBE
RUJVR19MT0dfRklMRU5BTUUKKyAgICBjb25zdCBjaGFyKiBmaWxlbmFtZSA9IERFQlVHX0xPR19G
SUxFTkFNRQorI2Vsc2UKKyAgICBjb25zdCBjaGFyKiBmaWxlbmFtZSA9IGdldGVudigiV1RGX0RF
QlVHX0xPR19GSUxFTkFNRSIpOworI2VuZGlmCisgICAgaWYgKGZpbGVuYW1lKSB7CisgICAgICAg
IGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInciKTsKKyAgICAgICAgaWYgKCFmaWxlKQorICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSAl
cyBmb3Igd3JpdGluZy5cbiIsIGZpbGVuYW1lKTsKKyAgICB9CisgICAgaWYgKCFmaWxlKQorICAg
ICAgICBmaWxlID0gc3RkZXJyOworICAgIAorICAgIHNldHZidWYoZmlsZSwgMCwgX0lPTkJGLCAw
KTsgLy8gUHJlZmVyIHVuYnVmZmVyZWQgb3V0cHV0LCBzbyB0aGF0IHdlIGdldCBhIGZ1bGwgbG9n
IHVwb24gY3Jhc2ggb3IgZGVhZGxvY2suCit9CisKKyNpZiBPUyhEQVJXSU4pCitzdGF0aWMgcHRo
cmVhZF9vbmNlX3QgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlS2V5ID0gUFRIUkVBRF9PTkNFX0lOSVQ7
CisjZW5kaWYKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGUoKQoreworI2lmIE9TKERB
UldJTikKKyAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxpemVMb2dGaWxlT25jZUtleSwgaW5pdGlh
bGl6ZUxvZ0ZpbGVPbmNlKTsKKyNlbHNlCisgICAgaWYgKCFmaWxlKQorICAgICAgICBpbml0aWFs
aXplTG9nRmlsZU9uY2UoKTsKKyNlbmRpZgorfQorCitGSUxFKiBkZWJ1Z0ZpbGUoKQoreworICAg
IGluaXRpYWxpemVMb2dGaWxlKCk7CisgICAgcmV0dXJuIGZpbGU7Cit9CisjZWxzZSAvLyBERUJV
R19MT0dfVE9fRklMRQorRklMRSogZGVidWdGaWxlKCkKK3sKKyAgICByZXR1cm4gc3RkZXJyOwor
fQorI2VuZGlmIC8vIERFQlVHX0xPR19UT19GSUxFCisKK3ZvaWQgZGVidWdWUHJpbnRmKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQoreworICAgIHZmcHJpbnRmKGRlYnVnRmls
ZSgpLCBmb3JtYXQsIGFyZ0xpc3QpOworfQorCit2b2lkIGRlYnVnUHJpbnRmKGNvbnN0IGNoYXIq
IGZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnTGlzdDsKKyAgICB2YV9zdGFydChhcmdM
aXN0LCBmb3JtYXQpOworICAgIGRlYnVnVlByaW50Zihmb3JtYXQsIGFyZ0xpc3QpOworICAgIHZh
X2VuZChhcmdMaXN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvRGVidWdMb2dnaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9EZWJ1Z0xvZ2dpbmcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvRGVidWdMb2dnaW5nLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBEZWJ1Z0xvZ2dpbmdfaAorI2RlZmluZSBEZWJ1Z0xvZ2dpbmdfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworRklMRSogZGVidWdGaWxlKCk7CisKK3ZvaWQgZGVidWdWUHJpbnRmKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCk7Cit2b2lkIGRlYnVnUHJpbnRmKGNvbnN0IGNoYXIqIGZv
cm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKK3VzaW5nIFdURjo6ZGVidWdQcmludGY7CisKKyNlbmRpZiAvLyBEZWJ1Z0xvZ2dpbmdf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuY3BwCShyZXZpc2lv
biAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBIYXNoVGFibGVTdGF0czo6fkhhc2hUYWJs
ZVN0YXRzKCkKIHsKICAgICAvLyBEb24ndCBsb2NrIGhhc2hUYWJsZVN0YXRzTXV0ZXggaGVyZSBi
ZWNhdXNlIGl0IGNhbiBjYXVzZSBkZWFkbG9ja3MgYXQgc2h1dGRvd24gCiAgICAgLy8gaWYgYW55
IHRocmVhZCB3YXMga2lsbGVkIHdoaWxlIGhvbGRpbmcgdGhlIG11dGV4LgotICAgIHByaW50Zigi
XG5XVEY6Okhhc2hUYWJsZSBzdGF0aXN0aWNzXG5cbiIpOwotICAgIHByaW50ZigiJWQgYWNjZXNz
ZXNcbiIsIG51bUFjY2Vzc2VzKTsKLSAgICBwcmludGYoIiVkIHRvdGFsIGNvbGxpc2lvbnMsIGF2
ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVtQ29sbGlzaW9ucywgMS4wICogKG51
bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nlc3Nlcyk7Ci0gICAgcHJpbnRmKCJs
b25nZXN0IGNvbGxpc2lvbiBjaGFpbjogJWRcbiIsIG1heENvbGxpc2lvbnMpOworICAgIGRlYnVn
UHJpbnRmKCJcbldURjo6SGFzaFRhYmxlIHN0YXRpc3RpY3NcblxuIik7CisgICAgZGVidWdQcmlu
dGYoIiVkIGFjY2Vzc2VzXG4iLCBudW1BY2Nlc3Nlcyk7CisgICAgZGVidWdQcmludGYoIiVkIHRv
dGFsIGNvbGxpc2lvbnMsIGF2ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVtQ29s
bGlzaW9ucywgMS4wICogKG51bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nlc3Nl
cyk7CisgICAgZGVidWdQcmludGYoImxvbmdlc3QgY29sbGlzaW9uIGNoYWluOiAlZFxuIiwgbWF4
Q29sbGlzaW9ucyk7CiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbWF4Q29sbGlzaW9uczsgaSsr
KSB7Ci0gICAgICAgIHByaW50ZigiICAlZCBsb29rdXBzIHdpdGggZXhhY3RseSAlZCBjb2xsaXNp
b25zICglLjJmJSUgLCAlLjJmJSUgd2l0aCB0aGlzIG1hbnkgb3IgbW9yZSlcbiIsIGNvbGxpc2lv
bkdyYXBoW2ldLCBpLCAxMDAuMCAqIChjb2xsaXNpb25HcmFwaFtpXSAtIGNvbGxpc2lvbkdyYXBo
W2krMV0pIC8gbnVtQWNjZXNzZXMsIDEwMC4wICogY29sbGlzaW9uR3JhcGhbaV0gLyBudW1BY2Nl
c3Nlcyk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICVkIGxvb2t1cHMgd2l0aCBleGFjdGx5ICVk
IGNvbGxpc2lvbnMgKCUuMmYlJSAsICUuMmYlJSB3aXRoIHRoaXMgbWFueSBvciBtb3JlKVxuIiwg
Y29sbGlzaW9uR3JhcGhbaV0sIGksIDEwMC4wICogKGNvbGxpc2lvbkdyYXBoW2ldIC0gY29sbGlz
aW9uR3JhcGhbaSsxXSkgLyBudW1BY2Nlc3NlcywgMTAwLjAgKiBjb2xsaXNpb25HcmFwaFtpXSAv
IG51bUFjY2Vzc2VzKTsKICAgICB9Ci0gICAgcHJpbnRmKCIlZCByZWhhc2hlc1xuIiwgbnVtUmVo
YXNoZXMpOwotICAgIHByaW50ZigiJWQgcmVpbnNlcnRzXG4iLCBudW1SZWluc2VydHMpOworICAg
IGRlYnVnUHJpbnRmKCIlZCByZWhhc2hlc1xuIiwgbnVtUmVoYXNoZXMpOworICAgIGRlYnVnUHJp
bnRmKCIlZCByZWluc2VydHNcbiIsIG51bVJlaW5zZXJ0cyk7CiB9CiAKIHZvaWQgSGFzaFRhYmxl
U3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQoaW50IGNvdW50KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9yOjpmcmVlRnJlZVNwYWNl
Tm9kZShGcgogI2lmIEVOQUJMRShNRVRBX0FMTE9DQVRPUl9QUk9GSUxFKQogdm9pZCBNZXRhQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSgpCiB7Ci0gICAgcHJpbnRmKCJudW0gYWxsb2NhdGlvbnMgPSAl
dSwgbnVtIGZyZWVzID0gJXVcbiIsIG1fbnVtQWxsb2NhdGlvbnMsIG1fbnVtRnJlZXMpOworICAg
IGRlYnVnUHJpbnRmKCJudW0gYWxsb2NhdGlvbnMgPSAldSwgbnVtIGZyZWVzID0gJXVcbiIsIG1f
bnVtQWxsb2NhdGlvbnMsIG1fbnVtRnJlZXMpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVk
ZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvRGVidWdMb2dnaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDk3LDcgKzEwOTgsNyBAQCBWZWN0b3I8Y2hh
cj4gYXNjaWlEZWJ1ZyhTdHJpbmcmIHN0cmluZyk7CiAKIHZvaWQgU3RyaW5nOjpzaG93KCkgY29u
c3QKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBhc2NpaURlYnVnKGltcGwoKSkuZGF0
YSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiJXNcbiIsIGFzY2lpRGVidWcoaW1wbCgpKS5kYXRhKCkp
OwogfQogCiBTdHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKiBzKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1
ZGUgIllhcnIuaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvRGVidWdMb2dnaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTY4MiwxMCArMTY4MywxMCBAQCBwdWJsaWM6CiAjaWZuZGVm
IE5ERUJVRwogICAgIHZvaWQgZHVtcERpc2p1bmN0aW9uKEJ5dGVEaXNqdW5jdGlvbiogZGlzanVu
Y3Rpb24pCiAgICAgewotICAgICAgICBwcmludGYoIkJ5dGVEaXNqdW5jdGlvbiglcCk6XG5cdCIs
IGRpc2p1bmN0aW9uKTsKKyAgICAgICAgZGVidWdQcmludGYoIkJ5dGVEaXNqdW5jdGlvbiglcCk6
XG5cdCIsIGRpc2p1bmN0aW9uKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRp
c2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHByaW50ZigieyAlZCB9
ICIsIGRpc2p1bmN0aW9uLT50ZXJtc1tpXS50eXBlKTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOwor
ICAgICAgICAgICAgZGVidWdQcmludGYoInsgJWQgfSAiLCBkaXNqdW5jdGlvbi0+dGVybXNbaV0u
dHlwZSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbiIpOwogICAgIH0KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTA3NDgzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgorCisgICAgICAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0Mg
ZGVidWcgbG9nZ2luZyB0byBhIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc4NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBJbnRyb2R1Y2VkIHd0Zi9EZWJ1Z0xvZ2dpbmcsIHdoaWNo
IGRlZmluZXMgV1RGOjpkZWJ1Z0ZpbGUsIFdURjo6ZGVidWdQcmludGYsCisgICAgICAgIGFuZCBX
VEY6OmRlYnVnVlByaW50Zi4gQ2hhbmdlZCBhbGwgZGVidWdnaW5nLSBhbmQgcHJvZmlsaW5nLXJl
bGF0ZWQgcHJpbnRmcworICAgICAgICB0byB1c2UgV1RGOjpkZWJ1Z1ByaW50ZigpIG9yIG9uZSBv
ZiBpdHMgZnJpZW5kcy4gQnkgZGVmYXVsdCwgZGVidWcgbG9nZ2luZworICAgICAgICBnb2VzIHRv
IHN0ZGVyciwgdW5sZXNzIHlvdSBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gd3RmL0RlYnVnTG9nZ2lu
Zy5jcHAuCisKKyAgICAgICAgKiBXVEYucHJvOgorCiAyMDEyLTAyLTAzICBTaW1vbiBIYXVzbWFu
biAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3
aGVuIGNyb3NzLWNvbXBpbGluZwpJbmRleDogU291cmNlL1dURi9XVEYucHJvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvV1RGLnBybwkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL1dURi9X
VEYucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IERhdGVNYXRoLmggXAogICAgIERlY2ltYWxOdW1iZXIuaCBcCiAgICAgRGVjb2Rlci5oIFwKKyAg
ICBEZWJ1Z0xvZ2dpbmcuaCBcIAogICAgIERlcXVlLmggXAogICAgIERpc2FsbG93Q1R5cGUuaCBc
CiAgICAgZHRvYS5oIFwKQEAgLTE3MSw2ICsxNzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBDcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAgXAogICAgIEN1cnJlbnRUaW1lLmNwcCBcCiAg
ICAgRGF0ZU1hdGguY3BwIFwKKyAgICBEZWJ1Z0xvZ2dpbmcuY3BwIFwKICAgICBEZWNpbWFsTnVt
YmVyLmNwcCBcCiAgICAgZHRvYS5jcHAgXAogICAgIGR0b2EvYmlnbnVtLWR0b2EuY2MgXAo=
</data>
<flag name="commit-queue"
          id="128504"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126640</attachid>
            <date>2012-02-11 12:24:06 -0800</date>
            <delta_ts>2012-02-11 13:45:38 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>debuglog_patch_2.diff</filename>
            <type>text/plain</type>
            <size>215730</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0MgZGVidWcgbG9nZ2luZyB0byBh
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJbnRyb2R1Y2VkIHd0Zi9EZWJ1Z0xvZ2dpbmcsIHdoaWNoIGRlZmluZXMgV1RGOjpkZWJ1
Z0ZpbGUsIFdURjo6ZGVidWdQcmludGYsCisgICAgICAgIGFuZCBXVEY6OmRlYnVnVlByaW50Zi4g
Q2hhbmdlZCBhbGwgZGVidWdnaW5nLSBhbmQgcHJvZmlsaW5nLXJlbGF0ZWQgcHJpbnRmcworICAg
ICAgICB0byB1c2UgV1RGOjpkZWJ1Z1ByaW50ZigpIG9yIG9uZSBvZiBpdHMgZnJpZW5kcy4gQnkg
ZGVmYXVsdCwgZGVidWcgbG9nZ2luZworICAgICAgICBnb2VzIHRvIHN0ZGVyciwgdW5sZXNzIHlv
dSBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gd3RmL0RlYnVnTG9nZ2luZy5jcHAuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcExpbmtT
dGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAg
ICAqIGFzc2VtYmxlci9TSDRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVy
Ojp2cHJpbnRmU3Rkb3V0SW5zdHIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRVbmFyeU9wKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpwcmludEJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmlu
dENvbmRpdGlvbmFsSnVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlk
T3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50Q2FsbE9wKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcCk6CisgICAgICAgIChKU0M6OnByaW50R2xvYmFs
UmVzb2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpwcmludFN0cnVjdHVyZVN0dWJJbmZvKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1w
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp0
YWxseUZyZXF1ZW50RXhpdFNpdGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wVmFs
dWVQcm9maWxlcyk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6T3Bjb2RlU3RhdHM6On5PcGNvZGVTdGF0cyk6CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdGbGFnczo6c3RvcCk6CisgICAgICAg
IChKU0M6OlNhbXBsaW5nUmVnaW9uOjpkdW1wSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpTYW1w
bGluZ1Rvb2w6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAg
ICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByaW50V2hp
dGVTcGFjZSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2luKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OnByZWRpY3RBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcv
REZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJvcGFnYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Zml4cG9pbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0ZvcndhcmQp
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdz
QmFja3dhcmQpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZU5vZGVQ
cmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlUHJl
ZGljdGlvbnNGb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdh
dGVQcmVkaWN0aW9uc0JhY2t3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpk
b1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmZp
eHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Zml4dXApOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnN0YXJ0SW5kZXhGb3JDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6ZW5kSW5kZXhGb3JQdXJlQ1NFKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpzZXRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkRGRzo6
UHJvcGFnYXRvcjo6ZWxpbWluYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpw
ZXJmb3JtTm9kZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6bG9jYWxDU0Up
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmFsbG9jYXRlVmlydHVhbFJlZ2lzdGVy
cyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybUJsb2NrQ0ZBKToKKyAg
ICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwZXJmb3JtRm9yd2FyZENGQSk6CisgICAgICAg
ICogZGZnL0RGR1JlZ2lzdGVyQmFuay5oOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyQmFu
azo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR1Njb3JlQm9hcmQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTY29yZUJvYXJkOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpkdW1wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhlYXA6OmRlc3Ryb3kpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6
OmR1bXBDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YSk6CisgICAgICAg
IChKU0M6OlByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUpOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OmRlYnVn
UHJpbnREYXRhKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhU2Ft
cGxlU3R5bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjpkdW1wUmVnRXhwVHJhY2UpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJw
cmV0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1bXApOgorICAgICAgICAqIHJ1bnRpbWUv
U2FtcGxpbmdDb3VudGVyLmg6CisgICAgICAgIChKU0M6OkRlbGV0YWJsZVNhbXBsaW5nQ291bnRl
cjo6fkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9TY29wZUNo
YWluLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnByaW50KToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZHVtcFN0
YXRpc3RpY3MpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU1hcFN0YXRpc3RpY3NFeGl0TG9nZ2Vy
Ojp+UHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlcik6CisgICAgICAgICogdG9vbHMvQ29k
ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlUHJvZmlsZTo6cmVwb3J0KToKKyAgICAg
ICAgKiB0b29scy9Qcm9maWxlVHJlZU5vZGUuaDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZVRyZWVO
b2RlOjpkdW1wSW50ZXJuYWwpOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvRGVidWdMb2dnaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjppbml0aWFsaXplTG9nRmlsZU9uY2UpOgorICAgICAgICAoV1RGOjppbml0aWFsaXpl
TG9nRmlsZSk6CisgICAgICAgIChXVEY6OmRlYnVnRmlsZSk6CisgICAgICAgIChXVEY6OmRlYnVn
VlByaW50Zik6CisgICAgICAgIChXVEY6OmRlYnVnUHJpbnRmKToKKyAgICAgICAgKiB3dGYvRGVi
dWdMb2dnaW5nLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvSGFzaFRh
YmxlLmNwcDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6On5IYXNoVGFibGVTdGF0cyk6
CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3BwOgorICAgICAgICAoV1RGOjpNZXRhQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoK
KyAgICAgICAgKFN0cmluZzo6c2hvdyk6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmR1bXBEaXNqdW5jdGlvbik6
CisKIDIwMTItMDItMTAgIFZpbmVldCBDaGF1ZGhhcnkgIDxyZ2Y3NDhAbW90b3JvbGEuY29tPgog
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1NgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC01NjQsNiArNTY0LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EYXRlTWF0aC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2lu
Zy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVidWdMb2dnaW5nLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RlY29kZXIuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBAQAogICAgICAg
ICAgICAgJ3d0Zi9EYXRlTWF0aC5oJywKICAgICAgICAgICAgICd3dGYvRGVjaW1hbE51bWJlci5o
JywKICAgICAgICAgICAgICd3dGYvRGVjb2Rlci5oJywKKyAgICAgICAgICAgICd3dGYvRGVidWdM
b2dnaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi9EZXF1ZS5oJywKICAgICAgICAgICAgICd3dGYv
RGlzYWxsb3dDVHlwZS5oJywKICAgICAgICAgICAgICd3dGYvRG91Ymx5TGlua2VkTGlzdC5oJywK
QEAgLTU2MCw2ICs1NjEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9DdXJyZW50VGltZS5jcHAnLAog
ICAgICAgICAgICAgJ3d0Zi9EYXRlTWF0aC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9EZWNpbWFs
TnVtYmVyLmNwcCcsCisgICAgICAgICAgICAnd3RmL0RlYnVnTG9nZ2luZy5jcHAnLAogICAgICAg
ICAgICAgJ3d0Zi9EeW5hbWljQW5ub3RhdGlvbnMuY3BwJywKICAgICAgICAgICAgICd3dGYvRHlu
YW1pY0Fubm90YXRpb25zLmgnLAogICAgICAgICAgICAgJ3d0Zi9GYXN0TWFsbG9jLmNwcCcsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTczMyw2ICs3MzMsMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRGVidWdMb2dnaW5nLmNwcCIKKwkJCT4KKwkJPC9GaWxl
PgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRGVidWdMb2dnaW5nLmgiCisJ
CQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXERlcXVl
LmgiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw4
IEBACiAJCTBGOTYzQjJEMTNGODU0MDIwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyQTEzRjg1M0JE
MDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjJGMTNGQzY2QkIwMDAyRDlCMiAvKiBNZXRhQWxs
b2NhdG9ySGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjk2M0IyRTEzRkM2NkFFMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjM4
MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1
ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOENEMTRFNjEyRDUw
MEQ1MkFFMCAvKiBEZWJ1Z0xvZ2dpbmcuY3BwICovOyB9OworCQkwRjlGQzhEMTE0RTYxMkRBMDBE
NTJBRTAgLyogRGVidWdMb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCQzBB
RTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCRDdFNjkx
NDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3Jp
Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTg5Niw2ICs4OTgsOCBAQAogCQkwRjk2M0IyQjEzRjg1M0M3MDAwMkQ5QjIgLyogTWV0YUFsbG9j
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhQWxsb2Nh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMkUxM0ZDNjZBRTAw
MDJEOUIyIC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWV0YUFsbG9jYXRvckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnTG9nZ2luZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUZDOENFMTRFNjEyRDUwMEQ1MkFFMCAv
KiBEZWJ1Z0xvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdM
b2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkMwQUU0MTQ5NkM3QzEw
MEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTY0LDYgKzE5NjgsOCBAQAogCQk2NTE2MkVGMTA4RTZB
MjFDMDA3NTU2Q0QgLyogd3RmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmNwcCAq
LywKKwkJCQkwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGVidWdMb2dnaW5nLmggKi8sCiAJ
CQkJQTFENzY0NTExMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oICovLAogCQkJCTkzQUE0
Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxpbmUuaCAqLywKIAkJCQlBNzNCRTE1NDE0
ODQyMDUyMDA5MTIwNEIgLyogQXJyYXlCdWZmZXIuY3BwICovLApAQCAtMzEyOCw2ICszMTM0LDcg
QEAKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR05vZGVSZWZlcmVuY2VC
bG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZH
Tm9kZVVzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RkM4RDExNEU2MTJEQTAwRDUyQUUwIC8q
IERlYnVnTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjc0LDYgKzM2ODEsNyBAQAogCQkJ
CTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2Nh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUZDOEQwMTRFNjEyRDgwMEQ1MkFFMCAvKiBE
ZWJ1Z0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAogI2luY2x1ZGUgPE1hY3JvQXNzZW1i
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0RlYnVnTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTMxOSwxMyArMzIwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGxpbmtDb3VudCsrOwogICAgICAgICB0b3RhbEluaXRpYWxTaXplICs9IGlu
aXRpYWxTaXplOwogICAgICAgICB0b3RhbEZpbmFsU2l6ZSArPSBmaW5hbFNpemU7Ci0gICAgICAg
IHByaW50ZigibGluayAlcDogb3JpZyAldSwgY29tcGFjdCAldSAoZGVsdGEgJXUsICUuMmYlJSlc
biIsIAotICAgICAgICAgICAgICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxT
aXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZpbmFsU2l6ZSksCi0gICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpLAotICAgICAgICAg
ICAgICAgMTAwLjAgKiAoaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpIC8gaW5pdGlhbFNpemUpOwot
ICAgICAgICBwcmludGYoIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1
LCAlLjJmJSUpXG4iLCAKLSAgICAgICAgICAgICAgIGxpbmtDb3VudCwgdG90YWxJbml0aWFsU2l6
ZSwgdG90YWxGaW5hbFNpemUsIHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSwKLSAg
ICAgICAgICAgICAgIDEwMC4wICogKHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSkg
LyB0b3RhbEluaXRpYWxTaXplKTsKKyAgICAgICAgZGVidWdQcmludGYoImxpbmsgJXA6IG9yaWcg
JXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAlLjJmJSUpXG4iLCAKKyAgICAgICAgICAgICAgICAg
ICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxTaXplKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZpbmFsU2l6ZSksCisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbml0aWFsU2l6ZSAtIGZpbmFsU2l6ZSksCisgICAgICAgICAgICAgICAgICAgIDEw
MC4wICogKGluaXRpYWxTaXplIC0gZmluYWxTaXplKSAvIGluaXRpYWxTaXplKTsKKyAgICAgICAg
ZGVidWdQcmludGYoIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAl
LjJmJSUpXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgbGlua0NvdW50LCB0b3RhbEluaXRpYWxT
aXplLCB0b3RhbEZpbmFsU2l6ZSwgdG90YWxJbml0aWFsU2l6ZSAtIHRvdGFsRmluYWxTaXplLAor
ICAgICAgICAgICAgICAgICAgICAxMDAuMCAqICh0b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5h
bFNpemUpIC8gdG90YWxJbml0aWFsU2l6ZSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC0zNDIs
MTcgKzM0MywxNyBAQCBwcml2YXRlOgogICAgICAgICBzaXplX3QgdHNpemUgPSBzaXplIC8gc2l6
ZW9mKHNob3J0KTsKICAgICAgICAgY2hhciBuYW1lQnVmWzEyOF07CiAgICAgICAgIHNucHJpbnRm
KG5hbWVCdWYsIHNpemVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2RlQ291bnQrKyk7Ci0g
ICAgICAgIHByaW50ZigiXHQuc3ludGF4IHVuaWZpZWRcbiIKLSAgICAgICAgICAgICAgICJcdC5z
ZWN0aW9uXHRfX1RFWFQsX190ZXh0LHJlZ3VsYXIscHVyZV9pbnN0cnVjdGlvbnNcbiIKLSAgICAg
ICAgICAgICAgICJcdC5nbG9ibFx0JXNcbiIKLSAgICAgICAgICAgICAgICJcdC5hbGlnbiAyXG4i
Ci0gICAgICAgICAgICAgICAiXHQuY29kZSAxNlxuIgotICAgICAgICAgICAgICAgIlx0LnRodW1i
X2Z1bmNcdCVzXG4iCi0gICAgICAgICAgICAgICAiIyAlcFxuIgotICAgICAgICAgICAgICAgIiVz
OlxuIiwgbmFtZUJ1ZiwgbmFtZUJ1ZiwgY29kZSwgbmFtZUJ1Zik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCJcdC5zeW50YXggdW5pZmllZFxuIgorICAgICAgICAgICAgICAgICAgICAiXHQuc2VjdGlv
blx0X19URVhULF9fdGV4dCxyZWd1bGFyLHB1cmVfaW5zdHJ1Y3Rpb25zXG4iCisgICAgICAgICAg
ICAgICAgICAgICJcdC5nbG9ibFx0JXNcbiIKKyAgICAgICAgICAgICAgICAgICAgIlx0LmFsaWdu
IDJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlx0LmNvZGUgMTZcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIlx0LnRodW1iX2Z1bmNcdCVzXG4iCisgICAgICAgICAgICAgICAgICAgICIjICVwXG4i
CisgICAgICAgICAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIG5hbWVCdWYsIGNvZGUsIG5h
bWVCdWYpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXpl
OyBpKyspCi0gICAgICAgICAgICBwcmludGYoIlx0LnNob3J0XHQweCV4XG4iLCB0Y29kZVtpXSk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXHQuc2hvcnRcdDB4JXhcbiIsIHRjb2RlW2ldKTsK
ICNlbmRpZgogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9TSDRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9EZWJ1Z0xvZ2dpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDI1LDcgKzIw
MjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdnByaW50ZlN0ZG91dEluc3RyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQogICAgIHsKICAgICAgICAgaWYgKGdldGVudigi
SmF2YVNjcmlwdENvcmVEdW1wSklUIikpCi0gICAgICAgICAgICB2ZnByaW50ZihzdGRvdXQsIGZv
cm1hdCwgYXJncyk7CisgICAgICAgICAgICBXVEY6OmRlYnVnVlByaW50Zihmb3JtYXQsIGFyZ3Mp
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHByaW50QmxvY2tJbnN0cih1aW50MTZfdCogZmly
c3QsIHVuc2lnbmVkIGludCBvZmZzZXQsIGludCBuYkluc3RyKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50VW5hcnlPcChFeGVj
U3RhdGUqIAogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogCi0gICAgcHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVzXG4iLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGVidWdQcmludGYoIlslNGRdICVzXHRcdCAlcywgJXNc
biIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50QmluYXJ5
T3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yJiBpdCwgY29uc3QgY2hhciogb3ApIGNvbnN0CkBAIC0xNjIsMTQgKzE2Miwx
NCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRCaW5hcnlPcChFeGVjU3RhdGUqCiAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0XHQg
JXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMiku
ZGF0YSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gJXNcdFx0ICVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CiB9CiAKIHZv
aWQgQ29kZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKSBjb25z
dAogewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludGYoIlslNGRdICVzXHRcdCAlcywgJWQoLT4lZClc
biIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOworICAgIGRlYnVnUHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVk
KC0+JWQpXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZE9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYgaXQsIGNvbnN0IGNoYXIqIG9wKSBjb25zdApAQCAtMTc3LDcgKzE3
Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0
ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZp
ZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgZGVidWdQcmludGYoIlslNGRdICVzXHQgJXMsICVzLCAl
c1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpKTsKICAgICBpdCArPSA1OwogfQogCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OnByaW50Q2FsbE9wKEV4ZWNTdGF0ZSogZQogICAgIGludCBmdW5jID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgaW50IGFyZ0NvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAl
c1x0ICVzLCAlZCwgJWRcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmMp
LmRhdGEoKSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICBkZWJ1Z1ByaW50ZigiWyU0
ZF0gJXNcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBm
dW5jKS5kYXRhKCksIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CiAgICAgaXQgKz0gMjsKIH0K
IApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRPcChFeGVj
U3RhdGUKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgaWQwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJp
bnRmKCJbJTRkXSAlc1x0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGVidWdQcmludGYoIlslNGRd
ICVzXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICBpdCArPSA1OwogfQogCkBAIC0yNDMsNDggKzI0
Myw0OCBAQCBzdGF0aWMgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXRGb3JOdGgoCiAKIHN0YXRp
YyB2b2lkIHByaW50R2xvYmFsUmVzb2x2ZUluZm8oY29uc3QgR2xvYmFsUmVzb2x2ZUluZm8mIHJl
c29sdmVJbmZvLCB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCkKIHsKLSAgICBwcmludGYoIiAg
WyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInJlc29sdmVfZ2xvYmFsIiwgcG9p
bnRlclRvU291cmNlU3RyaW5nKHJlc29sdmVJbmZvLnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7
CisgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwg
InJlc29sdmVfZ2xvYmFsIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHJlc29sdmVJbmZvLnN0cnVj
dHVyZSkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50U3RydWN0dXJlU3R1
YkluZm8oY29uc3QgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbk9mZnNldCkKIHsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBj
YXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAl
c1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfc2VsZiIsIHBvaW50ZXJUb1NvdXJj
ZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3NlbGYiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKLSAgICAg
ICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0
X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFBy
b3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0
cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhz
dHViSW5mby51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
LCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBl
U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNj
ZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNl
U3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0Zjgo
KS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRDaGFpbi5j
aGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzOiAl
cywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRD
aGFpbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFj
Y2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVz
ICglZClcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCIsIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVM
aXN0KS51dGY4KCkuZGF0YSgpLCBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7
CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzOiAlcyAoJWQpXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgIm9wX2dldF9ieV9pZF9zZWxmX2xpc3QiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmco
c3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdCkudXRmOCgpLmRhdGEoKSwg
c3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6Ci0gICAgICAgIHByaW50ZigiICBb
JTRkXSAlczogJXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlfaWRfcHJv
dG9fbGlzdCIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90b0xp
c3Quc3RydWN0dXJlTGlzdCkudXRmOCgpLmRhdGEoKSwgc3R1YkluZm8udS5nZXRCeUlkUHJvdG9M
aXN0Lmxpc3RTaXplKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzICglZClc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QiLCBwb2ludGVy
VG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Qp
LnV0ZjgoKS5kYXRhKCksIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAg
ICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5w
dXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRl
clRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlKS51
dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFsl
NGRdICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90cmFu
c2l0aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRp
b24ucHJldmlvdXNTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmlu
ZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwg
cG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4p
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5
X2lkX3JlcGxhY2U6Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3JlcGxhY2UiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgInB1dF9ieV9pZF9yZXBsYWNlIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZv
LnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcHJpbnRmKCIg
IFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInVuc2V0Iik7CisgICAgICAgIGRlYnVn
UHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInVuc2V0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfZ2VuZXJpYzoKLSAgICAgICAg
cHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9ieV9pZF9n
ZW5lcmljIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgIm9wX2dldF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIGFjY2Vzc19wdXRfYnlfaWRfZ2VuZXJpYzoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVz
XG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX3B1dF9ieV9pZF9nZW5lcmljIik7CisgICAgICAg
IGRlYnVnUHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX3B1dF9i
eV9pZF9nZW5lcmljIik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYXJy
YXlfbGVuZ3RoOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXNcbiIsIGluc3RydWN0aW9uT2Zm
c2V0LCAib3BfZ2V0X2FycmF5X2xlbmd0aCIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRk
XSAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYXJyYXlfbGVuZ3RoIik7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKLSAgICAgICAg
cHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9zdHJpbmdf
bGVuZ3RoIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgIm9wX2dldF9zdHJpbmdfbGVuZ3RoIik7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NSw3ICsyOTUsNyBA
QCBzdGF0aWMgdm9pZCBwcmludFN0cnVjdHVyZVN0dWJJbmZvKGNvbnN0CiB2b2lkIENvZGVCbG9j
azo6cHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQ
QywgaW50IG9wZXJhbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQg
PSB2UEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHByaW50ZigiICBbJTRkXSAlczog
JXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBD
W29wZXJhbmRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICBkZWJ1Z1ByaW50Zigi
ICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCBuYW1lLCBwb2ludGVyVG9Tb3Vy
Y2VTdHJpbmcodlBDW29wZXJhbmRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKIH0KIAog
dm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiogdlBDKSBj
b25zdApAQCAtMzEyLDE1ICszMTIsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJl
cyhjb25zdCBJbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8pKSB7Ci0gICAg
ICAgIHByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdl
dF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBbJTRkXSAlczogJXMsICVz
XG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJj
ZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJj
ZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKLSAgICAgICAgcHJpbnRmKCIgIFslNGRd
ICVzOiAlcywgJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90cmFuc2l0
aW9uIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRh
dGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRmOCgpLmRh
dGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNc
biIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pKSB7Ci0gICAgICAgIHByaW50ZigiICBb
JTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIs
IHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCks
IHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQ
Q1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQ
Q1s1XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkKSkgewpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmlu
dFN0cnVjdHVyZXMoY29uc3QgSW4KIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIHsKICAgICBpZiAoIW1faW5zdHJ1Y3Rpb25zKSB7Ci0gICAgICAgIHByaW50Zigi
Tm8gaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZS5cbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiTm8g
aW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBj
bwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9
IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAg
cHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVy
KHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKKyAgICBkZWJ1Z1ByaW50ZigiJWx1IG1f
aW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVl
IHJlZ2lzdGVyKHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGlu
c3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0
cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKICAgICAgICAgdGhpcywg
bV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CkBAIC0zNjcsMzUgKzM2Nywz
NSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgICAgIGR1
bXAoZXhlYywgYmVnaW4sIGl0KTsKIAogICAgIGlmICghbV9pZGVudGlmaWVycy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgcHJpbnRmKCJcbklkZW50aWZpZXJzOlxuIik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCJcbklkZW50aWZpZXJzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAg
ZG8gewotICAgICAgICAgICAgcHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50aWZpZXJzLnNpemUoKSk7
CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHkoKSkgewotICAg
ICAgICBwcmludGYoIlxuQ29uc3RhbnRzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbkNv
bnN0YW50czpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIHByaW50ZigiICAgayV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwg
dmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgpKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICBrJXUgPSAlc1xuIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIG1fY29u
c3RhbnRSZWdpc3RlcnNbaV0uZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytp
OwogICAgICAgICB9IHdoaWxlIChpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCkpOwogICAg
IH0KIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5tX3JlZ2V4cHM6XG4iKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIlxubV9yZWdleHBzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAg
ZG8gewotICAgICAgICAgICAgcHJpbnRmKCIgIHJlJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCByZWdleHBUb1NvdXJjZVN0cmluZyhtX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaV0u
Z2V0KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgcmUldSA9
ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHJlZ2V4cFRvU291cmNlU3RyaW5nKG1f
cmFyZURhdGEtPm1fcmVnZXhwc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuc2l6ZSgp
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQogICAgIGlmICghbV9nbG9iYWxSZXNvbHZlSW5m
b3MuaXNFbXB0eSgpIHx8ICFtX3N0cnVjdHVyZVN0dWJJbmZvcy5pc0VtcHR5KCkpCi0gICAgICAg
IHByaW50ZigiXG5TdHJ1Y3R1cmVzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcblN0cnVj
dHVyZXM6XG4iKTsKIAogICAgIGlmICghbV9nbG9iYWxSZXNvbHZlSW5mb3MuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHNpemVfdCBpID0gMDsKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgaWYgKCFtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuaXNFbXB0eSgpIHx8ICFt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcHJpbnRmKCJc
blN0cnVjdHVyZXM6XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuU3RydWN0dXJlczpcbiIp
OwogCiAgICAgaWYgKCFtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHNpemVfdCBpID0gMDsKQEAgLTQzMywzNiArNDMzLDM2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZURhdGEg
JiYgIW1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHByaW50ZigiXG5FeGNlcHRpb24gSGFuZGxlcnM6XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYo
IlxuRXhjZXB0aW9uIEhhbmRsZXJzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIlx0ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6
IFslNGRdIHRhcmdldDogWyU0ZF0gfVxuIiwgaSArIDEsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5k
LCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldLnRhcmdldCk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBb
JTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5zdGFy
dCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
fSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpKTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1faW1tZWRpYXRl
U3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJpbnRmKCJJbW1lZGlhdGUg
U3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJJbW1lZGlhdGUg
U3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9
IDA7CiAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVu
ZCgpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zm
c2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCEqaXRlcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOworICAgICAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8
IG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0
Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICBwcmludGYoIlxuQ2hhcmFjdGVyIFN3
aXRjaCBKdW1wIFRhYmxlczpcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiXG5DaGFyYWN0ZXIg
U3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9
IDA7CiAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVu
ZCgpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zm
c2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CkBAIC00NzAsMjcg
KzQ3MCwyNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsg
bV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZG
KSk7CiAgICAgICAgICAgICAgICAgVUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkg
KyBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAg
ICAgICAgICAgICBwcmludGYoIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZygmY2gsIDEp
LnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXHRc
dFwiJXNcIiA9PiAlMDRkXG4iLCBVU3RyaW5nKCZjaCwgMSkudXRmOCgpLmRhdGEoKSwgKml0ZXIp
OwogICAgICAgICB9Ci0gICAgICAgICAgICBwcmludGYoIiAgICAgIH1cbiIpOworICAgICAgICAg
ICAgZGVidWdQcmludGYoIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9
IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLnNpemUo
KSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5TdHJp
bmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcblN0cmlu
ZyBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgU3RyaW5nSnVt
cFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAg
ICAgICAgZm9yIChTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNl
dFRhYmxlLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgcHJp
bnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5k
YXRhKCksIGl0ZXItPnNlY29uZC5icmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgcHJpbnRmKCIg
ICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXHRcdFwiJXNcIiA9PiAl
MDRkXG4iLCBVU3RyaW5nKGl0ZXItPmZpcnN0KS51dGY4KCkuZGF0YSgpLCBpdGVyLT5zZWNvbmQu
YnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICB9XG4iKTsKICAg
ICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIHByaW50ZigiXG4iKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiXG4iKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4s
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCkgY29uc3QKQEAgLTQ5OCw3
MyArNDk4LDczIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICBpbnQgbG9jYXRpb24gPSBpdCAtIGJlZ2luOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+Z2V0T3Bjb2RlSUQoaXQtPnUub3Bjb2RlKSkgewogICAgICAgICBjYXNlIG9wX2VudGVy
OiB7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGVudGVyXG4iLCBsb2NhdGlvbik7CisgICAg
ICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZW50ZXJcbiIsIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
cHJpbnRmKCJbJTRkXSBjcmVhdGVfYWN0aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBj
cmVhdGVfYWN0aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
Y3JlYXRlX2FyZ3VtZW50czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2luaXRfbGF6eV9yZWc6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBpbml0X2xhenlf
cmVnXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gaW5pdF9sYXp5X3JlZ1x0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gb3Bf
Z2V0X2NhbGxlZSAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBvcF9nZXRfY2FsbGVlICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY3JlYXRlX3RoaXMgJXMg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGNy
ZWF0ZV90aGlzICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY29u
dmVydF90aGlzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gY29udmVydF90aGlzXHQgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBuZXdfb2JqZWN0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsKICAgICAgICAg
ICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd2ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgYXJndikuZGF0YSgpLCBhcmdjKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRk
XSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJndikuZGF0YSgpLCBhcmdjKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1
ZmZlcjogewogICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmdj
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG5ld19hcnJh
eV9idWZmZXIgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3Qp
LmRhdGEoKSwgYXJndiwgYXJnYyk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbmV3
X2FycmF5X2J1ZmZlciAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmUwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG5ld19yZWdleHBcdCAlcywgIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCJbJTRkXSBuZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAocjAgPj0wICYmIHIwIDwgKGludCludW1iZXJP
ZlJlZ0V4cHMoKSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiVzXG4iLCByZWdleHBOYW1lKHJl
MCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIiVz
XG4iLCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJiYWRfcmVnZXhwKCVkKVxuIiwgcmUwKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiYmFkX3JlZ2V4cCglZClcbiIsIHJlMCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbW92XHRcdCAlcywg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIG1v
dlx0XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CkBAIC02MTMsMTIgKzYxMywxMiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50
ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3ByZV9kZWM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwcmVfZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJb
JTRkXSBwcmVfZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cG9zdF9pbmM6IHsKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5z
dGFuY2U6IHsKICAgICAgICAgICAgIGludCBiYXNlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6IHsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIzKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGluc3RhbmNl
b2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90eXBlb2Y6IHsKQEAgLTc0MCw3
ICs3NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gcmVzb2x2ZVx0XHQgJXMs
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShp
ZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzQ4LDE0ICs3NDgsMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX3NraXBcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmll
cnNbaWQwXSkuZGF0YSgpLCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJb
JTRkXSByZXNvbHZlX3NraXBcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
LCBza2lwTGV2ZWxzKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxcdCAl
cywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmlu
dGYoIlslNGRdIHJlc29sdmVfZ2xvYmFsXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpKTsKICAgICAgICAgICAgIGl0ICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBKU1ZhbHVlKCgrK2l0KS0+dS5qc0Nl
bGwuZ2V0KCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGludCBkZXB0aCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX2dsb2Jh
bF9keW5hbWljXHQgJXMsICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMs
ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
dmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIGRlcHRoKTsKICAgICAgICAgICAgICsraXQ7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBnZXRfc2NvcGVkX3Zhclx0ICVzLCAlZCwgJWRcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaW5kZXgsIHNraXBMZXZl
bHMpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGdldF9zY29wZWRfdmFyXHQgJXMs
ICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRl
eCwgc2tpcExldmVscyk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTc4MSw0MSArNzgxLDQxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBwdXRfc2NvcGVkX3Zhclx0ICVkLCAlZCwgJXNcbiIsIGxvY2F0aW9uLCBpbmRleCwgc2tp
cExldmVscywgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIlslNGRdIHB1dF9zY29wZWRfdmFyXHQgJWQsICVkLCAlc1xuIiwgbG9jYXRpb24s
IGluZGV4LCBza2lwTGV2ZWxzLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBnZXRfZ2xvYmFsX3Zhclx0ICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCBpbmRleCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZ2V0
X2dsb2JhbF92YXJcdCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaW5kZXgpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAg
IGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHB1dF9nbG9iYWxfdmFy
XHQgJWQsICVzXG4iLCBsb2NhdGlvbiwgaW5kZXgsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhclx0ICVk
LCAlc1xuIiwgbG9jYXRpb24sIGluZGV4LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVf
YmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaXNTdHJp
Y3QgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2
ZV9iYXNlJXNcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBpc1N0cmljdCA/ICJfc3RyaWN0IiA6ICIi
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHJlc29sdmVf
YmFzZSVzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNb
aWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJv
cGVydHlfZXhpc3RzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlfZXhpc3RzXHQgJXMsICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAs
IG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX2Jhc2U6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfd2l0aF9iYXNlICVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywgJXMsICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEo
KSk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTgyMyw3ICs4MjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfdGhpcyAl
cywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gcmVzb2x2ZV93aXRo
X3RoaXMgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlm
aWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC05MDUsMjUgKzkwNSwyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBw
dXRfZ2V0dGVyX3NldHRlclx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIy
KS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHB1dF9nZXR0ZXJfc2V0
dGVyXHQgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21ldGhvZF9jaGVj
azogewotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBtZXRob2RfY2hlY2tcbiIsIGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBtZXRob2RfY2hlY2tcbiIsIGxvY2F0
aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVs
X2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBkZWxfYnlfaWRc
dCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJz
W2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZGVsX2J5X2lk
XHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfdmFsOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRd
IGdldF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZ2V0X2J5
X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZ2V0X2FyZ3VtZW50
X2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBnZXRfYXJndW1l
bnRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC05NDIsMzggKzk0MiwzOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHI1ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9i
eV9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBnZXRfYnlfcG5hbWVcdCAlcywg
JXMsICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByNCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAg
ICBkZWJ1Z1ByaW50ZigiWyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHB1
dF9ieV9pbmRleFx0ICVzLCAldSwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7CiAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlsl
NGRdIGptcFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBqbXBcdFx0ICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3A6IHsKICAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbG9v
cFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBsb29wXHRcdCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qdHJ1ZTogewpAQCAtMTAwNCwxMjkgKzEwMDQsMTI5
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGpuZXFfcHRyXHRcdCAlcywgJXMsICVkKC0+JWQp
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNzOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZGVidWdQcmludGYoIlslNGRdIGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludGYoIlslNGRdIGpubGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gam5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6IHsKICAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEp
LmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQo
LT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAg
ICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+
JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzOiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9p
Zl9sZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3Bf
aWZfbGVzc2VxXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbG9vcF9p
Zl9sZXNzZXFcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVz
LCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9o
aW50OiB7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24p
OworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hf
aW1tOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSBzd2l0Y2hfaW1tXHQgJWQsICVkKC0+JWQpLCAlc1xuIiwgbG9j
YXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRhcmdl
dCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGVidWdQcmludGYoIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwgJWQoLT4lZCksICVzXG4i
LCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0
VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFy
OiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxvY2F0
aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQs
IHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVkLCAlZCgtPiVkKSwgJXNcbiIs
IGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRU
YXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmlu
ZzogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxv
Y2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJn
ZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQsICVkKC0+JWQpLCAl
c1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVm
YXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVu
YzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzaG91bGRDaGVj
ayA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfZnVu
Y1x0XHQgJXMsIGYlZCwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgZjAsIHNob3VsZENoZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBuZXdfZnVuY1x0XHQgJXMsIGYlZCwgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3VsZENoZWNr
ID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVk
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywgZiVkXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbDogewpAQCAtMTE0MiwzNSArMTE0
MiwzNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAg
ICAgICBpbnQgdGhpc1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
YXJndW1lbnRzID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVl
UmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
Y2FsbF92YXJhcmdzXHQgJXMsICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rl
cik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVz
LCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRlYXJfb2Zm
X2FjdGl2YXRpb25cdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90
ZWFyX29mZl9hcmd1bWVudHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gdGVhcl9vZmZfYXJndW1lbnRzICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXRcdFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGVidWdQ
cmludGYoIlslNGRdIHJldFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gb3BfY2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3JldF9vYmpl
Y3Rfb3JfdGhpczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRcdCAlcyAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2NvbnN0cnVjdDogewpAQCAtMTE4MSwxMyArMTE4MSwxMyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludGYoIlslNGRdIHN0cmNhdFx0XHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgY291
bnQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHN0cmNhdFx0XHQgJXMsICVzLCAl
ZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgY291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRvX3ByaW1pdGl2ZVx0ICVzLCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gdG9fcHJpbWl0
aXZlXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczogewpAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAg
aW50IHIyID0gaXRbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIzID0gaXRbNF0udS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzVdLnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gZ2V0X3BuYW1lc1x0ICVzLCAlcywgJXMsICVzLCAlZCgtPiVk
KVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAlcywgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwogICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKSAtIDE7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTIwNyw3OCArMTIwNyw3OCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
c2l6ZSA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpdGVyID0gaXRbNV0udS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzZdLnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJWQo
LT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVzdCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaXRl
cikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbJTRkXSBuZXh0X3BuYW1lXHQgJXMsICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKVxu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBpdGVyKS5kYXRh
KCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgaXQgKz0gT1BDT0RF
X0xFTkdUSChvcF9uZXh0X3BuYW1lKSAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1c2hfc2NvcGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwdXNoX3Njb3BlXHQg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gcHVzaF9zY29wZVx0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsKLSAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gcG9wX3Njb3BlXG4iLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0
ZF0gcG9wX3Njb3BlXG4iLCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3B1c2hfbmV3X3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVy
c1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVu
dGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wX3Njb3Blczog
ewogICAgICAgICAgICAgaW50IHNjb3BlRGVsdGEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gam1wX3Njb3Blc1x0XiVkLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHNjb3BlRGVs
dGEsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGVidWdQcmludGYo
IlslNGRdIGptcF9zY29wZXNcdF4lZCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBzY29wZURlbHRh
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjYXRjaFx0XHQgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiWyU0ZF0gY2F0Y2hcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF90aHJvdzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRocm93XHRcdCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCJbJTRkXSB0aHJvd1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3Rocm93X3JlZmVyZW5jZV9lcnJvcjogewogICAgICAgICAgICAgaW50IGswID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHRocm93X3JlZmVyZW5jZV9lcnJv
clx0ICVzXG4iLCBsb2NhdGlvbiwgY29uc3RhbnROYW1lKGV4ZWMsIGswLCBnZXRDb25zdGFudChr
MCkpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gdGhyb3dfcmVmZXJl
bmNlX2Vycm9yXHQgJXNcbiIsIGxvY2F0aW9uLCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENv
bnN0YW50KGswKSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfanNyOiB7CiAgICAgICAgICAgICBpbnQgcmV0QWRkckRzdCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqc3JcdFx0ICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByZXRBZGRyRHN0KS5kYXRhKCksIG9mZnNldCwgbG9jYXRp
b24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGpzclx0XHQgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHJldEFkZHJEc3QpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3NyZXQ6IHsKICAgICAgICAgICAgIGludCByZXRBZGRy
U3JjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHNyZXRc
dFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHJldEFkZHJTcmMpLmRhdGEo
KSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiWyU0ZF0gc3JldFx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkclNyYykuZGF0YSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVidWc6IHsKICAgICAgICAgICAg
IGludCBkZWJ1Z0hvb2tJRCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGZp
cnN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxhc3RMaW5lID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGRlYnVnXHRcdCAl
cywgJWQsICVkXG4iLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0
TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIGRlYnVnXHRc
dCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZp
cnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDogewogICAgICAgICAgICAgaW50IGZ1bmN0aW9u
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHByb2ZpbGVf
d2lsbF9jYWxsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5k
YXRhKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxs
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcm9maWxlX2Rp
ZF9jYWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGVidWdQcmludGYoIlslNGRdIHByb2ZpbGVfZGlkX2NhbGxcdCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCBmdW5jdGlvbikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZW5kOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZW5kXHRcdCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCJbJTRkXSBlbmRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMzgyLDI5ICsxMzgyLDI5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcygp
CiAgICAgdG90YWxTaXplICs9IHN5bWJvbFRhYmxlVG90YWxTaXplOwogICAgIHRvdGFsU2l6ZSAr
PSAobGl2ZUNvZGVCbG9ja1NldC5zaXplKCkgKiBzaXplb2YoQ29kZUJsb2NrKSk7CiAKLSAgICBw
cmludGYoIk51bWJlciBvZiBsaXZlIENvZGVCbG9ja3M6ICVkXG4iLCBsaXZlQ29kZUJsb2NrU2V0
LnNpemUoKSk7Ci0gICAgcHJpbnRmKCJTaXplIG9mIGEgc2luZ2xlIENvZGVCbG9jayBbc2l6ZW9m
KENvZGVCbG9jayldOiAlenVcbiIsIHNpemVvZihDb2RlQmxvY2spKTsKLSAgICBwcmludGYoIlNp
emUgb2YgYWxsIENvZGVCbG9ja3M6ICV6dVxuIiwgdG90YWxTaXplKTsKLSAgICBwcmludGYoIkF2
ZXJhZ2Ugc2l6ZSBvZiBhIENvZGVCbG9jazogJXp1XG4iLCB0b3RhbFNpemUgLyBsaXZlQ29kZUJs
b2NrU2V0LnNpemUoKSk7Ci0KLSAgICBwcmludGYoIk51bWJlciBvZiBGdW5jdGlvbkNvZGUgQ29k
ZUJsb2NrczogJXp1ICglLjNmJSUpXG4iLCBpc0Z1bmN0aW9uQ29kZSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihpc0Z1bmN0aW9uQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsK
LSAgICBwcmludGYoIk51bWJlciBvZiBHbG9iYWxDb2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUl
KVxuIiwgaXNHbG9iYWxDb2RlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGlzR2xvYmFsQ29kZSkgKiAx
MDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKLSAgICBwcmludGYoIk51bWJlciBvZiBF
dmFsQ29kZSBDb2RlQmxvY2tzOiAlenUgKCUuM2YlJSlcbiIsIGlzRXZhbENvZGUsIHN0YXRpY19j
YXN0PGRvdWJsZT4oaXNFdmFsQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgp
KTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIGxpdmUgQ29kZUJsb2NrczogJWRcbiIsIGxp
dmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiU2l6ZSBvZiBhIHNpbmds
ZSBDb2RlQmxvY2sgW3NpemVvZihDb2RlQmxvY2spXTogJXp1XG4iLCBzaXplb2YoQ29kZUJsb2Nr
KSk7CisgICAgZGVidWdQcmludGYoIlNpemUgb2YgYWxsIENvZGVCbG9ja3M6ICV6dVxuIiwgdG90
YWxTaXplKTsKKyAgICBkZWJ1Z1ByaW50ZigiQXZlcmFnZSBzaXplIG9mIGEgQ29kZUJsb2NrOiAl
enVcbiIsIHRvdGFsU2l6ZSAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKworICAgIGRlYnVn
UHJpbnRmKCJOdW1iZXIgb2YgRnVuY3Rpb25Db2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxu
IiwgaXNGdW5jdGlvbkNvZGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaXNGdW5jdGlvbkNvZGUpICog
MTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7CisgICAgZGVidWdQcmludGYoIk51bWJl
ciBvZiBHbG9iYWxDb2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNHbG9iYWxDb2Rl
LCBzdGF0aWNfY2FzdDxkb3VibGU+KGlzR2xvYmFsQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxv
Y2tTZXQuc2l6ZSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIEV2YWxDb2RlIENvZGVC
bG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNFdmFsQ29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihp
c0V2YWxDb2RlKSAqIDEwMC4wIC8gbGl2ZUNvZGVCbG9ja1NldC5zaXplKCkpOwogCi0gICAgcHJp
bnRmKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRoIHJhcmUgZGF0YTogJXp1ICglLjNmJSUpXG4i
LCBoYXNSYXJlRGF0YSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihoYXNSYXJlRGF0YSkgKiAxMDAuMCAv
IGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIENv
ZGVCbG9ja3Mgd2l0aCByYXJlIGRhdGE6ICV6dSAoJS4zZiUlKVxuIiwgaGFzUmFyZURhdGEsIHN0
YXRpY19jYXN0PGRvdWJsZT4oaGFzUmFyZURhdGEpICogMTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0
LnNpemUoKSk7CiAKLSAgICAjZGVmaW5lIFBSSU5UX1NUQVRTKG5hbWUpIHByaW50ZigiTnVtYmVy
IG9mIENvZGVCbG9ja3Mgd2l0aCAiICNuYW1lICI6ICV6dVxuIiwgbmFtZSMjSXNOb3RFbXB0eSk7
IHByaW50ZigiU2l6ZSBvZiBhbGwgIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI1RvdGFsU2l6ZSk7
IAorICAgICNkZWZpbmUgUFJJTlRfU1RBVFMobmFtZSkgZGVidWdQcmludGYoIk51bWJlciBvZiBD
b2RlQmxvY2tzIHdpdGggIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI0lzTm90RW1wdHkpOyBkZWJ1
Z1ByaW50ZigiU2l6ZSBvZiBhbGwgIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI1RvdGFsU2l6ZSk7
IAogICAgICAgICBGT1JfRUFDSF9NRU1CRVJfVkVDVE9SKFBSSU5UX1NUQVRTKQogICAgICAgICBG
T1JfRUFDSF9NRU1CRVJfVkVDVE9SX1JBUkVfREFUQShQUklOVF9TVEFUUykKICAgICAjdW5kZWYg
UFJJTlRfU1RBVFMKIAotICAgIHByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9ja3Mgd2l0aCBldmFs
Q29kZUNhY2hlOiAlenVcbiIsIGV2YWxDb2RlQ2FjaGVJc05vdEVtcHR5KTsKLSAgICBwcmludGYo
Ik51bWJlciBvZiBDb2RlQmxvY2tzIHdpdGggc3ltYm9sVGFibGU6ICV6dVxuIiwgc3ltYm9sVGFi
bGVJc05vdEVtcHR5KTsKKyAgICBkZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9ja3Mgd2l0
aCBldmFsQ29kZUNhY2hlOiAlenVcbiIsIGV2YWxDb2RlQ2FjaGVJc05vdEVtcHR5KTsKKyAgICBk
ZWJ1Z1ByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9ja3Mgd2l0aCBzeW1ib2xUYWJsZTogJXp1XG4i
LCBzeW1ib2xUYWJsZUlzTm90RW1wdHkpOwogCi0gICAgcHJpbnRmKCJTaXplIG9mIGFsbCBzeW1i
b2xUYWJsZXM6ICV6dVxuIiwgc3ltYm9sVGFibGVUb3RhbFNpemUpOworICAgIGRlYnVnUHJpbnRm
KCJTaXplIG9mIGFsbCBzeW1ib2xUYWJsZXM6ICV6dVxuIiwgc3ltYm9sVGFibGVUb3RhbFNpemUp
OwogCiAjZWxzZQotICAgIHByaW50ZigiRHVtcGluZyBDb2RlQmxvY2sgc3RhdGlzdGljcyBpcyBu
b3QgZW5hYmxlZC5cbiIpOworICAgIGRlYnVnUHJpbnRmKCJEdW1waW5nIENvZGVCbG9jayBzdGF0
aXN0aWNzIGlzIG5vdCBlbmFibGVkLlxuIik7CiAjZW5kaWYKIH0KIApAQCAtMTczNiw3ICsxNzM2
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgIC8vIENo
ZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYg
KCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0Rh
dGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtp
bmcpCi0gICAgICAgICAgICBwcmludGYoIkNvZGUgYmxvY2sgJXAgaGFzIGRlYWQgd2VhayByZWZl
cmVuY2VzLCBqZXR0aXNvbmluZyBkdXJpbmcgR0MuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJDb2RlIGJsb2NrICVwIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlz
b25pbmcgZHVyaW5nIEdDLlxuIiwgdGhpcyk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIGJhc2VsaW5lIEpJVCBrbm93cyB0aGF0IGl0IHNob3VsZCByZS13YXJtLXVwIGJlZm9yZQog
ICAgICAgICAvLyBvcHRpbWl6aW5nLgpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGNh
bGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8o
aSkuY2FsbGVlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KQotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIGNhbGwgZnJvbSAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiQ2xlYXJpbmcgY2FsbCBm
cm9tICVwLlxuIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnVubGlu
aygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZQpAQCAtMTc2NCw3ICsxNzY0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBm
b3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0
cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0
dXJlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIHJlc29sdmUgaW5mbyBpbiAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiQ2xlYXJpbmcgcmVzb2x2
ZSBpbmZvIGluICVwLlxuIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5mb3NbaV0uc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTE3NzgsNyArMTc3OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBz
dHJ1Y3R1cmUgY2FjaGUgKGtpbmQgJWQpIGluICVwLlxuIiwgc3R1YkluZm8uYWNjZXNzVHlwZSwg
dGhpcyk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIkNsZWFyaW5nIHN0cnVjdHVyZSBj
YWNoZSAoa2luZCAlZCkgaW4gJXAuXG4iLCBzdHViSW5mby5hY2Nlc3NUeXBlLCB0aGlzKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzR2V0QnlJZEFjY2VzcyhhY2Nlc3NUeXBlKSkg
ewogICAgICAgICAgICAgICAgIGlmIChnZXRKSVRDb2RlKCkuaml0VHlwZSgpID09IEpJVENvZGU6
OkRGR0pJVCkKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICB8fCAhSGVhcDo6aXNNYXJrZWQobV9tZXRo
b2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZEZ1bmN0aW9uLmdldCgpKQogICAgICAgICAgICAgICAg
IHx8ICFIZWFwOjppc01hcmtlZChtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90
eXBlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIG1ldGhvZCBjYWxsIGluICVwLlxuIiwg
dGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJDbGVhcmluZyBtZXRob2Qg
Y2FsbCBpbiAlcC5cbiIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FsbExpbmtJ
bmZvc1tpXS5yZXNldChyZXBhdGNoQnVmZmVyLCBnZXRKSVRUeXBlKCkpOwogCiAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1YkluZm8obV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmJ5dGVjb2RlSW5kZXgpOwpAQCAtMjIxMSw3ICsyMjExLDcgQEAgdm9p
ZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9w
dGltaXplTm93KCkKIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50Zigi
Q29uc2lkZXJpbmcgb3B0aW1pemluZyAlcC4uLlxuIiwgdGhpcyk7CisgICAgZGVidWdQcmludGYo
IkNvbnNpZGVyaW5nIG9wdGltaXppbmcgJXAuLi5cbiIsIHRoaXMpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgYm9vbCBD
b2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KCkKICAgICB9CiAKICNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQotICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRv
dWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9m
aWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CisgICAgZGVi
dWdQcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChkb3VibGUpbnVtYmVyT2ZM
aXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCksIChk
b3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZC
dWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOwogI2VuZGlmCiAKICAgICBpZiAoKCFu
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB8fCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50
VmFsdWVQcm9maWxlcyAvIG51bWJlck9mVmFsdWVQcm9maWxlcygpID49IE9wdGlvbnM6OmRlc2ly
ZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsICJPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3IgY29kZSBibG9jayAlcCBvY2N1
cnJlZCBmcmVxdWVudGx5OyBjb3VudGluZyBhcyBmcmVxdWVudCBleGl0IHNpdGUuXG4iLCBpLCBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBERkc6OmV4
aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0aGlzKTsKKyAgICAgICAgZGVidWdQcmludGYo
Ik9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwIG9jY3VycmVk
IGZyZXF1ZW50bHk7IGNvdW50aW5nIGFzIGZyZXF1ZW50IGV4aXQgc2l0ZS5cbiIsIGksIGV4aXQu
bV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGV4aXQubV9ub2RlSW5kZXgsIERGRzo6ZXhpdEtp
bmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRoaXMpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMjI3
OSwzMCArMjI3OSwzMCBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcygp
CiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKIHZvaWQgQ29kZUJsb2NrOjpkdW1w
VmFsdWVQcm9maWxlcygpCiB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJWYWx1ZVByb2ZpbGUgZm9y
ICVwOlxuIiwgdGhpcyk7CisgICAgZGVidWdQcmludGYoIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4i
LCB0aGlzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA8IDApIHsKICAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0
ID09IC0xKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgYXJnID0gJXU6ICIsIGkp
OworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgIGFyZyA9ICV1OiAiLCBpKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6ICIsIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgIGJjID0g
JWQ6ICIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBpZiAoIXByb2ZpbGUt
Pm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUtPm1fcHJlZGljdGlvbiA9PSBQcmVkaWN0Tm9u
ZSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8ZW1wdHk+XG4iKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCI8ZW1wdHk+XG4iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIHByb2ZpbGUtPmR1bXAoc3RkZXJyKTsKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICJcbiIpOworICAgICAgICBwcm9maWxlLT5kdW1wKFdURjo6ZGVidWdGaWxlKCkpOwor
ICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICJS
YXJlQ2FzZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGVidWdQcmludGYoIlJhcmVD
YXNlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBSYXJlQ2FzZVBy
b2ZpbGUqIHByb2ZpbGUgPSByYXJlQ2FzZVByb2ZpbGUoaSk7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQsIHByb2Zp
bGUtPm1fY291bnRlcik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICBiYyA9ICVkOiAldVxuIiwg
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCwgcHJvZmlsZS0+bV9jb3VudGVyKTsKICAgICB9Ci0g
ICAgZnByaW50ZihzdGRlcnIsICJTcGVjaWFsRmFzdENhc2VQcm9maWxlIGZvciAlcDpcbiIsIHRo
aXMpOworICAgIGRlYnVnUHJpbnRmKCJTcGVjaWFsRmFzdENhc2VQcm9maWxlIGZvciAlcDpcbiIs
IHRoaXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlNwZWNpYWxGYXN0
Q2FzZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBSYXJlQ2FzZVByb2ZpbGUqIHByb2ZpbGUg
PSBzcGVjaWFsRmFzdENhc2VQcm9maWxlKGkpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
IGJjID0gJWQ6ICV1XG4iLCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0LCBwcm9maWxlLT5tX2Nv
dW50ZXIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQsIHByb2ZpbGUtPm1fY291bnRlcik7CiAgICAgfQogfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAkocmV2aXNp
b24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCwxOSArMTE4LDE5IEBAIE9wY29kZVN0YXRzOjp+T3Bjb2Rl
U3RhdHMoKQogICAgICAgICAgICAgKihjdXJyZW50UGFpckluZGV4KyspID0gbWFrZV9wYWlyKGks
IGopOwogICAgIHFzb3J0KHNvcnRlZFBhaXJJbmRpY2VzLCBudW1PcGNvZGVJRHMgKiBudW1PcGNv
ZGVJRHMsIHNpemVvZihwYWlyPGludCwgaW50PiksIGNvbXBhcmVPcGNvZGVQYWlySW5kaWNlcyk7
CiAgICAgCi0gICAgcHJpbnRmKCJcbkV4ZWN1dGVkIG9wY29kZSBzdGF0aXN0aWNzXG4iKTsgCisg
ICAgZGVidWdQcmludGYoIlxuRXhlY3V0ZWQgb3Bjb2RlIHN0YXRpc3RpY3NcbiIpOyAKICAgICAK
LSAgICBwcmludGYoIlRvdGFsIGluc3RydWN0aW9ucyBleGVjdXRlZDogJWxsZFxuXG4iLCB0b3Rh
bEluc3RydWN0aW9ucyk7CisgICAgZGVidWdQcmludGYoIlRvdGFsIGluc3RydWN0aW9ucyBleGVj
dXRlZDogJWxsZFxuXG4iLCB0b3RhbEluc3RydWN0aW9ucyk7CiAKLSAgICBwcmludGYoIkFsbCBv
cGNvZGVzIGJ5IGZyZXF1ZW5jeTpcblxuIik7CisgICAgZGVidWdQcmludGYoIkFsbCBvcGNvZGVz
IGJ5IGZyZXF1ZW5jeTpcblxuIik7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29k
ZUlEczsgKytpKSB7CiAgICAgICAgIGludCBpbmRleCA9IHNvcnRlZEluZGljZXNbaV07Ci0gICAg
ICAgIHByaW50ZigiJXM6JXMgJWxsZCAtICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhdLCBw
YWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleCwgMjgpLCBvcGNvZGVDb3VudHNbaW5kZXhdLCAo
KGRvdWJsZSkgb3Bjb2RlQ291bnRzW2luZGV4XSkgLyAoKGRvdWJsZSkgdG90YWxJbnN0cnVjdGlv
bnMpICogMTAwLjApOyAgICAKKyAgICAgICAgZGVidWdQcmludGYoIiVzOiVzICVsbGQgLSAlLjJm
JSVcbiIsIG9wY29kZU5hbWVzW2luZGV4XSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXgs
IDI4KSwgb3Bjb2RlQ291bnRzW2luZGV4XSwgKChkb3VibGUpIG9wY29kZUNvdW50c1tpbmRleF0p
IC8gKChkb3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25zKSAqIDEwMC4wKTsgICAgCiAgICAgfQogICAg
IAotICAgIHByaW50ZigiXG4iKTsKLSAgICBwcmludGYoIjItb3Bjb2RlIHNlcXVlbmNlcyBieSBm
cmVxdWVuY3k6ICVsbGRcblxuIiwgdG90YWxJbnN0cnVjdGlvbnMpOworICAgIGRlYnVnUHJpbnRm
KCJcbiIpOworICAgIGRlYnVnUHJpbnRmKCIyLW9wY29kZSBzZXF1ZW5jZXMgYnkgZnJlcXVlbmN5
OiAlbGxkXG5cbiIsIHRvdGFsSW5zdHJ1Y3Rpb25zKTsKICAgICAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEcyAqIG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgIHBhaXI8
aW50LCBpbnQ+IGluZGV4UGFpciA9IHNvcnRlZFBhaXJJbmRpY2VzW2ldOwpAQCAtMTM5LDExICsx
MzksMTEgQEAgT3Bjb2RlU3RhdHM6On5PcGNvZGVTdGF0cygpCiAgICAgICAgIGlmICghY291bnQp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHByaW50ZigiJXMlcyAlczol
cyAlbGxkICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLmZpcnN0XSwgcGFkT3Bjb2Rl
TmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLmZpcnN0LCAyOCksIG9wY29kZU5hbWVzW2luZGV4UGFp
ci5zZWNvbmRdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIuc2Vjb25kLCAyOCks
IGNvdW50LCAoKGRvdWJsZSkgY291bnQpIC8gKChkb3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25QYWly
cykgKiAxMDAuMCk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlcyVzICVzOiVzICVsbGQgJS4yZiUl
XG4iLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuZmlyc3RdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJ
RClpbmRleFBhaXIuZmlyc3QsIDI4KSwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLnNlY29uZF0sIHBh
ZE9wY29kZU5hbWUoKE9wY29kZUlEKWluZGV4UGFpci5zZWNvbmQsIDI4KSwgY291bnQsICgoZG91
YmxlKSBjb3VudCkgLyAoKGRvdWJsZSkgdG90YWxJbnN0cnVjdGlvblBhaXJzKSAqIDEwMC4wKTsK
ICAgICB9CiAgICAgCi0gICAgcHJpbnRmKCJcbiIpOwotICAgIHByaW50ZigiTW9zdCBjb21tb24g
b3Bjb2RlcyBhbmQgc2VxdWVuY2VzOlxuIik7CisgICAgZGVidWdQcmludGYoIlxuIik7CisgICAg
ZGVidWdQcmludGYoIk1vc3QgY29tbW9uIG9wY29kZXMgYW5kIHNlcXVlbmNlczpcbiIpOwogCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICBpbnQg
aW5kZXggPSBzb3J0ZWRJbmRpY2VzW2ldOwpAQCAtMTUxLDcgKzE1MSw3IEBAIE9wY29kZVN0YXRz
Ojp+T3Bjb2RlU3RhdHMoKQogICAgICAgICBkb3VibGUgb3Bjb2RlUHJvcG9ydGlvbiA9ICgoZG91
YmxlKSBvcGNvZGVDb3VudCkgLyAoKGRvdWJsZSkgdG90YWxJbnN0cnVjdGlvbnMpOwogICAgICAg
ICBpZiAob3Bjb2RlUHJvcG9ydGlvbiA8IDAuMDAwMSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBwcmludGYoIlxuJXM6JXMgJWxsZCAtICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhd
LCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleCwgMjgpLCBvcGNvZGVDb3VudCwgb3Bjb2Rl
UHJvcG9ydGlvbiAqIDEwMC4wKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuJXM6JXMgJWxsZCAt
ICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClp
bmRleCwgMjgpLCBvcGNvZGVDb3VudCwgb3Bjb2RlUHJvcG9ydGlvbiAqIDEwMC4wKTsKIAogICAg
ICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bU9wY29kZUlEcyAqIG51bU9wY29kZUlEczsgKytq
KSB7CiAgICAgICAgICAgICBwYWlyPGludCwgaW50PiBpbmRleFBhaXIgPSBzb3J0ZWRQYWlySW5k
aWNlc1tqXTsKQEAgLTE2NCwxMSArMTY0LDExIEBAIE9wY29kZVN0YXRzOjp+T3Bjb2RlU3RhdHMo
KQogICAgICAgICAgICAgaWYgKGluZGV4UGFpci5maXJzdCAhPSBpbmRleCAmJiBpbmRleFBhaXIu
c2Vjb25kICE9IGluZGV4KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBwcmludGYoIiAgICAlcyVzICVzOiVzICVsbGQgLSAlLjJmJSVcbiIsIG9wY29kZU5hbWVzW2lu
ZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUoKE9wY29kZUlEKWluZGV4UGFpci5maXJzdCwg
MjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vjb25kXSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2Rl
SUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBwYWlyQ291bnQsIHBhaXJQcm9wb3J0aW9uICogMTAw
LjApOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAlcyVzICVzOiVzICVsbGQgLSAlLjJm
JSVcbiIsIG9wY29kZU5hbWVzW2luZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUoKE9wY29k
ZUlEKWluZGV4UGFpci5maXJzdCwgMjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vjb25kXSwg
cGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBwYWlyQ291bnQs
IHBhaXJQcm9wb3J0aW9uICogMTAwLjApOwogICAgICAgICB9CiAgICAgICAgIAogICAgIH0KLSAg
ICBwcmludGYoIlxuIik7CisgICAgZGVidWdQcmludGYoIlxuIik7CiB9CiAKIHZvaWQgT3Bjb2Rl
U3RhdHM6OnJlY29yZEluc3RydWN0aW9uKGludCBvcGNvZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDE0ICs2NywxNCBAQCB2b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3Ao
KQogICAgICAgICB0b3RhbCArPSBzX2ZsYWdDb3VudHNbaV07CiAKICAgICBpZiAodG90YWwpIHsK
LSAgICAgICAgcHJpbnRmKCJcblNhbXBsaW5nRmxhZ3M6IHNhbXBsZSBjb3VudHMgd2l0aCBmbGFn
cyBzZXQ6ICglbGxkIHRvdGFsKVxuIiwgdG90YWwpOworICAgICAgICBkZWJ1Z1ByaW50ZigiXG5T
YW1wbGluZ0ZsYWdzOiBzYW1wbGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0OiAoJWxsZCB0b3RhbClc
biIsIHRvdGFsKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSAzMjsgKytpKSB7
CiAgICAgICAgICAgICBpZiAoc19mbGFnQ291bnRzW2ldKQotICAgICAgICAgICAgICAgIHByaW50
ZigiICBbICUwMmQgXSA6ICVsbGRcdFx0KCUwMy4yZiUlKVxuIiwgaSwgc19mbGFnQ291bnRzW2ld
LCAoMTAwLjAgKiBzX2ZsYWdDb3VudHNbaV0pIC8gdG90YWwpOworICAgICAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCIgIFsgJTAyZCBdIDogJWxsZFx0XHQoJTAzLjJmJSUpXG4iLCBpLCBzX2ZsYWdD
b3VudHNbaV0sICgxMDAuMCAqIHNfZmxhZ0NvdW50c1tpXSkgLyB0b3RhbCk7CiAgICAgICAgIH0K
LSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9
IGVsc2UKLSAgICBwcmludGYoIlxuU2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7Cisg
ICAgZGVidWdQcmludGYoIlxuU2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7CiB9CiB1
aW50NjRfdCBTYW1wbGluZ0ZsYWdzOjpzX2ZsYWdDb3VudHNbMzNdOwogCkBAIC0xNTEsNyArMTUx
LDcgQEAgdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpCiB2b2lkIFNhbXBsaW5nUmVnaW9uOjpk
dW1wSW50ZXJuYWwoKQogewogICAgIGlmICghc19zcGVjdHJ1bSkgewotICAgICAgICBwcmludGYo
IlxuU2FtcGxpbmdSZWdpb246IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKKyAgICAgICAgZGVi
dWdQcmludGYoIlxuU2FtcGxpbmdSZWdpb246IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTE2MSwxMCArMTYxLDEwIEBAIHZvaWQgU2Ft
cGxpbmdSZWdpb246OmR1bXBJbnRlcm5hbCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5z
aXplKCk7IGktLTspCiAgICAgICAgIHRvdGFsICs9IGxpc3RbaV0uY291bnQ7CiAgICAgCi0gICAg
cHJpbnRmKCJcblNhbXBsaW5nUmVnaW9uOiBzYW1wbGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1
IHNhbXBsZXMpXG4iLCB0b3RhbCk7CisgICAgZGVidWdQcmludGYoIlxuU2FtcGxpbmdSZWdpb246
IHNhbXBsZSBjb3VudHMgZm9yIHJlZ2lvbnM6ICglbHUgc2FtcGxlcylcbiIsIHRvdGFsKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpOyBpLS07KQotICAgICAgICBwcmludGYo
IiAgICAlMy4ybGYlJSAgJXNcbiIsICgxMDAuMCAqIGxpc3RbaV0uY291bnQpIC8gdG90YWwsIGxp
c3RbaV0ua2V5KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICAlMy4ybGYlJSAgJXNcbiIsICgx
MDAuMCAqIGxpc3RbaV0uY291bnQpIC8gdG90YWwsIGxpc3RbaV0ua2V5KTsKIH0KICNlbHNlIC8v
IEVOQUJMRShTQU1QTElOR19SRUdJT05TKQogdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpIHsg
fQpAQCAtMzczLDEwICszNzMsMTAgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgLy8gKDIpIFByaW50IE9wY29kZSBzYW1wbGluZyByZXN1bHRzLgogCi0g
ICAgcHJpbnRmKCJcbkJ5dGVjb2RlIHNhbXBsZXMgWypdXG4iKTsKLSAgICBwcmludGYoIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlICAgJSUgb2YgICAgICAgJSUgb2YgICAgIHwg
ICBjdGkgICAgIGN0aSAlJVxuIik7Ci0gICAgcHJpbnRmKCJvcGNvZGUgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50ICAgICBWTSAgICAgICAgdG90YWwgICAgfCAgY291bnQgICBvZiBzZWxmXG4i
KTsKLSAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gICB8ICAtLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkZWJ1Z1ByaW50
ZigiXG5CeXRlY29kZSBzYW1wbGVzIFsqXVxuIik7CisgICAgZGVidWdQcmludGYoIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlICAgJSUgb2YgICAgICAgJSUgb2YgICAgIHwgICBj
dGkgICAgIGN0aSAlJVxuIik7CisgICAgZGVidWdQcmludGYoIm9wY29kZSAgICAgICAgICAgICAg
ICAgICAgICAgY291bnQgICAgIFZNICAgICAgICB0b3RhbCAgICB8ICBjb3VudCAgIG9mIHNlbGZc
biIpOworICAgIGRlYnVnUHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgfCAgLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgIGxvbmcgbG9u
ZyBjb3VudCA9IG9wY29kZVNhbXBsZUluZm9baV0uY291bnQ7CkBAIC0zOTEsMTggKzM5MSwxOCBA
QCB2b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGRvdWJs
ZSBwZXJjZW50T2ZUb3RhbCA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50KSAqIDEwMCkgLyBt
X3NhbXBsZUNvdW50OwogICAgICAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0aW9ucyA9IG9w
Y29kZVNhbXBsZUluZm9baV0uY291bnRJbkNUSUZ1bmN0aW9uczsKICAgICAgICAgZG91YmxlIHBl
cmNlbnRJbkNUSUZ1bmN0aW9ucyA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50SW5DVElGdW5j
dGlvbnMpICogMTAwKSAvIGNvdW50OwotICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzOiVzJS02
bGxkICUuM2YlJVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBvcGNvZGVOYW1lLCBv
cGNvZGVQYWRkaW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRvdGFsLCBjb3VudElu
Q1RJRnVuY3Rpb25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOworICAgICAgICBkZWJ1Z0RlYnVn
UHJpbnRmKCIlczolcyUtNmxsZCAlLjNmJSVcdCUuM2YlJVx0ICB8ICAgJS02bGxkICUuM2YlJVxu
Iiwgb3Bjb2RlTmFtZSwgb3Bjb2RlUGFkZGluZywgY291bnQsIHBlcmNlbnRPZlZNLCBwZXJjZW50
T2ZUb3RhbCwgY291bnRJbkNUSUZ1bmN0aW9ucywgcGVyY2VudEluQ1RJRnVuY3Rpb25zKTsKICAg
ICB9CiAgICAgCi0gICAgcHJpbnRmKCJcblsqXSBTYW1wbGVzIGluc2lkZSBob3N0IGNvZGUgYXJl
IG5vdCBjaGFyZ2VkIHRvIGFueSBCeXRlY29kZS5cblxuIik7Ci0gICAgcHJpbnRmKCJcdFNhbXBs
ZXMgaW5zaWRlIFZNOlx0XHQlbGxkIC8gJWxsZCAoJS4zZiUlKVxuIiwgbV9vcGNvZGVTYW1wbGVD
b3VudCwgbV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9vcGNvZGVTYW1wbGVD
b3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7Ci0gICAgcHJpbnRmKCJcdFNhbXBsZXMgaW5z
aWRlIGhvc3QgY29kZTpcdCVsbGQgLyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2FtcGxlQ291bnQg
LSBtX29wY29kZVNhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihtX3NhbXBsZUNvdW50IC0gbV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVD
b3VudCk7Ci0gICAgcHJpbnRmKCJcdHNhbXBsZSBjb3VudDpcdHNhbXBsZXMgaW5zaWRlIHRoaXMg
b3Bjb2RlXG4iKTsKLSAgICBwcmludGYoIlx0JSUgb2YgVk06XHRzYW1wbGUgY291bnQgLyBhbGwg
b3Bjb2RlIHNhbXBsZXNcbiIpOwotICAgIHByaW50ZigiXHQlJSBvZiB0b3RhbDpcdHNhbXBsZSBj
b3VudCAvIGFsbCBzYW1wbGVzXG4iKTsKLSAgICBwcmludGYoIlx0LS0tLS0tLS0tLS0tLS1cbiIp
OwotICAgIHByaW50ZigiXHRjdGkgY291bnQ6XHRzYW1wbGVzIGluc2lkZSBhIENUSSBmdW5jdGlv
biBjYWxsZWQgYnkgdGhpcyBvcGNvZGVcbiIpOwotICAgIHByaW50ZigiXHRjdGkgJSUgb2Ygc2Vs
ZjpcdGN0aSBjb3VudCAvIHNhbXBsZSBjb3VudFxuIik7CisgICAgZGVidWdQcmludGYoIlxuWypd
IFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgbm90IGNoYXJnZWQgdG8gYW55IEJ5dGVjb2Rl
LlxuXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHRTYW1wbGVzIGluc2lkZSBWTTpcdFx0JWxsZCAv
ICVsbGQgKCUuM2YlJSlcbiIsIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIChz
dGF0aWNfY2FzdDxkb3VibGU+KG1fb3Bjb2RlU2FtcGxlQ291bnQpICogMTAwKSAvIG1fc2FtcGxl
Q291bnQpOworICAgIGRlYnVnUHJpbnRmKCJcdFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZTpcdCVs
bGQgLyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNv
dW50LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3NhbXBsZUNvdW50IC0g
bV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7CisgICAgZGVidWdQ
cmludGYoIlx0c2FtcGxlIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgdGhpcyBvcGNvZGVcbiIpOwor
ICAgIGRlYnVnUHJpbnRmKCJcdCUlIG9mIFZNOlx0c2FtcGxlIGNvdW50IC8gYWxsIG9wY29kZSBz
YW1wbGVzXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHQlJSBvZiB0b3RhbDpcdHNhbXBsZSBjb3Vu
dCAvIGFsbCBzYW1wbGVzXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHQtLS0tLS0tLS0tLS0tLVxu
Iik7CisgICAgZGVidWdQcmludGYoIlx0Y3RpIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgYSBDVEkg
ZnVuY3Rpb24gY2FsbGVkIGJ5IHRoaXMgb3Bjb2RlXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiXHRj
dGkgJSUgb2Ygc2VsZjpcdGN0aSBjb3VudCAvIHNhbXBsZSBjb3VudFxuIik7CiAgICAgCiAjaWYg
RU5BQkxFKENPREVCTE9DS19TQU1QTElORykKIApAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU2Ft
cGxpbmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vICg0KSBQcmludCBkYXRh
IGZyb20gJ2NvZGVCbG9ja1NhbXBsZXMnIGFycmF5LgogCi0gICAgcHJpbnRmKCJcbkNvZGVCbG9j
ayBzYW1wbGVzXG5cbiIpOyAKKyAgICBkZWJ1Z1ByaW50ZigiXG5Db2RlQmxvY2sgc2FtcGxlc1xu
XG4iKTsgCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNjb3BlQ291bnQ7ICsraSkgewogICAg
ICAgICBTY3JpcHRTYW1wbGVSZWNvcmQqIHJlY29yZCA9IGNvZGVCbG9ja1NhbXBsZXNbaV07CkBA
IC00MjgsMjEgKzQyOCwyMSBAQCB2b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAgICAgaWYgKGJsb2NrUGVyY2VudCA+PSAxKSB7CiAgICAgICAgICAgICAvL0lu
c3RydWN0aW9uKiBjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
ICAgICAgICAgcHJpbnRmKCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQgKCUuM2YlJSlcbiIsIGkgKyAx
LCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSwgY29kZUJs
b2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJlY29yZC0+bV9zYW1wbGVDb3Vu
dCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJjZW50KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCIjJWQ6ICVzOiVkOiAlZCAvICVsbGQgKCUuM2YlJSlcbiIsIGkgKyAxLCByZWNvcmQtPm1fZXhl
Y3V0YWJsZS0+c291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVy
Rm9yQnl0ZWNvZGVPZmZzZXQoMCksIHJlY29yZC0+bV9zYW1wbGVDb3VudCwgbV9zYW1wbGVDb3Vu
dCwgYmxvY2tQZXJjZW50KTsKICAgICAgICAgICAgIGlmIChpIDwgMTApIHsKICAgICAgICAgICAg
ICAgICBIYXNoTWFwPHVuc2lnbmVkLHVuc2lnbmVkPiBsaW5lQ291bnRzOwogICAgICAgICAgICAg
ICAgIGNvZGVCbG9jay0+ZHVtcChleGVjKTsKIAotICAgICAgICAgICAgICAgIHByaW50ZigiICAg
IE9wY29kZSBhbmQgbGluZSBudW1iZXIgc2FtcGxlcyBbKl1cblxuIik7CisgICAgICAgICAgICAg
ICAgZGVidWdQcmludGYoIiAgICBPcGNvZGUgYW5kIGxpbmUgbnVtYmVyIHNhbXBsZXMgWypdXG5c
biIpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3AgPSAwOyBvcCA8IHJlY29yZC0+
bV9zaXplOyArK29wKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCA9IHJlY29yZC0+
bV9zYW1wbGVzW29wXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIiAgICBbJSA0ZF0gaGFzIHNhbXBsZSBjb3VudDogJSA0
ZFxuIiwgb3AsIGNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgWyUgNGRdIGhhcyBzYW1wbGUgY291bnQ6ICUgNGRcbiIsIG9wLCBjb3VudCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gY29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQob3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50cy5z
ZXQobGluZSwgKGxpbmVDb3VudHMuY29udGFpbnMobGluZSkgPyBsaW5lQ291bnRzLmdldChsaW5l
KSA6IDApICsgY291bnQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1By
aW50ZigiXG4iKTsKIAogICAgICAgICAgICAgICAgIGludCBsaW5lc0NvdW50ID0gbGluZUNvdW50
cy5zaXplKCk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPExpbmVDb3VudEluZm8+IGxpbmVDb3Vu
dEluZm8obGluZXNDb3VudCk7CkBAIC00NTUsMTIgKzQ1NSwxMiBAQCB2b2lkIFNhbXBsaW5nVG9v
bDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgcXNvcnQobGluZUNvdW50
SW5mby5iZWdpbigpLCBsaW5lc0NvdW50LCBzaXplb2YoTGluZUNvdW50SW5mbyksIGNvbXBhcmVM
aW5lQ291bnRJbmZvU2FtcGxpbmcpOwogCiAgICAgICAgICAgICAgICAgZm9yIChsaW5lbm8gPSAw
OyBsaW5lbm8gPCBsaW5lc0NvdW50OyArK2xpbmVubykgewotICAgICAgICAgICAgICAgICAgICBw
cmludGYoIiAgICBMaW5lICMlZCBoYXMgc2FtcGxlIGNvdW50ICVkLlxuIiwgbGluZUNvdW50SW5m
b1tsaW5lbm9dLmxpbmUsIGxpbmVDb3VudEluZm9bbGluZW5vXS5jb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgTGluZSAjJWQgaGFzIHNhbXBsZSBjb3VudCAlZC5c
biIsIGxpbmVDb3VudEluZm9bbGluZW5vXS5saW5lLCBsaW5lQ291bnRJbmZvW2xpbmVub10uY291
bnQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7Ci0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgWypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBh
cmUgY2hhcmdlZCB0byB0aGUgY2FsbGluZyBCeXRlY29kZS5cbiIpOwotICAgICAgICAgICAgICAg
IHByaW50ZigiICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJldHVybiBib3VuZGFyeSBhcmUg
bm90IGNoYXJnZWQgdG8gYSBzcGVjaWZpYyBvcGNvZGUgb3IgbGluZS5cblxuIik7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJldHVybiBi
b3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxuXG4iLCByZWNvcmQtPm1fc2FtcGxlQ291bnQgLSBy
ZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQsIHJlY29yZC0+bV9zYW1wbGVDb3VudCwgKHN0YXRp
Y19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3NhbXBsZUNvdW50IC0gcmVjb3JkLT5tX29wY29kZVNh
bXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQtPm1fc2FtcGxlQ291bnQpOworICAgICAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCJcbiIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
WypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgY2hhcmdlZCB0byB0aGUgY2FsbGluZyBC
eXRlY29kZS5cbiIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICAgIFNhbXBs
ZXMgb24gYSBjYWxsIC8gcmV0dXJuIGJvdW5kYXJ5IGFyZSBub3QgY2hhcmdlZCB0byBhIHNwZWNp
ZmljIG9wY29kZSBvciBsaW5lLlxuXG4iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
ICAgICAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwgLyByZXR1cm4gYm91bmRhcnk6ICVkIC8gJWQg
KCUuM2YlJSlcblxuIiwgcmVjb3JkLT5tX3NhbXBsZUNvdW50IC0gcmVjb3JkLT5tX29wY29kZVNh
bXBsZUNvdW50LCByZWNvcmQtPm1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3VibGU+KHJl
Y29yZC0+bV9zYW1wbGVDb3VudCAtIHJlY29yZC0+bV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDAp
IC8gcmVjb3JkLT5tX3NhbXBsZUNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDE0ICsxNTMsMTQgQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogICAgIGlmIChtZXJnZU1vZGUg
IT0gRG9udE1lcmdlIHx8ICFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgZm9yIChzaXplX3Qg
YXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKythcmd1bWVudCkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgICBNZXJnaW5nIHN0YXRlIGZv
ciBhcmd1bWVudCAlenUuXG4iLCBhcmd1bWVudCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
ICAgICAgICBNZXJnaW5nIHN0YXRlIGZvciBhcmd1bWVudCAlenUuXG4iLCBhcmd1bWVudCk7CiAj
ZW5kaWYKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChibG9jay0+dmFs
dWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwgbV92YXJpYWJsZXMuYXJndW1lbnQoYXJndW1l
bnQpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKICNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIiAg
ICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwgbG9jYWwpOworICAgICAgICAg
ICAgZGVidWdQcmludGYoIiAgICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwg
bG9jYWwpOwogI2VuZGlmCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlU3RhdGVBdFRhaWwo
YmxvY2stPnZhbHVlc0F0VGFpbC5sb2NhbChsb2NhbCksIG1fdmFyaWFibGVzLmxvY2FsKGxvY2Fs
KSwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCkpOwogICAgICAgICB9CkBAIC05
MzcsNyArOTM3LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgSXQncyBsaXZlLCBu
b2RlIEAldS5cbiIsIG5vZGVJbmRleCk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAg
ICAgIEl0J3MgbGl2ZSwgbm9kZSBAJXUuXG4iLCBub2RlSW5kZXgpOwogI2VuZGlmCiAKICAgICBz
d2l0Y2ggKG5vZGUub3ApIHsKQEAgLTk0Nyw3ICs5NDcsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFj
dFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgIC8vIFRoZSBibG9jayB0cmFuc2ZlcnMgdGhl
IHZhbHVlIGZyb20gaGVhZCB0byB0YWlsLgogICAgICAgICBzb3VyY2UgPSAmaW5WYXJpYWJsZTsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiICAgICAgICAgIFRyYW5zZmVyaW5nIGZyb20gaGVhZCB0byB0YWlsLlxuIik7CisgICAgICAg
IGRlYnVnUHJpbnRmKCIgICAgICAgICAgVHJhbnNmZXJpbmcgZnJvbSBoZWFkIHRvIHRhaWwuXG4i
KTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtOTU1LDcgKzk1NSw3
IEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgLy8g
VGhlIGJsb2NrIHJlZmluZXMgdGhlIHZhbHVlIHdpdGggYWRkaXRpb25hbCBzcGVjdWxhdGlvbnMu
CiAgICAgICAgIHNvdXJjZSA9ICZmb3JOb2RlKG5vZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShE
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICAgICAgICBSZWZp
bmluZy5cbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAgICAgIFJlZmluaW5nLlxuIik7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTk2NCw3ICs5NjQsNyBA
QCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgIC8vIGJl
Zm9yZSBhbmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgc291cmNlID0gJmZvck5vZGUobm9k
ZS5jaGlsZDEoKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICBwcmludGYoIiAgICAgICAgICBTZXR0aW5nLlxuIik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgICAgICAgU2V0dGluZy5cbiIpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKQEAgLTk3OCw3ICs5NzgsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJn
ZVN0YXRlQXRUCiAgICAgICAgIC8vIEFic3RyYWN0IGV4ZWN1dGlvbiBkaWQgbm90IGNoYW5nZSB0
aGUgb3V0cHV0IHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgZm9yIHRoaXMKICAgICAgICAgLy8gYmFz
aWMgYmxvY2ssIG9uIHRoaXMgaXRlcmF0aW9uLgogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAgICAgICAgTm90IGNoYW5nZWQhXG4i
KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICAgICAgICBOb3QgY2hhbmdlZCFcbiIpOwogI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05ODgsNyArOTg4LDcgQEAgaW5s
aW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgIC8vIHRydWUgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgZml4cG9pbnQgbXVzdCBnbyBvbiEKICAgICBkZXN0aW5hdGlvbiA9ICpz
b3VyY2U7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgIHBy
aW50ZigiICAgICAgICAgIENoYW5nZWQhXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiICAgICAgICAg
IENoYW5nZWQhXG4iKTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODksNyArNTg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
QVNTRVJUKHByb2ZpbGUpOwogICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgICAgIHByaW50ZigiRHluYW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjog
JXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRp
Y3Rpb24pKTsKKyAgICAgICAgZGVidWdQcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRp
Y3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmlu
ZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIHJldHVybiBwcmVkaWN0
aW9uOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZUluZGV4OwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNv
dW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9w
TmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3ApLCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5l
Z2F0aXZlWmVybykpOworICAgICAgICBkZWJ1Z1ByaW50ZigiTWFraW5nICVzIEAldSBzYWZlIGF0
IGJjIyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNvdW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmls
ZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3ApLCBu
b2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9j
b3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwogI2VuZGlmCiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCkgewpAQCAtNjQyLDEzICs2
NDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkK
ICAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpIHsKICNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRh
a2UgZGVlcGVzdCBzbG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGRl
YnVnUHJpbnRmKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2UgZGVlcGVzdCBzbG93IGNhc2UuXG4i
LCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5kZXhd
Lm1lcmdlQXJpdGhOb2RlRmxhZ3MoTm9kZU1heU92ZXJmbG93IHwgTm9kZU1heU5lZ1plcm8pOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pmxpa2VseVRvVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAgICAg
ICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQotICAgICAgICAgICAgICAgIHByaW50ZigiTWFraW5nIEFyaXRoTXVsIEAldSB0YWtlIGZhc3Rl
ciBzbG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRm
KCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2UgZmFzdGVyIHNsb3cgY2FzZS5cbiIsIG5vZGVJbmRl
eCk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGVJbmRleF0ubWVyZ2VBcml0
aE5vZGVGbGFncyhOb2RlTWF5TmVnWmVybyk7CiAgICAgICAgICAgICB9CkBAIC02NzgsNyArNjc4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgIAog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJNYWtpbmcgJXMg
QCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlzIGF0
ICV1IGFuZCBleGl0IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFw
aFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRp
dmVaZXJvKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMj
JXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBleGl0IHBy
b2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9w
KSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50
SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSk7CiAjZW5k
aWYKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBt
YWtlIHRoaXMgbW9yZSBncmFudWxhci4gVGhlIERGRyBjZXJ0YWlubHkgY2FuCkBAIC05MTIsNyAr
OTEyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnRlcnByZQogICAgIGVu
dW0geyBDb25zdGFudEZ1bmN0aW9uLCBMaW5rZWRGdW5jdGlvbiwgVW5rbm93bkZ1bmN0aW9uIH0g
Y2FsbFR5cGU7CiAgICAgICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgcHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUvJXU7
IGV4aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAg
IGRlYnVnUHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUv
JXU7IGV4aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgs
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwog
I2VuZGlmCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcigKQEAgLTEwMjksNyArMTAyOSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICBBU1NFUlQoY2FuSW5saW5lRnVuY3Rpb25G
b3IoY29kZUJsb2NrLCBraW5kKSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgcHJpbnRmKCJJbmxpbmluZyBleGVjdXRhYmxlICVwLlxuIiwgZXhlY3V0YWJsZSk7CisgICAg
ZGVidWdQcmludGYoIklubGluaW5nIGV4ZWN1dGFibGUgJXAuXG4iLCBleGVjdXRhYmxlKTsKICNl
bmRpZgogICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFy
ZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCkBAIC0xMTEwLDcg
KzExMTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAg
ICAgIC8vIGNhbGxlci4gSXQgZG9lc24ndCBuZWVkIHRvIGJlIGxpbmtlZCB0bywgYnV0IGl0IG5l
ZWRzIG91dGdvaW5nIGxpbmtzLgogICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnkubV91bmxp
bmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgICAgICBwcmludGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVw
IGZyb20gYmMjJXUgdG8gYmMjJXUgKGlubGluZSByZXR1cm4gY2FzZSkuXG4iLCBsYXN0QmxvY2ss
IGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiwgbV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAg
ZGVidWdQcmludGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVwIGZyb20g
YmMjJXUgdG8gYmMjJXUgKGlubGluZSByZXR1cm4gY2FzZSkuXG4iLCBsYXN0QmxvY2ssIGxhc3RC
bG9jay0+Ynl0ZWNvZGVCZWdpbiwgbV9jdXJyZW50SW5kZXgpOwogI2VuZGlmCiAgICAgICAgICAg
ICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzZXQgdGhlIGJ5dGVjb2RlQmVnaW4uIE5vdGUg
dGhhdCB0aGlzIGRvZXNuJ3QgbWF0dGVyCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFzZSBidWls
ZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRpYWwgdGFy
Z2V0CkBAIC0xMTIyLDcgKzExMjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhib29sCiAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrcy5sYXN0
KCkuZ2V0KCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiRG9uZSBpbmxpbmluZyBleGVjdXRhYmxlICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlv
biBhdCBlcGlsb2d1ZS5cbiIsIGV4ZWN1dGFibGUpOworICAgICAgICBkZWJ1Z1ByaW50ZigiRG9u
ZSBpbmxpbmluZyBleGVjdXRhYmxlICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlvbiBhdCBl
cGlsb2d1ZS5cbiIsIGV4ZWN1dGFibGUpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTExNDksNyArMTE0OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKGJvb2wKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3Ig
dGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgogICAgIE93blB0cjxCYXNpY0Jsb2NrPiBi
bG9jayA9IGFkb3B0UHRyKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fZ3JhcGguc2l6ZSgp
LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgcHJpbnRmKCJDcmVhdGluZyBpbmxpbmUgZXBpbG9ndWUgYmFzaWMgYmxvY2sg
JXAsICMlenUgZm9yICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJsb2NrLmdldCgp
LCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgp
LCBtX2N1cnJlbnRJbmRleCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICBkZWJ1Z1ByaW50ZigiQ3Jl
YXRpbmcgaW5saW5lIGVwaWxvZ3VlIGJhc2ljIGJsb2NrICVwLCAjJXp1IGZvciAlcCBiYyMldSBh
dCBpbmxpbmUgZGVwdGggJXUuXG4iLCBibG9jay5nZXQoKSwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXpl
KCksIG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbV9jdXJyZW50SW5kZXgsIENvZGVP
cmlnaW46OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5l
Q2FsbEZyYW1lKSk7CiAjZW5kaWYKICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwog
ICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJn
ZXRzLmlzRW1wdHkoKSB8fCBtX2dyYXBoLm1fYmxvY2tzW21faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpXS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRP
ZmZzZXQpOwpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoYm9vbAogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgcmV0dXJuIGFuZCBjb250aW51
ZSB0byBnZW5lcmF0ZSBjb2RlIGZvciB0aGUgY2FsbGVyLCBidXQKICAgICAvLyBpbiB0aGUgbmV3
IGJhc2ljIGJsb2NrLgogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBwcmludGYo
IkRvbmUgaW5saW5pbmcgZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdlbmVyYXRpb24g
aW4gbmV3IGJsb2NrLlxuIiwgZXhlY3V0YWJsZSk7CisgICAgZGVidWdQcmludGYoIkRvbmUgaW5s
aW5pbmcgZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdlbmVyYXRpb24gaW4gbmV3IGJs
b2NrLlxuIiwgZXhlY3V0YWJsZSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEz
NDMsNyArMTM0Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCkp
OwogICAgICAgICAgICAgZWxzZSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAg
ICAgICAgICAgICAgIHByaW50ZigiUmVmdXNpbmcgdG8gcGxhbnQganVtcCBhdCBsaW1pdCAldSBi
ZWNhdXNlIGJsb2NrICVwIGlzIGVtcHR5LlxuIiwgbGltaXQsIG1fY3VycmVudEJsb2NrKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiUmVmdXNpbmcgdG8gcGxhbnQganVtcCBhdCBsaW1p
dCAldSBiZWNhdXNlIGJsb2NrICVwIGlzIGVtcHR5LlxuIiwgbGltaXQsIG1fY3VycmVudEJsb2Nr
KTsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZENvbnRp
bnVlUGFyc2luZzsKQEAgLTE3NjcsNyArMTc2Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIAog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiU2xvdyBj
YXNlIGNvdW50IGZvciBHZXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4i
LCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5k
ZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
U2xvdyBjYXNlIGNvdW50IGZvciBHZXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6
ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJy
ZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CiAjZW5kaWYKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMuaXNTaW1wbGVEaXJlY3QoKQpAQCAtMTgw
Nyw3ICsxODA3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgYm9vbCBoYXNFeGl0U2l0ZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKTsKICAgICAgICAgICAg
IAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiU2xv
dyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVk
XG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50
SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50
ZigiU2xvdyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2Zp
bGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9j
dXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CiAjZW5kaWYgICAgICAgICAg
ICAKIAogICAgICAgICAgICAgaWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2lt
cGxlUmVwbGFjZSgpKSB7CkBAIC0yMTg2LDEyICsyMTg2LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YUZv
clBoaSA9IG1fZ3JhcGhbZW50cnkubV9waGldLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogCiAjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAg
IEhhbmRsaW5nIHBoaSBlbnRyeSBmb3IgdmFyICV1LCBwaGkgQCV1LlxuIiwgZW50cnkubV92YXJO
bywgZW50cnkubV9waGkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgSGFuZGxpbmcgcGhpIGVu
dHJ5IGZvciB2YXIgJXUsIHBoaSBAJXUuXG4iLCBlbnRyeS5tX3Zhck5vLCBlbnRyeS5tX3BoaSk7
CiAjZW5kaWYKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWRlY2Vzc29ycy5z
aXplKCk7ICsraSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
LSAgICAgICAgICAgIHByaW50ZigiICAgICBEZWFsaW5nIHdpdGggcHJlZGVjZXNzb3IgYmxvY2sg
JXUuXG4iLCBwcmVkZWNlc3NvcnNbaV0pOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAg
RGVhbGluZyB3aXRoIHByZWRlY2Vzc29yIGJsb2NrICV1LlxuIiwgcHJlZGVjZXNzb3JzW2ldKTsK
ICNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ckJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1twcmVkZWNlc3NvcnNbaV1dLmdldCgpOwpAQCAtMjIw
MSw3ICsyMjAxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkKICAg
ICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZUluUHJlZGVjZXNzb3IgPSB2YXI7CiAgICAgICAgICAg
ICBpZiAodmFsdWVJblByZWRlY2Vzc29yID09IE5vTm9kZSkgewogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgIERp
ZCBub3QgZmluZCBub2RlLCBhZGRpbmcgcGhpLlxuIik7CisgICAgICAgICAgICAgICAgZGVidWdQ
cmludGYoIiAgICAgIERpZCBub3QgZmluZCBub2RlLCBhZGRpbmcgcGhpLlxuIik7CiAjZW5kaWYK
IAogICAgICAgICAgICAgICAgIHZhbHVlSW5QcmVkZWNlc3NvciA9IGFkZFRvR3JhcGgoUGhpLCBP
cEluZm8obmV3VmFyaWFibGVBY2Nlc3NEYXRhKHN0YWNrVHlwZSA9PSBBcmd1bWVudFBoaVN0YWNr
ID8gYXJndW1lbnRUb09wZXJhbmQodmFyTm8pIDogc3RhdGljX2Nhc3Q8aW50Pih2YXJObykpKSk7
CkBAIC0yMjEzLDcgKzIyMTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3Rh
Y2soKQogICAgICAgICAgICAgICAgIHBoaVN0YWNrLmFwcGVuZChQaGlTdGFja0VudHJ5KHByZWRl
Y2Vzc29yQmxvY2ssIHZhbHVlSW5QcmVkZWNlc3NvciwgdmFyTm8pKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wID09IEdldExvY2FsKSB7CiAj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAg
IHByaW50ZigiICAgICAgRm91bmQgR2V0TG9jYWwgQCV1LlxuIiwgdmFsdWVJblByZWRlY2Vzc29y
KTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAgRm91bmQgR2V0TG9jYWwgQCV1
LlxuIiwgdmFsdWVJblByZWRlY2Vzc29yKTsKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgLy8g
V2Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgVmFyaWFibGVBY2Nlc3NEYXRhcyBhcmUgaWRlbnRp
Y2FsIGJldHdlZW4gdGhlCkBAIC0yMjI1LDcgKzIyMjUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgICAgIHZhbHVlSW5QcmVkZWNlc3NvciA9
IG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBGb3VuZCBAJXUuXG4iLCB2YWx1ZUluUHJlZGVj
ZXNzb3IpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBGb3VuZCBAJXUuXG4i
LCB2YWx1ZUluUHJlZGVjZXNzb3IpOwogI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBBU1NFUlQobV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wID09IFNldExvY2FsIHx8IG1f
Z3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5vcCA9PSBQaGkgfHwgbV9ncmFwaFt2YWx1ZUluUHJl
ZGVjZXNzb3JdLm9wID09IEZsdXNoIHx8IChtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3Ag
PT0gU2V0QXJndW1lbnQgJiYgc3RhY2tUeXBlID09IEFyZ3VtZW50UGhpU3RhY2spKTsKQEAgLTIy
MzYsNDggKzIyMzYsNDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkK
IAogICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9ICZtX2dyYXBoW2VudHJ5Lm1fcGhpXTsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmlu
dGYoIiAgICAgIFJlZiBjb3VudCBvZiBAJXUgPSAldS5cbiIsIGVudHJ5Lm1fcGhpLCBwaGlOb2Rl
LT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBSZWYgY291bnQg
b2YgQCV1ID0gJXUuXG4iLCBlbnRyeS5tX3BoaSwgcGhpTm9kZS0+cmVmQ291bnQoKSk7CiAjZW5k
aWYKICAgICAgICAgICAgIGlmIChwaGlOb2RlLT5yZWZDb3VudCgpKSB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAg
ICAgUmVmZmluZyBAJXUuXG4iLCB2YWx1ZUluUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCIgICAgICBSZWZmaW5nIEAldS5cbiIsIHZhbHVlSW5QcmVkZWNlc3Nvcik7
CiAjZW5kaWYKICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZih2YWx1ZUluUHJlZGVjZXNzb3Ip
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXBoaU5vZGUtPmNoaWxkMSgpKSB7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAg
ICAgIHByaW50ZigiICAgICAgU2V0dGluZyBAJXUtPmNoaWxkMSA9IEAldS5cbiIsIGVudHJ5Lm1f
cGhpLCB2YWx1ZUluUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgICBTZXR0aW5nIEAldS0+Y2hpbGQxID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5Q
cmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5z
ZXRDaGlsZDEoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBD
aGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAgICAgICAgICAgICBwaGlOb2Rl
LT5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgICAgICBwcmludGYoIi5cbiIpOwor
ICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVu
dHJ5Lm1fcGhpKTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpk
ZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIi5cbiIpOwogI2VuZGlm
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoIXBoaU5vZGUtPmNoaWxkMigpKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgICAgU2V0dGluZyBAJXUtPmNo
aWxkMiA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1ZUluUHJlZGVjZXNzb3IpOworICAgICAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQyID0gQCV1Llxu
IiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAg
ICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNz
b3IpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsK
LSAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAgICAgICAg
ICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
ICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKKyAgICAgICAgICAgICAgICBwaGlO
b2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICAgICAgZGVi
dWdQcmludGYoIi5cbiIpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXBoaU5vZGUtPmNoaWxkMygpKSB7CiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50
ZigiICAgICAgU2V0dGluZyBAJXUtPmNoaWxkMyA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1
ZUluUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBTZXR0
aW5nIEAldS0+Y2hpbGQzID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nv
cik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDMo
Tm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBv
ZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hp
bGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhp
KTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUo
KSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIi5cbiIpOwogI2VuZGlmCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0yMjg1LDcgKzIyODUsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgTm9kZUlu
ZGV4IG5ld1BoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8oZGF0YUZvclBoaSkpOwogICAgICAg
ICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAg
ICAgICAgcHJpbnRmKCIgICAgICBTcGxpdHRpbmcgQCV1LCBjcmVhdGVkIEAldS5cbiIsIGVudHJ5
Lm1fcGhpLCBuZXdQaGkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAgIFNwbGl0dGlu
ZyBAJXUsIGNyZWF0ZWQgQCV1LlxuIiwgZW50cnkubV9waGksIG5ld1BoaSk7CiAjZW5kaWYKIAog
ICAgICAgICAgICAgcGhpTm9kZSA9ICZtX2dyYXBoW2VudHJ5Lm1fcGhpXTsgLy8gcmVsb2FkIGFm
dGVyIHZlY3RvciByZXNpemUKQEAgLTIyOTYsMTcgKzIyOTYsMTcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkKICAgICAgICAgICAgIG5ld1BoaU5vZGUuY2hpbGRyZW4g
PSBwaGlOb2RlLT5jaGlsZHJlbjsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBu
ZXdQaGkpOwotICAgICAgICAgICAgbmV3UGhpTm9kZS5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAg
ICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICAg
Q2hpbGRyZW4gb2YgQCV1OiAiLCBuZXdQaGkpOworICAgICAgICAgICAgbmV3UGhpTm9kZS5kdW1w
Q2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLlxu
Iik7CiAjZW5kaWYKIAogICAgICAgICAgICAgcGhpTm9kZS0+Y2hpbGRyZW4uaW5pdGlhbGl6ZShu
ZXdQaGksIHZhbHVlSW5QcmVkZWNlc3NvciwgTm9Ob2RlKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgQ2hpbGRy
ZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7Ci0gICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hp
bGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CisgICAg
ICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiLlxuIik7CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KQEAgLTIz
MjQsNyArMjMyNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2MK
ICAgICBjYXNlIEp1bXA6CiAgICAgICAgIG5vZGUuc2V0VGFrZW5CbG9ja0luZGV4KG1fZ3JhcGgu
YmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgbm9kZS50YWtlbkJ5
dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICBwcmludGYoIkxpbmtlZCBiYXNpYyBibG9jayAlcCB0byAlcCwgIyV1Llxu
IiwgYmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCks
IG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiTGlua2VkIGJh
c2ljIGJsb2NrICVwIHRvICVwLCAjJXUuXG4iLCBibG9jaywgbV9ncmFwaC5tX2Jsb2Nrc1tub2Rl
LnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwgbm9kZS50YWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMjMzMiwxMyArMjMzMiwxMyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jCiAgICAgICAgIG5vZGUuc2V0VGFr
ZW5CbG9ja0luZGV4KG1fZ3JhcGguYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KHBvc3NpYmxl
VGFyZ2V0cywgbm9kZS50YWtlbkJ5dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7CiAgICAg
ICAgIG5vZGUuc2V0Tm90VGFrZW5CbG9ja0luZGV4KG1fZ3JhcGguYmxvY2tJbmRleEZvckJ5dGVj
b2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgbm9kZS5ub3RUYWtlbkJ5dGVjb2RlT2Zmc2V0RHVy
aW5nUGFyc2luZygpKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBw
cmludGYoIkxpbmtlZCBiYXNpYyBibG9jayAlcCB0byAlcCwgIyV1IGFuZCAlcCwgIyV1LlxuIiwg
YmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCksIG5v
ZGUudGFrZW5CbG9ja0luZGV4KCksIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS5ub3RUYWtlbkJsb2Nr
SW5kZXgoKV0uZ2V0KCksIG5vZGUubm90VGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBkZWJ1
Z1ByaW50ZigiTGlua2VkIGJhc2ljIGJsb2NrICVwIHRvICVwLCAjJXUgYW5kICVwLCAjJXUuXG4i
LCBibG9jaywgbV9ncmFwaC5tX2Jsb2Nrc1tub2RlLnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwg
bm9kZS50YWtlbkJsb2NrSW5kZXgoKSwgbV9ncmFwaC5tX2Jsb2Nrc1tub2RlLm5vdFRha2VuQmxv
Y2tJbmRleCgpXS5nZXQoKSwgbm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5kaWYKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAjaWYgREZHX0VOQUJMRShERUJV
R19WRVJCT1NFKQotICAgICAgICBwcmludGYoIk1hcmtpbmcgYmFzaWMgYmxvY2sgJXAgYXMgbGlu
a2VkLlxuIiwgYmxvY2spOworICAgICAgICBkZWJ1Z1ByaW50ZigiTWFya2luZyBiYXNpYyBibG9j
ayAlcCBhcyBsaW5rZWQuXG4iLCBibG9jayk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMjQ5NSw3ICsyNDk1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxv
Y2soKQogICAgICAgICAvLyBUaGUgbWF4aW11bSBieXRlY29kZSBvZmZzZXQgdG8gZ28gaW50byB0
aGUgY3VycmVudCBiYXNpY2Jsb2NrIGlzIGVpdGhlciB0aGUgbmV4dCBqdW1wIHRhcmdldCwgb3Ig
dGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb25zLgogICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGp1
bXBUYXJnZXRJbmRleCA8IGNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpID8gY29kZUJs
b2NrLT5qdW1wVGFyZ2V0KGp1bXBUYXJnZXRJbmRleCkgOiBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiUGFyc2luZyBieXRlY29kZSB3aXRoIGxpbWl0ICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAl
dS5cbiIsIG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbGltaXQsIENvZGVPcmlnaW46
OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGltaXQg
JXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0
YWJsZSgpLCBsaW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxp
bmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQo
bV9jdXJyZW50SW5kZXggPCBsaW1pdCk7CiAKQEAgLTI1MTcsMTMgKzI1MTcsMTMgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICAvLyBD
aGFuZ2UgaXRzIGJ5dGVjb2RlIGJlZ2luIGFuZCBjb250aW51ZS4KICAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKS5nZXQoKTsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVh
c2NyaWJpbmcgYnl0ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0byBiYyMldSAo
cGVlcGhvbGUgY2FzZSkuXG4iLCBtX2N1cnJlbnRCbG9jaywgbV9jdXJyZW50QmxvY2stPmJ5dGVj
b2RlQmVnaW4sIG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWdQcmlu
dGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVwIGZyb20gYmMjJXUgdG8g
YmMjJXUgKHBlZXBob2xlIGNhc2UpLlxuIiwgbV9jdXJyZW50QmxvY2ssIG1fY3VycmVudEJsb2Nr
LT5ieXRlY29kZUJlZ2luLCBtX2N1cnJlbnRJbmRleCk7CiAjZW5kaWYKICAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBPd25QdHI8QmFzaWNC
bG9jaz4gYmxvY2sgPSBhZG9wdFB0cihuZXcgQmFzaWNCbG9jayhtX2N1cnJlbnRJbmRleCwgbV9n
cmFwaC5zaXplKCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscykpOwogI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDcmVhdGluZyBi
YXNpYyBibG9jayAlcCwgIyV6dSBmb3IgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwg
YmxvY2suZ2V0KCksIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpLCBtX2lubGluZVN0YWNrVG9wLT5l
eGVjdXRhYmxlKCksIG1fY3VycmVudEluZGV4LCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNh
bGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkpOworICAgICAgICAg
ICAgICAgICAgICBkZWJ1Z1ByaW50ZigiQ3JlYXRpbmcgYmFzaWMgYmxvY2sgJXAsICMlenUgZm9y
ICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJsb2NrLmdldCgpLCBtX2dyYXBoLm1f
YmxvY2tzLnNpemUoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBtX2N1cnJlbnRJ
bmRleCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxpbmVTdGFja1Rv
cC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9p
bmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkgfHwgbV9ncmFwaC5tX2Js
b2Nrc1ttX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrSW5k
ZXhdLT5ieXRlY29kZUJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOwpAQCAtMjU3MSwxNCArMjU3MSwx
NCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVT
dGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtp
bmdUYXJnZXRzKTsKICAgICBkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgcHJpbnRmKCJQcm9jZXNzaW5nIGxvY2Fs
IHZhcmlhYmxlIHBoaXMuXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiUHJvY2Vzc2luZyBsb2NhbCB2
YXJpYWJsZSBwaGlzLlxuIik7CiAjZW5kaWYKICAgICAKICAgICBtX2N1cnJlbnRQcm9maWxpbmdJ
bmRleCA9IG1fY3VycmVudEluZGV4OwogICAgIAogICAgIHByb2Nlc3NQaGlTdGFjazxMb2NhbFBo
aVN0YWNrPigpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICBwcmludGYoIlByb2Nlc3NpbmcgYXJndW1lbnQgcGhpcy5cbiIpOworICAgIGRlYnVnUHJpbnRm
KCJQcm9jZXNzaW5nIGFyZ3VtZW50IHBoaXMuXG4iKTsKICNlbmRpZgogICAgIHByb2Nlc3NQaGlT
dGFjazxBcmd1bWVudFBoaVN0YWNrPigpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAvLyBF
bWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGNvZGUuCiAjZGVm
aW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMAogLy8gTG9n
IGV2ZXJ5IHNwZWN1bGF0aW9uIGZhaWx1cmUuCi0jZGVmaW5lIERGR19FTkFCTEVfVkVSQk9TRV9T
UEVDVUxBVElPTl9GQUlMVVJFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1NQRUNVTEFU
SU9OX0ZBSUxVUkUgMQogLy8gRGlzYWJsZSB0aGUgREZHIEpJVCB3aXRob3V0IGhhdmluZyB0byB0
b3VjaCBQbGF0Zm9ybS5oCiAjZGVmaW5lIERGR19ERUJVR19MT0NBTF9ESVNCQUxFIDAKIC8vIEVu
YWJsZSBPU1IgZW50cnkgZnJvbSBiYXNlbGluZSBKSVQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogICAgIEFTU0VSVChj
b2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRl
cnIsICJERkcgY29tcGlsaW5nIGNvZGUgYmxvY2sgJXAoJXApLCBudW1iZXIgb2YgaW5zdHJ1Y3Rp
b25zID0gJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpOworICAgIGRlYnVnUHJpbnRmKCJERkcgY29tcGlsaW5n
IGNvZGUgYmxvY2sgJXAoJXApLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gJXUuXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCkpOwogI2VuZGlmCiAgICAgCiAgICAgR3JhcGggZGZnOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3
IEBAIGNvbnN0IGNoYXIqIEdyYXBoOjpuYW1lT2ZWYXJpYWJsZUFjY2Vzc0QKIHN0YXRpYyB2b2lk
IHByaW50V2hpdGVTcGFjZSh1bnNpZ25lZCBhbW91bnQpCiB7CiAgICAgd2hpbGUgKGFtb3VudC0t
ID4gMCkKLSAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIik7CiB9
CiAKIHZvaWQgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC0x
MDcsMTMgKzEwNywxMyBAQCB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihOb2RlSW5kZXggbm9k
CiAgICAgLy8gUHJpbnQgdGhlIHBvcHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNJ
bmxpbmVTdGFjay5zaXplKCk7IGktLSA+IGluZGV4T2ZEaXZlcmdlbmNlOykgewogICAgICAgICBw
cmludFdoaXRlU3BhY2UoaSAqIDIpOwotICAgICAgICBwcmludGYoIjwtLSAlcFxuIiwgcHJldmlv
dXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAg
ICAgICBkZWJ1Z1ByaW50ZigiPC0tICVwXG4iLCBwcmV2aW91c0lubGluZVN0YWNrW2ldLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50
IHRoZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhPZkRpdmVyZ2VuY2U7IGkg
PCBjdXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgcHJpbnRXaGl0ZVNw
YWNlKGkgKiAyKTsKLSAgICAgICAgcHJpbnRmKCItLT4gJXBcbiIsIGN1cnJlbnRJbmxpbmVTdGFj
a1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICBkZWJ1Z1By
aW50ZigiLS0+ICVwXG4iLCBjdXJyZW50SW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5l
eGVjdXRhYmxlLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw2NCArMTUwLDY0IEBAIHZvaWQg
R3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCwgQ28KICAgICAvLyAgICAgICAgICQjICAg
LSB0aGUgaW5kZXggaW4gdGhlIENvZGVCbG9jayBvZiBhIGNvbnN0YW50IHsgZm9yIG51bWVyaWMg
Y29uc3RhbnRzIHRoZSB2YWx1ZSBpcyBkaXNwbGF5ZWQgfCBmb3IgaW50ZWdlcnMsIGluIGJvdGgg
ZGVjaW1hbCBhbmQgaGV4IH0uCiAgICAgLy8gICAgICAgICBpZCMgIC0gdGhlIGluZGV4IGluIHRo
ZSBDb2RlQmxvY2sgb2YgYW4gaWRlbnRpZmllciB7IGlmIGNvZGVCbG9jayBpcyBwYXNzZWQgdG8g
ZHVtcCgpLCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlzIGRpc3BsYXllZCB9LgogICAgIC8v
ICAgICAgICAgdmFyIyAtIHRoZSBpbmRleCBvZiBhIHZhciBvbiB0aGUgZ2xvYmFsIG9iamVjdCwg
dXNlZCBieSBHZXRHbG9iYWxWYXIvUHV0R2xvYmFsVmFyIG9wZXJhdGlvbnMuCi0gICAgcHJpbnRm
KCIlIDRkOiVzPCVjJXU6IiwgKGludClub2RlSW5kZXgsIHNraXBwZWQgPyAiICBza2lwcGVkICAi
IDogIiAgICAgICAgICAgIiwgbXVzdEdlbmVyYXRlID8gJyEnIDogJyAnLCByZWZDb3VudCk7Cisg
ICAgZGVidWdQcmludGYoIiUgNGQ6JXM8JWMldToiLCAoaW50KW5vZGVJbmRleCwgc2tpcHBlZCA/
ICIgIHNraXBwZWQgICIgOiAiICAgICAgICAgICAiLCBtdXN0R2VuZXJhdGUgPyAnIScgOiAnICcs
IHJlZkNvdW50KTsKICAgICBpZiAobm9kZS5oYXNSZXN1bHQoKSAmJiAhc2tpcHBlZCAmJiBub2Rl
Lmhhc1ZpcnR1YWxSZWdpc3RlcigpKQotICAgICAgICBwcmludGYoIiV1Iiwgbm9kZS52aXJ0dWFs
UmVnaXN0ZXIoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIldSIsIG5vZGUudmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgIGVsc2UKLSAgICAgICAgcHJpbnRmKCItIik7Ci0gICAgcHJpbnRmKCI+XHQl
cygiLCBvcE5hbWUob3ApKTsKKyAgICAgICAgZGVidWdQcmludGYoIi0iKTsKKyAgICBkZWJ1Z1By
aW50ZigiPlx0JXMoIiwgb3BOYW1lKG9wKSk7CiAgICAgYm9vbCBoYXNQcmludGVkID0gZmFsc2U7
CiAgICAgaWYgKG9wICYgTm9kZUhhc1ZhckFyZ3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBj
aGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgp
ICsgbm9kZS5udW1DaGlsZHJlbigpOyBjaGlsZElkeCsrKSB7CiAgICAgICAgICAgICBpZiAoaGFz
UHJpbnRlZCkKLSAgICAgICAgICAgICAgICBwcmludGYoIiwgIik7CisgICAgICAgICAgICAgICAg
ZGVidWdQcmludGYoIiwgIik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFz
UHJpbnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBwcmludGYoIkAldSIsIG1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdLmluZGV4KCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIkAldSIsIG1f
dmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdLmluZGV4KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDEoKSkKLSAgICAgICAgICAgIHByaW50ZigiQCV1
Iiwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJAJXUi
LCBub2RlLmNoaWxkMSgpLmluZGV4KCkpOwogICAgICAgICBpZiAoISFub2RlLmNoaWxkMigpKQot
ICAgICAgICAgICAgcHJpbnRmKCIsIEAldSIsIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSk7CisgICAg
ICAgICAgICBkZWJ1Z1ByaW50ZigiLCBAJXUiLCBub2RlLmNoaWxkMigpLmluZGV4KCkpOwogICAg
ICAgICBpZiAoISFub2RlLmNoaWxkMygpKQotICAgICAgICAgICAgcHJpbnRmKCIsIEAldSIsIG5v
ZGUuY2hpbGQzKCkuaW5kZXgoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLCBAJXUiLCBu
b2RlLmNoaWxkMygpLmluZGV4KCkpOwogICAgICAgICBoYXNQcmludGVkID0gISFub2RlLmNoaWxk
MSgpOwogICAgIH0KIAogICAgIGlmIChub2RlLmhhc0FyaXRoTm9kZUZsYWdzKCkpIHsKLSAgICAg
ICAgcHJpbnRmKCIlcyVzIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgYXJpdGhOb2RlRmxhZ3NB
c1N0cmluZyhub2RlLnJhd0FyaXRoTm9kZUZsYWdzKCkpKTsKKyAgICAgICAgZGVidWdQcmludGYo
IiVzJXMiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKG5v
ZGUucmF3QXJpdGhOb2RlRmxhZ3MoKSkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgaWYgKG5vZGUuaGFzVmFyTnVtYmVyKCkpIHsKLSAgICAgICAgcHJpbnRmKCIlc3Zh
ciV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS52YXJOdW1iZXIoKSk7CisgICAgICAg
IGRlYnVnUHJpbnRmKCIlc3ZhciV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS52YXJO
dW1iZXIoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAobm9k
ZS5oYXNJZGVudGlmaWVyKCkpIHsKICAgICAgICAgaWYgKGNvZGVCbG9jaykKLSAgICAgICAgICAg
IHByaW50ZigiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRp
Zmllck51bWJlcigpLCBjb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVy
KCkpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIl
c2lkJXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5pZGVudGlmaWVyTnVtYmVy
KCksIGNvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkudXN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGYoIiVz
aWQldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsK
KyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIlc2lkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIi
LCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwog
ICAgIH0KICAgICBpZiAobm9kZS5oYXNTdHJ1Y3R1cmVTZXQoKSkgewogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIHByaW50ZigiJXNzdHJ1Y3QoJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9k
ZS5zdHJ1Y3R1cmVTZXQoKVtpXSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiJXNzdHJ1Y3Qo
JXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVTZXQoKVtpXSk7CiAg
ICAgICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAo
bm9kZS5oYXNTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpKSB7Ci0gICAgICAgIHByaW50ZigiJXNz
dHJ1Y3QoJXAgLT4gJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVU
cmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLCBub2RlLnN0cnVjdHVyZVRyYW5zaXRp
b25EYXRhKCkubmV3U3RydWN0dXJlKTsKKyAgICAgICAgZGVidWdQcmludGYoIiVzc3RydWN0KCVw
IC0+ICVwKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuc3RydWN0dXJlVHJhbnNpdGlv
bkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZSwgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgp
Lm5ld1N0cnVjdHVyZSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBp
ZiAobm9kZS5oYXNTdG9yYWdlQWNjZXNzRGF0YSgpKSB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NE
YXRhJiBzdG9yYWdlQWNjZXNzRGF0YSA9IG1fc3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS5zdG9yYWdl
QWNjZXNzRGF0YUluZGV4KCldOwogICAgICAgICBpZiAoY29kZUJsb2NrKQotICAgICAgICAgICAg
cHJpbnRmKCIlc2lkJXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgc3RvcmFnZUFjY2Vz
c0RhdGEuaWRlbnRpZmllck51bWJlciwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0b3JhZ2VBY2Nl
c3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCIlc2lkJXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
c3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciwgY29kZUJsb2NrLT5pZGVudGlmaWVy
KHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlc2lkJXUiLCBoYXNQcmlu
dGVkID8gIiwgIiA6ICIiLCBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKKyAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCIlc2lkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBz
dG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgCi0gICAgICAgIHBy
aW50ZigiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzdG9yYWdlQWNjZXNzRGF0
YS5vZmZzZXQpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiwgJWx1Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0KSk7CiAgICAgICAgIGhhc1ByaW50
ZWQgPSB0cnVlOwogICAgIH0KICAgICBBU1NFUlQobm9kZS5oYXNWYXJpYWJsZUFjY2Vzc0RhdGEo
KSA9PSBub2RlLmhhc0xvY2FsKCkpOwpAQCAtMjE1LDgzICsyMTUsODMgQEAgdm9pZCBHcmFwaDo6
ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4LCBDbwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAg
IGludCBvcGVyYW5kID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCk7CiAgICAgICAgIGlm
IChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKLSAgICAgICAgICAgIHByaW50ZigiJXNhcmcl
dSglcykiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5k
KSwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAg
ICAgICAgZGVidWdQcmludGYoIiVzYXJnJXUoJXMpIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
b3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCksIG5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YSh2YXJp
YWJsZUFjY2Vzc0RhdGEpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlc3Il
dSglcykiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBvcGVyYW5kLCBuYW1lT2ZWYXJpYWJsZUFj
Y2Vzc0RhdGEodmFyaWFibGVBY2Nlc3NEYXRhKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
JXNyJXUoJXMpIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgb3BlcmFuZCwgbmFtZU9mVmFyaWFi
bGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNjZXNzRGF0YSkpOwogICAgICAgICBoYXNQcmludGVkID0g
dHJ1ZTsKICAgICB9CiAgICAgaWYgKG5vZGUuaGFzQ29uc3RhbnRCdWZmZXIoKSAmJiBjb2RlQmxv
Y2spIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICBwcmludGYoIiwgIik7
Ci0gICAgICAgIHByaW50ZigiJXU6WyIsIG5vZGUuc3RhcnRDb25zdGFudCgpKTsKKyAgICAgICAg
ICAgIGRlYnVnUHJpbnRmKCIsICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiJXU6WyIsIG5vZGUu
c3RhcnRDb25zdGFudCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUu
bnVtQ29uc3RhbnRzKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICAg
ICAgcHJpbnRmKCIsICIpOwotICAgICAgICAgICAgcHJpbnRmKCIlcyIsIGNvZGVCbG9jay0+Y29u
c3RhbnRCdWZmZXIobm9kZS5zdGFydENvbnN0YW50KCkpW2ldLmRlc2NyaXB0aW9uKCkpOworICAg
ICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIsICIpOworICAgICAgICAgICAgZGVidWdQcmludGYo
IiVzIiwgY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2RlLnN0YXJ0Q29uc3RhbnQoKSlbaV0u
ZGVzY3JpcHRpb24oKSk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCJdIik7CisgICAgICAg
IGRlYnVnUHJpbnRmKCJdIik7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAg
ICBpZiAob3AgPT0gSlNDb25zdGFudCkgewotICAgICAgICBwcmludGYoIiVzJCV1IiwgaGFzUHJp
bnRlZCA/ICIsICIgOiAiIiwgbm9kZS5jb25zdGFudE51bWJlcigpKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIiVzJCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5jb25zdGFudE51bWJl
cigpKTsKICAgICAgICAgaWYgKGNvZGVCbG9jaykgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaywgbm9kZUluZGV4KTsKLSAgICAgICAgICAg
IHByaW50ZigiID0gJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCIgPSAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOwogICAgICAgICB9CiAgICAgICAg
IGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAob3AgPT0gV2Vha0pTQ29uc3RhbnQp
IHsKLSAgICAgICAgcHJpbnRmKCIlcyVwIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS53
ZWFrQ29uc3RhbnQoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlcyVwIiwgaGFzUHJpbnRlZCA/
ICIsICIgOiAiIiwgbm9kZS53ZWFrQ29uc3RhbnQoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0
cnVlOwogICAgIH0KICAgICBpZiAgKG5vZGUuaXNCcmFuY2goKSB8fCBub2RlLmlzSnVtcCgpKSB7
Ci0gICAgICAgIHByaW50ZigiJXNUOiMldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUu
dGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiJXNUOiMldSIsIGhhc1By
aW50ZWQgPyAiLCAiIDogIiIsIG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOwogICAgICAgICBoYXNQ
cmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgIChub2RlLmlzQnJhbmNoKCkpIHsKLSAgICAg
ICAgcHJpbnRmKCIlc0Y6IyV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5ub3RUYWtl
bkJsb2NrSW5kZXgoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlc0Y6IyV1IiwgaGFzUHJpbnRl
ZCA/ICIsICIgOiAiIiwgbm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKSk7CiAgICAgICAgIGhhc1By
aW50ZWQgPSB0cnVlOwogICAgIH0KICAgICAodm9pZCloYXNQcmludGVkOwogICAgIAotICAgIHBy
aW50ZigiKSIpOworICAgIGRlYnVnUHJpbnRmKCIpIik7CiAKICAgICBpZiAoIXNraXBwZWQpIHsK
ICAgICAgICAgaWYgKG5vZGUuaGFzVmFyaWFibGVBY2Nlc3NEYXRhKCkpCi0gICAgICAgICAgICBw
cmludGYoIiAgcHJlZGljdGluZyAlcywgZG91YmxlIHJhdGlvICVsZiVzIiwgcHJlZGljdGlvblRv
U3RyaW5nKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSksIG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCktPmRvdWJsZVZvdGVSYXRpbygpLCBub2RlLnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIsIGZvcmNpbmcgZG91YmxlIiA6ICIi
KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgIHByZWRpY3RpbmcgJXMsIGRvdWJsZSByYXRp
byAlbGYlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5w
cmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5kb3VibGVWb3RlUmF0aW8o
KSwgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgPyAi
LCBmb3JjaW5nIGRvdWJsZSIgOiAiIik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFzSGVhcFBy
ZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGlj
dGlvblRvU3RyaW5nKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLmdldEhl
YXBQcmVkaWN0aW9uKCkpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5oYXNWYXJOdW1iZXIoKSkK
LSAgICAgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5n
KGdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZS52YXJOdW1iZXIoKSkpKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCIgIHByZWRpY3RpbmcgJXMiLCBwcmVkaWN0aW9uVG9TdHJpbmcoZ2V0R2xv
YmFsVmFyUHJlZGljdGlvbihub2RlLnZhck51bWJlcigpKSkpOwogICAgIH0KICAgICAKLSAgICBw
cmludGYoIlxuIik7CisgICAgZGVidWdQcmludGYoIlxuIik7CiB9CiAKIHZvaWQgR3JhcGg6OmR1
bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgZm9yIChzaXplX3QgYiA9IDA7IGIgPCBt
X2Jsb2Nrcy5zaXplKCk7ICsrYikgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmxv
Y2tzW2JdLmdldCgpOwotICAgICAgICBwcmludGYoIkJsb2NrICMldSAoYmMjJXUpOiAlcyVzXG4i
LCAoaW50KWIsIGJsb2NrLT5ieXRlY29kZUJlZ2luLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6
ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIp
OwotICAgICAgICBwcmludGYoIiAgdmFycyBiZWZvcmU6ICIpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiQmxvY2sgIyV1IChiYyMldSk6ICVzJXNcbiIsIChpbnQpYiwgYmxvY2stPmJ5dGVjb2RlQmVn
aW4sIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JU
YXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIHZh
cnMgYmVmb3JlOiAiKTsKICAgICAgICAgaWYgKGJsb2NrLT5jZmFIYXNWaXNpdGVkKQotICAgICAg
ICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdEhlYWQsIHN0ZG91dCk7CisgICAgICAg
ICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkZWJ1Z0ZpbGUoKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiPGVtcHR5PiIpOwotICAgICAgICBw
cmludGYoIlxuIik7Ci0gICAgICAgIHByaW50ZigiICB2YXIgbGlua3M6ICIpOwotICAgICAgICBk
dW1wT3BlcmFuZHMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCwgc3Rkb3V0KTsKLSAgICAgICAgcHJp
bnRmKCJcbiIpOworICAgICAgICAgICAgZGVidWdQcmludGYoIjxlbXB0eT4iKTsKKyAgICAgICAg
ZGVidWdQcmludGYoIlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgIHZhciBsaW5rczogIik7
CisgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFyaWFibGVzQXRIZWFkLCBXVEY6OmRlYnVn
RmlsZSgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBibG9jay0+YmVnaW47IGkgPCBibG9jay0+ZW5kOyArK2kpCiAgICAgICAgICAgICBkdW1w
KGksIGNvZGVCbG9jayk7Ci0gICAgICAgIHByaW50ZigiICB2YXJzIGFmdGVyOiAiKTsKKyAgICAg
ICAgZGVidWdQcmludGYoIiAgdmFycyBhZnRlcjogIik7CiAgICAgICAgIGlmIChibG9jay0+Y2Zh
SGFzVmlzaXRlZCkKLSAgICAgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFsdWVzQXRUYWls
LCBzdGRvdXQpOworICAgICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdFRhaWws
IFdURjo6ZGVidWdGaWxlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGYoIjxl
bXB0eT4iKTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgZGVidWdQcmludGYo
IjxlbXB0eT4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgfQotICAgIHByaW50
ZigiUGhpIE5vZGVzOlxuIik7CisgICAgZGVidWdQcmludGYoIlBoaSBOb2RlczpcbiIpOwogICAg
IGZvciAoc2l6ZV90IGkgPSBtX2Jsb2Nrcy5sYXN0KCktPmVuZDsgaSA8IHNpemUoKTsgKytpKQog
ICAgICAgICBkdW1wKGksIGNvZGVCbG9jayk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBH
cmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMoQ29kZUJsbwogICAgICAgICBhdChtX2FyZ3VtZW50
c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcm9maWxlLT5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKLSAgICAgICAgcHJpbnRmKCJBcmd1bWVudCBbJXp1XSBwcmVkaWN0aW9uOiAlc1xuIiwgYXJn
LCBwcmVkaWN0aW9uVG9TdHJpbmcoYXQobV9hcmd1bWVudHNbYXJnXSkudmFyaWFibGVBY2Nlc3NE
YXRhKCktPnByZWRpY3Rpb24oKSkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiQXJndW1lbnQgWyV6
dV0gcHJlZGljdGlvbjogJXNcbiIsIGFyZywgcHJlZGljdGlvblRvU3RyaW5nKGF0KG1fYXJndW1l
bnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICNlbmRpZgog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKIHsKICAgICAvLyBMaW5rIHRoZSBj
b2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiSklUIGNvZGUgZm9y
ICVwIHN0YXJ0IGF0IFslcCwgJXApLiBTaXplID0gJXp1LlxuIiwgbV9jb2RlQmxvY2ssIGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVn
QWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCksIGxpbmtCdWZmZXIuZGVidWdTaXpl
KCkpOworICAgIGRlYnVnUHJpbnRmKCJKSVQgY29kZSBmb3IgJXAgc3RhcnQgYXQgWyVwLCAlcCku
IFNpemUgPSAlenUuXG4iLCBtX2NvZGVCbG9jaywgbGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSwg
c3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZl
ci5kZWJ1Z1NpemUoKSwgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSk7CiAjZW5kaWYKIAogICAgIC8v
IExpbmsgYWxsIGNhbGxzIG91dCBmcm9tIHRoZSBKSVQgY29kZSB0byB0aGVpciByZXNwZWN0aXZl
IGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnku
Y3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtYmVy
T2ZERkdPU1JFbnRyaWVzKCkpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBw
cmludGYoIk9TUiBpbiAlcCglcCkgZnJvbSBiYyMldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2st
PmFsdGVybmF0aXZlKCksIGJ5dGVjb2RlSW5kZXgpOworICAgIGRlYnVnUHJpbnRmKCJPU1IgaW4g
JXAoJXApIGZyb20gYmMjJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
LCBieXRlY29kZUluZGV4KTsKICNlbmRpZgogICAgIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CkBAIC04MCw5ICs4MCw5IEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMo
KTsgKythcmd1bWVudCkgewogICAgICAgICBpZiAoYXJndW1lbnQgPj0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAg
ICAgICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgYXJndW1lbnQgJXp1IHdhcyBu
b3QgcGFzc2VkLCBleHBlY3RlZCAiLCBhcmd1bWVudCk7Ci0gICAgICAgICAgICBlbnRyeS0+bV9l
eHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkuZHVtcChzdGRvdXQpOwotICAgICAgICAg
ICAgcHJpbnRmKCIuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgT1NSIGZhaWxl
ZCBiZWNhdXNlIGFyZ3VtZW50ICV6dSB3YXMgbm90IHBhc3NlZCwgZXhwZWN0ZWQgIiwgYXJndW1l
bnQpOworICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMuYXJndW1lbnQoYXJndW1l
bnQpLmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLlxu
Iik7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC05NSw5ICs5
NSw5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAg
CiAgICAgICAgIGlmICghZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMuYXJndW1lbnQoYXJndW1lbnQp
LnZhbGlkYXRlKHZhbHVlKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAg
ICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgYXJndW1lbnQgJXp1IGlzICVzLCBl
eHBlY3RlZCAiLCBhcmd1bWVudCwgdmFsdWUuZGVzY3JpcHRpb24oKSk7Ci0gICAgICAgICAgICBl
bnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkuZHVtcChzdGRvdXQpOwot
ICAgICAgICAgICAgcHJpbnRmKCIuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
T1NSIGZhaWxlZCBiZWNhdXNlIGFyZ3VtZW50ICV6dSBpcyAlcywgZXhwZWN0ZWQgIiwgYXJndW1l
bnQsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRW
YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpLmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAg
ICAgICBkZWJ1Z1ByaW50ZigiLlxuIik7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNT
dGF0ZSogZXhlYywgQwogICAgICAgICBpZiAoZW50cnktPm1fbG9jYWxzRm9yY2VkRG91YmxlLmdl
dChsb2NhbCkpIHsKICAgICAgICAgICAgIGlmICghZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxdLmpz
VmFsdWUoKS5pc051bWJlcigpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAg
ICAgICAgICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgJXp1IGlz
ICVzLCBleHBlY3RlZCBudW1iZXIuXG4iLCBsb2NhbCwgZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxd
LmpzVmFsdWUoKS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
ICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkIG51bWJl
ci5cbiIsIGxvY2FsLCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0
aW9uKCkpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9
CkBAIC0xMTUsOSArMTE1LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQwogICAgICAgICB9CiAgICAgICAgIGlmICghZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9j
YWwobG9jYWwpLnZhbGlkYXRlKGV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsXS5qc1ZhbHVlKCkpKSB7
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiICAgIE9T
UiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGxvY2FsLCBl
eGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOwotICAgICAg
ICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLmR1bXAoc3Rkb3V0KTsK
LSAgICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAg
IE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGxvY2Fs
LCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOworICAg
ICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLmR1bXAoV1RGOjpk
ZWJ1Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiLlxuIik7CiAjZW5kaWYKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzIsMTMgKzEzMiwxMyBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgCiAgICAgaWYgKCFnbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJz
KClbY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSB7CiAjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHN0YWNr
IGdyb3d0aCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICBPU1IgZmFpbGVk
IGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC5cbiIpOwogI2VuZGlmCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50
ZigiICAgIE9TUiBzaG91bGQgc3VjY2VlZC5cbiIpOworICAgIGRlYnVnUHJpbnRmKCIgICAgT1NS
IHNob3VsZCBzdWNjZWVkLlxuIik7CiAjZW5kaWYKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQpA
QCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IEMKICAgICB2b2lkKiByZXN1bHQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxl
QWRkcmVzc0F0T2Zmc2V0KGVudHJ5LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKICAgICAKICNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiICAgIE9TUiByZXR1cm5pbmcgbWFj
aGluZSBjb2RlIGFkZHJlc3MgJXAuXG4iLCByZXN1bHQpOworICAgIGRlYnVnUHJpbnRmKCIgICAg
T1NSIHJldHVybmluZyBtYWNoaW5lIGNvZGUgYWRkcmVzcyAlcC5cbiIsIHJlc3VsdCk7CiAjZW5k
aWYKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDEw
NzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNSArMzYsMTUgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogewogICAgIC8vIDEpIFByby1mb3JtYSBzdHVmZi4K
ICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJPU1Ig
ZXhpdCBmb3IgTm9kZSBAJWQgKCIsIChpbnQpZXhpdC5tX25vZGVJbmRleCk7CisgICAgZGVidWdQ
cmludGYoIk9TUiBleGl0IGZvciBOb2RlIEAlZCAoIiwgKGludClleGl0Lm1fbm9kZUluZGV4KTsK
ICAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyA7IGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiYmMjJXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBkZWJ1Z1ByaW50ZigiYmMjJXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIC0+ICVwICIsIGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAtPiAlcCAi
LCBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgfQot
ICAgIGZwcmludGYoc3RkZXJyLCAiKSBhdCBKSVQgb2Zmc2V0IDB4JXggICIsIG1faml0LmRlYnVn
T2Zmc2V0KCkpOwotICAgIGV4aXQuZHVtcChzdGRlcnIpOworICAgIGRlYnVnUHJpbnRmKCIpIGF0
IEpJVCBvZmZzZXQgMHgleCAgIiwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CisgICAgZXhpdC5kdW1w
KFdURjo6ZGVidWdGaWxlKCkpOwogI2VuZGlmCiAjaWYgREZHX0VOQUJMRShWRVJCT1NFX1NQRUNV
TEFUSU9OX0ZBSUxVUkUpCiAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0lu
Zm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvOwpAQCAtNjUzLDcgKzY1Myw3IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICBtX2ppdC5qdW1w
KEdQUkluZm86OnJlZ1QyKTsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgIC0+ICVwXG4iLCBqdW1wVGFyZ2V0KTsKKyAgICBkZWJ1Z1ByaW50
ZigiICAgLT4gJXBcbiIsIGp1bXBUYXJnZXQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZp
c2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE1IEBAIHZvaWQgT1NSRXhp
dENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKIHsKICAgICAvLyAxKSBQcm8tZm9ybWEgc3R1
ZmYuCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAi
T1NSIGV4aXQgZm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOworICAgIGRl
YnVnUHJpbnRmKCJPU1IgZXhpdCBmb3IgTm9kZSBAJWQgKCIsIChpbnQpZXhpdC5tX25vZGVJbmRl
eCk7CiAgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsg
OyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgImJjIyV1IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgZGVidWdQcmludGYoImJjIyV1IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
ICAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAtPiAlcCAiLCBjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgLT4g
JXAgIiwgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAg
IH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIikgICIpOwotICAgIGV4aXQuZHVtcChzdGRlcnIpOwor
ICAgIGRlYnVnUHJpbnRmKCIpICAiKTsKKyAgICBleGl0LmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7
CiAjZW5kaWYKICNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKICAg
ICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlv
bkZhaWx1cmVEZWJ1Z0luZm87CkBAIC0xODQsMjQgKzE4NCwyNCBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgfQogICAgIAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIik7CisgICAgZGVidWdQcmludGYo
IiAgIik7CiAgICAgaWYgKG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKQotICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlBvaXNvbmVkPSV1ICIsIG51bWJlck9mUG9pc29uZWRWaXJ0dWFs
UmVnaXN0ZXJzKTsKKyAgICAgICAgZGVidWdQcmludGYoIlBvaXNvbmVkPSV1ICIsIG51bWJlck9m
UG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKTsKICAgICBpZiAobnVtYmVyT2ZEaXNwbGFjZWRWaXJ0
dWFsUmVnaXN0ZXJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRpc3BsYWNlZD0ldSAiLCBu
dW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpOworICAgICAgICBkZWJ1Z1ByaW50Zigi
RGlzcGxhY2VkPSV1ICIsIG51bWJlck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycyk7CiAgICAg
aWYgKGhhdmVVbmJveGVkSW50MzJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYm94ZWRJ
bnQzMiAiKTsKKyAgICAgICAgZGVidWdQcmludGYoIlVuYm94ZWRJbnQzMiAiKTsKICAgICBpZiAo
aGF2ZVVuYm94ZWREb3VibGVzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYm94ZWREb3Vi
bGVzICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiVW5ib3hlZERvdWJsZXMgIik7CiAgICAgaWYg
KGhhdmVVSW50MzJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVJbnQzMiAiKTsKKyAgICAg
ICAgZGVidWdQcmludGYoIlVJbnQzMiAiKTsKICAgICBpZiAoaGF2ZUZQUnMpCi0gICAgICAgIGZw
cmludGYoc3RkZXJyLCAiRlBSICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiRlBSICIpOwogICAg
IGlmIChoYXZlQ29uc3RhbnRzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvbnN0YW50cyAi
KTsKKyAgICAgICAgZGVidWdQcmludGYoIkNvbnN0YW50cyAiKTsKICAgICBpZiAoaGF2ZVVuZGVm
aW5lZCkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmRlZmluZWQgIik7Ci0gICAgZnByaW50
ZihzdGRlcnIsICIgIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJVbmRlZmluZWQgIik7CisgICAg
ZGVidWdQcmludGYoIiAiKTsKICNlbmRpZgogICAgIAogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3Jh
dGNoQnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihtX2ppdC5nbG9iYWxEYXRh
KCktPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBzdGQ6Om1h
eChoYXZlVUludDMycyA/IDJ1IDogMHUsIG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJz
ICsgKG51bWJlck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycyA8PSBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA/IDAgOiBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpKSkpOwpA
QCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICBtX2ppdC5qdW1wKEdQUkluZm86OnJlZ1QxKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIi0+ICVwXG4iLCBqdW1wVGFyZ2V0KTsK
KyAgICBkZWJ1Z1ByaW50ZigiLT4gJXBcbiIsIGp1bXBUYXJnZXQpOwogI2VuZGlmCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJs
b2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0
aW5nIE9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwLlxuIiwg
ZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUlu
ZGV4LCBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgY29kZUJsb2NrKTsKKyAgICBkZWJ1
Z1ByaW50ZigiR2VuZXJhdGluZyBPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3IgY29k
ZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgZXhpdC5tX25vZGVJbmRleCwgZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIGNvZGVC
bG9jayk7CiAjZW5kaWYKIAogICAgIHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBjb21waWxlT1NS
RXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGV4aXQubV9jb2RlID0gcGF0Y2hCdWZmZXIu
ZmluYWxpemVDb2RlKCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiT1NSIGV4aXQgY29kZSBhdCBbJXAsICVwKS5cbiIsIHBhdGNoQnVm
ZmVyLmRlYnVnQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocGF0Y2hCdWZmZXIuZGVidWdB
ZGRyZXNzKCkpICsgcGF0Y2hCdWZmZXIuZGVidWdTaXplKCkpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiT1NSIGV4aXQgY29kZSBhdCBbJXAsICVwKS5cbiIsIHBhdGNoQnVmZmVyLmRlYnVnQWRkcmVz
cygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocGF0Y2hCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgcGF0
Y2hCdWZmZXIuZGVidWdTaXplKCkpOwogI2VuZGlmCiAgICAgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIERGR19PUEVSQVRJT04gZGVidWdPcGVy
YXRpb25QcmludFNwCiAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8g
PSBzdGF0aWNfY2FzdDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihkZWJ1Z0luZm9SYXcp
OwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2RlQmxvY2s7CiAgICAg
Q29kZUJsb2NrKiBhbHRlcm5hdGl2ZSA9IGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBw
cmludGYoIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0ZUNvdW50
ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyID0gJXUsIHN1Y2Nlc3MvZmFpbCAldS8ldVxuIiwgY29kZUJsb2NrLCBkZWJ1Z0lu
Zm8tPm5vZGVJbmRleCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50
ZXIoKSA6IDAsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxh
eUNvdW50ZXIoKSA6IDAsIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBj
b2RlQmxvY2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CisgICAgZGVidWdQcmludGYoIlNw
ZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
ID0gJXUsIHN1Y2Nlc3MvZmFpbCAldS8ldVxuIiwgY29kZUJsb2NrLCBkZWJ1Z0luZm8tPm5vZGVJ
bmRleCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSA6IDAs
IGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkg
OiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
KSA6IDAsIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2st
PnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCwyOCArNjQsMjggQEAgcHVibGljOgogICAgICAgICBmaXh1cCgpOwogICAgICAg
ICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHBy
aW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb24gZml4dXA6XG4iKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIkdyYXBoIGFmdGVyIHByb3BhZ2F0aW9uIGZpeHVwOlxuIik7CiAgICAgICAgIG1fZ3Jh
cGguZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYKIAogICAgICAgICBsb2NhbENTRSgpOwogCiAj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYo
IkdyYXBoIGFmdGVyIENTRTpcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiR3JhcGggYWZ0ZXIg
Q1NFOlxuIik7CiAgICAgICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYKIAog
ICAgICAgICBhbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMoKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJHcmFwaCBhZnRlciB2aXJ0
dWFsIHJlZ2lzdGVyIGFsbG9jYXRpb246XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIkdyYXBo
IGFmdGVyIHZpcnR1YWwgcmVnaXN0ZXIgYWxsb2NhdGlvbjpcbiIpOwogICAgICAgICBtX2dyYXBo
LmR1bXAobV9jb2RlQmxvY2spOwogI2VuZGlmCiAKICAgICAgICAgZ2xvYmFsQ0ZBKCk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIg
cHJvcGFnYXRpb246XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIkdyYXBoIGFmdGVyIHByb3Bh
Z2F0aW9uOlxuIik7CiAgICAgICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYK
ICAgICB9CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZsYWdzID0g
bm9kZS5yYXdBcml0aE5vZGVGbGFncygpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICAgJXMgQCV1OiAlcyAiLCBH
cmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgsIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmco
ZmxhZ3MpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICVzIEAldTogJXMgIiwgR3JhcGg6Om9w
TmFtZShvcCksIG1fY29tcGlsZUluZGV4LCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKGZsYWdzKSk7
CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGZsYWdzICY9IE5vZGVVc2VkQXNNYXNrOwpAQCAt
MjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIlc1xuIiwgY2hhbmdlZCA/
ICJDSEFOR0VEIiA6ICIiKTsKKyAgICAgICAgZGVidWdQcmludGYoIiVzXG4iLCBjaGFuZ2VkID8g
IkNIQU5HRUQiIDogIiIpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0g
Y2hhbmdlZDsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvcGFnYXRl
QXJpdGhOb2RlRmxhZ3NGb3J3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMg
bm9kZSBmbGFncyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRlYnVnUHJp
bnRmKCJQcm9wYWdhdGluZyBhcml0aG1ldGljIG5vZGUgZmxhZ3MgZm9yd2FyZCBbJXVdXG4iLCAr
K21fY291bnQpOwogI2VuZGlmCiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSAwOyBtX2Nv
bXBpbGVJbmRleCA8IG1fZ3JhcGguc2l6ZSgpOyArK21fY29tcGlsZUluZGV4KQogICAgICAgICAg
ICAgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3MobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAt
MjQwLDcgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9wYWdhdGVBcml0aE5vZGVGbGFn
c0JhY2t3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9kZSBmbGFncyBi
YWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOworICAgICAgICBkZWJ1Z1ByaW50ZigiUHJvcGFn
YXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7
CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOyBt
X2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAgICAgICBwcm9wYWdhdGVBcml0aE5vZGVGbGFn
cyhtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICVzIEAldTogIiwgR3JhcGg6
Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgZGVidWdQcmludGYoIiAgICVz
IEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKICNlbmRpZgogICAg
ICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CkBAIC02MzYsNyArNjM2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICBwcmludGYoIiVzXG4iLCBwcmVkaWN0aW9uVG9TdHJpbmcobV9ncmFw
aFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIl
c1xuIiwgcHJlZGljdGlvblRvU3RyaW5nKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rp
b24oKSkpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0gY2hhbmdlZDsK
QEAgLTY0NSw3ICs2NDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvcGFnYXRlUHJlZGljdGlv
bnNGb3J3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGZvcndhcmQgWyV1
XVxuIiwgKyttX2NvdW50KTsKKyAgICAgICAgZGVidWdQcmludGYoIlByb3BhZ2F0aW5nIHByZWRp
Y3Rpb25zIGZvcndhcmQgWyV1XVxuIiwgKyttX2NvdW50KTsKICNlbmRpZgogICAgICAgICBmb3Ig
KG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKytt
X2NvbXBpbGVJbmRleCkKICAgICAgICAgICAgIHByb3BhZ2F0ZU5vZGVQcmVkaWN0aW9ucyhtX2dy
YXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC02NTQsNyArNjU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHByb3BhZ2F0ZVByZWRpY3Rpb25zQmFja3dhcmQoKQogICAgIHsKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUHJvcGFnYXRpbmcg
cHJlZGljdGlvbnMgYmFja3dhcmQgWyV1XVxuIiwgKyttX2NvdW50KTsKKyAgICAgICAgZGVidWdQ
cmludGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3Vu
dCk7CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgp
OyBtX2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAgICAgICBwcm9wYWdhdGVOb2RlUHJlZGlj
dGlvbnMobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkb1JvdW5kT2ZEb3VibGVWb3RpbmcoKQogICAgIHsKICNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiVm90aW5nIG9u
IGRvdWJsZSB1c2VzIG9mIGxvY2FscyBbJXVdXG4iLCBtX2NvdW50KTsKKyAgICAgICAgZGVidWdQ
cmludGYoIlZvdGluZyBvbiBkb3VibGUgdXNlcyBvZiBsb2NhbHMgWyV1XVxuIiwgbV9jb3VudCk7
CiAjZW5kaWYKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGgubV92YXJp
YWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyaWFi
bGVBY2Nlc3NEYXRhW2ldLmZpbmQoKS0+Y2xlYXJWb3RlcygpOwpAQCAtODIwLDcgKzgyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKIAogI2lmIERGR19FTkFC
TEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6
ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTg0NSw3ICs4NDUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIg
IEAldSAtPiAlcyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6
ICJHZXRTdHJpbmdMZW5ndGgiKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgIEAldSAtPiAl
cyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6ICJHZXRTdHJp
bmdMZW5ndGgiKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKGlzQXJyYXkpCiAgICAgICAgICAg
ICAgICAgbm9kZS5vcCA9IEdldEFycmF5TGVuZ3RoOwpAQCAtODk5LDE0ICs4OTksMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbiIpOwog
I2VuZGlmCiAgICAgfQogICAgIAogICAgIHZvaWQgZml4dXAoKQogICAgIHsKICNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUGVyZm9ybWlu
ZyBGaXh1cFxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJQZXJmb3JtaW5nIEZpeHVwXG4iKTsK
ICNlbmRpZgogICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXgg
PCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKICAgICAgICAgICAgIGZpeHVwTm9k
ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC05NjcsNyArOTY3LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIE5vZGVJbmRleCByZXN1bHQgPSBjb21wdXRlU3RhcnRJbmRleEZvckNo
aWxkcmVuKGNoaWxkMSwgY2hpbGQyLCBjaGlsZDMpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgIGxvb2tiYWNrICV1OiAiLCByZXN1
bHQpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICBsb29rYmFjayAldTogIiwgcmVzdWx0KTsKICNl
bmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIEFTU0VSVChyZXN1bHQgPD0g
bV9jb21waWxlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9T
RSkKLSAgICAgICAgcHJpbnRmKCIgIGxpbWl0ICV1OiAiLCByZXN1bHQpOworICAgICAgICBkZWJ1
Z1ByaW50ZigiICBsaW1pdCAldTogIiwgcmVzdWx0KTsKICNlbmRpZgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICBSZXBsYWNpbmcgQCV1IC0+IEAldSIsIG1fY29tcGls
ZUluZGV4LCByZXBsYWNlbWVudCk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICBSZXBsYWNpbmcg
QCV1IC0+IEAldSIsIG1fY29tcGlsZUluZGV4LCByZXBsYWNlbWVudCk7CiAjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKQEAgLTE0
MDUsNyArMTQwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGltaW5hdGUoKQogICAgIHsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
ICAgRWxpbWluYXRpbmcgQCV1IiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiICAgRWxpbWluYXRpbmcgQCV1IiwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAg
IAogICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07CkBAIC0xNDMx
LDcgKzE0MzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
ICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwg
bV9jb21waWxlSW5kZXgpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgJXMgQCV1OiAiLCBHcmFw
aDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwgbV9jb21waWxlSW5kZXgpOwog
I2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBOT1RFOiB0aGVyZSBhcmUgc29tZSBub2RlcyB0
aGF0IHdlIGRlbGliZXJhdGVseSBkb24ndCBDU0UgZXZlbiB0aG91Z2ggd2UKQEAgLTE1NTksNyAr
MTU1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX2xhc3RTZWVuW25vZGUub3Ag
JiBOb2RlSWRNYXNrXSA9IG1fY29tcGlsZUluZGV4OwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkZWJ1Z1By
aW50ZigiXG4iKTsKICNlbmRpZgogICAgIH0KICAgICAKQEAgLTE1NzQsNyArMTU3NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBsb2NhbENTRSgpCiAgICAgewogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQZXJmb3JtaW5nIGxvY2FsIENT
RToiKTsKKyAgICAgICAgZGVidWdQcmludGYoIlBlcmZvcm1pbmcgbG9jYWwgQ1NFOiIpOwogI2Vu
ZGlmCiAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2sgPSAwOyBibG9jayA8IG1fZ3JhcGgubV9i
bG9ja3Muc2l6ZSgpOyArK2Jsb2NrKQogICAgICAgICAgICAgcGVyZm9ybUJsb2NrQ1NFKCptX2dy
YXBoLm1fYmxvY2tzW2Jsb2NrXSk7CkBAIC0xNTgzLDkgKzE1ODMsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWxsb2NhdGVWaXJ0dWFsUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIlByZXNlcnZlZCB2YXJzOiAiKTsKLSAgICAg
ICAgbV9ncmFwaC5tX3ByZXNlcnZlZFZhcnMuZHVtcChzdGRvdXQpOwotICAgICAgICBwcmludGYo
IlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJQcmVzZXJ2ZWQgdmFyczogIik7CisgICAgICAg
IG1fZ3JhcGgubV9wcmVzZXJ2ZWRWYXJzLmR1bXAoV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAg
IGRlYnVnUHJpbnRmKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIFNjb3JlQm9hcmQgc2NvcmVCb2Fy
ZChtX2dyYXBoLCBtX2dyYXBoLm1fcHJlc2VydmVkVmFycyk7CiAgICAgICAgIHVuc2lnbmVkIHNp
emVFeGNsdWRpbmdQaGlOb2RlcyA9IG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpLT5lbmQ7CkBAIC0x
NjI5LDcgKzE2MjksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoKHVuc2lnbmVkKW1fY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA8IGNhbGxlZVJlZ2lzdGVycykKICAgICAgICAgICAg
IG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA9IGNhbGxlZVJlZ2lzdGVyczsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiTnVtIGNhbGxlZSBy
ZWdpc3RlcnM6ICV1XG4iLCBjYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBkZWJ1Z1ByaW50Zigi
TnVtIGNhbGxlZSByZWdpc3RlcnM6ICV1XG4iLCBjYWxsZWVSZWdpc3RlcnMpOwogI2VuZGlmCiAg
ICAgfQogICAgIApAQCAtMTYzOSw0MiArMTYzOSw0MiBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
IWJsb2NrLT5jZmFTaG91bGRSZXZpc2l0KQogICAgICAgICAgICAgcmV0dXJuOwogI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICBCbG9j
ayAjJXUgKGJjIyV1KTpcbiIsIGJsb2NrSW5kZXgsIGJsb2NrLT5ieXRlY29kZUJlZ2luKTsKKyAg
ICAgICAgZGVidWdQcmludGYoIiAgIEJsb2NrICMldSAoYmMjJXUpOlxuIiwgYmxvY2tJbmRleCwg
YmxvY2stPmJ5dGVjb2RlQmVnaW4pOwogI2VuZGlmCiAgICAgICAgIHN0YXRlLmJlZ2luQmFzaWNC
bG9jayhibG9jayk7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICBwcmludGYoIiAgICAgIGhlYWQgdmFyczogIik7Ci0gICAgICAgIGR1bXBPcGVyYW5k
cyhibG9jay0+dmFsdWVzQXRIZWFkLCBzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7Cisg
ICAgICAgIGRlYnVnUHJpbnRmKCIgICAgICBoZWFkIHZhcnM6ICIpOworICAgICAgICBkdW1wT3Bl
cmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgIGRl
YnVnUHJpbnRmKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIGZvciAoTm9kZUluZGV4IG5vZGVJbmRl
eCA9IGJsb2NrLT5iZWdpbjsgbm9kZUluZGV4IDwgYmxvY2stPmVuZDsgKytub2RlSW5kZXgpIHsK
ICAgICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlSW5kZXhdLnNob3VsZEdlbmVyYXRlKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpv
cE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4KTsKLSAgICAgICAgICAgIHN0
YXRlLmR1bXAoc3Rkb3V0KTsKLSAgICAgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2Rl
SW5kZXhdLm9wKSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIHN0YXRlLmR1bXAoV1RGOjpkZWJ1
Z0ZpbGUoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICNlbmRpZgogICAgICAg
ICAgICAgaWYgKCFzdGF0ZS5leGVjdXRlKG5vZGVJbmRleCkpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIHByaW50ZigiICAgICAgdGFpbCByZWdzOiAiKTsKLSAgICAgICAgc3RhdGUuZHVt
cChzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgICB0YWlsIHJlZ3M6ICIpOworICAgICAgICBzdGF0ZS5kdW1wKFdURjo6ZGVidWdGaWxlKCkp
OworICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICNlbmRpZgogICAgICAgICBtX2NoYW5nZWQg
fD0gc3RhdGUuZW5kQmFzaWNCbG9jayhBYnN0cmFjdFN0YXRlOjpNZXJnZVRvU3VjY2Vzc29ycyk7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmlu
dGYoIiAgICAgIHRhaWwgdmFyczogIik7Ci0gICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFs
dWVzQXRUYWlsLCBzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRlYnVn
UHJpbnRmKCIgICAgICB0YWlsIHZhcnM6ICIpOworICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2st
PnZhbHVlc0F0VGFpbCwgV1RGOjpkZWJ1Z0ZpbGUoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJc
biIpOwogI2VuZGlmCiAgICAgfQogICAgIAogICAgIHZvaWQgcGVyZm9ybUZvcndhcmRDRkEoQWJz
dHJhY3RTdGF0ZSYgc3RhdGUpCiAgICAgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJDRkEgWyV1XVxuIiwgKyttX2NvdW50KTsKKyAg
ICAgICAgZGVidWdQcmludGYoIkNGQSBbJXVdXG4iLCArK21fY291bnQpOwogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2sgPSAwOyBibG9jayA8IG1fZ3JhcGgu
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsMTEg
KzIzMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIHJlZ2lzdGVyLCBwcmludCB0
aGUgVmlydHVhbFJlZ2lzdGVyICduYW1lJy4KICAgICAgICAgZm9yICh1aW50MzJfdCBpID0wOyBp
IDwgTlVNX1JFR1M7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZGF0YVtpXS5uYW1lICE9IElu
dmFsaWRWaXJ0dWFsUmVnaXN0ZXIpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJb
JTAyZF0iLCBtX2RhdGFbaV0ubmFtZSk7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIlsl
MDJkXSIsIG1fZGF0YVtpXS5uYW1lKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlstLV0iKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50Zigi
Wy0tXSIpOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICAg
ICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDI2ICsxMTksMjYgQEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAo
KQogICAgIHsKLSAgICAgICAgcHJpbnRmKCIgICAgVVNFRDogWyAiKTsKKyAgICAgICAgZGVidWdQ
cmludGYoIiAgICBVU0VEOiBbICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV91c2VkLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZnJlZS5jb250YWlucyhp
KSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiJWQ6IiwgaSk7CisgICAgICAgICAgICAgICAg
ZGVidWdQcmludGYoIiVkOiIsIGkpOwogICAgICAgICAgICAgICAgIGlmIChtX3VzZWRbaV0gPT0g
bWF4KCkpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigibG9jYWwgIik7CisgICAgICAgICAg
ICAgICAgICAgIGRlYnVnUHJpbnRmKCJsb2NhbCAiKTsKICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV91c2VkW2ldKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGVidWdQcmludGYoIiVkICIsIG1fdXNlZFtpXSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCJdXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIl1c
biIpOwogCi0gICAgICAgIHByaW50ZigiICAgIEZSRUU6IFsgIik7CisgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgRlJFRTogWyAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dXNlZC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZnJlZS5jb250YWlucyhpKSAm
JiBtX3VzZWRbaV0gIT0gbWF4KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fdXNlZFtp
XSk7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBpKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiJWQgIiwgaSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnRmKCJdXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIl1cbiIpOwogICAgIH0KIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4
NCw3ICs5ODQsNyBAQCB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCBub2RlSW5kZXgsIERhdGFGb3Jt
YXQmIHJldHVybkZvcm1hdCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAg
ZnByaW50ZihzdGRlcnIsICJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICBkZWJ1Z1By
aW50ZigiU3BlY0ludEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBpZiAoaXNLbm93
bk5vdEludGVnZXIobm9kZUluZGV4KSkgewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKQEAgLTEwODAsNyAr
MTA4MCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludFMKIEZQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4
KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwg
IlNwZWNEb3VibGVAJWQgICAiLCBub2RlSW5kZXgpOworICAgIGRlYnVnUHJpbnRmKCJTcGVjRG91
YmxlQCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAgIGlmIChpc0tub3duTm90TnVtYmVy
KG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CkBAIC0xMjEwLDcgKzEyMTAsNyBAQCBG
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0NlbGxAJWQg
ICAiLCBub2RlSW5kZXgpOworICAgIGRlYnVnUHJpbnRmKCJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJ
bmRleCk7CiAjZW5kaWYKICAgICBpZiAoaXNLbm93bk5vdENlbGwobm9kZUluZGV4KSkgewogICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlKTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUNlbGwKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgp
OworICAgICBkZWJ1Z1ByaW50ZigiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlm
CiAgICAgaWYgKGlzS25vd25Ob3RCb29sZWFuKG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw3ICs5ODQs
NyBAQCB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCBub2RlSW5kZXgsIERhdGFGb3JtYXQmIHJldHVy
bkZvcm1hdCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50Zihz
dGRlcnIsICJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICBkZWJ1Z1ByaW50ZigiU3Bl
Y0ludEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9k
ZUluZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0
dWFsUmVnaXN0ZXIoKTsKQEAgLTExMjksNyArMTEyOSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludFMKIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNEb3VibGVAJWQgICAiLCBub2RlSW5kZXgp
OworICAgIGRlYnVnUHJpbnRmKCJTcGVjRG91YmxlQCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRp
ZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtMTI4MCw3ICsxMjgw
LDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogewog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWND
ZWxsQCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICBkZWJ1Z1ByaW50ZigiU3BlY0NlbGxAJWQgICAi
LCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVy
KCk7CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVDZWxsCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAg
IGZwcmludGYoc3RkZXJyLCAiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOworICAgIGRlYnVn
UHJpbnRmKCJTcGVjQm9vbEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBOb2RlJiBu
b2RlID0gYXQobm9kZUluZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMwLDMzICs0MzAsMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRTdHJp
bmcoRGF0YQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZHVtcChjb25zdCBjaGFyKiBsYWJlbCkKIHsK
ICAgICBpZiAobGFiZWwpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiPCVzPlxuIiwgbGFiZWwp
OworICAgICAgICBkZWJ1Z1ByaW50ZigiPCVzPlxuIiwgbGFiZWwpOwogCi0gICAgZnByaW50Zihz
dGRlcnIsICIgIGdwcnM6XG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiICBncHJzOlxuIik7CiAgICAg
bV9ncHJzLmR1bXAoKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgZnByczpcbiIpOworICAgIGRl
YnVnUHJpbnRmKCIgIGZwcnM6XG4iKTsKICAgICBtX2ZwcnMuZHVtcCgpOwotICAgIGZwcmludGYo
c3RkZXJyLCAiICBWaXJ0dWFsUmVnaXN0ZXJzOlxuIik7CisgICAgZGVidWdQcmludGYoIiAgVmly
dHVhbFJlZ2lzdGVyczpcbiIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dlbmVy
YXRpb25JbmZvLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0g
bV9nZW5lcmF0aW9uSW5mb1tpXTsKICAgICAgICAgaWYgKGluZm8uYWxpdmUoKSkKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiICAgICUgM2Q6JXMlcyIsIGksIGRhdGFGb3JtYXRTdHJpbmco
aW5mby5yZWdpc3RlckZvcm1hdCgpKSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnNwaWxsRm9ybWF0
KCkpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgJSAzZDolcyVzIiwgaSwgZGF0YUZv
cm1hdFN0cmluZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8u
c3BpbGxGb3JtYXQoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiAgICAlIDNkOltfX11bX19dIiwgaSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiICAg
ICUgM2Q6W19fXVtfX10iLCBpKTsKICAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0RG91YmxlKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI6ZnByJWRc
biIsIGluZm8uZnByKCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIjpmcHIlZFxuIiwgaW5m
by5mcHIoKSk7CiAgICAgICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgICAgICAmJiAhKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykKICNlbmRpZgogICAgICAgICAgICAgKSB7
CiAgICAgICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiOiVzXG4iLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5n
cHIoKSkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdO
YW1lKGluZm8uZ3ByKCkpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlxuIik7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9CiAgICAg
aWYgKGxhYmVsKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwvJXM+XG4iLCBsYWJlbCk7Cisg
ICAgICAgIGRlYnVnUHJpbnRmKCI8LyVzPlxuIiwgbGFiZWwpOwogfQogI2VuZGlmCiAKQEAgLTQ2
OCwxMyArNDY4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVuY3koKQog
CiAgICAgZm9yIChncHJfaXRlcmF0b3IgaXRlciA9IG1fZ3Bycy5iZWdpbigpOyBpdGVyICE9IG1f
Z3Bycy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChpdGVyLmlzTG9ja2VkKCkpIHsKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDog
Z3ByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOworICAgICAgICAgICAgZGVi
dWdQcmludGYoIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGdwciAlcyBpcyBsb2NrZWQu
XG4iLCBpdGVyLmRlYnVnTmFtZSgpKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZm9yIChmcHJfaXRlcmF0b3IgaXRlciA9IG1fZnBycy5iZWdpbigp
OyBpdGVyICE9IG1fZnBycy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChpdGVyLmlzTG9j
a2VkKCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NI
RUNLIGZhaWxlZDogZnByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOworICAg
ICAgICAgICAgZGVidWdQcmludGYoIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGZwciAl
cyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVnTmFtZSgpKTsKICAgICAgICAgICAgIGZhaWxlZCA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gaW5m
by5ncHIoKTsKICAgICAgICAgICAgIEFTU0VSVChncHIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAg
ICAgICAgICBpZiAobV9ncHJzLm5hbWUoZ3ByKSAhPSB2aXJ0dWFsUmVnaXN0ZXIpIHsKLSAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6
IG5hbWUgbWlzbWF0Y2ggZm9yIHZpcnR1YWwgcmVnaXN0ZXIgJWQgKGdwciAlcykuXG4iLCB2aXJ0
dWFsUmVnaXN0ZXIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBm
b3IgdmlydHVhbCByZWdpc3RlciAlZCAoZ3ByICVzKS5cbiIsIHZpcnR1YWxSZWdpc3RlciwgR1BS
SW5mbzo6ZGVidWdOYW1lKGdwcikpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjaGVja0NvbnNpc3RlbmN5KCkKICAgICAgICAgICAgIEZQUlJlZyBm
cHIgPSBpbmZvLmZwcigpOwogICAgICAgICAgICAgQVNTRVJUKGZwciAhPSBJbnZhbGlkRlBSUmVn
KTsKICAgICAgICAgICAgIGlmIChtX2ZwcnMubmFtZShmcHIpICE9IHZpcnR1YWxSZWdpc3Rlcikg
ewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNL
IGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgdmlydHVhbCByZWdpc3RlciAlZCAoZnByICVzKS5c
biIsIHZpcnR1YWxSZWdpc3RlciwgRlBSSW5mbzo6ZGVidWdOYW1lKGZwcikpOworICAgICAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1p
c21hdGNoIGZvciB2aXJ0dWFsIHJlZ2lzdGVyICVkIChmcHIgJXMpLlxuIiwgdmlydHVhbFJlZ2lz
dGVyLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSk7CiAgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI3LDE4ICs1Mjcs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby5ncHIo
KSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sg
ZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxu
IiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBn
cHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVh
bFJlZ2lzdGVyKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KICNlbHNl
CiAgICAgICAgIGlmICghKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykpIHsK
ICAgICAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby5ncHIoKSkgewotICAgICAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFt
ZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVi
dWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYo
IkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IG5hbWUgbWlzbWF0Y2ggZm9yIGdwciAlcyAo
dmlydHVhbCByZWdpc3RlciAlZCkuXG4iLCBpdGVyLmRlYnVnTmFtZSgpLCB2aXJ0dWFsUmVnaXN0
ZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8udGFnR1BS
KCkgJiYgaXRlci5yZWdJRCgpICE9IGluZm8ucGF5bG9hZEdQUigpKSB7Ci0gICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1p
c21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05h
bWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiREZH
X0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0
dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7
CiAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVu
Y3koKQogCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2
aXJ0dWFsUmVnaXN0ZXJdOwogICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8uZnByKCkp
IHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZh
aWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZnByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIs
IGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBkZWJ1Z1By
aW50ZigiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZnBy
ICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxS
ZWdpc3Rlcik7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9j
ayYKICAgICAgICAgbV9jb2RlT3JpZ2luRm9yT1NSID0gbm9kZS5jb2RlT3JpZ2luOwogICAgICAg
ICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY3VsYXRpdmVKSVQgc2tpcHBp
bmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAgICIsIChpbnQpbV9jb21w
aWxlSW5kZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNl
dCgpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJTcGVjdWxhdGl2ZUpJVCBza2lwcGluZyBO
b2RlIEAlZCAoYmMjJXUpIGF0IEpJVCBvZmZzZXQgMHgleCAgICAgIiwgKGludCltX2NvbXBpbGVJ
bmRleCwgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1faml0LmRlYnVnT2Zmc2V0KCkp
OwogI2VuZGlmCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKICAgICAgICAgICAgIGNh
c2UgU2V0TG9jYWw6CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShCYXNpY0Jsb2NrJgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgCiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTcGVj
dWxhdGl2ZUpJVCBnZW5lcmF0aW5nIE5vZGUgQCVkIChiYyMldSkgYXQgSklUIG9mZnNldCAweCV4
ICAgIiwgKGludCltX2NvbXBpbGVJbmRleCwgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgs
IG1faml0LmRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGVidWdQcmludGYoIlNwZWN1bGF0
aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAi
LCAoaW50KW1fY29tcGlsZUluZGV4LCBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbV9q
aXQuZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKICNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9F
VkVSWV9OT0RFKQogICAgICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwpAQCAtMTAxMSwyMCAr
MTAxMSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICAgICAgaWYgKG5vZGUuaGFzUmVzdWx0
KCkpIHsKICAgICAgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlv
bkluZm9bbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKV07Ci0gICAgICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICItPiAlcywgdnIjJWQiLCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSwgKGludClub2RlLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1Z1ByaW50ZigiLT4gJXMsIHZyIyVkIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSksIChpbnQpbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiwgJXMiLCBGUFJJ
bmZvOjpkZWJ1Z05hbWUoaW5mby5mcHIoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVi
dWdQcmludGYoIiwgJXMiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5mcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiLCAlcyAlcyIsIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnRhZ0dQUigpKSwg
R1BSSW5mbzo6ZGVidWdOYW1lKGluZm8ucGF5bG9hZEdQUigpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z1ByaW50ZigiLCAlcyAlcyIsIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnRh
Z0dQUigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8ucGF5bG9hZEdQUigpKSk7CiAjZW5kaWYK
ICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIsICVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIsICVzIiwgR1BSSW5mbzo6ZGVidWdOYW1l
KGluZm8uZ3ByKCkpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgICAgIik7CisgICAgICAgICAgICAgICAgZGVidWdQcmludGYoIiAgICAiKTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAg
ICIpOworICAgICAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIgICAgIik7CiAjZW5kaWYKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTEwMzIsMTQgKzEwMzIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
YXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgY29tcHV0ZVZhbHVlUmVjb3ZlcnlG
b3IoYXJndW1lbnRUb09wZXJhbmQoaSkpLmR1bXAoc3RkZXJyKTsKICAgICAgICAgCi0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiIDogIik7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgOiAiKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IG9wZXJhbmQgPSAwOyBvcGVyYW5kIDwgKGludCltX3Zh
cmlhYmxlcy5zaXplKCk7ICsrb3BlcmFuZCkKICAgICAgICAgICAgIGNvbXB1dGVWYWx1ZVJlY292
ZXJ5Rm9yKG9wZXJhbmQpLmR1bXAoc3RkZXJyKTsKICNlbmRpZgogCiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgIGRl
YnVnUHJpbnRmKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGUgYWJzdHJhY3Qgc3RhdGUgaXMgcmVtYXRlcmlhbGl6ZWQgZm9yIHRoZSBuZXh0IG5v
ZGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IEdDVGltZXIgewogICAgIH0KICAgICB+R0NUaW1lcigp
CiAgICAgewotICAgICAgICBwcmludGYoIiVzOiAlLjJsZm1zIChhdmcuICUuMmxmLCBtaW4uICUu
MmxmLCBtYXguICUuMmxmKVxuIiwgbV9uYW1lLCBtX3RpbWUgKiAxMDAwLCBtX3RpbWUgKiAxMDAw
IC8gbV9jb3VudCwgbV9taW4qMTAwMCwgbV9tYXgqMTAwMCk7CisgICAgICAgIGRlYnVnUHJpbnRm
KCIlczogJS4ybGZtcyAoYXZnLiAlLjJsZiwgbWluLiAlLjJsZiwgbWF4LiAlLjJsZilcbiIsIG1f
bmFtZSwgbV90aW1lICogMTAwMCwgbV90aW1lICogMTAwMCAvIG1fY291bnQsIG1fbWluKjEwMDAs
IG1fbWF4KjEwMDApOwogICAgIH0KICAgICBkb3VibGUgbV90aW1lOwogICAgIGRvdWJsZSBtX21p
bjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgR0NDb3VudGVyIHsKICAgICB9CiAgICAgfkdD
Q291bnRlcigpCiAgICAgewotICAgICAgICBwcmludGYoIiVzOiAlenUgdmFsdWVzIChhdmcuICV6
dSwgbWluLiAlenUsIG1heC4gJXp1KVxuIiwgbV9uYW1lLCBtX3RvdGFsLCBtX3RvdGFsIC8gbV9j
b3VudCwgbV9taW4sIG1fbWF4KTsKKyAgICAgICAgZGVidWdQcmludGYoIiVzOiAlenUgdmFsdWVz
IChhdmcuICV6dSwgbWluLiAlenUsIG1heC4gJXp1KVxuIiwgbV9uYW1lLCBtX3RvdGFsLCBtX3Rv
dGFsIC8gbV9jb3VudCwgbV9taW4sIG1fbWF4KTsKICAgICB9CiAgICAgY29uc3QgY2hhciogbV9u
YW1lOwogICAgIHNpemVfdCBtX2NvdW50OwpAQCAtMzgxLDggKzM4MSw4IEBAIHZvaWQgSGVhcDo6
ZGVzdHJveSgpCiAgICAgQVNTRVJUKCFzaXplKCkpOwogICAgIAogI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCi0gICAgbV9zbG90VmlzaXRvci5tX3Zpc2l0ZWRUeXBlQ291bnRzLmR1
bXAoc3RkZXJyLCAiVmlzaXRlZCBUeXBlIENvdW50cyIpOwotICAgIG1fZGVzdHJveWVkVHlwZUNv
dW50cy5kdW1wKHN0ZGVyciwgIkRlc3Ryb3llZCBUeXBlIENvdW50cyIpOworICAgIG1fc2xvdFZp
c2l0b3IubV92aXNpdGVkVHlwZUNvdW50cy5kdW1wKFdURjo6ZGVidWdGaWxlKCksICJWaXNpdGVk
IFR5cGUgQ291bnRzIik7CisgICAgbV9kZXN0cm95ZWRUeXBlQ291bnRzLmR1bXAoV1RGOjpkZWJ1
Z0ZpbGUoKSwgIkRlc3Ryb3llZCBUeXBlIENvdW50cyIpOwogI2VuZGlmCiAgICAgCiAgICAgcmVs
ZWFzZUZyZWVCbG9ja3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
IkhlYXBCbG9jay5oIgogCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2luY2x1ZGUgPHd0Zi9E
ZWJ1Z0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5oPgpAQCAtMzYsOSArMzcsMTEgQEAKICNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVf
VFJBTlNJVElPTlMgMAogCiAjaWYgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTlMKLSNk
ZWZpbmUgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTihibG9jaykgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHByaW50ZigiJXM6JWQgJXM6IGJs
b2NrICVzID0gJXAsICVkXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sICNibG9j
aywgKGJsb2NrKSwgKGJsb2NrKS0+bV9zdGF0ZSk7IFwKKyNkZWZpbmUgSEVBUF9MT0dfQkxPQ0tf
U1RBVEVfVFJBTlNJVElPTihibG9jaykgZG8geyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgZGVidWdQcmludGYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXywgX19GVU5DVElPTl9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICNibG9jaywgKGJsb2NrKSwgKGJsb2NrKS0+bV9zdGF0ZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCiAjZGVmaW5lIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT04oYmxvY2spICgodm9pZCkwKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDEwNzAy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgQ2FsbEZyYW1lOjpkdW1wQ2FsbGVy
KCkKICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwogICAgIAogICAgIGludGVycHJldGVyKCktPnJldHJp
ZXZlTGFzdENhbGxlcih0aGlzLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5n
LCBmdW5jdGlvbik7Ci0gICAgcHJpbnRmKCJDYWxscG9pbnQgPT4gJXM6JWRcbiIsIHVybFN0cmlu
Zy51dGY4KCkuZGF0YSgpLCBzaWduZWRMaW5lTnVtYmVyKTsKKyAgICBkZWJ1Z1ByaW50ZigiQ2Fs
bHBvaW50ID0+ICVzOiVkXG4iLCB1cmxTdHJpbmcudXRmOCgpLmRhdGEoKSwgc2lnbmVkTGluZU51
bWJlcik7CiB9CiAKIFJlZ2lzdGVyRmlsZSogQ2FsbEZyYW1lOjpyZWdpc3RlckZpbGUoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsMTAgKzU5MiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpkdW1wQ2FsbEZyYW1lKENhbGxGcmFtCiAKIHZvaWQgSW50ZXJwcmV0
ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgcHJpbnRmKCJS
ZWdpc3RlciBmcmFtZTogXG5cbiIpOwotICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c
biIpOwotICAgIHByaW50ZigiICAgICAgICAgICAgdXNlICAgICAgICAgICAgfCAgIGFkZHJlc3Mg
IHwgICAgICAgICAgICAgICAgdmFsdWUgICAgICAgICAgICAgICBcbiIpOwotICAgIHByaW50Zigi
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgIGRlYnVnUHJpbnRmKCJSZWdpc3RlciBmcmFt
ZTogXG5cbiIpOworICAgIGRlYnVnUHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Cisg
ICAgZGVidWdQcmludGYoIiAgICAgICAgICAgIHVzZSAgICAgICAgICAgIHwgICBhZGRyZXNzICB8
ICAgICAgICAgICAgICAgIHZhbHVlICAgICAgICAgICAgICAgXG4iKTsKKyAgICBkZWJ1Z1ByaW50
ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGNvbnN0IFJlZ2lzdGVyKiBpdDsKQEAgLTYw
NSwzMCArNjA1LDMwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0K
ICAgICBpdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlclNpemUgLSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKICAgICB2ID0gKCppdCku
anNWYWx1ZSgpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgcHJpbnRmKCJbdGhpc10gICAg
ICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAweCVsbHggXG4iLCBpdCwgdi5kZXNjcmlw
dGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0OworICAgIGRlYnVnUHJpbnRmKCJbdGhp
c10gICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAweCVsbHggXG4iLCBpdCwgdi5k
ZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0OwogI2Vsc2UKLSAgICBwcmlu
dGYoIlt0aGlzXSAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgaXQs
IHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsgKytpdDsKKyAgICBkZWJ1Z1By
aW50ZigiW3RoaXNdICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgJXAgXG4iLCBp
dCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0OwogI2VuZGlmCiAg
ICAgZW5kID0gaXQgKyBtYXgoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxLCAwKTsgLy8g
LSAxIHRvIHNraXAgInRoaXMiCiAgICAgaWYgKGl0ICE9IGVuZCkgewogICAgICAgICBkbyB7CiAg
ICAgICAgICAgICB2ID0gKCppdCkuanNWYWx1ZSgpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgICAgICBwcmludGYoIltwYXJhbV0gICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUt
MTZzIDB4JWxseCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiW3BhcmFtXSAgICAgICAgICAgICAgICAgICAgfCAl
MTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5j
b2RlKHYpKTsKICNlbHNlCi0gICAgICAgICAgICBwcmludGYoIltwYXJhbV0gICAgICAgICAgICAg
ICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1
ZTo6ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbcGFyYW1dICAgICAgICAg
ICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpT
VmFsdWU6OmVuY29kZSh2KSk7CiAjZW5kaWYKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgIH0g
d2hpbGUgKGl0ICE9IGVuZCk7CiAgICAgfQotICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS1cbiIpOwotICAgIHByaW50ZigiW0NvZGVCbG9ja10gICAgICAgICAgICAgICAgfCAlMTBwIHwg
JXAgXG4iLCBpdCwgKCppdCkuY29kZUJsb2NrKCkpOyArK2l0OwotICAgIHByaW50ZigiW1Njb3Bl
Q2hhaW5dICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuc2NvcGVDaGFp
bigpKTsgKytpdDsKLSAgICBwcmludGYoIltDYWxsZXJSZWdpc3RlcnNdICAgICAgICAgIHwgJTEw
cCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsraXQ7Ci0gICAgcHJpbnRmKCJbUmV0dXJuUENd
ICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBcbiIsIGl0LCAoKml0KS52UEMoKSk7ICsraXQ7
Ci0gICAgcHJpbnRmKCJbQXJndW1lbnRDb3VudF0gICAgICAgICAgICB8ICUxMHAgfCAlZCBcbiIs
IGl0LCAoKml0KS5pKCkpOyArK2l0OwotICAgIHByaW50ZigiW0NhbGxlZV0gICAgICAgICAgICAg
ICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuZnVuY3Rpb24oKSk7ICsraXQ7Ci0gICAg
cHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGVidWdQcmludGYoIi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiW0NvZGVCbG9ja10gICAgICAg
ICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuY29kZUJsb2NrKCkpOyArK2l0Owor
ICAgIGRlYnVnUHJpbnRmKCJbU2NvcGVDaGFpbl0gICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBc
biIsIGl0LCAoKml0KS5zY29wZUNoYWluKCkpOyArK2l0OworICAgIGRlYnVnUHJpbnRmKCJbQ2Fs
bGVyUmVnaXN0ZXJzXSAgICAgICAgICB8ICUxMHAgfCAlZCBcbiIsIGl0LCAoKml0KS5pKCkpOyAr
K2l0OworICAgIGRlYnVnUHJpbnRmKCJbUmV0dXJuUENdICAgICAgICAgICAgICAgICB8ICUxMHAg
fCAlcCBcbiIsIGl0LCAoKml0KS52UEMoKSk7ICsraXQ7CisgICAgZGVidWdQcmludGYoIltBcmd1
bWVudENvdW50XSAgICAgICAgICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsr
aXQ7CisgICAgZGVidWdQcmludGYoIltDYWxsZWVdICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8
ICVwIFxuIiwgaXQsICgqaXQpLmZ1bmN0aW9uKCkpOyArK2l0OworICAgIGRlYnVnUHJpbnRmKCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAKICAgICBpbnQgcmVnaXN0ZXJDb3VudCA9IDA7CiAK
QEAgLTYzNywzMCArNjM3LDMwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2Fs
bEZyYW0KICAgICAgICAgZG8gewogICAgICAgICAgICAgdiA9ICgqaXQpLmpzVmFsdWUoKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgcHJpbnRmKCJbciUyZF0gICAgICAgICAg
ICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQs
IHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRlYnVn
UHJpbnRmKCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4
IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2Rl
KHYpKTsKICNlbHNlCi0gICAgICAgICAgICBwcmludGYoIltyJTJkXSAgICAgICAgICAgICAgICAg
ICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0
aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiW3Il
MmRdICAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgcmVnaXN0ZXJD
b3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbmRpZgog
ICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgICsrcmVnaXN0ZXJDb3VudDsKICAgICAgICAg
fSB3aGlsZSAoaXQgIT0gZW5kKTsKICAgICB9Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuIik7CisgICAgZGVidWdQcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAog
ICAgIGVuZCA9IGl0ICsgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAtIGNvZGVCbG9j
ay0+bV9udW1WYXJzOwogICAgIGlmIChpdCAhPSBlbmQpIHsKICAgICAgICAgZG8gewogICAgICAg
ICAgICAgdiA9ICgqaXQpLmpzVmFsdWUoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICAgICAgcHJpbnRmKCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMg
MHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6
ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJbciUyZF0gICAgICAgICAgICAg
ICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYu
ZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCi0gICAgICAgICAgICBw
cmludGYoIltyJTJkXSAgICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIs
IHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7
CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiW3IlMmRdICAgICAgICAgICAgICAgICAgICAgIHwg
JTEwcCB8ICUtMTZzICVwIFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwg
SlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbmRpZgogICAgICAgICAgICAgKytpdDsKICAgICAgICAg
ICAgICsrcmVnaXN0ZXJDb3VudDsKICAgICAgICAgfSB3aGlsZSAoaXQgIT0gZW5kKTsKICAgICB9
Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGVidWdQcmludGYo
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIG1fbGFiZWxzW21fYnl0ZWNvZGVP
ZmZzZXRdID0gbGFiZWwoKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkKLSAgICAgICAgcHJp
bnRmKCJPbGQgSklUIGVtaXR0aW5nIGNvZGUgZm9yIGJjIyV1IGF0IG9mZnNldCAweCVseC5cbiIs
IG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICBkZWJ1Z1By
aW50ZigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQgMHglbHguXG4i
LCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKICNlbmRpZgogCiAgICAg
ICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9u
LT51Lm9wY29kZSkpIHsKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yIGJjIyV1IGF0IG9mZnNldCAw
eCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAg
ICBkZWJ1Z1ByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yIGJjIyV1IGF0IG9m
ZnNldCAweCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOwog
I2VuZGlmCiAKICAgICAgICAgc3dpdGNoIChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJy
ZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSkgewpAQCAtNzA2LDcgKzcwNiw3IEBAIEpJVENvZGUg
SklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICBDb2RlUmVmIHJlc3VsdCA9IHBh
dGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkK
LSAgICBwcmludGYoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAgYXQgWyVwLCAlcCkuXG4iLCBt
X2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnQoKSwgcmVzdWx0LmV4
ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOworICAgIGRlYnVnUHJpbnRmKCJKSVQgZ2VuZXJhdGVk
IGNvZGUgZm9yICVwIGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVjdXRh
YmxlTWVtb3J5KCktPnN0YXJ0KCksIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCktPmVuZCgpKTsK
ICNlbmRpZgogICAgIAogICAgIHJldHVybiBKSVRDb2RlKHJlc3VsdCwgSklUQ29kZTo6QmFzZWxp
bmVKSVQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlz
aW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMxLDE2ICsxOTMxLDE2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tG
cmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAg
IHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9
ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2st
PnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyKCkpOworICAgIGRlYnVnUHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9v
cCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0g
JXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1
dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29k
ZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChj
b2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIkNvbnNpZGVyaW5nIGxvb3AgT1NSIGludG8gJXAo
JXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJl
cGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNz
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50
ZXIoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJDb25zaWRlcmluZyBsb29wIE9TUiBpbnRvICVw
KCVwKSB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vz
c0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3Vu
dGVyKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNo
b3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKLSAgICAgICAgICAgIHByaW50ZigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCgl
cCkgKGluIGxvb3ApLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwor
ICAgICAgICAgICAgZGVidWdQcmludGYoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAo
JXApIChpbiBsb29wKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsK
ICNlbmRpZgogICAgICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcHRpbWl6ZV9mcm9tCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2stPnNo
b3VsZE9wdGltaXplTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAg
ICAgICAgcHJpbnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChpbiBsb29wKSBiZWNh
dXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuXG4iLCBjb2RlQmxvY2spOworICAgICAgICAg
ICAgZGVidWdQcmludGYoIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIGxvb3ApIGJl
Y2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk1OCwxNCArMTk1OCwxNCBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGNvZGVCbG9jay0+Y29tcGlsZU9wdGltaXplZChjYWxsRnJhbWUsIHNjb3BlQ2hh
aW4pOwogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCiAgICAgICAgIGlmIChlcnJvcikKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogb3B0aW1pemVkIGNvbXBpbGF0aW9u
IGZyb20gbG9vcCBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJXQVJOSU5H
OiBvcHRpbWl6ZWQgY29tcGlsYXRpb24gZnJvbSBsb29wIGZhaWxlZC5cbiIpOwogI2Vsc2UKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgaWYg
KGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSA9PSBjb2RlQmxvY2spIHsKICNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQotICAgICAgICAgICAgcHJpbnRmKCJPcHRpbWl6aW5nICVwIGZyb20gbG9v
cCBmYWlsZWQuXG4iLCBjb2RlQmxvY2spOworICAgICAgICAgICAgZGVidWdQcmludGYoIk9wdGlt
aXppbmcgJXAgZnJvbSBsb29wIGZhaWxlZC5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKQEAgLTE5NzksNyArMTk3OSw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICAKICAgICBpZiAodm9pZCogYWRkcmVzcyA9
IERGRzo6cHJlcGFyZU9TUkVudHJ5KGNhbGxGcmFtZSwgb3B0aW1pemVkQ29kZUJsb2NrLCBieXRl
Y29kZUluZGV4KSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50
ZigiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3VjY2VlZGVkLCBwZXJmb3JtaW5nIE9TUiBhZnRl
ciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKKyAgICAgICAgZGVidWdQcmludGYoIk9wdGltaXppbmcgJXAgZnJvbSBs
b29wIHN1Y2NlZWRlZCwgcGVyZm9ybWluZyBPU1IgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYK
IAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwpAQCAtMTk4OSw3ICsxOTg5LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIH0KICAgICAK
ICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiT3B0aW1pemluZyAlcCBm
cm9tIGxvb3Agc3VjY2VlZGVkLCBPU1IgZmFpbGVkLCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBk
ZWJ1Z1ByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3VjY2VlZGVkLCBPU1IgZmFpbGVk
LCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXph
dGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgLy8gQ291bnQgdGhlIE9TUiBmYWls
dXJlIGFzIGEgc3BlY3VsYXRpb24gZmFpbHVyZS4gSWYgdGhpcyBoYXBwZW5zIGEgbG90LCB0aGVu
CkBAIC0xOTk3LDcgKzE5OTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6
ZV9mcm9tCiAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5jb3VudFNwZWN1bGF0aW9uRmFpbHVyZSgp
OwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJFbmNvdW50
ZXJlZCBsb29wIE9TUiBmYWlsdXJlIGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1
LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVw
bGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxh
Y2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CisgICAgZGVidWdQcmludGYoIkVu
Y291bnRlcmVkIGxvb3AgT1NSIGZhaWx1cmUgaW50byAlcCglcCkgd2l0aCBzdWNjZXNzL2ZhaWwg
JXUvJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgY29kZUJsb2Nr
LT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+
cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsKICNlbmRpZgogCiAgICAg
Ly8gV2UgYXJlIGEgbG90IG1vcmUgY29uc2VydmF0aXZlIGFib3V0IHRyaWdnZXJpbmcgcmVvcHRp
bWl6YXRpb24gYWZ0ZXIgT1NSIGZhaWx1cmUgdGhhbgpAQCAtMjAxMCw3ICsyMDEwLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIC8vIHJlb3B0aW1pemF0
aW9uIHRyaWdnZXIuCiAgICAgaWYgKG9wdGltaXplZENvZGVCbG9jay0+c2hvdWxkUmVvcHRpbWl6
ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJU
cmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCBhZnRlciBPU1IgZmFp
bCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAgICAgIGRl
YnVnUHJpbnRmKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCBh
ZnRlciBPU1IgZmFpbCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7
CiAjZW5kaWYKICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIwMjksMjAgKzIwMjksMjAgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0
aW1pemVfZnJvbQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50
ZXJlZCBvcHRpbWl6ZV9mcm9tX3JldCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4i
LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7
CisgICAgZGVidWdQcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9yZXQgd2l0aCBleGVjdXRl
Q291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBj
b2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICAgICAgcHJpbnRmKCJSZXR1cm5pbmcgZnJvbSBvbGQgSklUIGNhbGwgZnJhbWUgd2l0aCBvcHRp
bWl6ZWQgcmVwbGFjZW1lbnQgJXAoJXApLCB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldSIsIGNvZGVC
bG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkt
PnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5z
cGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOworICAgICAgICBkZWJ1Z1ByaW50ZigiUmV0dXJuaW5n
IGZyb20gb2xkIEpJVCBjYWxsIGZyYW1lIHdpdGggb3B0aW1pemVkIHJlcGxhY2VtZW50ICVwKCVw
KSwgd2l0aCBzdWNjZXNzL2ZhaWwgJXUvJXUiLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3Vu
dGVyKCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigp
KTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJh
bWUoKTsKICAgICAgICAgaWYgKGNhbGxlckZyYW1lKQotICAgICAgICAgICAgcHJpbnRmKCIsIGNh
bGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxlciBjb2RlIGJsb2NrID0gJXAiLCBj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCksIGNhbGxlckZyYW1lLT5j
b2RlQmxvY2soKSk7Ci0gICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCIsIGNhbGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxlciBjb2RlIGJsb2Nr
ID0gJXAiLCBjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCksIGNhbGxl
ckZyYW1lLT5jb2RlQmxvY2soKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJcbiIpOwogI2VuZGlm
CiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJlb3B0aW1pemVO
b3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBwcmludGYo
IlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4pLlxuIiwgY29k
ZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAgICAgICAgICAgZGVidWdQcmlu
dGYoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4pLlxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwogI2VuZGlmCiAgICAgICAgICAg
ICBjb2RlQmxvY2stPnJlb3B0aW1pemUoKTsKICAgICAgICAgfQpAQCAtMjA1Myw3ICsyMDUzLDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIAogICAgIGlm
ICghY29kZUJsb2NrLT5zaG91bGRPcHRpbWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChp
biByZXR1cm4pIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9j
ayk7CisgICAgICAgIGRlYnVnUHJpbnRmKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChp
biByZXR1cm4pIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9j
ayk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNjIsMTEgKzIwNjIsMTEg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogCiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gY29kZUJsb2NrLT5jb21waWxlT3B0aW1pemVkKGNhbGxGcmFtZSwgc2NvcGVD
aGFpbik7CiAgICAgaWYgKGVycm9yKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6
IG9wdGltaXplZCBjb21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZGVi
dWdQcmludGYoIldBUk5JTkc6IG9wdGltaXplZCBjb21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQu
XG4iKTsKICAgICAKICAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNvZGVCbG9j
aykgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50ZigiT3B0aW1p
emluZyAlcCBmcm9tIHJldHVybiBmYWlsZWQuXG4iLCBjb2RlQmxvY2spOworICAgICAgICBkZWJ1
Z1ByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIHJldHVybiBmYWlsZWQuXG4iLCBjb2RlQmxvY2sp
OwogI2VuZGlmCiAKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKQEAgLTIwNzcsNyArMjA3Nyw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICBBU1NFUlQoY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKIAogI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJPcHRpbWl6aW5nICVwIGZyb20gcmV0dXJuIHN1
Y2NlZWRlZCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9w
dGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkZWJ1Z1ByaW50ZigiT3B0aW1pemluZyAl
cCBmcm9tIHJldHVybiBzdWNjZWVkZWQgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKICAgICAK
ICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8d3RmL0RlYnVnTG9nZ2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTAyLDcgKzEwMyw3IEBAIHZvaWQgUHJvZmlsZTo6cmVzdG9yZUFsbCgpCiAjaWZuZGVmIE5ERUJV
Rwogdm9pZCBQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YSgpIGNvbnN0CiB7Ci0gICAgcHJpbnRmKCJD
YWxsIGdyYXBoOlxuIik7CisgICAgZGVidWdQcmludGYoIkNhbGwgZ3JhcGg6XG4iKTsKICAgICBt
X2hlYWQtPmRlYnVnUHJpbnREYXRhKDApOwogfQogCkBAIC0xMTgsMTggKzExOSwxOCBAQCB2b2lk
IFByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoCiAgICAgdHlwZWRlZiBWZWN0b3I8
TmFtZUNvdW50UGFpcj4gTmFtZUNvdW50UGFpclZlY3RvcjsKIAogICAgIEZ1bmN0aW9uQ2FsbEhh
c2hDb3VudCBjb3VudGVkRnVuY3Rpb25zOwotICAgIHByaW50ZigiQ2FsbCBncmFwaDpcbiIpOwor
ICAgIGRlYnVnUHJpbnRmKCJDYWxsIGdyYXBoOlxuIik7CiAgICAgbV9oZWFkLT5kZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKDAsIGNvdW50ZWRGdW5jdGlvbnMpOwogCi0gICAgcHJpbnRmKCJcblRv
dGFsIG51bWJlciBpbiBzdGFjazpcbiIpOworICAgIGRlYnVnUHJpbnRmKCJcblRvdGFsIG51bWJl
ciBpbiBzdGFjazpcbiIpOwogICAgIE5hbWVDb3VudFBhaXJWZWN0b3Igc29ydGVkRnVuY3Rpb25z
KGNvdW50ZWRGdW5jdGlvbnMuc2l6ZSgpKTsKICAgICBjb3B5VG9WZWN0b3IoY291bnRlZEZ1bmN0
aW9ucywgc29ydGVkRnVuY3Rpb25zKTsKIAogICAgIHN0ZDo6c29ydChzb3J0ZWRGdW5jdGlvbnMu
YmVnaW4oKSwgc29ydGVkRnVuY3Rpb25zLmVuZCgpLCBmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21w
YXJhdG9yKTsKICAgICBmb3IgKE5hbWVDb3VudFBhaXJWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gc29y
dGVkRnVuY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHNvcnRlZEZ1bmN0aW9ucy5lbmQoKTsgKytpdCkK
LSAgICAgICAgcHJpbnRmKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNlY29uZCwgVVN0cmlu
ZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIgICAg
ICAgICUtMTJkJXNcbiIsICgqaXQpLnNlY29uZCwgVVN0cmluZygoKml0KS5maXJzdCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBwcmludGYoIlxuU29ydCBieSB0b3Agb2Ygc3RhY2ssIHNhbWUgY29s
bGFwc2VkICh3aGVuID49IDUpOlxuIik7CisgICAgZGVidWdQcmludGYoIlxuU29ydCBieSB0b3Ag
b2Ygc3RhY2ssIHNhbWUgY29sbGFwc2VkICh3aGVuID49IDUpOlxuIik7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3Bw
CShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
UHJvZmlsZXIuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgorI2luY2x1ZGUgPHd0Zi9EZWJ1Z0xvZ2dpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtMjkzLDkgKzI5NCw5IEBAIHZvaWQgUHJv
ZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhKGludCBpbmQKIHsKICAgICAvLyBQcmludCBmdW5jdGlv
biBuYW1lcwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kZW50TGV2ZWw7ICsraSkKLSAgICAg
ICAgcHJpbnRmKCIgICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAiKTsKIAotICAgIHByaW50
ZigiRnVuY3Rpb24gTmFtZSAlcyAlZCBTZWxmVGltZSAlLjNmbXMvJS4zZiUlIFRvdGFsVGltZSAl
LjNmbXMvJS4zZiUlIFZTZWxmICUuM2ZtcyBWVG90YWwgJS4zZm1zIFZpc2libGUgJXMgTmV4dCBT
aWJsaW5nICVzXG4iLAorICAgIGRlYnVnUHJpbnRmKCJGdW5jdGlvbiBOYW1lICVzICVkIFNlbGZU
aW1lICUuM2Ztcy8lLjNmJSUgVG90YWxUaW1lICUuM2Ztcy8lLjNmJSUgVlNlbGYgJS4zZm1zIFZU
b3RhbCAlLjNmbXMgVmlzaWJsZSAlcyBOZXh0IFNpYmxpbmcgJXNcbiIsCiAgICAgICAgIGZ1bmN0
aW9uTmFtZSgpLnV0ZjgoKS5kYXRhKCksIAogICAgICAgICBtX251bWJlck9mQ2FsbHMsIG1fYWN0
dWFsU2VsZlRpbWUsIHNlbGZQZXJjZW50KCksIG1fYWN0dWFsVG90YWxUaW1lLCB0b3RhbFBlcmNl
bnQoKSwKICAgICAgICAgbV92aXNpYmxlU2VsZlRpbWUsIG1fdmlzaWJsZVRvdGFsVGltZSwgCkBA
IC0zMTIsMjAgKzMxMywyMCBAQCB2b2lkIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YShpbnQg
aW5kCiAvLyBwcmludCB0aGUgcHJvZmlsZWQgZGF0YSBpbiBhIGZvcm1hdCB0aGF0IG1hdGNoZXMg
dGhlIHRvb2wgc2FtcGxlJ3Mgb3V0cHV0LgogZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKGludCBpbmRlbnRMZXZlbCwgRnVuY3Rpb25DYWxsSGFzaENvdW50JiBj
b3VudGVkRnVuY3Rpb25zKSBjb25zdAogewotICAgIHByaW50ZigiICAgICIpOworICAgIGRlYnVn
UHJpbnRmKCIgICAgIik7CiAKICAgICAvLyBQcmludCBmdW5jdGlvbiBuYW1lcwogICAgIGNvbnN0
IGNoYXIqIG5hbWUgPSBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpOwogICAgIGRvdWJsZSBz
YW1wbGVDb3VudCA9IG1fYWN0dWFsVG90YWxUaW1lICogMTAwMDsKICAgICBpZiAoaW5kZW50TGV2
ZWwpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnRMZXZlbDsgKytpKQotICAg
ICAgICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAgIik7CiAK
ICAgICAgICAgIGNvdW50ZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uTmFtZSgpLmltcGwoKSk7CiAK
LSAgICAgICAgcHJpbnRmKCIlLjBmICVzXG4iLCBzYW1wbGVDb3VudCA/IHNhbXBsZUNvdW50IDog
MSwgbmFtZSk7CisgICAgICAgIGRlYnVnUHJpbnRmKCIlLjBmICVzXG4iLCBzYW1wbGVDb3VudCA/
IHNhbXBsZUNvdW50IDogMSwgbmFtZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHByaW50ZigiJXNc
biIsIG5hbWUpOworICAgICAgICBkZWJ1Z1ByaW50ZigiJXNcbiIsIG5hbWUpOwogCiAgICAgKytp
bmRlbnRMZXZlbDsKIApAQCAtMzM3LDExICszMzgsMTEgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpk
ZWJ1Z1ByaW50RGF0YVNhbXBsZQogICAgIHN1bU9mQ2hpbGRyZW5zQ291bnQgKj0gMTAwMDsgICAg
Ly8KICAgICAvLyBQcmludCByZW1haW5kZXIgb2Ygc2FtcGxlcyB0byBtYXRjaCBzYW1wbGUncyBv
dXRwdXQKICAgICBpZiAoc3VtT2ZDaGlsZHJlbnNDb3VudCA8IHNhbXBsZUNvdW50KSB7Ci0gICAg
ICAgIHByaW50ZigiICAgICIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiICAgICIpOwogICAgICAg
ICB3aGlsZSAoaW5kZW50TGV2ZWwtLSkKLSAgICAgICAgICAgIHByaW50ZigiICAiKTsKKyAgICAg
ICAgICAgIGRlYnVnUHJpbnRmKCIgICIpOwogCi0gICAgICAgIHByaW50ZigiJS4wZiAlc1xuIiwg
c2FtcGxlQ291bnQgLSBzdW1PZkNoaWxkcmVuc0NvdW50LCBmdW5jdGlvbk5hbWUoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgZGVidWdQcmludGYoIiUuMGYgJXNcbiIsIHNhbXBsZUNvdW50IC0g
c3VtT2ZDaGlsZHJlbnNDb3VudCwgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1fYWN0dWFsVG90YWxUaW1lOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6ZHVtcFJlZ0V4
cFRyYWNlKCkKICAgICBSVFRyYWNlTGlzdDo6aXRlcmF0b3IgaXRlciA9ICsrbV9ydFRyYWNlTGlz
dC0+YmVnaW4oKTsKICAgICAKICAgICBpZiAoaXRlciAhPSBtX3J0VHJhY2VMaXN0LT5lbmQoKSkg
ewotICAgICAgICBwcmludGYoIlxuUmVnRXhwIFRyYWNpbmdcbiIpOwotICAgICAgICBwcmludGYo
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoKCkgICAgbWF0Y2hlc1xuIik7Ci0gICAgICAgIHByaW50ZigiUmVndWxhciBFeHBy
ZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICBKSVQgQWRkcmVzcyAgICAgIGNhbGxzICAg
ICAgZm91bmRcbiIpOwotICAgICAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS1cbiIp
OworICAgICAgICBkZWJ1Z1ByaW50ZigiXG5SZWdFeHAgVHJhY2luZ1xuIik7CisgICAgICAgIGRl
YnVnUHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCgpICAgIG1hdGNoZXNcbiIpOworICAgICAgICBkZWJ1Z1ByaW50
ZigiUmVndWxhciBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICBKSVQgQWRkcmVz
cyAgICAgIGNhbGxzICAgICAgZm91bmRcbiIpOworICAgICAgICBkZWJ1Z1ByaW50ZigiLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0rLS0tLS0tLS0tLVxuIik7CiAgICAgCiAgICAgICAgIHVuc2lnbmVkIHJlQ291bnQgPSAw
OwogICAgIAogICAgICAgICBmb3IgKDsgaXRlciAhPSBtX3J0VHJhY2VMaXN0LT5lbmQoKTsgKytp
dGVyLCArK3JlQ291bnQpCiAgICAgICAgICAgICAoKml0ZXIpLT5wcmludFRyYWNlRGF0YSgpOwog
Ci0gICAgICAgIHByaW50ZigiJWQgUmVndWxhciBFeHByZXNzaW9uc1xuIiwgcmVDb3VudCk7Cisg
ICAgICAgIGRlYnVnUHJpbnRmKCIlZCBSZWd1bGFyIEV4cHJlc3Npb25zXG4iLCByZUNvdW50KTsK
ICAgICB9CiAgICAgCiAgICAgbV9ydFRyYWNlTGlzdC0+Y2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEzLDI0ICs0MTMsMjQgQEAgdm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRl
cgogICAgICAgICAgICAgZGlmZmVyZW5jZXMrKzsKIAogICAgIGlmIChkaWZmZXJlbmNlcykgewot
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlZ0V4cCBEaXNjcmVwZW5jeSBmb3IgLyVzL1xuICAg
IHN0cmluZyBpbnB1dCAiLCBwYXR0ZXJuKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRlYnVn
UHJpbnRmKCJSZWdFeHAgRGlzY3JlcGVuY3kgZm9yIC8lcy9cbiAgICBzdHJpbmcgaW5wdXQgIiwg
cGF0dGVybigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB1bnNpZ25lZCBzZWdtZW50TGVuID0g
cy5sZW5ndGgoKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCk7CiAKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsIChzZWdtZW50TGVuIDwgMTUwKSA/ICJcIiVzXCJcbiIgOiAiXCIl
MTQ4cy4uLlwiXG4iLCBzLnV0ZjgoKS5kYXRhKCkgKyBzdGFydE9mZnNldCk7CisgICAgICAgIGRl
YnVnUHJpbnRmKChzZWdtZW50TGVuIDwgMTUwKSA/ICJcIiVzXCJcbiIgOiAiXCIlMTQ4cy4uLlwi
XG4iLCBzLnV0ZjgoKS5kYXRhKCkgKyBzdGFydE9mZnNldCk7CiAKICAgICAgICAgaWYgKGppdFJl
c3VsdCAhPSBpbnRlcnByZXRlclJlc3VsdCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgICAgSklUIHJlc3VsdCA9ICVkLCBibGFoIGludGVycHJldGVkIHJlc3VsdCA9ICVkXG4iLCBq
aXRSZXN1bHQsIGludGVycHJldGVyUmVzdWx0KTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIg
ICAgSklUIHJlc3VsdCA9ICVkLCBibGFoIGludGVycHJldGVkIHJlc3VsdCA9ICVkXG4iLCBqaXRS
ZXN1bHQsIGludGVycHJldGVyUmVzdWx0KTsKICAgICAgICAgICAgIGRpZmZlcmVuY2VzLS07CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBDb3JyZWN0
IHJlc3VsdCA9ICVkXG4iLCBqaXRSZXN1bHQpOworICAgICAgICAgICAgZGVidWdQcmludGYoIiAg
ICBDb3JyZWN0IHJlc3VsdCA9ICVkXG4iLCBqaXRSZXN1bHQpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGRpZmZlcmVuY2VzKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAyLCBp
ID0gMDsgaSA8IG1fbnVtU3VicGF0dGVybnM7IGogKz0yLCBpKyspIHsKICAgICAgICAgICAgICAg
ICBpZiAob2Zmc2V0VmVjdG9yW2pdICE9IGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2pdKQotICAg
ICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgb2Zmc2V0WyVkXSA9ICVk
LCBpbnRlcnByZXRlZCBvZmZzZXRbJWRdID0gJWRcbiIsIGosIG9mZnNldFZlY3RvcltqXSwgaiwg
aW50ZXJwcmV0ZXJPZmZzZXRWZWN0b3Jbal0pOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z1By
aW50ZigiICAgIEpJVCBvZmZzZXRbJWRdID0gJWQsIGludGVycHJldGVkIG9mZnNldFslZF0gPSAl
ZFxuIiwgaiwgb2Zmc2V0VmVjdG9yW2pdLCBqLCBpbnRlcnByZXRlck9mZnNldFZlY3RvcltqXSk7
CiAgICAgICAgICAgICAgICAgaWYgKChvZmZzZXRWZWN0b3Jbal0gPj0gMCkgJiYgKG9mZnNldFZl
Y3RvcltqKzFdICE9IGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2orMV0pKQotICAgICAgICAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgb2Zmc2V0WyVkXSA9ICVkLCBpbnRlcnBy
ZXRlZCBvZmZzZXRbJWRdID0gJWRcbiIsIGorMSwgb2Zmc2V0VmVjdG9yW2orMV0sIGorMSwgaW50
ZXJwcmV0ZXJPZmZzZXRWZWN0b3JbaisxXSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnUHJp
bnRmKCIgICAgSklUIG9mZnNldFslZF0gPSAlZCwgaW50ZXJwcmV0ZWQgb2Zmc2V0WyVkXSA9ICVk
XG4iLCBqKzEsIG9mZnNldFZlY3RvcltqKzFdLCBqKzEsIGludGVycHJldGVyT2Zmc2V0VmVjdG9y
W2orMV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuY3BwCShyZXZpc2lv
biAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgdm9pZCBBYnN0cmFjdFNh
bXBsaW5nQ291bnRlcjo6ZHVtcCgpCiB7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQog
ICAgIGlmIChzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXJDaGFpbkVuZCkgewotICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRl
ciBWYWx1ZXM6XG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBW
YWx1ZXM6XG4iKTsKICAgICAgICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNv
dW50ZXIgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAm
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291
bnRlci0+bV9uZXh0KQotICAgICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJD
b3VudGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOwotICAgICAgICBwcmludGYo
IlxuXG4iKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJD
b3VudGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOworICAgICAgICBkZWJ1Z1By
aW50ZigiXG5cbiIpOwogICAgIH0KICAgICBzX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5o
CShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ0NvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoK
ICAgICB+RGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyKCkKICAgICB7CiAgICAgICAgIGlmICghc19j
b21wbGV0ZWQpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRlbGV0YWJsZVNhbXBsaW5n
Q291bnRlciBcIiVzXCIgZGVsZXRlZCBlYXJseSAod2l0aCBjb3VudCAlbGxkKVxuIiwgbV9uYW1l
LCBtX2NvdW50ZXIpOworICAgICAgICAgICAgZGVidWdGaWxlKCJEZWxldGFibGVTYW1wbGluZ0Nv
dW50ZXIgXCIlc1wiIGRlbGV0ZWQgZWFybHkgKHdpdGggY291bnQgJWxsZClcbiIsIG1fbmFtZSwg
bV9jb3VudGVyKTsKICAgICAgICAgLy8gT3VyIG1fcmVmZXJlciBwb2ludGVyIHNob3VsZCBrbm93
IHdoZXJlIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBpcywKICAgICAgICAgLy8gYW5kIG1fbmV4
dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0aGUgcHJldmlvdXMgbm9kZSBpbiB0aGUg
bGlzdC4KICAgICAgICAgQVNTRVJUKCptX3JlZmVyZXIgPT0gdGhpcyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDEyICs0MiwxMiBAQCB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpwcmludCgp
CiAgICAgICAgIG8tPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobywgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEVuZCA9
IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBb
c2NvcGUgJXBdIC0tLS0tXG4iLCBvKTsKKyAgICAgICAgZGVidWdQcmludGYoIi0tLS0tIFtzY29w
ZSAlcF0gLS0tLS1cbiIsIG8pOwogICAgICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBwcm9wSXRlciA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgcHJvcEl0ZXIgIT0g
cHJvcEVuZDsgcHJvcEl0ZXIrKykgewogICAgICAgICAgICAgSWRlbnRpZmllciBuYW1lID0gKnBy
b3BJdGVyOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcywgIiwgbmFtZS51c3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBkZWJ1Z1ByaW50ZigiJXMsICIsIG5hbWUu
dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiXG4iKTsKKyAgICAgICAgZGVidWdQcmludGYoIlxuIik7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9u
IDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1w
U3RhdGlzdGljcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcmludGYoIk51bWJlciBvZiBs
aXZlIFN0cnVjdHVyZXM6ICVkXG4iLCBsaXZlU3RydWN0dXJlU2V0LnNpemUoKSk7Ci0gICAgcHJp
bnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB1c2luZyB0aGUgc2luZ2xlIGl0ZW0gb3B0aW1pemF0
aW9uIGZvciB0cmFuc2l0aW9uIG1hcDogJWRcbiIsIG51bWJlclVzaW5nU2luZ2xlU2xvdCk7Ci0g
ICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IGFyZSBsZWFmIG5vZGVzOiAlZFxu
IiwgbnVtYmVyTGVhZik7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IHNp
bmdsZXRvbnM6ICVkXG4iLCBudW1iZXJTaW5nbGV0b25zKTsKLSAgICBwcmludGYoIk51bWJlciBv
ZiBTdHJ1Y3R1cmVzIHdpdGggUHJvcGVydHlNYXBzOiAlZFxuIiwgbnVtYmVyV2l0aFByb3BlcnR5
TWFwcyk7Ci0KLSAgICBwcmludGYoIlNpemUgb2YgYSBzaW5nbGUgU3RydWN0dXJlczogJWRcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplb2YoU3RydWN0dXJlKSkpOwotICAgIHByaW50Zigi
U2l6ZSBvZiBzdW0gb2YgYWxsIHByb3BlcnR5IG1hcHM6ICVkXG4iLCB0b3RhbFByb3BlcnR5TWFw
c1NpemUpOwotICAgIHByaW50ZigiU2l6ZSBvZiBhdmVyYWdlIG9mIGFsbCBwcm9wZXJ0eSBtYXBz
OiAlZlxuIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbFByb3BlcnR5TWFwc1NpemUpIC8gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihsaXZlU3RydWN0dXJlU2V0LnNpemUoKSkpOworICAgIGRlYnVnUHJp
bnRmKCJOdW1iZXIgb2YgbGl2ZSBTdHJ1Y3R1cmVzOiAlZFxuIiwgbGl2ZVN0cnVjdHVyZVNldC5z
aXplKCkpOworICAgIGRlYnVnUHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB1c2luZyB0aGUg
c2luZ2xlIGl0ZW0gb3B0aW1pemF0aW9uIGZvciB0cmFuc2l0aW9uIG1hcDogJWRcbiIsIG51bWJl
clVzaW5nU2luZ2xlU2xvdCk7CisgICAgZGVidWdQcmludGYoIk51bWJlciBvZiBTdHJ1Y3R1cmVz
IHRoYXQgYXJlIGxlYWYgbm9kZXM6ICVkXG4iLCBudW1iZXJMZWFmKTsKKyAgICBkZWJ1Z1ByaW50
ZigiTnVtYmVyIG9mIFN0cnVjdHVyZXMgdGhhdCBzaW5nbGV0b25zOiAlZFxuIiwgbnVtYmVyU2lu
Z2xldG9ucyk7CisgICAgZGVidWdQcmludGYoIk51bWJlciBvZiBTdHJ1Y3R1cmVzIHdpdGggUHJv
cGVydHlNYXBzOiAlZFxuIiwgbnVtYmVyV2l0aFByb3BlcnR5TWFwcyk7CisKKyAgICBkZWJ1Z1By
aW50ZigiU2l6ZSBvZiBhIHNpbmdsZSBTdHJ1Y3R1cmVzOiAlZFxuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemVvZihTdHJ1Y3R1cmUpKSk7CisgICAgZGVidWdQcmludGYoIlNpemUgb2Ygc3Vt
IG9mIGFsbCBwcm9wZXJ0eSBtYXBzOiAlZFxuIiwgdG90YWxQcm9wZXJ0eU1hcHNTaXplKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiU2l6ZSBvZiBhdmVyYWdlIG9mIGFsbCBwcm9wZXJ0eSBtYXBzOiAlZlxu
Iiwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbFByb3BlcnR5TWFwc1NpemUpIC8gc3RhdGljX2Nh
c3Q8ZG91YmxlPihsaXZlU3RydWN0dXJlU2V0LnNpemUoKSkpOwogI2Vsc2UKLSAgICBwcmludGYo
IkR1bXBpbmcgU3RydWN0dXJlIHN0YXRpc3RpY3MgaXMgbm90IGVuYWJsZWQuXG4iKTsKKyAgICBk
ZWJ1Z1ByaW50ZigiRHVtcGluZyBTdHJ1Y3R1cmUgc3RhdGlzdGljcyBpcyBub3QgZW5hYmxlZC5c
biIpOwogI2VuZGlmCiB9CiAKQEAgLTYwMSwxMSArNjAxLDExIEBAIHN0YXRpYyBQcm9wZXJ0eU1h
cFN0YXRpc3RpY3NFeGl0TG9nZ2VyIGwKIAogUHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dl
cjo6flByb3BlcnR5TWFwU3RhdGlzdGljc0V4aXRMb2dnZXIoKQogewotICAgIHByaW50ZigiXG5K
U0M6OlByb3BlcnR5TWFwIHN0YXRpc3RpY3NcblxuIik7Ci0gICAgcHJpbnRmKCIlZCBwcm9iZXNc
biIsIG51bVByb2Jlcyk7Ci0gICAgcHJpbnRmKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBu
dW1Db2xsaXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOwotICAgIHBy
aW50ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKLSAgICBwcmludGYoIiVkIHJlbW92
ZXNcbiIsIG51bVJlbW92ZXMpOworICAgIGRlYnVnUHJpbnRmKCJcbkpTQzo6UHJvcGVydHlNYXAg
c3RhdGlzdGljc1xuXG4iKTsKKyAgICBkZWJ1Z1ByaW50ZigiJWQgcHJvYmVzXG4iLCBudW1Qcm9i
ZXMpOworICAgIGRlYnVnUHJpbnRmKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBudW1Db2xs
aXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOworICAgIGRlYnVnUHJp
bnRmKCIlZCByZWhhc2hlc1xuIiwgbnVtUmVoYXNoZXMpOworICAgIGRlYnVnUHJpbnRmKCIlZCBy
ZW1vdmVzXG4iLCBudW1SZW1vdmVzKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENvZGVQcm9maWxlOjpzYW1wbGUodm9pZCogcGMsIHZv
aWQqCiAKIHZvaWQgQ29kZVByb2ZpbGU6OnJlcG9ydCgpCiB7Ci0gICAgZnByaW50ZihzdGRvdXQs
ICI8Q29kZVByb2ZpbGluZyAlczolZD5cbiIsIG1fZmlsZS5kYXRhKCksIG1fbGluZU5vKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiPENvZGVQcm9maWxpbmcgJXM6JWQ+XG4iLCBtX2ZpbGUuZGF0YSgpLCBt
X2xpbmVObyk7CiAKICAgICAvLyBIb3cgbWFueSBmcmFtZXMgb2YgQy1jb2RlIHRvIHByaW50IC0g
MCwgaWYgbm90IHZlcmJvc2UsIDEgaWYgdmVyYm9zZSwgdXAgdG8gMTAyNCBpZiB2ZXJ5IHZlcmJv
c2UuCiAgICAgdW5zaWduZWQgcmVjdXJzaW9uTGltaXQgPSBDb2RlUHJvZmlsaW5nOjpiZVZlcnlW
ZXJib3NlKCkgPyAxMDI0IDogQ29kZVByb2ZpbGluZzo6YmVWZXJib3NlKCk7CkBAIC0xNzYsMTMg
KzE3NiwxMyBAQCB2b2lkIENvZGVQcm9maWxlOjpyZXBvcnQoKQogICAgIH0KIAogICAgIC8vIE91
dHB1dCB0aGUgcHJvZmlsZSB0cmVlLgotICAgIGZwcmludGYoc3Rkb3V0LCAiVG90YWwgc2FtcGxl
czogJWxsZFxuIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihwcm9maWxlLmNoaWxkQ291bnQoKSkp
OworICAgIGRlYnVnUHJpbnRmKCJUb3RhbCBzYW1wbGVzOiAlbGxkXG4iLCBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KHByb2ZpbGUuY2hpbGRDb3VudCgpKSk7CiAgICAgcHJvZmlsZS5kdW1wKCk7CiAg
ICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDAgOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkK
ICAgICAgICAgbV9jaGlsZHJlbltpXS0+cmVwb3J0KCk7CiAKLSAgICBmcHJpbnRmKHN0ZG91dCwg
IjwvQ29kZVByb2ZpbGluZyAlczolZD5cbiIsIG1fZmlsZS5kYXRhKCksIG1fbGluZU5vKTsKKyAg
ICBkZWJ1Z1ByaW50ZigiPC9Db2RlUHJvZmlsaW5nICVzOiVkPlxuIiwgbV9maWxlLmRhdGEoKSwg
bV9saW5lTm8pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJv
ZmlsZVRyZWVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1Byb2ZpbGVUcmVlTm9kZS5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFByaW50IHRoZSBudW1iZXIgb2Ygc2FtcGxl
cywgdGhlIG5hbWUgb2YgdGhpcyBub2RlLCBhbmQgdGhlIG51bWJlciBvZiBzYW1wbGVzIHRoYXQg
YXJlIHN0YWNrLXRvcAogICAgICAgICAgICAgLy8gaW4gdGhpcyBub2RlIChzYW1wbGVzIGRpcmVj
dGx5IHdpdGhpbiB0aGlzIG5vZGUsIGV4Y2x1ZGluZyBzYW1wbGVzIGluIGNoaWxkcmVuLgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluZGVudDsgKytpKQotICAgICAgICAg
ICAgICAgIGZwcmludGYoc3Rkb3V0LCAiICAgICIpOwotICAgICAgICAgICAgZnByaW50ZihzdGRv
dXQsICIlIDhsbGQ6ICVzICglbGxkIHN0YWNrIHRvcClcbiIsCisgICAgICAgICAgICAgICAgZGVi
dWdQcmludGYoIiAgICAiKTsKKyAgICAgICAgICAgIGRlYnVnUHJpbnRmKCIlIDhsbGQ6ICVzICgl
bGxkIHN0YWNrIHRvcClcbiIsCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PihlbnRyeS0+c2Vjb25kLmNvdW50KCkpLAogICAgICAgICAgICAgICAgIGVudHJ5LT5maXJzdC51
dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZW50
cnktPnNlY29uZC5jb3VudCgpIC0gZW50cnktPnNlY29uZC5jaGlsZENvdW50KCkpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTcsNiArMTcsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBDcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oCiAgICAgQ3VycmVudFRpbWUuaAogICAgIERhdGVNYXRoLmgKKyAg
ICBEZWJ1Z0xvZ2dpbmcuaAogICAgIERlY2ltYWxOdW1iZXIuaAogICAgIERlY29kZXIuaAogICAg
IERlcXVlLmgKQEAgLTE0MCw2ICsxNDEsNyBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICBDcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKICAgICBDdXJyZW50VGltZS5jcHAKICAgICBEYXRl
TWF0aC5jcHAKKyAgICBEZWJ1Z0xvZ2dpbmcuY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAKICAg
ICBEeW5hbWljQW5ub3RhdGlvbnMuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVidWdMb2dnaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2luZy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2luZy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlYnVnTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworI2RlZmluZSBE
RUJVR19MT0dfVE9fRklMRSAwCisKKy8vIFVuY29tbWVudCB0byBmb3JjZSBsb2dnaW5nIHRvIHRo
ZSBnaXZlbiBmaWxlIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUg
c2F5cy4KKy8vICNkZWZpbmUgREVCVUdfTE9HX0ZJTEVOQU1FICIvdG1wL1dURkxvZy50eHQiCisK
K25hbWVzcGFjZSBXVEYgeworCisjaWYgREVCVUdfTE9HX1RPX0ZJTEUKK3N0YXRpYyBGSUxFKiBm
aWxlOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZU9uY2UoKQoreworI2lmZGVmIERF
QlVHX0xPR19GSUxFTkFNRQorICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gREVCVUdfTE9HX0ZJ
TEVOQU1FCisjZWxzZQorICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREVC
VUdfTE9HX0ZJTEVOQU1FIik7CisjZW5kaWYKKyAgICBpZiAoZmlsZW5hbWUpIHsKKyAgICAgICAg
ZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAidyIpOworICAgICAgICBpZiAoIWZpbGUpCisgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENvdWxkIG5vdCBvcGVuIGxvZyBmaWxlICVz
IGZvciB3cml0aW5nLlxuIiwgZmlsZW5hbWUpOworICAgIH0KKyAgICBpZiAoIWZpbGUpCisgICAg
ICAgIGZpbGUgPSBzdGRlcnI7CisgICAgCisgICAgc2V0dmJ1ZihmaWxlLCAwLCBfSU9OQkYsIDAp
OyAvLyBQcmVmZXIgdW5idWZmZXJlZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0IGEgZnVsbCBsb2cg
dXBvbiBjcmFzaCBvciBkZWFkbG9jay4KK30KKworI2lmIE9TKERBUldJTikKK3N0YXRpYyBwdGhy
ZWFkX29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5JVDsK
KyNlbmRpZgorCitzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCit7CisjaWYgT1MoREFS
V0lOKQorICAgIHB0aHJlYWRfb25jZSgmaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlS2V5LCBpbml0aWFs
aXplTG9nRmlsZU9uY2UpOworI2Vsc2UKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIGluaXRpYWxp
emVMb2dGaWxlT25jZSgpOworI2VuZGlmCit9CisKK0ZJTEUqIGRlYnVnRmlsZSgpCit7CisgICAg
aW5pdGlhbGl6ZUxvZ0ZpbGUoKTsKKyAgICByZXR1cm4gZmlsZTsKK30KKyNlbHNlIC8vIERFQlVH
X0xPR19UT19GSUxFCitGSUxFKiBkZWJ1Z0ZpbGUoKQoreworICAgIHJldHVybiBzdGRlcnI7Cit9
CisjZW5kaWYgLy8gREVCVUdfTE9HX1RPX0ZJTEUKKwordm9pZCBkZWJ1Z1ZQcmludGYoY29uc3Qg
Y2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCit7CisgICAgdmZwcmludGYoZGVidWdGaWxl
KCksIGZvcm1hdCwgYXJnTGlzdCk7Cit9CisKK3ZvaWQgZGVidWdQcmludGYoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdMaXN0OworICAgIHZhX3N0YXJ0KGFyZ0xp
c3QsIGZvcm1hdCk7CisgICAgZGVidWdWUHJpbnRmKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgdmFf
ZW5kKGFyZ0xpc3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9EZWJ1Z0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0RlYnVnTG9nZ2luZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9EZWJ1Z0xvZ2dpbmcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIERlYnVnTG9nZ2luZ19oCisjZGVmaW5lIERlYnVnTG9nZ2luZ19oCisKKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0ZJTEUqIGRlYnVnRmlsZSgpOworCit2b2lk
IGRlYnVnVlByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDEsIDApOwordm9pZCBkZWJ1Z1ByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
V1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OmRlYnVnUHJpbnRmOworCisjZW5kaWYgLy8gRGVidWdMb2dnaW5nX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmNwcAkocmV2aXNpb24gMTA3MDIyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCwxNSArNDQsMTUgQEAgSGFzaFRhYmxlU3RhdHM6On5IYXNoVGFibGVTdGF0cygpCiB7
CiAgICAgLy8gRG9uJ3QgbG9jayBoYXNoVGFibGVTdGF0c011dGV4IGhlcmUgYmVjYXVzZSBpdCBj
YW4gY2F1c2UgZGVhZGxvY2tzIGF0IHNodXRkb3duIAogICAgIC8vIGlmIGFueSB0aHJlYWQgd2Fz
IGtpbGxlZCB3aGlsZSBob2xkaW5nIHRoZSBtdXRleC4KLSAgICBwcmludGYoIlxuV1RGOjpIYXNo
VGFibGUgc3RhdGlzdGljc1xuXG4iKTsKLSAgICBwcmludGYoIiVkIGFjY2Vzc2VzXG4iLCBudW1B
Y2Nlc3Nlcyk7Ci0gICAgcHJpbnRmKCIlZCB0b3RhbCBjb2xsaXNpb25zLCBhdmVyYWdlICUuMmYg
cHJvYmVzIHBlciBhY2Nlc3NcbiIsIG51bUNvbGxpc2lvbnMsIDEuMCAqIChudW1BY2Nlc3NlcyAr
IG51bUNvbGxpc2lvbnMpIC8gbnVtQWNjZXNzZXMpOwotICAgIHByaW50ZigibG9uZ2VzdCBjb2xs
aXNpb24gY2hhaW46ICVkXG4iLCBtYXhDb2xsaXNpb25zKTsKKyAgICBkZWJ1Z1ByaW50ZigiXG5X
VEY6Okhhc2hUYWJsZSBzdGF0aXN0aWNzXG5cbiIpOworICAgIGRlYnVnUHJpbnRmKCIlZCBhY2Nl
c3Nlc1xuIiwgbnVtQWNjZXNzZXMpOworICAgIGRlYnVnUHJpbnRmKCIlZCB0b3RhbCBjb2xsaXNp
b25zLCBhdmVyYWdlICUuMmYgcHJvYmVzIHBlciBhY2Nlc3NcbiIsIG51bUNvbGxpc2lvbnMsIDEu
MCAqIChudW1BY2Nlc3NlcyArIG51bUNvbGxpc2lvbnMpIC8gbnVtQWNjZXNzZXMpOworICAgIGRl
YnVnUHJpbnRmKCJsb25nZXN0IGNvbGxpc2lvbiBjaGFpbjogJWRcbiIsIG1heENvbGxpc2lvbnMp
OwogICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG1heENvbGxpc2lvbnM7IGkrKykgewotICAgICAg
ICBwcmludGYoIiAgJWQgbG9va3VwcyB3aXRoIGV4YWN0bHkgJWQgY29sbGlzaW9ucyAoJS4yZiUl
ICwgJS4yZiUlIHdpdGggdGhpcyBtYW55IG9yIG1vcmUpXG4iLCBjb2xsaXNpb25HcmFwaFtpXSwg
aSwgMTAwLjAgKiAoY29sbGlzaW9uR3JhcGhbaV0gLSBjb2xsaXNpb25HcmFwaFtpKzFdKSAvIG51
bUFjY2Vzc2VzLCAxMDAuMCAqIGNvbGxpc2lvbkdyYXBoW2ldIC8gbnVtQWNjZXNzZXMpOworICAg
ICAgICBkZWJ1Z1ByaW50ZigiICAlZCBsb29rdXBzIHdpdGggZXhhY3RseSAlZCBjb2xsaXNpb25z
ICglLjJmJSUgLCAlLjJmJSUgd2l0aCB0aGlzIG1hbnkgb3IgbW9yZSlcbiIsIGNvbGxpc2lvbkdy
YXBoW2ldLCBpLCAxMDAuMCAqIChjb2xsaXNpb25HcmFwaFtpXSAtIGNvbGxpc2lvbkdyYXBoW2kr
MV0pIC8gbnVtQWNjZXNzZXMsIDEwMC4wICogY29sbGlzaW9uR3JhcGhbaV0gLyBudW1BY2Nlc3Nl
cyk7CiAgICAgfQotICAgIHByaW50ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKLSAg
ICBwcmludGYoIiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzKTsKKyAgICBkZWJ1Z1ByaW50
ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKKyAgICBkZWJ1Z1ByaW50ZigiJWQgcmVp
bnNlcnRzXG4iLCBudW1SZWluc2VydHMpOwogfQogCiB2b2lkIEhhc2hUYWJsZVN0YXRzOjpyZWNv
cmRDb2xsaXNpb25BdENvdW50KGludCBjb3VudCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWV0YUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4
LDcgKzQyOCw3IEBAIHZvaWQgTWV0YUFsbG9jYXRvcjo6ZnJlZUZyZWVTcGFjZU5vZGUoRnIKICNp
ZiBFTkFCTEUoTUVUQV9BTExPQ0FUT1JfUFJPRklMRSkKIHZvaWQgTWV0YUFsbG9jYXRvcjo6ZHVt
cFByb2ZpbGUoKQogewotICAgIHByaW50ZigibnVtIGFsbG9jYXRpb25zID0gJXUsIG51bSBmcmVl
cyA9ICV1XG4iLCBtX251bUFsbG9jYXRpb25zLCBtX251bUZyZWVzKTsKKyAgICBkZWJ1Z1ByaW50
ZigibnVtIGFsbG9jYXRpb25zID0gJXUsIG51bSBmcmVlcyA9ICV1XG4iLCBtX251bUFsbG9jYXRp
b25zLCBtX251bUZyZWVzKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0RlYnVnTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtMTA5Nyw3ICsxMDk4LDcgQEAgVmVjdG9yPGNoYXI+IGFzY2lpRGVi
dWcoU3RyaW5nJiBzdHJpbmcpOwogCiB2b2lkIFN0cmluZzo6c2hvdygpIGNvbnN0CiB7Ci0gICAg
ZnByaW50ZihzdGRlcnIsICIlc1xuIiwgYXNjaWlEZWJ1ZyhpbXBsKCkpLmRhdGEoKSk7CisgICAg
ZGVidWdQcmludGYoIiVzXG4iLCBhc2NpaURlYnVnKGltcGwoKSkuZGF0YSgpKTsKIH0KIAogU3Ry
aW5nKiBzdHJpbmcoY29uc3QgY2hhciogcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJZYXJyLmgi
CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL0Rl
YnVnTG9nZ2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmbmRlZiBO
REVCVUcKQEAgLTE2ODIsMTAgKzE2ODMsMTAgQEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAg
ICB2b2lkIGR1bXBEaXNqdW5jdGlvbihCeXRlRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uKQogICAg
IHsKLSAgICAgICAgcHJpbnRmKCJCeXRlRGlzanVuY3Rpb24oJXApOlxuXHQiLCBkaXNqdW5jdGlv
bik7CisgICAgICAgIGRlYnVnUHJpbnRmKCJCeXRlRGlzanVuY3Rpb24oJXApOlxuXHQiLCBkaXNq
dW5jdGlvbik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaXNqdW5jdGlvbi0+
dGVybXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBwcmludGYoInsgJWQgfSAiLCBkaXNqdW5j
dGlvbi0+dGVybXNbaV0udHlwZSk7Ci0gICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAg
IGRlYnVnUHJpbnRmKCJ7ICVkIH0gIiwgZGlzanVuY3Rpb24tPnRlcm1zW2ldLnR5cGUpOworICAg
ICAgICBkZWJ1Z1ByaW50ZigiXG4iKTsKICAgICB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwNzQ4MykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDItMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2VuZCBhbGwgSlNDIGRlYnVnIGxvZ2dp
bmcgdG8gYSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgSW50cm9kdWNlZCB3dGYvRGVidWdMb2dnaW5nLCB3aGljaCBkZWZpbmVzIFdU
Rjo6ZGVidWdGaWxlLCBXVEY6OmRlYnVnUHJpbnRmLAorICAgICAgICBhbmQgV1RGOjpkZWJ1Z1ZQ
cmludGYuIENoYW5nZWQgYWxsIGRlYnVnZ2luZy0gYW5kIHByb2ZpbGluZy1yZWxhdGVkIHByaW50
ZnMKKyAgICAgICAgdG8gdXNlIFdURjo6ZGVidWdQcmludGYoKSBvciBvbmUgb2YgaXRzIGZyaWVu
ZHMuIEJ5IGRlZmF1bHQsIGRlYnVnIGxvZ2dpbmcKKyAgICAgICAgZ29lcyB0byBzdGRlcnIsIHVu
bGVzcyB5b3UgY2hhbmdlIHRoZSBzZXR0aW5nIGluIHd0Zi9EZWJ1Z0xvZ2dpbmcuY3BwLgorCisg
ICAgICAgICogV1RGLnBybzoKKwogMjAxMi0wMi0wMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVpbGQgd2hlbiBjcm9zcy1j
b21waWxpbmcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL1dURi5wcm8JKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBEYXRlTWF0aC5o
IFwKICAgICBEZWNpbWFsTnVtYmVyLmggXAogICAgIERlY29kZXIuaCBcCisgICAgRGVidWdMb2dn
aW5nLmggXCAKICAgICBEZXF1ZS5oIFwKICAgICBEaXNhbGxvd0NUeXBlLmggXAogICAgIGR0b2Eu
aCBcCkBAIC0xNzEsNiArMTcyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuY3BwIFwKICAgICBDdXJyZW50VGltZS5jcHAgXAogICAgIERhdGVNYXRo
LmNwcCBcCisgICAgRGVidWdMb2dnaW5nLmNwcCBcCiAgICAgRGVjaW1hbE51bWJlci5jcHAgXAog
ICAgIGR0b2EuY3BwIFwKICAgICBkdG9hL2JpZ251bS1kdG9hLmNjIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126644</attachid>
            <date>2012-02-11 13:45:38 -0800</date>
            <delta_ts>2012-02-11 14:48:11 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>debuglog_patch_3.diff</filename>
            <type>text/plain</type>
            <size>214588</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NDgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0MgZGVidWcgbG9nZ2luZyB0byBh
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJbnRyb2R1Y2VkIHd0Zi9EYXRhTG9nLCB3aGljaCBkZWZpbmVzIFdURjo6ZGF0YUZpbGUs
IFdURjo6ZGF0YUxvZywKKyAgICAgICAgYW5kIFdURjo6ZGF0YUxvZ1YuIENoYW5nZWQgYWxsIGRl
YnVnZ2luZy0gYW5kIHByb2ZpbGluZy1yZWxhdGVkIHByaW50ZnMKKyAgICAgICAgdG8gdXNlIFdU
Rjo6ZGF0YUxvZygpIG9yIG9uZSBvZiBpdHMgZnJpZW5kcy4gQnkgZGVmYXVsdCwgZGVidWcgbG9n
Z2luZworICAgICAgICBnb2VzIHRvIHN0ZGVyciwgdW5sZXNzIHlvdSBjaGFuZ2UgdGhlIHNldHRp
bmcgaW4gd3RmL0RhdGFMb2cuY3BwLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9XVEYvV1RGLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6Cisg
ICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmR1bXBMaW5rU3RhdGlzdGljcyk6CisgICAgICAgIChK
U0M6OkxpbmtCdWZmZXI6OmR1bXBDb2RlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvU0g0QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6dnByaW50ZlN0ZG91dEluc3RyKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnByaW50VW5hcnlPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRCaW5hcnlP
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRDb25kaXRpb25hbEp1bXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpwcmludENhbGxPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRQdXRC
eUlkT3ApOgorICAgICAgICAoSlNDOjpwcmludEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAg
KEpTQzo6cHJpbnRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJpbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50U3RydWN0dXJl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZHVtcFN0YXRpc3RpY3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6
ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5jcHA6CisgICAgICAgIChKU0M6Ok9wY29kZVN0YXRzOjp+T3Bjb2Rl
U3RhdHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nRmxhZ3M6OnN0b3ApOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1JlZ2lvbjo6
ZHVtcEludGVybmFsKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdUb29sOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0
ZTo6bWVyZ2VTdGF0ZUF0VGFpbCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhv
dXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlRGl2U2FmZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
KToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmludFdoaXRlU3BhY2UpOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpkdW1wQ29kZU9yaWdpbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0QXJndW1lbnRUeXBlcyk6
CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByb3BhZ2F0b3I6OmZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9y
Ojpwcm9wYWdhdGVBcml0aE5vZGVGbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6cHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3NGb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjpwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0JhY2t3YXJkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMpOgorICAgICAgICAo
SlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZVByZWRpY3Rpb25zRm9yd2FyZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlUHJlZGljdGlvbnNCYWNrd2FyZCk6
CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6ZG9Sb3VuZE9mRG91YmxlVm90aW5nKToK
KyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9y
OjpzdGFydEluZGV4Rm9yQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6
OmVuZEluZGV4Rm9yUHVyZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6c2V0
UmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmVsaW1pbmF0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmxvY2FsQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjphbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpERkc6
OlByb3BhZ2F0b3I6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFn
YXRvcjo6cGVyZm9ybUZvcndhcmRDRkEpOgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlckJhbmsu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJhbms6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdTY29yZUJvYXJkLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2NvcmVCb2FyZDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpkZXN0cm95KToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpkdW1wQ2FsbGVyKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvZmlsZTo6ZGVidWdQcmludERhdGEpOgorICAgICAgICAoSlNDOjpQcm9maWxlOjpkZWJ1Z1By
aW50RGF0YVNhbXBsZVN0eWxlKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YSk6CisgICAgICAgIChK
U0M6OlByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6ZHVt
cFJlZ0V4cFRyYWNlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChK
U0M6OlJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyKToKKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nQ291bnRlci5jcHA6CisgICAgICAgIChKU0M6OkFic3RyYWN0U2FtcGxpbmdD
b3VudGVyOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nQ291bnRlci5oOgorICAg
ICAgICAoSlNDOjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6On5EZWxldGFibGVTYW1wbGluZ0Nv
dW50ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6
OlNjb3BlQ2hhaW5Ob2RlOjpwcmludCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlcjo6flByb3BlcnR5TWFwU3RhdGlzdGlj
c0V4aXRMb2dnZXIpOgorICAgICAgICAqIHRvb2xzL0NvZGVQcm9maWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZVByb2ZpbGU6OnJlcG9ydCk6CisgICAgICAgICogdG9vbHMvUHJvZmlsZVRyZWVO
b2RlLmg6CisgICAgICAgIChKU0M6OlByb2ZpbGVUcmVlTm9kZTo6ZHVtcEludGVybmFsKToKKyAg
ICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0RhdGFMb2cuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlT25j
ZSk6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0
YUZpbGUpOgorICAgICAgICAoV1RGOjpkYXRhTG9nVik6CisgICAgICAgIChXVEY6OmRhdGFMb2cp
OgorICAgICAgICAqIHd0Zi9EYXRhTG9nLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKiB3dGYvSGFzaFRhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6On5I
YXNoVGFibGVTdGF0cyk6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3BwOgorICAgICAg
ICAoV1RGOjpNZXRhQWxsb2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFN0cmluZzo6c2hvdyk6CisgICAgICAgICogeWFyci9Z
YXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmR1
bXBEaXNqdW5jdGlvbik6CisKIDIwMTItMDItMTAgIFZpbmVldCBDaGF1ZGhhcnkgIDxyZ2Y3NDhA
bW90b3JvbGEuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Mjc1NgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsNiArNTY0LDggQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGlt
ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RhdGFMb2cuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGFMb2cuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRGVjb2Rlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5neXBpCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBACiAg
ICAgICAgICAgICAnd3RmL0RhdGVNYXRoLmgnLAogICAgICAgICAgICAgJ3d0Zi9EZWNpbWFsTnVt
YmVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9EZWNvZGVyLmgnLAorICAgICAgICAgICAgJ3d0Zi9E
YXRhTG9nLmgnLAogICAgICAgICAgICAgJ3d0Zi9EZXF1ZS5oJywKICAgICAgICAgICAgICd3dGYv
RGlzYWxsb3dDVHlwZS5oJywKICAgICAgICAgICAgICd3dGYvRG91Ymx5TGlua2VkTGlzdC5oJywK
QEAgLTU2MCw2ICs1NjEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9DdXJyZW50VGltZS5jcHAnLAog
ICAgICAgICAgICAgJ3d0Zi9EYXRlTWF0aC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9EZWNpbWFs
TnVtYmVyLmNwcCcsCisgICAgICAgICAgICAnd3RmL0RhdGFMb2cuY3BwJywKICAgICAgICAgICAg
ICd3dGYvRHluYW1pY0Fubm90YXRpb25zLmNwcCcsCiAgICAgICAgICAgICAnd3RmL0R5bmFtaWNB
bm5vdGF0aW9ucy5oJywKICAgICAgICAgICAgICd3dGYvRmFzdE1hbGxvYy5jcHAnLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL1dURi9XVEYudmNwcm9qCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC03MzMsNiArNzMzLDE0IEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5cd3RmXERhdGFMb2cuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxl
CisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxEYXRhTG9nLmgiCisJCQk+CisJCTwvRmlsZT4K
KwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXERlcXVlLmgiCiAJCQk+CiAJCTwv
RmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw4IEBACiAJCTBGOTYzQjJE
MTNGODU0MDIwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyQTEzRjg1M0JEMDAwMkQ5QjIgLyogTWV0
YUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGOTYzQjJGMTNGQzY2QkIwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyRTEz
RkM2NkFFMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlC
MiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjlGQzhEMDE0
RTYxMkQ4MDBENTJBRTAgLyogRGF0YUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDRDE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5j
cHAgKi87IH07CisJCTBGOUZDOEQxMTRFNjEyREEwMEQ1MkFFMCAvKiBEYXRhTG9nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDRTE0RTYxMkQ1
MDBENTJBRTAgLyogRGF0YUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJD
MEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovOyB9OwogCQkwRkJD
MEFFODE0OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJEN0U2NzE0NDc5
OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC04OTYsNiArODk4LDggQEAKIAkJMEY5NjNCMkIxM0Y4NTND
NzAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWV0YUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOTYzQjJFMTNGQzY2QUUwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFBbGxvY2F0b3JIYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZh
bHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RkM4Q0QxNEU2MTJENTAwRDUy
QUUwIC8qIERhdGFMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0YUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUZDOENFMTRFNjEy
RDUwMEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERhdGFMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCQzBBRTQxNDk2QzdD
MTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERGR0V4aXRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0V4aXRQcm9maWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2lu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjQsNiArMTk2OCw4IEBACiAJCTY1MTYyRUYxMDhF
NkEyMUMwMDc1NTZDRCAvKiB3dGYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTBGOUZDOENEMTRFNjEyRDUwMEQ1MkFFMCAvKiBEYXRhTG9nLmNwcCAqLywK
KwkJCQkwRjlGQzhDRTE0RTYxMkQ1MDBENTJBRTAgLyogRGF0YUxvZy5oICovLAogCQkJCUExRDc2
NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCAqLywKIAkJCQk5M0FBNEY3NzA5NTcy
NTFGMDA4NEIzQTcgLyogQWx3YXlzSW5saW5lLmggKi8sCiAJCQkJQTczQkUxNTQxNDg0MjA1MjAw
OTEyMDRCIC8qIEFycmF5QnVmZmVyLmNwcCAqLywKQEAgLTMxMjgsNiArMzEzNCw3IEBACiAJCQkJ
MEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdOb2RlUmVmZXJlbmNlQmxvYi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR05vZGVVc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUZDOEQxMTRFNjEyREEwMEQ1MkFFMCAvKiBEYXRhTG9n
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM2NzQsNiArMzY4MSw3IEBACiAJCQkJODZCNTgyNjcxNEQy
Nzk2QzAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4
MjY5MTREMjc5NzAwMEE5QzMwNiAvKiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY5RkM4RDAxNEU2MTJEODAwRDUyQUUwIC8qIERhdGFMb2cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNk
ZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KC0yKSkKIAogI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0zMTksMTMgKzMyMCwxMyBAQCBwcml2YXRlOgogICAgICAgICBsaW5rQ291bnQr
KzsKICAgICAgICAgdG90YWxJbml0aWFsU2l6ZSArPSBpbml0aWFsU2l6ZTsKICAgICAgICAgdG90
YWxGaW5hbFNpemUgKz0gZmluYWxTaXplOwotICAgICAgICBwcmludGYoImxpbmsgJXA6IG9yaWcg
JXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAlLjJmJSUpXG4iLCAKLSAgICAgICAgICAgICAgIGNv
ZGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsU2l6ZSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihmaW5hbFNpemUpLAotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
aXRpYWxTaXplIC0gZmluYWxTaXplKSwKLSAgICAgICAgICAgICAgIDEwMC4wICogKGluaXRpYWxT
aXplIC0gZmluYWxTaXplKSAvIGluaXRpYWxTaXplKTsKLSAgICAgICAgcHJpbnRmKCJcdHRvdGFs
ICV1OiBvcmlnICV1LCBjb21wYWN0ICV1IChkZWx0YSAldSwgJS4yZiUlKVxuIiwgCi0gICAgICAg
ICAgICAgICBsaW5rQ291bnQsIHRvdGFsSW5pdGlhbFNpemUsIHRvdGFsRmluYWxTaXplLCB0b3Rh
bEluaXRpYWxTaXplIC0gdG90YWxGaW5hbFNpemUsCi0gICAgICAgICAgICAgICAxMDAuMCAqICh0
b3RhbEluaXRpYWxTaXplIC0gdG90YWxGaW5hbFNpemUpIC8gdG90YWxJbml0aWFsU2l6ZSk7Cisg
ICAgICAgIGRhdGFMb2coImxpbmsgJXA6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1LCAl
LjJmJSUpXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxTaXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZpbmFsU2l6ZSksCisgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsU2l6ZSAtIGZpbmFs
U2l6ZSksCisgICAgICAgICAgICAgICAgICAgIDEwMC4wICogKGluaXRpYWxTaXplIC0gZmluYWxT
aXplKSAvIGluaXRpYWxTaXplKTsKKyAgICAgICAgZGF0YUxvZygiXHR0b3RhbCAldTogb3JpZyAl
dSwgY29tcGFjdCAldSAoZGVsdGEgJXUsICUuMmYlJSlcbiIsIAorICAgICAgICAgICAgICAgICAg
ICBsaW5rQ291bnQsIHRvdGFsSW5pdGlhbFNpemUsIHRvdGFsRmluYWxTaXplLCB0b3RhbEluaXRp
YWxTaXplIC0gdG90YWxGaW5hbFNpemUsCisgICAgICAgICAgICAgICAgICAgIDEwMC4wICogKHRv
dGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSkgLyB0b3RhbEluaXRpYWxTaXplKTsKICAg
ICB9CiAjZW5kaWYKICAgICAKQEAgLTM0MiwxNyArMzQzLDE3IEBAIHByaXZhdGU6CiAgICAgICAg
IHNpemVfdCB0c2l6ZSA9IHNpemUgLyBzaXplb2Yoc2hvcnQpOwogICAgICAgICBjaGFyIG5hbWVC
dWZbMTI4XTsKICAgICAgICAgc25wcmludGYobmFtZUJ1Ziwgc2l6ZW9mKG5hbWVCdWYpLCAiX2pz
Y19qaXQldSIsIGNvZGVDb3VudCsrKTsKLSAgICAgICAgcHJpbnRmKCJcdC5zeW50YXggdW5pZmll
ZFxuIgotICAgICAgICAgICAgICAgIlx0LnNlY3Rpb25cdF9fVEVYVCxfX3RleHQscmVndWxhcixw
dXJlX2luc3RydWN0aW9uc1xuIgotICAgICAgICAgICAgICAgIlx0Lmdsb2JsXHQlc1xuIgotICAg
ICAgICAgICAgICAgIlx0LmFsaWduIDJcbiIKLSAgICAgICAgICAgICAgICJcdC5jb2RlIDE2XG4i
Ci0gICAgICAgICAgICAgICAiXHQudGh1bWJfZnVuY1x0JXNcbiIKLSAgICAgICAgICAgICAgICIj
ICVwXG4iCi0gICAgICAgICAgICAgICAiJXM6XG4iLCBuYW1lQnVmLCBuYW1lQnVmLCBjb2RlLCBu
YW1lQnVmKTsKKyAgICAgICAgZGF0YUxvZygiXHQuc3ludGF4IHVuaWZpZWRcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIlx0LnNlY3Rpb25cdF9fVEVYVCxfX3RleHQscmVndWxhcixwdXJlX2luc3Ry
dWN0aW9uc1xuIgorICAgICAgICAgICAgICAgICAgICAiXHQuZ2xvYmxcdCVzXG4iCisgICAgICAg
ICAgICAgICAgICAgICJcdC5hbGlnbiAyXG4iCisgICAgICAgICAgICAgICAgICAgICJcdC5jb2Rl
IDE2XG4iCisgICAgICAgICAgICAgICAgICAgICJcdC50aHVtYl9mdW5jXHQlc1xuIgorICAgICAg
ICAgICAgICAgICAgICAiIyAlcFxuIgorICAgICAgICAgICAgICAgICAgICAiJXM6XG4iLCBuYW1l
QnVmLCBuYW1lQnVmLCBjb2RlLCBuYW1lQnVmKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0c2l6ZTsgaSsrKQotICAgICAgICAgICAgcHJpbnRmKCJcdC5zaG9y
dFx0MHgleFxuIiwgdGNvZGVbaV0pOworICAgICAgICAgICAgZGF0YUxvZygiXHQuc2hvcnRcdDB4
JXhcbiIsIHRjb2RlW2ldKTsKICNlbmRpZgogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCShyZXZpc2lvbiAxMDcw
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWZuZGVmIE5ERUJVRwpA
QCAtMjAyNSw3ICsyMDI2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHZwcmludGZTdGRv
dXRJbnN0cihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKICAgICB7CiAgICAgICAg
IGlmIChnZXRlbnYoIkphdmFTY3JpcHRDb3JlRHVtcEpJVCIpKQotICAgICAgICAgICAgdmZwcmlu
dGYoc3Rkb3V0LCBmb3JtYXQsIGFyZ3MpOworICAgICAgICAgICAgV1RGOjpkYXRhTG9nVihmb3Jt
YXQsIGFyZ3MpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHByaW50QmxvY2tJbnN0cih1aW50
MTZfdCogZmlyc3QsIHVuc2lnbmVkIGludCBvZmZzZXQsIGludCBuYkluc3RyKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEw
NzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50VW5h
cnlPcChFeGVjU3RhdGUqIAogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogCi0gICAgcHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMs
ICVzXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdFx0ICVz
LCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwogfQogCiB2b2lkIENvZGVCbG9jazo6cHJpbnRC
aW5hcnlPcChFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBjb25zdCBjaGFyKiBvcCkgY29uc3QKQEAgLTE2MiwxNCAr
MTYyLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSoKICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludGYoIlslNGRdICVz
XHRcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIyKS5kYXRhKCkpOworICAgIGRhdGFMb2coIlslNGRdICVzXHRcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwogfQogCiB2
b2lkIENvZGVCbG9jazo6cHJpbnRDb25kaXRpb25hbEp1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkgY29u
c3QKIHsKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0XHQgJXMsICVkKC0+JWQp
XG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICBkYXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVkKC0+
JWQpXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJ
ZE9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciYgaXQsIGNvbnN0IGNoYXIqIG9wKSBjb25zdApAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0ICVz
LCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJz
W2lkMF0pLmRhdGEoKSk7CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OwogICAgIGl0ICs9IDU7CiB9CiAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIENvZGVCbG9jazo6
cHJpbnRDYWxsT3AoRXhlY1N0YXRlKiBlCiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICBpbnQgYXJnQ291bnQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgcmVnaXN0
ZXJPZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludGYoIlslNGRdICVzXHQgJXMs
ICVkLCAlZFxuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuYykuZGF0YSgp
LCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQpOworICAgIGRhdGFMb2coIlslNGRdICVzXHQgJXMs
ICVkLCAlZFxuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuYykuZGF0YSgp
LCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQpOwogICAgIGl0ICs9IDI7CiB9CiAKQEAgLTE5NSw3
ICsxOTUsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlCiAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIHByaW50ZigiWyU0ZF0g
JXNcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgIGRhdGFMb2coIlslNGRdICVzXHQgJXMsICVzLCAl
c1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1l
KGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpKTsKICAgICBpdCArPSA1OwogfQogCkBAIC0yNDMsNDggKzI0Myw0OCBAQCBzdGF0aWMg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXRGb3JOdGgoCiAKIHN0YXRpYyB2b2lkIHByaW50R2xv
YmFsUmVzb2x2ZUluZm8oY29uc3QgR2xvYmFsUmVzb2x2ZUluZm8mIHJlc29sdmVJbmZvLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbk9mZnNldCkKIHsKLSAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4i
LCBpbnN0cnVjdGlvbk9mZnNldCwgInJlc29sdmVfZ2xvYmFsIiwgcG9pbnRlclRvU291cmNlU3Ry
aW5nKHJlc29sdmVJbmZvLnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgZGF0YUxvZygi
ICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicmVzb2x2ZV9nbG9iYWwiLCBw
b2ludGVyVG9Tb3VyY2VTdHJpbmcocmVzb2x2ZUluZm8uc3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgcHJpbnRTdHJ1Y3R1cmVTdHViSW5mbyhjb25zdCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0KQogewogICAg
IHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9p
ZF9zZWxmOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgImdldF9ieV9pZF9zZWxmIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUu
Z2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9p
ZF9zZWxmIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFz
ZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG86Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczog
JXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJU
b1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJl
KS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlk
UHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxv
ZygiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9w
cm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90by5iYXNl
T2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAg
ICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0
X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENo
YWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyhzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJn
ZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlk
Q2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNl
U3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmX2xpc3Q6Ci0gICAg
ICAgIHByaW50ZigiICBbJTRkXSAlczogJXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJv
cF9nZXRfYnlfaWRfc2VsZl9saXN0IiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUu
Z2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3QpLnV0ZjgoKS5kYXRhKCksIHN0dWJJbmZvLnUu
Z2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczog
JXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlfaWRfc2VsZl9saXN0Iiwg
cG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVy
ZUxpc3QpLnV0ZjgoKS5kYXRhKCksIHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXpl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0
OgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzICglZClcbiIsIGluc3RydWN0aW9uT2Zm
c2V0LCAib3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3QpLnV0ZjgoKS5kYXRhKCksIHN0
dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CisgICAgICAgIGRhdGFMb2coIiAg
WyU0ZF0gJXM6ICVzICglZClcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX3By
b3RvX2xpc3QiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkUHJvdG9M
aXN0LnN0cnVjdHVyZUxpc3QpLnV0ZjgoKS5kYXRhKCksIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3Rv
TGlzdC5saXN0U2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGlu
c3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VT
dHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZSkudXRm
OCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5z
aXRpb24uc3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5w
dXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRl
clRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlKS51
dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlkVHJh
bnNpdGlvbi5jaGFpbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZToKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAl
c1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfcmVwbGFjZSIsIHBvaW50ZXJUb1Nv
dXJjZVN0cmluZyhzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgIFslNGRdICVzOiAlc1xuIiwgaW5z
dHJ1Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfcmVwbGFjZSIsIHBvaW50ZXJUb1NvdXJjZVN0cmlu
ZyhzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAg
IHByaW50ZigiICBbJTRkXSAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJ1bnNldCIpOworICAg
ICAgICBkYXRhTG9nKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInVuc2V0Iik7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfZ2VuZXJpYzoKLSAg
ICAgICAgcHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9i
eV9pZF9nZW5lcmljIik7CisgICAgICAgIGRhdGFMb2coIiAgWyU0ZF0gJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9nZW5lcmljOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0g
JXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfcHV0X2J5X2lkX2dlbmVyaWMiKTsKKyAgICAg
ICAgZGF0YUxvZygiICBbJTRkXSAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9wdXRfYnlf
aWRfZ2VuZXJpYyIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2FycmF5
X2xlbmd0aDoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNl
dCwgIm9wX2dldF9hcnJheV9sZW5ndGgiKTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlc1xu
IiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYXJyYXlfbGVuZ3RoIik7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKLSAgICAgICAgcHJpbnRm
KCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9zdHJpbmdfbGVuZ3Ro
Iik7CisgICAgICAgIGRhdGFMb2coIiAgWyU0ZF0gJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAi
b3BfZ2V0X3N0cmluZ19sZW5ndGgiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRpYyB2
b2lkIHByaW50U3RydWN0dXJlU3R1YkluZm8oY29uc3QKIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0
cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBpbnQgb3Bl
cmFuZCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IHZQQyAtIGlu
c3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgcHJpbnRmKCIgIFslNGRdICVzOiAlc1xuIiwgaW5z
dHJ1Y3Rpb25PZmZzZXQsIG5hbWUsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbb3BlcmFuZF0u
dS5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOworICAgIGRhdGFMb2coIiAgWyU0ZF0gJXM6ICVz
XG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgbmFtZSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1tv
cGVyYW5kXS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgQ29kZUJsb2Nr
OjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKQEAgLTMxMiwx
NSArMzEyLDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3Byb3RvKSkgewotICAgICAgICBwcmludGYoIiAg
WyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfcHJvdG8i
LCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
LCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
ICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbikpIHsKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXMsICVzXG4i
LCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIiwgcG9pbnRlclRvU291
cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291
cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291
cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMsICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQs
ICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNl0udS5z
dHJ1Y3R1cmVDaGFpbikudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9jaGFpbikpIHsKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGlu
c3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNlU3RyaW5n
KHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5n
KHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxv
ZygiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9j
aGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5zdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbikudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkpIHsKQEAgLTM0Nyw3
ICszNDcsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluCiB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lu
c3RydWN0aW9ucykgewotICAgICAgICBwcmludGYoIk5vIGluc3RydWN0aW9ucyBhdmFpbGFibGUu
XG4iKTsKKyAgICAgICAgZGF0YUxvZygiTm8gaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAg
KytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVs
dSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxu
IiwKKyAgICBkYXRhTG9nKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQg
cGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVj
dGlvbikpLAogICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKTsKQEAgLTM2NywzNSArMzY3LDM1IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYykgY28KICAgICAgICAgZHVtcChleGVjLCBiZWdpbiwgaXQpOwogCiAgICAgaWYgKCFt
X2lkZW50aWZpZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBwcmludGYoIlxuSWRlbnRpZmllcnM6
XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5JZGVudGlmaWVyczpcbiIpOwogICAgICAgICBzaXpl
X3QgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICBpZCV1ID0gJXNc
biIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgbV9pZGVudGlmaWVyc1tpXS51c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgIGlkJXUgPSAlc1xuIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50
aWZpZXJzLnNpemUoKSk7CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlz
RW1wdHkoKSkgewotICAgICAgICBwcmludGYoIlxuQ29uc3RhbnRzOlxuIik7CisgICAgICAgIGRh
dGFMb2coIlxuQ29uc3RhbnRzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAg
ZG8gewotICAgICAgICAgICAgcHJpbnRmKCIgICBrJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIG1fY29uc3RhbnRSZWdpc3RlcnNb
aV0uZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiICAgayV1ID0g
JXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVj
LCBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
ICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgp
KTsKICAgICB9CiAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9yZWdleHBz
LmlzRW1wdHkoKSkgewotICAgICAgICBwcmludGYoIlxubV9yZWdleHBzOlxuIik7CisgICAgICAg
IGRhdGFMb2coIlxubV9yZWdleHBzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAg
ICAgZG8gewotICAgICAgICAgICAgcHJpbnRmKCIgIHJlJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGkpLCByZWdleHBUb1NvdXJjZVN0cmluZyhtX3JhcmVEYXRhLT5tX3JlZ2V4cHNb
aV0uZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiICByZSV1ID0g
JXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV9y
YXJlRGF0YS0+bV9yZWdleHBzW2ldLmdldCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAg
ICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fcmVnZXhwcy5zaXplKCkp
OwogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKCFtX2dsb2JhbFJlc29sdmVJbmZv
cy5pc0VtcHR5KCkgfHwgIW1fc3RydWN0dXJlU3R1YkluZm9zLmlzRW1wdHkoKSkKLSAgICAgICAg
cHJpbnRmKCJcblN0cnVjdHVyZXM6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5TdHJ1Y3R1cmVz
OlxuIik7CiAKICAgICBpZiAoIW1fZ2xvYmFsUmVzb2x2ZUluZm9zLmlzRW1wdHkoKSkgewogICAg
ICAgICBzaXplX3QgaSA9IDA7CkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogI2VuZGlmCiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQog
ICAgIGlmICghbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmlzRW1wdHkoKSB8fCAhbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHByaW50ZigiXG5TdHJ1
Y3R1cmVzOlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuU3RydWN0dXJlczpcbiIpOwogCiAgICAg
aWYgKCFtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNp
emVfdCBpID0gMDsKQEAgLTQzMywzNiArNDMzLDM2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYykgY28KICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50Zigi
XG5FeGNlcHRpb24gSGFuZGxlcnM6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5FeGNlcHRpb24g
SGFuZGxlcnM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAg
ICAgICAgICAgIHByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0
OiBbJTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5z
dGFydCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlx0
ICVkOiB7IHN0YXJ0OiBbJTRkXSBlbmQ6IFslNGRdIHRhcmdldDogWyU0ZF0gfVxuIiwgaSArIDEs
IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0uc3RhcnQsIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnNbaV0uZW5kLCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
W2ldLnRhcmdldCk7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIGlm
IChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50ZigiSW1tZWRpYXRlIFN3aXRjaCBKdW1wIFRhYmxl
czpcbiIpOworICAgICAgICBkYXRhTG9nKCJJbW1lZGlhdGUgU3dpdGNoIEp1bXAgVGFibGVzOlxu
Iik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBw
cmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICUxZCA9IHtc
biIsIGkpOwogICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsKICAgICAgICAgICAgIFZlY3Rvcjxp
bnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0
Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFZl
Y3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFyZURhdGEtPm1faW1tZWRp
YXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIsICsrZW50cnkpIHsKICAgICAgICAgICAgICAgICBpZiAoISppdGVyKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBwcmludGYoIlx0XHQlNGQg
PT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJs
ZXNbaV0ubWluLCAqaXRlcik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiXHRcdCU0ZCA9PiAl
MDRkXG4iLCBlbnRyeSArIG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tp
XS5taW4sICppdGVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByaW50ZigiICAgICAg
fVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICB9XG4iKTsKICAgICAgICAgICAgICsr
aTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVt
cFRhYmxlcy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9y
YXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBwcmludGYoIlxuQ2hhcmFjdGVyIFN3aXRjaCBKdW1wIFRhYmxlczpcbiIpOworICAgICAgICBk
YXRhTG9nKCJcbkNoYXJhY3RlciBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5z
aWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICAlMWQgPSB7
XG4iLCBpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAg
ICAgICBpbnQgZW50cnkgPSAwOwogICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0u
YnJhbmNoT2Zmc2V0cy5lbmQoKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9yPGludDMyX3Q+Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFi
bGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRy
eSkgewpAQCAtNDcwLDI3ICs0NzAsMjcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjKSBjbwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoISgoaSArIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tp
XS5taW4pICYgfjB4RkZGRikpOwogICAgICAgICAgICAgICAgIFVDaGFyIGNoID0gc3RhdGljX2Nh
c3Q8VUNoYXI+KGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVz
W2ldLm1pbik7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIs
IFVTdHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRlcik7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZygiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBVU3RyaW5nKCZjaCwgMSkudXRmOCgpLmRh
dGEoKSwgKml0ZXIpOwogICAgICAgICB9Ci0gICAgICAgICAgICBwcmludGYoIiAgICAgIH1cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAgICAgICAgICArK2k7CiAg
ICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJs
ZXMuc2l6ZSgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURh
dGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJpbnRm
KCJcblN0cmluZyBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5T
dHJpbmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwog
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAg
ICAgICAgICBkYXRhTG9nKCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgU3RyaW5nSnVt
cFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAg
ICAgICAgZm9yIChTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNl
dFRhYmxlLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgcHJp
bnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5k
YXRhKCksIGl0ZXItPnNlY29uZC5icmFuY2hPZmZzZXQpOwotICAgICAgICAgICAgcHJpbnRmKCIg
ICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0XCIlc1wiID0+ICUwNGRc
biIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCksIGl0ZXItPnNlY29uZC5icmFu
Y2hPZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAgICAgICAg
ICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAKLSAgICBwcmludGYoIlxuIik7CisgICAgZGF0YUxv
ZygiXG4iKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCkgY29uc3QKQEAgLTQ5OCw3MyArNDk4LDczIEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICBpbnQgbG9jYXRp
b24gPSBpdCAtIGJlZ2luOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bj
b2RlSUQoaXQtPnUub3Bjb2RlKSkgewogICAgICAgICBjYXNlIG9wX2VudGVyOiB7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGVudGVyXG4iLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBlbnRlclxuIiwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYWN0aXZhdGlvbjogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGNy
ZWF0ZV9hY3RpdmF0aW9uICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX2FjdGl2YXRpb24gJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBjcmVhdGVfYXJndW1lbnRzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjcmVhdGVf
YXJndW1lbnRzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luaXRf
bGF6eV9yZWc6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBpbml0X2xhenlfcmVnXHQgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBpbml0X2xhenlfcmVnXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjAp
LmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2dldF9jYWxsZWU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBvcF9nZXRfY2FsbGVlICVzXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gb3BfZ2V0X2NhbGxlZSAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
Y3JlYXRlX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmlu
dGYoIlslNGRdIGNyZWF0ZV90aGlzICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGNyZWF0ZV90aGlzICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29udmVydF90
aGlzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gY29udmVydF90aGlzXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjb252
ZXJ0X3RoaXNcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X29i
amVjdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIG5ld19vYmplY3RcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19v
YmplY3RcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5
OiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbmV3X2FycmF5XHQg
JXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGFyZ3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJndikuZGF0YSgpLCBh
cmdjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3
X2FycmF5X2J1ZmZlcjogewogICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRd
IG5ld19hcnJheV9idWZmZXIgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJnYyk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBuZXdfYXJyYXlfYnVmZmVyICVzLCAlZCwgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgZHN0KS5kYXRhKCksIGFyZ3YsIGFyZ2MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByZTAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbmV3X3JlZ2V4cFx0ICVzLCAiLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbmV3X3JlZ2V4cFx0ICVzLCAiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKHIwID49MCAmJiByMCA8IChpbnQpbnVtYmVy
T2ZSZWdFeHBzKCkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcmVnZXhwTmFtZShy
ZTAsIHJlZ2V4cChyZTApKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiVzXG4i
LCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJiYWRfcmVnZXhwKCVkKVxuIiwgcmUwKTsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJiYWRfcmVnZXhwKCVkKVxuIiwgcmUwKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbW92OiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBtb3ZcdFx0ICVzLCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBtb3ZcdFx0ICVzLCAl
c1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX25vdDogewpAQCAtNjEzLDEyICs2MTMsMTIgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHJl
X2luYzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIHByZV9pbmNcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHJlX2lu
Y1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3ByZV9kZWM6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBwcmVfZGVjXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByZV9kZWNcdFx0ICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3N0X2luYzogewpAQCAtNjk0
LDcgKzY5NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZTogewogICAgICAgICAg
ICAgaW50IGJhc2UgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gY2hlY2tfaGFzX2luc3RhbmNlXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCBiYXNlKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2hlY2tfaGFz
X2luc3RhbmNlXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5k
YXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9p
bnN0YW5jZW9mOiB7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBpbnN0
YW5jZW9mXHRcdCAlcywgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIzKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF90eXBlb2Y6IHsKQEAgLTc0MCw3ICs3NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZTogewogICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVc
dFx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBp
ZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSByZXNvbHZlXHRcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03
NDgsMTQgKzc0OCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfc2tp
cFx0ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHNraXBMZXZlbHMpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV9za2lwXHQgJXMsICVzLCAlZFxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgc2tpcExldmVscyk7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2ds
b2JhbDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlsl
NGRdIHJlc29sdmVfZ2xvYmFsXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfZ2xvYmFsXHQgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0ICs9IDM7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBKU1Zh
bHVlKCgrK2l0KS0+dS5qc0NlbGwuZ2V0KCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAgICAg
ICAgIGludCBkZXB0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMsICVzLCAlcywgJWRcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhleGVj
LCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5k
YXRhKCksIGRlcHRoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfZ2xvYmFs
X2R5bmFtaWNcdCAlcywgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIHNjb3BlKS51dGY4KCkuZGF0
YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgZGVwdGgpOwogICAg
ICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03NzMsNyAr
NzczLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaW5kZXgg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9zY29wZWRfdmFyXHQg
JXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBp
bmRleCwgc2tpcExldmVscyk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfc2NvcGVk
X3Zhclx0ICVzLCAlZCwgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgaW5kZXgsIHNraXBMZXZlbHMpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC03ODEsNDEgKzc4MSw0MSBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHByaW50ZigiWyU0ZF0gcHV0X3Njb3BlZF92YXJcdCAlZCwgJWQsICVzXG4iLCBsb2NhdGlvbiwg
aW5kZXgsIHNraXBMZXZlbHMsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9zY29wZWRfdmFyXHQgJWQsICVkLCAlc1xuIiwgbG9j
YXRpb24sIGluZGV4LCBza2lwTGV2ZWxzLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRm
KCJbJTRkXSBnZXRfZ2xvYmFsX3Zhclx0ICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBn
ZXRfZ2xvYmFsX3Zhclx0ICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCBpbmRleCk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAg
ICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHV0X2dsb2JhbF92
YXJcdCAlZCwgJXNcbiIsIGxvY2F0aW9uLCBpbmRleCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJcdCAlZCwg
JXNcbiIsIGxvY2F0aW9uLCBpbmRleCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jh
c2U6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlzU3RyaWN0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVf
YmFzZSVzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNb
aWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVfYmFzZSVz
XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgaXNTdHJpY3QgPyAiX3N0cmljdCIgOiAiIiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBlbnN1cmVfcHJvcGVydHlf
ZXhpc3RzXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlm
aWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9yZXNvbHZlX3dpdGhfYmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHBy
aW50ZigiWyU0ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAg
ICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MjMsNyArODIzLDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2ZV93aXRoX3RoaXMgJXMsICVzLCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2ZV93aXRoX3RoaXMgJXMsICVzLCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkp
OwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05
MDUsMjUgKzkwNSwyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwdXRfZ2V0dGVyX3NldHRlclx0
ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dldHRlcl9zZXR0ZXJcdCAlcywgJXMsICVzLCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBt
X2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7Ci0gICAgICAgICAgICBwcmlu
dGYoIlslNGRdIG1ldGhvZF9jaGVja1xuIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbWV0aG9kX2NoZWNrXG4iLCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gZGVsX2J5X2lkXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gZGVsX2J5X2lkXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBnZXRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MzEsNyArOTMxLDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBnZXRfYXJndW1lbnRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gZ2V0X2FyZ3VtZW50X2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgICsraXQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTQyLDM4ICs5NDIsMzggQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIzID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCByNSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
cHJpbnRmKCJbJTRkXSBnZXRfYnlfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjUpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRf
YnlfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByNCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjUpLmRh
dGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHV0X2J5X3Zh
bFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMiku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9ieV92YWxcdCAlcywgJXMs
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZGVsX2J5X3ZhbFx0ICVzLCAl
cywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlbF9ieV92YWxcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVj
LCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDogewogICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHB1dF9ieV9pbmRleFx0ICVzLCAl
dSwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbjAsIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IHB1dF9ieV9pbmRleFx0ICVzLCAldSwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYo
IlslNGRdIGptcFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGptcFx0XHQgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcDogewogICAgICAgICAgICAgaW50IG9m
ZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29w
XHRcdCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKQEAgLTEwMDQsMTI5ICsxMDA0LDEyOSBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2psZXNzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2psZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYo
IlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gamxl
c3NlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2pncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBqZ3JlYXRlclx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqZ3JlYXRl
clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2pncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRd
IGpncmVhdGVyZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNl
dCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gamdyZWF0
ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX2pubGVzczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
am5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpubGVzc1x0XHQg
JXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pu
bGVzc2VxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNl
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbmxlc3Nl
cVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbmxlc3NlcVx0XHQgJXMs
ICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3Jl
YXRlcjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVy
XHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9u
ICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZ3JlYXRlclx0XHQgJXMs
ICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNl
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNl
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbmdyZWF0
ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbmdyZWF0ZXJlcVx0
XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiAr
IG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2xvb3BfaWZfbGVzczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
bG9vcF9pZl9sZXNzXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lm
X2xlc3NcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfbG9vcF9pZl9sZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYo
IlslNGRdIGxvb3BfaWZfbGVzc2VxXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBsb29wX2lmX2xlc3NlcVx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2dyZWF0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGxvb3BfaWZfZ3JlYXRlclx0ICVzLCAlcywgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CiAgICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVz
LCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcF9pZl9ncmVhdGVyZXFcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9o
aW50OiB7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaGludFxuIiwgbG9jYXRpb24p
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbG9vcF9oaW50XG4iLCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06
IHsKICAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBwcmludGYoIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwgJWQoLT4lZCksICVzXG4iLCBsb2NhdGlv
biwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCBy
ZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBzd2l0Y2hfaW1tXHQgJWQsICVkKC0+JWQpLCAlc1xuIiwgbG9jYXRp
b24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewogICAg
ICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
c2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gc3dpdGNoX2NoYXJcdCAlZCwgJWQoLT4lZCksICVzXG4iLCBsb2NhdGlvbiwgdGFi
bGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rl
ck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0
YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lz
dGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewogICAgICAg
ICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2Ny
dXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50Zigi
WyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgtPiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJs
ZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVy
TmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHN3aXRjaF9zdHJpbmdcdCAlZCwgJWQoLT4lZCksICVzXG4iLCBsb2NhdGlvbiwg
dGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdp
c3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNob3VsZENoZWNrID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG5ld19mdW5jXHRcdCAlcywgZiVkLCAl
c1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCwgc2hvdWxk
Q2hlY2sgPyAiPENoZWNrZWQ+IiA6ICI8VW5jaGVja2VkPiIpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gbmV3X2Z1bmNcdFx0ICVzLCBmJWQsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tlZD4iIDogIjxV
bmNoZWNrZWQ+Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHByaW50ZigiWyU0ZF0gbmV3X2Z1bmNfZXhwXHQgJXMsIGYlZFxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBuZXdfZnVuY19leHBcdCAlcywgZiVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfY2FsbDogewpAQCAtMTE0MiwzNSArMTE0MiwzNSBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgdGhpc1ZhbHVlID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRzID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY2FsbF92YXJhcmdzXHQgJXMsICVzLCAl
cywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgY2FsbGVlKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCB0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGFy
Z3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rlcik7CisgICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBjYWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCBjYWxsZWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHRoaXNWYWx1
ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJndW1lbnRzKS5kYXRhKCksIGZpcnN0RnJl
ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbjogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gdGVhcl9vZmZfYWN0aXZhdGlvblx0ICVzLCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSB0ZWFyX29mZl9hY3RpdmF0
aW9uXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
dGVhcl9vZmZfYXJndW1lbnRzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGVhcl9vZmZfYXJndW1lbnRz
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSByZXRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmV0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gb3BfY2Fs
bF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0
XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAg
ICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9yZXRfb2JqZWN0X29yX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGNvbnN0cnVjdG9yX3JldFx0XHQgJXMgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY29uc3RydWN0b3JfcmV0XHRc
dCAlcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewpAQCAtMTE4MSwxMyArMTE4MSwxMyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIHN0cmNhdFx0XHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRh
dGEoKSwgY291bnQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3RyY2F0XHRcdCAlcywg
JXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBjb3VudCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZTogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRvX3ByaW1p
dGl2ZVx0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9wbmFtZXM6IHsKQEAgLTExOTYsNyArMTE5Niw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAg
IGludCByMiA9IGl0WzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMyA9IGl0WzRdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdFs1XS51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludGYoIlslNGRdIGdldF9wbmFtZXNcdCAlcywgJXMsICVzLCAlcywgJWQoLT4l
ZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfcG5hbWVzXHQgJXMsICVzLCAlcywgJXMsICVk
KC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIzKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQp
OwogICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKSAtIDE7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTIwNyw3OCArMTIwNyw3OCBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgc2l6
ZSA9IGl0WzRdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpdGVyID0gaXRbNV0udS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0WzZdLnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJWQoLT4l
ZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVzdCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgaXRlciku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIG5leHRfcG5hbWVcdCAlcywgJXMsICVzLCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRlc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHNpemUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGl0ZXIpLmRhdGEoKSwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RI
KG9wX25leHRfcG5hbWUpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHVzaF9zY29wZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHB1c2hfc2NvcGVcdCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIHB1c2hfc2NvcGVcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcG9wX3Njb3BlOiB7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHBvcF9zY29w
ZVxuIiwgbG9jYXRpb24pOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcG9wX3Njb3BlXG4i
LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1c2hfbmV3X3Njb3BlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlsl
NGRdIHB1c2hfbmV3X3Njb3BlIFx0JXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbXBfc2NvcGVzOiB7CiAgICAgICAgICAgICBpbnQg
c2NvcGVEZWx0YSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbXBfc2NvcGVz
XHReJWQsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgc2NvcGVEZWx0YSwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqbXBfc2NvcGVzXHReJWQs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgc2NvcGVEZWx0YSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Nh
dGNoOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gY2F0Y2hcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2F0Y2hcdFx0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJvdzogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlsl
NGRdIHRocm93XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRocm93XHRcdCAlc1xuIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOiB7CiAgICAg
ICAgICAgICBpbnQgazAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50Zigi
WyU0ZF0gdGhyb3dfcmVmZXJlbmNlX2Vycm9yXHQgJXNcbiIsIGxvY2F0aW9uLCBjb25zdGFudE5h
bWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIHRocm93X3JlZmVyZW5jZV9lcnJvclx0ICVzXG4iLCBsb2NhdGlvbiwgY29uc3Rh
bnROYW1lKGV4ZWMsIGswLCBnZXRDb25zdGFudChrMCkpLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pzcjogewogICAgICAgICAgICAgaW50
IHJldEFkZHJEc3QgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0ganNyXHRcdCAl
cywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkckRzdCku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGpzclx0XHQgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHJldEFkZHJEc3QpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3NyZXQ6IHsKICAgICAg
ICAgICAgIGludCByZXRBZGRyU3JjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludGYoIlslNGRdIHNyZXRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHJldEFkZHJTcmMpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBzcmV0XHRc
dCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByZXRBZGRyU3JjKS5kYXRhKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kZWJ1Zzog
ewogICAgICAgICAgICAgaW50IGRlYnVnSG9va0lEID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgZmlyc3RMaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgbGFzdExpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gZGVidWdcdFx0ICVzLCAlZCwgJWRcbiIsIGxvY2F0aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVn
SG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBkZWJ1Z1x0XHQgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIGRlYnVnSG9va05hbWUoZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6IHsKICAgICAgICAgICAgIGlu
dCBmdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSBwcm9maWxlX3dpbGxfY2FsbCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBm
dW5jdGlvbikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHByb2ZpbGVfd2ls
bF9jYWxsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRh
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcm9m
aWxlX2RpZF9jYWxsOiB7CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb24gPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gcHJvZmlsZV9kaWRfY2FsbFx0ICVzXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9lbmQ6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBlbmRcdFx0ICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gZW5kXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTM4MiwyOSArMTM4MiwyOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFN0YXRpc3RpY3MoKQog
ICAgIHRvdGFsU2l6ZSArPSBzeW1ib2xUYWJsZVRvdGFsU2l6ZTsKICAgICB0b3RhbFNpemUgKz0g
KGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpICogc2l6ZW9mKENvZGVCbG9jaykpOwogCi0gICAgcHJp
bnRmKCJOdW1iZXIgb2YgbGl2ZSBDb2RlQmxvY2tzOiAlZFxuIiwgbGl2ZUNvZGVCbG9ja1NldC5z
aXplKCkpOwotICAgIHByaW50ZigiU2l6ZSBvZiBhIHNpbmdsZSBDb2RlQmxvY2sgW3NpemVvZihD
b2RlQmxvY2spXTogJXp1XG4iLCBzaXplb2YoQ29kZUJsb2NrKSk7Ci0gICAgcHJpbnRmKCJTaXpl
IG9mIGFsbCBDb2RlQmxvY2tzOiAlenVcbiIsIHRvdGFsU2l6ZSk7Ci0gICAgcHJpbnRmKCJBdmVy
YWdlIHNpemUgb2YgYSBDb2RlQmxvY2s6ICV6dVxuIiwgdG90YWxTaXplIC8gbGl2ZUNvZGVCbG9j
a1NldC5zaXplKCkpOwotCi0gICAgcHJpbnRmKCJOdW1iZXIgb2YgRnVuY3Rpb25Db2RlIENvZGVC
bG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNGdW5jdGlvbkNvZGUsIHN0YXRpY19jYXN0PGRvdWJs
ZT4oaXNGdW5jdGlvbkNvZGUpICogMTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7Ci0g
ICAgcHJpbnRmKCJOdW1iZXIgb2YgR2xvYmFsQ29kZSBDb2RlQmxvY2tzOiAlenUgKCUuM2YlJSlc
biIsIGlzR2xvYmFsQ29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpc0dsb2JhbENvZGUpICogMTAw
LjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgRXZh
bENvZGUgQ29kZUJsb2NrczogJXp1ICglLjNmJSUpXG4iLCBpc0V2YWxDb2RlLCBzdGF0aWNfY2Fz
dDxkb3VibGU+KGlzRXZhbENvZGUpICogMTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7
CisgICAgZGF0YUxvZygiTnVtYmVyIG9mIGxpdmUgQ29kZUJsb2NrczogJWRcbiIsIGxpdmVDb2Rl
QmxvY2tTZXQuc2l6ZSgpKTsKKyAgICBkYXRhTG9nKCJTaXplIG9mIGEgc2luZ2xlIENvZGVCbG9j
ayBbc2l6ZW9mKENvZGVCbG9jayldOiAlenVcbiIsIHNpemVvZihDb2RlQmxvY2spKTsKKyAgICBk
YXRhTG9nKCJTaXplIG9mIGFsbCBDb2RlQmxvY2tzOiAlenVcbiIsIHRvdGFsU2l6ZSk7CisgICAg
ZGF0YUxvZygiQXZlcmFnZSBzaXplIG9mIGEgQ29kZUJsb2NrOiAlenVcbiIsIHRvdGFsU2l6ZSAv
IGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKworICAgIGRhdGFMb2coIk51bWJlciBvZiBGdW5j
dGlvbkNvZGUgQ29kZUJsb2NrczogJXp1ICglLjNmJSUpXG4iLCBpc0Z1bmN0aW9uQ29kZSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihpc0Z1bmN0aW9uQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tT
ZXQuc2l6ZSgpKTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgR2xvYmFsQ29kZSBDb2RlQmxvY2tz
OiAlenUgKCUuM2YlJSlcbiIsIGlzR2xvYmFsQ29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpc0ds
b2JhbENvZGUpICogMTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7CisgICAgZGF0YUxv
ZygiTnVtYmVyIG9mIEV2YWxDb2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNFdmFs
Q29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpc0V2YWxDb2RlKSAqIDEwMC4wIC8gbGl2ZUNvZGVC
bG9ja1NldC5zaXplKCkpOwogCi0gICAgcHJpbnRmKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRo
IHJhcmUgZGF0YTogJXp1ICglLjNmJSUpXG4iLCBoYXNSYXJlRGF0YSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihoYXNSYXJlRGF0YSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKyAg
ICBkYXRhTG9nKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRoIHJhcmUgZGF0YTogJXp1ICglLjNm
JSUpXG4iLCBoYXNSYXJlRGF0YSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihoYXNSYXJlRGF0YSkgKiAx
MDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKIAotICAgICNkZWZpbmUgUFJJTlRfU1RB
VFMobmFtZSkgcHJpbnRmKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRoICIgI25hbWUgIjogJXp1
XG4iLCBuYW1lIyNJc05vdEVtcHR5KTsgcHJpbnRmKCJTaXplIG9mIGFsbCAiICNuYW1lICI6ICV6
dVxuIiwgbmFtZSMjVG90YWxTaXplKTsgCisgICAgI2RlZmluZSBQUklOVF9TVEFUUyhuYW1lKSBk
YXRhTG9nKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRoICIgI25hbWUgIjogJXp1XG4iLCBuYW1l
IyNJc05vdEVtcHR5KTsgZGF0YUxvZygiU2l6ZSBvZiBhbGwgIiAjbmFtZSAiOiAlenVcbiIsIG5h
bWUjI1RvdGFsU2l6ZSk7IAogICAgICAgICBGT1JfRUFDSF9NRU1CRVJfVkVDVE9SKFBSSU5UX1NU
QVRTKQogICAgICAgICBGT1JfRUFDSF9NRU1CRVJfVkVDVE9SX1JBUkVfREFUQShQUklOVF9TVEFU
UykKICAgICAjdW5kZWYgUFJJTlRfU1RBVFMKIAotICAgIHByaW50ZigiTnVtYmVyIG9mIENvZGVC
bG9ja3Mgd2l0aCBldmFsQ29kZUNhY2hlOiAlenVcbiIsIGV2YWxDb2RlQ2FjaGVJc05vdEVtcHR5
KTsKLSAgICBwcmludGYoIk51bWJlciBvZiBDb2RlQmxvY2tzIHdpdGggc3ltYm9sVGFibGU6ICV6
dVxuIiwgc3ltYm9sVGFibGVJc05vdEVtcHR5KTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgQ29k
ZUJsb2NrcyB3aXRoIGV2YWxDb2RlQ2FjaGU6ICV6dVxuIiwgZXZhbENvZGVDYWNoZUlzTm90RW1w
dHkpOworICAgIGRhdGFMb2coIk51bWJlciBvZiBDb2RlQmxvY2tzIHdpdGggc3ltYm9sVGFibGU6
ICV6dVxuIiwgc3ltYm9sVGFibGVJc05vdEVtcHR5KTsKIAotICAgIHByaW50ZigiU2l6ZSBvZiBh
bGwgc3ltYm9sVGFibGVzOiAlenVcbiIsIHN5bWJvbFRhYmxlVG90YWxTaXplKTsKKyAgICBkYXRh
TG9nKCJTaXplIG9mIGFsbCBzeW1ib2xUYWJsZXM6ICV6dVxuIiwgc3ltYm9sVGFibGVUb3RhbFNp
emUpOwogCiAjZWxzZQotICAgIHByaW50ZigiRHVtcGluZyBDb2RlQmxvY2sgc3RhdGlzdGljcyBp
cyBub3QgZW5hYmxlZC5cbiIpOworICAgIGRhdGFMb2coIkR1bXBpbmcgQ29kZUJsb2NrIHN0YXRp
c3RpY3MgaXMgbm90IGVuYWJsZWQuXG4iKTsKICNlbmRpZgogfQogCkBAIC0xNzM2LDcgKzE3MzYs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgLy8gQ2hl
Y2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0aXNvbi4KICAgICBpZiAo
IShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0
YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewogICAgICAgICBpZiAodmVyYm9zZVVubGlua2lu
ZykKLSAgICAgICAgICAgIHByaW50ZigiQ29kZSBibG9jayAlcCBoYXMgZGVhZCB3ZWFrIHJlZmVy
ZW5jZXMsIGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIsIHRoaXMpOworICAgICAgICAgICAgZGF0
YUxvZygiQ29kZSBibG9jayAlcCBoYXMgZGVhZCB3ZWFrIHJlZmVyZW5jZXMsIGpldHRpc29uaW5n
IGR1cmluZyBHQy5cbiIsIHRoaXMpOwogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBi
YXNlbGluZSBKSVQga25vd3MgdGhhdCBpdCBzaG91bGQgcmUtd2FybS11cCBiZWZvcmUKICAgICAg
ICAgLy8gb3B0aW1pemluZy4KQEAgLTE3NTQsNyArMTc1NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQ2FsbExpbmtJbmZvcygpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChjYWxsTGlu
a0luZm8oaSkuaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNh
bGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBjYWxsIGZyb20gJXAuXG4iLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxu
IiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnVubGluaygqbV9nbG9i
YWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgh
IWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZQpAQCAtMTc2NCw3ICsxNzY0LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewogICAgICAgICAgICAgaWYgKG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSAm
JiAhSGVhcDo6aXNNYXJrZWQobV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlLmdldCgp
KSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAg
ICAgICAgICBwcmludGYoIkNsZWFyaW5nIHJlc29sdmUgaW5mbyBpbiAlcC5cbiIsIHRoaXMpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyByZXNvbHZlIGluZm8gaW4gJXAu
XG4iLCB0aGlzKTsKICAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1
Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTc3OCw3ICsxNzc4
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAodmVyYm9zZVVu
bGlua2luZykKLSAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIHN0cnVjdHVyZSBjYWNo
ZSAoa2luZCAlZCkgaW4gJXAuXG4iLCBzdHViSW5mby5hY2Nlc3NUeXBlLCB0aGlzKTsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBzdHJ1Y3R1cmUgY2FjaGUgKGtpbmQgJWQpIGlu
ICVwLlxuIiwgc3R1YkluZm8uYWNjZXNzVHlwZSwgdGhpcyk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChpc0dldEJ5SWRBY2Nlc3MoYWNjZXNzVHlwZSkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoZ2V0SklUQ29kZSgpLmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpCkBAIC0xODA4
LDcgKzE4MDgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAg
ICAgICAgICAgICAgICAgfHwgIUhlYXA6OmlzTWFya2VkKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tp
XS5jYWNoZWRGdW5jdGlvbi5nZXQoKSkKICAgICAgICAgICAgICAgICB8fCAhSGVhcDo6aXNNYXJr
ZWQobV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZS5nZXQoKSkpIHsKICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBtZXRob2QgY2FsbCBpbiAlcC5cbiIsIHRoaXMpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBtZXRob2QgY2FsbCBpbiAlcC5cbiIsIHRoaXMp
OwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5yZXNldChyZXBhdGNo
QnVmZmVyLCBnZXRKSVRUeXBlKCkpOwogCiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gZ2V0U3R1YkluZm8obV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmJ5dGVj
b2RlSW5kZXgpOwpAQCAtMjIxMSw3ICsyMjExLDcgQEAgdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24oKQogYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KCkKIHsKICNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiQ29uc2lkZXJpbmcgb3B0aW1pemlu
ZyAlcC4uLlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgb3B0aW1pemluZyAl
cC4uLlxuIiwgdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJ
TEUpCkBAIC0yMjM5LDcgKzIyMzksNyBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVO
b3coKQogICAgIH0KIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJQ
cm9maWxlIGhvdG5lc3M6ICVsZiwgJWxmXG4iLCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mVmFsdWVQcm9maWxlcygpLCAoZG91YmxlKW51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMgLyBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyAvIG51
bWJlck9mVmFsdWVQcm9maWxlcygpKTsKKyAgICBkYXRhTG9nKCJQcm9maWxlIGhvdG5lc3M6ICVs
ZiwgJWxmXG4iLCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAv
IG51bWJlck9mVmFsdWVQcm9maWxlcygpLCAoZG91YmxlKW51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgLyBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyAvIG51bWJlck9mVmFsdWVQcm9maWxl
cygpKTsKICNlbmRpZgogCiAgICAgaWYgKCghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRv
dWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSA+PSBPcHRpb25zOjpkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSkKQEAgLTIy
NzAsNyArMjI3MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiT1NSIGV4aXQgIyV1IChiYyMldSwgQCV1
LCAlcykgZm9yIGNvZGUgYmxvY2sgJXAgb2NjdXJyZWQgZnJlcXVlbnRseTsgY291bnRpbmcgYXMg
ZnJlcXVlbnQgZXhpdCBzaXRlLlxuIiwgaSwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgZXhpdC5tX25vZGVJbmRleCwgREZHOjpleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwg
dGhpcyk7CisgICAgICAgIGRhdGFMb2coIk9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZv
ciBjb2RlIGJsb2NrICVwIG9jY3VycmVkIGZyZXF1ZW50bHk7IGNvdW50aW5nIGFzIGZyZXF1ZW50
IGV4aXQgc2l0ZS5cbiIsIGksIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGV4aXQu
bV9ub2RlSW5kZXgsIERGRzo6ZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRoaXMpOwog
I2VuZGlmCiAgICAgfQogfQpAQCAtMjI3OSwzMCArMjI3OSwzMCBAQCB2b2lkIENvZGVCbG9jazo6
dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklM
RSkKIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiB7Ci0gICAgZnByaW50Zihz
dGRlcnIsICJWYWx1ZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiVmFs
dWVQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAgICAgIGlmIChw
cm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewogICAgICAgICAgICAgQVNTRVJUKHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgICBhcmcgPSAldTogIiwgaSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICBhcmcgPSAldTog
IiwgaSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFM
b2coIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBp
ZiAoIXByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUtPm1fcHJlZGljdGlvbiA9
PSBQcmVkaWN0Tm9uZSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8ZW1wdHk+XG4i
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIjxlbXB0eT5cbiIpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgcHJvZmlsZS0+ZHVtcChzdGRlcnIpOwotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgIHByb2ZpbGUtPmR1bXAoV1RGOjpkYXRhRmls
ZSgpKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIs
ICJSYXJlQ2FzZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiUmFyZUNh
c2VQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFJhcmVDYXNlUHJv
ZmlsZSogcHJvZmlsZSA9IHJhcmVDYXNlUHJvZmlsZShpKTsKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsICIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCwgcHJvZmls
ZS0+bV9jb3VudGVyKTsKKyAgICAgICAgZGF0YUxvZygiICAgYmMgPSAlZDogJXVcbiIsIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQsIHByb2ZpbGUtPm1fY291bnRlcik7CiAgICAgfQotICAgIGZw
cmludGYoc3RkZXJyLCAiU3BlY2lhbEZhc3RDYXNlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsK
KyAgICBkYXRhTG9nKCJTcGVjaWFsRmFzdENhc2VQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlNwZWNpYWxGYXN0Q2FzZVByb2Zp
bGVzKCk7ICsraSkgewogICAgICAgICBSYXJlQ2FzZVByb2ZpbGUqIHByb2ZpbGUgPSBzcGVjaWFs
RmFzdENhc2VQcm9maWxlKGkpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6
ICV1XG4iLCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0LCBwcm9maWxlLT5tX2NvdW50ZXIpOwor
ICAgICAgICBkYXRhTG9nKCIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCwgcHJvZmlsZS0+bV9jb3VudGVyKTsKICAgICB9CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDE5ICsxMTgsMTkgQEAgT3Bjb2RlU3RhdHM6On5PcGNvZGVTdGF0cygpCiAgICAg
ICAgICAgICAqKGN1cnJlbnRQYWlySW5kZXgrKykgPSBtYWtlX3BhaXIoaSwgaik7CiAgICAgcXNv
cnQoc29ydGVkUGFpckluZGljZXMsIG51bU9wY29kZUlEcyAqIG51bU9wY29kZUlEcywgc2l6ZW9m
KHBhaXI8aW50LCBpbnQ+KSwgY29tcGFyZU9wY29kZVBhaXJJbmRpY2VzKTsKICAgICAKLSAgICBw
cmludGYoIlxuRXhlY3V0ZWQgb3Bjb2RlIHN0YXRpc3RpY3NcbiIpOyAKKyAgICBkYXRhTG9nKCJc
bkV4ZWN1dGVkIG9wY29kZSBzdGF0aXN0aWNzXG4iKTsgCiAgICAgCi0gICAgcHJpbnRmKCJUb3Rh
bCBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQ6ICVsbGRcblxuIiwgdG90YWxJbnN0cnVjdGlvbnMpOwor
ICAgIGRhdGFMb2coIlRvdGFsIGluc3RydWN0aW9ucyBleGVjdXRlZDogJWxsZFxuXG4iLCB0b3Rh
bEluc3RydWN0aW9ucyk7CiAKLSAgICBwcmludGYoIkFsbCBvcGNvZGVzIGJ5IGZyZXF1ZW5jeTpc
blxuIik7CisgICAgZGF0YUxvZygiQWxsIG9wY29kZXMgYnkgZnJlcXVlbmN5OlxuXG4iKTsKIAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgaW50
IGluZGV4ID0gc29ydGVkSW5kaWNlc1tpXTsKLSAgICAgICAgcHJpbnRmKCIlczolcyAlbGxkIC0g
JS4yZiUlXG4iLCBvcGNvZGVOYW1lc1tpbmRleF0sIHBhZE9wY29kZU5hbWUoKE9wY29kZUlEKWlu
ZGV4LCAyOCksIG9wY29kZUNvdW50c1tpbmRleF0sICgoZG91YmxlKSBvcGNvZGVDb3VudHNbaW5k
ZXhdKSAvICgoZG91YmxlKSB0b3RhbEluc3RydWN0aW9ucykgKiAxMDAuMCk7ICAgIAorICAgICAg
ICBkYXRhTG9nKCIlczolcyAlbGxkIC0gJS4yZiUlXG4iLCBvcGNvZGVOYW1lc1tpbmRleF0sIHBh
ZE9wY29kZU5hbWUoKE9wY29kZUlEKWluZGV4LCAyOCksIG9wY29kZUNvdW50c1tpbmRleF0sICgo
ZG91YmxlKSBvcGNvZGVDb3VudHNbaW5kZXhdKSAvICgoZG91YmxlKSB0b3RhbEluc3RydWN0aW9u
cykgKiAxMDAuMCk7ICAgIAogICAgIH0KICAgICAKLSAgICBwcmludGYoIlxuIik7Ci0gICAgcHJp
bnRmKCIyLW9wY29kZSBzZXF1ZW5jZXMgYnkgZnJlcXVlbmN5OiAlbGxkXG5cbiIsIHRvdGFsSW5z
dHJ1Y3Rpb25zKTsKKyAgICBkYXRhTG9nKCJcbiIpOworICAgIGRhdGFMb2coIjItb3Bjb2RlIHNl
cXVlbmNlcyBieSBmcmVxdWVuY3k6ICVsbGRcblxuIiwgdG90YWxJbnN0cnVjdGlvbnMpOwogICAg
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzICogbnVtT3Bjb2RlSURzOyAr
K2kpIHsKICAgICAgICAgcGFpcjxpbnQsIGludD4gaW5kZXhQYWlyID0gc29ydGVkUGFpckluZGlj
ZXNbaV07CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBPcGNvZGVTdGF0czo6fk9wY29kZVN0YXRzKCkK
ICAgICAgICAgaWYgKCFjb3VudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAg
ICAgcHJpbnRmKCIlcyVzICVzOiVzICVsbGQgJS4yZiUlXG4iLCBvcGNvZGVOYW1lc1tpbmRleFBh
aXIuZmlyc3RdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIuZmlyc3QsIDI4KSwg
b3Bjb2RlTmFtZXNbaW5kZXhQYWlyLnNlY29uZF0sIHBhZE9wY29kZU5hbWUoKE9wY29kZUlEKWlu
ZGV4UGFpci5zZWNvbmQsIDI4KSwgY291bnQsICgoZG91YmxlKSBjb3VudCkgLyAoKGRvdWJsZSkg
dG90YWxJbnN0cnVjdGlvblBhaXJzKSAqIDEwMC4wKTsKKyAgICAgICAgZGF0YUxvZygiJXMlcyAl
czolcyAlbGxkICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLmZpcnN0XSwgcGFkT3Bj
b2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLmZpcnN0LCAyOCksIG9wY29kZU5hbWVzW2luZGV4
UGFpci5zZWNvbmRdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIuc2Vjb25kLCAy
OCksIGNvdW50LCAoKGRvdWJsZSkgY291bnQpIC8gKChkb3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25Q
YWlycykgKiAxMDAuMCk7CiAgICAgfQogICAgIAotICAgIHByaW50ZigiXG4iKTsKLSAgICBwcmlu
dGYoIk1vc3QgY29tbW9uIG9wY29kZXMgYW5kIHNlcXVlbmNlczpcbiIpOworICAgIGRhdGFMb2co
IlxuIik7CisgICAgZGF0YUxvZygiTW9zdCBjb21tb24gb3Bjb2RlcyBhbmQgc2VxdWVuY2VzOlxu
Iik7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAg
ICAgIGludCBpbmRleCA9IHNvcnRlZEluZGljZXNbaV07CkBAIC0xNTEsNyArMTUxLDcgQEAgT3Bj
b2RlU3RhdHM6On5PcGNvZGVTdGF0cygpCiAgICAgICAgIGRvdWJsZSBvcGNvZGVQcm9wb3J0aW9u
ID0gKChkb3VibGUpIG9wY29kZUNvdW50KSAvICgoZG91YmxlKSB0b3RhbEluc3RydWN0aW9ucyk7
CiAgICAgICAgIGlmIChvcGNvZGVQcm9wb3J0aW9uIDwgMC4wMDAxKQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIHByaW50ZigiXG4lczolcyAlbGxkIC0gJS4yZiUlXG4iLCBvcGNvZGVOYW1l
c1tpbmRleF0sIHBhZE9wY29kZU5hbWUoKE9wY29kZUlEKWluZGV4LCAyOCksIG9wY29kZUNvdW50
LCBvcGNvZGVQcm9wb3J0aW9uICogMTAwLjApOworICAgICAgICBkYXRhTG9nKCJcbiVzOiVzICVs
bGQgLSAlLjJmJSVcbiIsIG9wY29kZU5hbWVzW2luZGV4XSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2Rl
SUQpaW5kZXgsIDI4KSwgb3Bjb2RlQ291bnQsIG9wY29kZVByb3BvcnRpb24gKiAxMDAuMCk7CiAK
ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1PcGNvZGVJRHMgKiBudW1PcGNvZGVJRHM7
ICsraikgewogICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gaW5kZXhQYWlyID0gc29ydGVkUGFp
ckluZGljZXNbal07CkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBPcGNvZGVTdGF0czo6fk9wY29kZVN0
YXRzKCkKICAgICAgICAgICAgIGlmIChpbmRleFBhaXIuZmlyc3QgIT0gaW5kZXggJiYgaW5kZXhQ
YWlyLnNlY29uZCAhPSBpbmRleCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgcHJpbnRmKCIgICAgJXMlcyAlczolcyAlbGxkIC0gJS4yZiUlXG4iLCBvcGNvZGVOYW1l
c1tpbmRleFBhaXIuZmlyc3RdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIuZmly
c3QsIDI4KSwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLnNlY29uZF0sIHBhZE9wY29kZU5hbWUoKE9w
Y29kZUlEKWluZGV4UGFpci5zZWNvbmQsIDI4KSwgcGFpckNvdW50LCBwYWlyUHJvcG9ydGlvbiAq
IDEwMC4wKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAlcyVzICVzOiVzICVsbGQgLSAlLjJm
JSVcbiIsIG9wY29kZU5hbWVzW2luZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUoKE9wY29k
ZUlEKWluZGV4UGFpci5maXJzdCwgMjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vjb25kXSwg
cGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBwYWlyQ291bnQs
IHBhaXJQcm9wb3J0aW9uICogMTAwLjApOwogICAgICAgICB9CiAgICAgICAgIAogICAgIH0KLSAg
ICBwcmludGYoIlxuIik7CisgICAgZGF0YUxvZygiXG4iKTsKIH0KIAogdm9pZCBPcGNvZGVTdGF0
czo6cmVjb3JkSW5zdHJ1Y3Rpb24oaW50IG9wY29kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsMTQgKzY3LDE0IEBAIHZvaWQgU2FtcGxpbmdGbGFnczo6c3RvcCgpCiAg
ICAgICAgIHRvdGFsICs9IHNfZmxhZ0NvdW50c1tpXTsKIAogICAgIGlmICh0b3RhbCkgewotICAg
ICAgICBwcmludGYoIlxuU2FtcGxpbmdGbGFnczogc2FtcGxlIGNvdW50cyB3aXRoIGZsYWdzIHNl
dDogKCVsbGQgdG90YWwpXG4iLCB0b3RhbCk7CisgICAgICAgIGRhdGFMb2coIlxuU2FtcGxpbmdG
bGFnczogc2FtcGxlIGNvdW50cyB3aXRoIGZsYWdzIHNldDogKCVsbGQgdG90YWwpXG4iLCB0b3Rh
bCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gMzI7ICsraSkgewogICAgICAg
ICAgICAgaWYgKHNfZmxhZ0NvdW50c1tpXSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgWyAl
MDJkIF0gOiAlbGxkXHRcdCglMDMuMmYlJSlcbiIsIGksIHNfZmxhZ0NvdW50c1tpXSwgKDEwMC4w
ICogc19mbGFnQ291bnRzW2ldKSAvIHRvdGFsKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
IFsgJTAyZCBdIDogJWxsZFx0XHQoJTAzLjJmJSUpXG4iLCBpLCBzX2ZsYWdDb3VudHNbaV0sICgx
MDAuMCAqIHNfZmxhZ0NvdW50c1tpXSkgLyB0b3RhbCk7CiAgICAgICAgIH0KLSAgICAgICAgcHJp
bnRmKCJcbiIpOworICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0gZWxzZQotICAgIHByaW50
ZigiXG5TYW1wbGluZ0ZsYWdzOiBubyBzYW1wbGVzLlxuXG4iKTsKKyAgICBkYXRhTG9nKCJcblNh
bXBsaW5nRmxhZ3M6IG5vIHNhbXBsZXMuXG5cbiIpOwogfQogdWludDY0X3QgU2FtcGxpbmdGbGFn
czo6c19mbGFnQ291bnRzWzMzXTsKIApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgU2FtcGxpbmdS
ZWdpb246OmR1bXAoKQogdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcEludGVybmFsKCkKIHsKICAg
ICBpZiAoIXNfc3BlY3RydW0pIHsKLSAgICAgICAgcHJpbnRmKCJcblNhbXBsaW5nUmVnaW9uOiB3
YXMgbmV2ZXIgc2FtcGxlZC5cblxuIik7CisgICAgICAgIGRhdGFMb2coIlxuU2FtcGxpbmdSZWdp
b246IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKQEAgLTE2MSwxMCArMTYxLDEwIEBAIHZvaWQgU2FtcGxpbmdSZWdpb246OmR1bXBJbnRlcm5h
bCgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCk7IGktLTspCiAgICAgICAgIHRv
dGFsICs9IGxpc3RbaV0uY291bnQ7CiAgICAgCi0gICAgcHJpbnRmKCJcblNhbXBsaW5nUmVnaW9u
OiBzYW1wbGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1IHNhbXBsZXMpXG4iLCB0b3RhbCk7Cisg
ICAgZGF0YUxvZygiXG5TYW1wbGluZ1JlZ2lvbjogc2FtcGxlIGNvdW50cyBmb3IgcmVnaW9uczog
KCVsdSBzYW1wbGVzKVxuIiwgdG90YWwpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC5z
aXplKCk7IGktLTspCi0gICAgICAgIHByaW50ZigiICAgICUzLjJsZiUlICAlc1xuIiwgKDEwMC4w
ICogbGlzdFtpXS5jb3VudCkgLyB0b3RhbCwgbGlzdFtpXS5rZXkpOworICAgICAgICBkYXRhTG9n
KCIgICAgJTMuMmxmJSUgICVzXG4iLCAoMTAwLjAgKiBsaXN0W2ldLmNvdW50KSAvIHRvdGFsLCBs
aXN0W2ldLmtleSk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoU0FNUExJTkdfUkVHSU9OUykKIHZvaWQg
U2FtcGxpbmdSZWdpb246OmR1bXAoKSB7IH0KQEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgU2Ft
cGxpbmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vICgyKSBQcmludCBPcGNv
ZGUgc2FtcGxpbmcgcmVzdWx0cy4KIAotICAgIHByaW50ZigiXG5CeXRlY29kZSBzYW1wbGVzIFsq
XVxuIik7Ci0gICAgcHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZSAg
ICUlIG9mICAgICAgICUlIG9mICAgICB8ICAgY3RpICAgICBjdGkgJSVcbiIpOwotICAgIHByaW50
Zigib3Bjb2RlICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAgICAgVk0gICAgICAgIHRvdGFs
ICAgIHwgIGNvdW50ICAgb2Ygc2VsZlxuIik7Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgfCAgLS0tLS0tLS0tLS0t
LS0tLVxuIik7CisgICAgZGF0YUxvZygiXG5CeXRlY29kZSBzYW1wbGVzIFsqXVxuIik7CisgICAg
ZGF0YUxvZygiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgICAlJSBvZiAgICAg
ICAlJSBvZiAgICAgfCAgIGN0aSAgICAgY3RpICUlXG4iKTsKKyAgICBkYXRhTG9nKCJvcGNvZGUg
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICAgICBWTSAgICAgICAgdG90YWwgICAgfCAgY291
bnQgICBvZiBzZWxmXG4iKTsKKyAgICBkYXRhTG9nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgfCAgLS0tLS0tLS0tLS0tLS0tLVxuIik7
CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAg
IGxvbmcgbG9uZyBjb3VudCA9IG9wY29kZVNhbXBsZUluZm9baV0uY291bnQ7CkBAIC0zOTEsMTgg
KzM5MSwxOCBAQCB2b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIGRvdWJsZSBwZXJjZW50T2ZUb3RhbCA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50KSAq
IDEwMCkgLyBtX3NhbXBsZUNvdW50OwogICAgICAgICBsb25nIGxvbmcgY291bnRJbkNUSUZ1bmN0
aW9ucyA9IG9wY29kZVNhbXBsZUluZm9baV0uY291bnRJbkNUSUZ1bmN0aW9uczsKICAgICAgICAg
ZG91YmxlIHBlcmNlbnRJbkNUSUZ1bmN0aW9ucyA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGNvdW50
SW5DVElGdW5jdGlvbnMpICogMTAwKSAvIGNvdW50OwotICAgICAgICBmcHJpbnRmKHN0ZG91dCwg
IiVzOiVzJS02bGxkICUuM2YlJVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBvcGNv
ZGVOYW1lLCBvcGNvZGVQYWRkaW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRvdGFs
LCBjb3VudEluQ1RJRnVuY3Rpb25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOworICAgICAgICBk
ZWJ1Z0RlYnVnUHJpbnRmKCIlczolcyUtNmxsZCAlLjNmJSVcdCUuM2YlJVx0ICB8ICAgJS02bGxk
ICUuM2YlJVxuIiwgb3Bjb2RlTmFtZSwgb3Bjb2RlUGFkZGluZywgY291bnQsIHBlcmNlbnRPZlZN
LCBwZXJjZW50T2ZUb3RhbCwgY291bnRJbkNUSUZ1bmN0aW9ucywgcGVyY2VudEluQ1RJRnVuY3Rp
b25zKTsKICAgICB9CiAgICAgCi0gICAgcHJpbnRmKCJcblsqXSBTYW1wbGVzIGluc2lkZSBob3N0
IGNvZGUgYXJlIG5vdCBjaGFyZ2VkIHRvIGFueSBCeXRlY29kZS5cblxuIik7Ci0gICAgcHJpbnRm
KCJcdFNhbXBsZXMgaW5zaWRlIFZNOlx0XHQlbGxkIC8gJWxsZCAoJS4zZiUlKVxuIiwgbV9vcGNv
ZGVTYW1wbGVDb3VudCwgbV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9vcGNv
ZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7Ci0gICAgcHJpbnRmKCJcdFNh
bXBsZXMgaW5zaWRlIGhvc3QgY29kZTpcdCVsbGQgLyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2Ft
cGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nh
c3Q8ZG91YmxlPihtX3NhbXBsZUNvdW50IC0gbV9vcGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8g
bV9zYW1wbGVDb3VudCk7Ci0gICAgcHJpbnRmKCJcdHNhbXBsZSBjb3VudDpcdHNhbXBsZXMgaW5z
aWRlIHRoaXMgb3Bjb2RlXG4iKTsKLSAgICBwcmludGYoIlx0JSUgb2YgVk06XHRzYW1wbGUgY291
bnQgLyBhbGwgb3Bjb2RlIHNhbXBsZXNcbiIpOwotICAgIHByaW50ZigiXHQlJSBvZiB0b3RhbDpc
dHNhbXBsZSBjb3VudCAvIGFsbCBzYW1wbGVzXG4iKTsKLSAgICBwcmludGYoIlx0LS0tLS0tLS0t
LS0tLS1cbiIpOwotICAgIHByaW50ZigiXHRjdGkgY291bnQ6XHRzYW1wbGVzIGluc2lkZSBhIENU
SSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhpcyBvcGNvZGVcbiIpOwotICAgIHByaW50ZigiXHRjdGkg
JSUgb2Ygc2VsZjpcdGN0aSBjb3VudCAvIHNhbXBsZSBjb3VudFxuIik7CisgICAgZGF0YUxvZygi
XG5bKl0gU2FtcGxlcyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBub3QgY2hhcmdlZCB0byBhbnkgQnl0
ZWNvZGUuXG5cbiIpOworICAgIGRhdGFMb2coIlx0U2FtcGxlcyBpbnNpZGUgVk06XHRcdCVsbGQg
LyAlbGxkICglLjNmJSUpXG4iLCBtX29wY29kZVNhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCAo
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBs
ZUNvdW50KTsKKyAgICBkYXRhTG9nKCJcdFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZTpcdCVsbGQg
LyAlbGxkICglLjNmJSUpXG5cbiIsIG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNvdW50
LCBtX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3NhbXBsZUNvdW50IC0gbV9v
cGNvZGVTYW1wbGVDb3VudCkgKiAxMDApIC8gbV9zYW1wbGVDb3VudCk7CisgICAgZGF0YUxvZygi
XHRzYW1wbGUgY291bnQ6XHRzYW1wbGVzIGluc2lkZSB0aGlzIG9wY29kZVxuIik7CisgICAgZGF0
YUxvZygiXHQlJSBvZiBWTTpcdHNhbXBsZSBjb3VudCAvIGFsbCBvcGNvZGUgc2FtcGxlc1xuIik7
CisgICAgZGF0YUxvZygiXHQlJSBvZiB0b3RhbDpcdHNhbXBsZSBjb3VudCAvIGFsbCBzYW1wbGVz
XG4iKTsKKyAgICBkYXRhTG9nKCJcdC0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkYXRhTG9nKCJc
dGN0aSBjb3VudDpcdHNhbXBsZXMgaW5zaWRlIGEgQ1RJIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGlz
IG9wY29kZVxuIik7CisgICAgZGF0YUxvZygiXHRjdGkgJSUgb2Ygc2VsZjpcdGN0aSBjb3VudCAv
IHNhbXBsZSBjb3VudFxuIik7CiAgICAgCiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykK
IApAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIC8vICg0KSBQcmludCBkYXRhIGZyb20gJ2NvZGVCbG9ja1NhbXBsZXMnIGFy
cmF5LgogCi0gICAgcHJpbnRmKCJcbkNvZGVCbG9jayBzYW1wbGVzXG5cbiIpOyAKKyAgICBkYXRh
TG9nKCJcbkNvZGVCbG9jayBzYW1wbGVzXG5cbiIpOyAKIAogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2NvcGVDb3VudDsgKytpKSB7CiAgICAgICAgIFNjcmlwdFNhbXBsZVJlY29yZCogcmVjb3Jk
ID0gY29kZUJsb2NrU2FtcGxlc1tpXTsKQEAgLTQyOCwyMSArNDI4LDIxIEBAIHZvaWQgU2FtcGxp
bmdUb29sOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBpZiAoYmxvY2tQZXJjZW50
ID49IDEpIHsKICAgICAgICAgICAgIC8vSW5zdHJ1Y3Rpb24qIGNvZGUgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgICAgICBwcmludGYoIiMlZDogJXM6JWQ6ICVk
IC8gJWxsZCAoJS4zZiUlKVxuIiwgaSArIDEsIHJlY29yZC0+bV9leGVjdXRhYmxlLT5zb3VyY2VV
UkwoKS51dGY4KCkuZGF0YSgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNl
dCgwKSwgcmVjb3JkLT5tX3NhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCBibG9ja1BlcmNlbnQp
OworICAgICAgICAgICAgZGF0YUxvZygiIyVkOiAlczolZDogJWQgLyAlbGxkICglLjNmJSUpXG4i
LCBpICsgMSwgcmVjb3JkLT5tX2V4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLnV0ZjgoKS5kYXRhKCks
IGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KDApLCByZWNvcmQtPm1fc2Ft
cGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIGJsb2NrUGVyY2VudCk7CiAgICAgICAgICAgICBpZiAo
aSA8IDEwKSB7CiAgICAgICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCx1bnNpZ25lZD4gbGlu
ZUNvdW50czsKICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXAoZXhlYyk7CiAKLSAgICAg
ICAgICAgICAgICBwcmludGYoIiAgICBPcGNvZGUgYW5kIGxpbmUgbnVtYmVyIHNhbXBsZXMgWypd
XG5cbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBPcGNvZGUgYW5kIGxpbmUgbnVt
YmVyIHNhbXBsZXMgWypdXG5cbiIpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3Ag
PSAwOyBvcCA8IHJlY29yZC0+bV9zaXplOyArK29wKSB7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBjb3VudCA9IHJlY29yZC0+bV9zYW1wbGVzW29wXTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGNvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgICBbJSA0ZF0gaGFz
IHNhbXBsZSBjb3VudDogJSA0ZFxuIiwgb3AsIGNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBbJSA0ZF0gaGFzIHNhbXBsZSBjb3VudDogJSA0ZFxuIiwgb3AsIGNv
dW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSBjb2RlQmxvY2st
PmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChvcCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lQ291bnRzLnNldChsaW5lLCAobGluZUNvdW50cy5jb250YWlucyhsaW5lKSA/IGxpbmVD
b3VudHMuZ2V0KGxpbmUpIDogMCkgKyBjb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAg
ICAgICAgIGRhdGFMb2coIlxuIik7CiAKICAgICAgICAgICAgICAgICBpbnQgbGluZXNDb3VudCA9
IGxpbmVDb3VudHMuc2l6ZSgpOwogICAgICAgICAgICAgICAgIFZlY3RvcjxMaW5lQ291bnRJbmZv
PiBsaW5lQ291bnRJbmZvKGxpbmVzQ291bnQpOwpAQCAtNDU1LDEyICs0NTUsMTIgQEAgdm9pZCBT
YW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIHFzb3J0
KGxpbmVDb3VudEluZm8uYmVnaW4oKSwgbGluZXNDb3VudCwgc2l6ZW9mKExpbmVDb3VudEluZm8p
LCBjb21wYXJlTGluZUNvdW50SW5mb1NhbXBsaW5nKTsKIAogICAgICAgICAgICAgICAgIGZvciAo
bGluZW5vID0gMDsgbGluZW5vIDwgbGluZXNDb3VudDsgKytsaW5lbm8pIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmKCIgICAgTGluZSAjJWQgaGFzIHNhbXBsZSBjb3VudCAlZC5cbiIsIGxp
bmVDb3VudEluZm9bbGluZW5vXS5saW5lLCBsaW5lQ291bnRJbmZvW2xpbmVub10uY291bnQpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgTGluZSAjJWQgaGFzIHNhbXBsZSBjb3Vu
dCAlZC5cbiIsIGxpbmVDb3VudEluZm9bbGluZW5vXS5saW5lLCBsaW5lQ291bnRJbmZvW2xpbmVu
b10uY291bnQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcmludGYoIlxu
Iik7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgWypdIFNhbXBsZXMgaW5zaWRlIGhvc3Qg
Y29kZSBhcmUgY2hhcmdlZCB0byB0aGUgY2FsbGluZyBCeXRlY29kZS5cbiIpOwotICAgICAgICAg
ICAgICAgIHByaW50ZigiICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJldHVybiBib3VuZGFy
eSBhcmUgbm90IGNoYXJnZWQgdG8gYSBzcGVjaWZpYyBvcGNvZGUgb3IgbGluZS5cblxuIik7Ci0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJl
dHVybiBib3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxuXG4iLCByZWNvcmQtPm1fc2FtcGxlQ291
bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQsIHJlY29yZC0+bV9zYW1wbGVDb3VudCwg
KHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3NhbXBsZUNvdW50IC0gcmVjb3JkLT5tX29w
Y29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQtPm1fc2FtcGxlQ291bnQpOworICAgICAg
ICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFsq
XSBTYW1wbGVzIGluc2lkZSBob3N0IGNvZGUgYXJlIGNoYXJnZWQgdG8gdGhlIGNhbGxpbmcgQnl0
ZWNvZGUuXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIFNhbXBsZXMgb24g
YSBjYWxsIC8gcmV0dXJuIGJvdW5kYXJ5IGFyZSBub3QgY2hhcmdlZCB0byBhIHNwZWNpZmljIG9w
Y29kZSBvciBsaW5lLlxuXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAg
ICBTYW1wbGVzIG9uIGEgY2FsbCAvIHJldHVybiBib3VuZGFyeTogJWQgLyAlZCAoJS4zZiUlKVxu
XG4iLCByZWNvcmQtPm1fc2FtcGxlQ291bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQs
IHJlY29yZC0+bV9zYW1wbGVDb3VudCwgKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjb3JkLT5tX3Nh
bXBsZUNvdW50IC0gcmVjb3JkLT5tX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyByZWNvcmQt
Pm1fc2FtcGxlQ291bnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTQgKzE1MywxNCBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmVuZEJhc2ljQmxvY2soTWVyZ2VNCiAgICAgaWYgKG1lcmdlTW9kZSAhPSBEb250TWVy
Z2UgfHwgIUFTU0VSVF9ESVNBQkxFRCkgewogICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygp
OyArK2FyZ3VtZW50KSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICAgIE1lcmdpbmcgc3RhdGUgZm9yIGFyZ3VtZW50
ICV6dS5cbiIsIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgTWVyZ2lu
ZyBzdGF0ZSBmb3IgYXJndW1lbnQgJXp1LlxuIiwgYXJndW1lbnQpOwogI2VuZGlmCiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlU3RhdGVBdFRhaWwoYmxvY2stPnZhbHVlc0F0VGFpbC5hcmd1
bWVudChhcmd1bWVudCksIG1fdmFyaWFibGVzLmFyZ3VtZW50KGFyZ3VtZW50KSwgYmxvY2stPnZh
cmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgYmxvY2stPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICAgIE1lcmdpbmcg
c3RhdGUgZm9yIGxvY2FsICV6dS5cbiIsIGxvY2FsKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwgbG9jYWwpOwogI2VuZGlmCiAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlU3RhdGVBdFRhaWwoYmxvY2stPnZhbHVlc0F0VGFp
bC5sb2NhbChsb2NhbCksIG1fdmFyaWFibGVzLmxvY2FsKGxvY2FsKSwgYmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5sb2NhbChsb2NhbCkpOwogICAgICAgICB9CkBAIC05MzcsNyArOTM3LDcgQEAgaW5s
aW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAg
ICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgSXQncyBsaXZlLCBub2RlIEAldS5cbiIsIG5vZGVJ
bmRleCk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgSXQncyBsaXZlLCBub2RlIEAl
dS5cbiIsIG5vZGVJbmRleCk7CiAjZW5kaWYKIAogICAgIHN3aXRjaCAobm9kZS5vcCkgewpAQCAt
OTQ3LDcgKzk0Nyw3IEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQK
ICAgICAgICAgLy8gVGhlIGJsb2NrIHRyYW5zZmVycyB0aGUgdmFsdWUgZnJvbSBoZWFkIHRvIHRh
aWwuCiAgICAgICAgIHNvdXJjZSA9ICZpblZhcmlhYmxlOwogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAgICAgICAgVHJhbnNmZXJp
bmcgZnJvbSBoZWFkIHRvIHRhaWwuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgICAgIFRy
YW5zZmVyaW5nIGZyb20gaGVhZCB0byB0YWlsLlxuIik7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKQEAgLTk1NSw3ICs5NTUsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0
YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgIC8vIFRoZSBibG9jayByZWZpbmVzIHRoZSB2YWx1
ZSB3aXRoIGFkZGl0aW9uYWwgc3BlY3VsYXRpb25zLgogICAgICAgICBzb3VyY2UgPSAmZm9yTm9k
ZShub2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
LSAgICAgICAgcHJpbnRmKCIgICAgICAgICAgUmVmaW5pbmcuXG4iKTsKKyAgICAgICAgZGF0YUxv
ZygiICAgICAgICAgIFJlZmluaW5nLlxuIik7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKQEAgLTk2NCw3ICs5NjQsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjpt
ZXJnZVN0YXRlQXRUCiAgICAgICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAg
ICAgICAgc291cmNlID0gJmZvck5vZGUobm9kZS5jaGlsZDEoKSk7CiAjaWYgREZHX0VOQUJMRShE
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICAgICAgICBTZXR0
aW5nLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgICBTZXR0aW5nLlxuIik7CiAjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtOTc4LDcgKzk3OCw3IEBAIGlubGluZSBi
b29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgLy8gQWJzdHJhY3QgZXhl
Y3V0aW9uIGRpZCBub3QgY2hhbmdlIHRoZSBvdXRwdXQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLCBm
b3IgdGhpcwogICAgICAgICAvLyBiYXNpYyBibG9jaywgb24gdGhpcyBpdGVyYXRpb24uCiAjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAg
ICAgICAgICBOb3QgY2hhbmdlZCFcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgTm90
IGNoYW5nZWQhXG4iKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
OTg4LDcgKzk4OCw3IEBAIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQK
ICAgICAvLyB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhlIGZpeHBvaW50IG11c3QgZ28gb24hCiAg
ICAgZGVzdGluYXRpb24gPSAqc291cmNlOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICBwcmludGYoIiAgICAgICAgICBDaGFuZ2VkIVxuIik7CisgICAgZGF0
YUxvZygiICAgICAgICAgIENoYW5nZWQhXG4iKTsKICNlbmRpZgogICAgIHJldHVybiB0cnVlOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODksNyArNTg5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwogICAgICAgICBQcmVkaWN0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiRHluYW1pYyBbQCV1LCBiYyMl
dV0gcHJlZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGljdGlv
blRvU3RyaW5nKHByZWRpY3Rpb24pKTsKKyAgICAgICAgZGF0YUxvZygiRHluYW1pYyBbQCV1LCBi
YyMldV0gcHJlZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGlj
dGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHByZWRpY3Rpb247CkBAIC02MjYsNyArNjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybiBub2RlSW5kZXg7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKLSAgICAgICAgcHJpbnRmKCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBz
bG93LWNhc2UgY291bnRlciBpcyBhdCAldSBhbmQgZXhpdCBwcm9maWxlcyBzYXkgJWQsICVkXG4i
LCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5vZGVJbmRleCwgbV9jdXJy
ZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJm
bG93KSwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgTmVnYXRpdmVaZXJvKSk7CisgICAgICAgIGRhdGFMb2coIk1ha2luZyAlcyBAJXUg
c2FmZSBhdCBiYyMldSBiZWNhdXNlIHNsb3ctY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBleGl0
IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5kZXhd
Lm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRl
eCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKTsKICNlbmRpZgog
ICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX2dyYXBoW25vZGVJbmRleF0ub3ApIHsKQEAgLTY0
MiwxMyArNjQyLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UobV9jdXJyZW50
SW5kZXgpCiAgICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKSB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiTWFraW5nIEFyaXRoTXVs
IEAldSB0YWtlIGRlZXBlc3Qgc2xvdyBjYXNlLlxuIiwgbm9kZUluZGV4KTsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2UgZGVlcGVzdCBzbG93IGNhc2Uu
XG4iLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5k
ZXhdLm1lcmdlQXJpdGhOb2RlRmxhZ3MoTm9kZU1heU92ZXJmbG93IHwgTm9kZU1heU5lZ1plcm8p
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgICAg
ICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiTWFraW5nIEFyaXRoTXVsIEAldSB0YWtlIGZh
c3RlciBzbG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGRhdGFMb2co
Ik1ha2luZyBBcml0aE11bCBAJXUgdGFrZSBmYXN0ZXIgc2xvdyBjYXNlLlxuIiwgbm9kZUluZGV4
KTsKICNlbmRpZgogICAgICAgICAgICAgICAgIG1fZ3JhcGhbbm9kZUluZGV4XS5tZXJnZUFyaXRo
Tm9kZUZsYWdzKE5vZGVNYXlOZWdaZXJvKTsKICAgICAgICAgICAgIH0KQEAgLTY3OCw3ICs2Nzgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgCiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIk1ha2luZyAlcyBA
JXUgc2FmZSBhdCBiYyMldSBiZWNhdXNlIHNwZWNpYWwgZmFzdC1jYXNlIGNvdW50ZXIgaXMgYXQg
JXUgYW5kIGV4aXQgcHJvZmlsZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBo
W25vZGVJbmRleF0ub3ApLCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPnNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2
ZVplcm8pKTsKKyAgICAgICAgZGF0YUxvZygiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJl
Y2F1c2Ugc3BlY2lhbCBmYXN0LWNhc2UgY291bnRlciBpcyBhdCAldSBhbmQgZXhpdCBwcm9maWxl
cyBzYXkgJWQsICVkXG4iLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5v
ZGVJbmRleCwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4
KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOwogI2VuZGlmCiAg
ICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0
aGlzIG1vcmUgZ3JhbnVsYXIuIFRoZSBERkcgY2VydGFpbmx5IGNhbgpAQCAtOTEyLDcgKzkxMiw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW50ZXJwcmUKICAgICBlbnVtIHsg
Q29uc3RhbnRGdW5jdGlvbiwgTGlua2VkRnVuY3Rpb24sIFVua25vd25GdW5jdGlvbiB9IGNhbGxU
eXBlOwogICAgICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIHBy
aW50ZigiU2xvdyBjYXNlIGNvdW50IGZvciBjYWxsIGF0IEAlenUgYmMjJXU6ICV1LyV1OyBleGl0
IHByb2ZpbGU6ICVkLlxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4LCBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmV4ZWN1dGlvbkVudHJ5Q291bnQoKSwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICBkYXRh
TG9nKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCV6dSBiYyMldTogJXUvJXU7IGV4aXQg
cHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwogI2VuZGlmCiAg
ICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUZvcigKQEAgLTEwMjksNyArMTAyOSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKGJvb2wKICAgICBBU1NFUlQoY2FuSW5saW5lRnVuY3Rpb25Gb3IoY29kZUJs
b2NrLCBraW5kKSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgcHJpbnRm
KCJJbmxpbmluZyBleGVjdXRhYmxlICVwLlxuIiwgZXhlY3V0YWJsZSk7CisgICAgZGF0YUxvZygi
SW5saW5pbmcgZXhlY3V0YWJsZSAlcC5cbiIsIGV4ZWN1dGFibGUpOwogI2VuZGlmCiAgICAgCiAg
ICAgLy8gTm93IHdlIGtub3cgd2l0aG91dCBhIGRvdWJ0IHRoYXQgd2UgYXJlIGNvbW1pdHRlZCB0
byBpbmxpbmluZy4gU28gYmVnaW4gdGhlIHByb2Nlc3MKQEAgLTExMTAsNyArMTExMCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAgICAgLy8gY2FsbGVy
LiBJdCBkb2Vzbid0IG5lZWQgdG8gYmUgbGlua2VkIHRvLCBidXQgaXQgbmVlZHMgb3V0Z29pbmcg
bGlua3MuCiAgICAgICAgIGlmICghaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLmlz
RW1wdHkoKSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIHBy
aW50ZigiUmVhc2NyaWJpbmcgYnl0ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0
byBiYyMldSAoaW5saW5lIHJldHVybiBjYXNlKS5cbiIsIGxhc3RCbG9jaywgbGFzdEJsb2NrLT5i
eXRlY29kZUJlZ2luLCBtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBkYXRhTG9nKCJSZWFz
Y3JpYmluZyBieXRlY29kZSBpbmRleCBvZiBibG9jayAlcCBmcm9tIGJjIyV1IHRvIGJjIyV1IChp
bmxpbmUgcmV0dXJuIGNhc2UpLlxuIiwgbGFzdEJsb2NrLCBsYXN0QmxvY2stPmJ5dGVjb2RlQmVn
aW4sIG1fY3VycmVudEluZGV4KTsKICNlbmRpZgogICAgICAgICAgICAgLy8gRm9yIGRlYnVnZ2lu
ZyBwdXJwb3Nlcywgc2V0IHRoZSBieXRlY29kZUJlZ2luLiBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0
IG1hdHRlcgogICAgICAgICAgICAgLy8gZm9yIHJlbGVhc2UgYnVpbGRzIGJlY2F1c2UgdGhpcyBi
bG9jayB3aWxsIG5ldmVyIHNlcnZlIGFzIGEgcG90ZW50aWFsIHRhcmdldApAQCAtMTEyMiw3ICsx
MTIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgICAg
ICBtX2N1cnJlbnRCbG9jayA9IG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpLmdldCgpOwogCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIkRvbmUgaW5saW5pbmcg
ZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdlbmVyYXRpb24gYXQgZXBpbG9ndWUuXG4i
LCBleGVjdXRhYmxlKTsKKyAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyBleGVjdXRhYmxl
ICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlvbiBhdCBlcGlsb2d1ZS5cbiIsIGV4ZWN1dGFi
bGUpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTExNDksNyArMTE0
OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAvLyBO
ZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0
aGUgY2FsbGVyLgogICAgIE93blB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UHRyKG5ldyBC
YXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fZ3JhcGguc2l6ZSgpLCBtX251bUFyZ3VtZW50cywgbV9u
dW1Mb2NhbHMpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgcHJpbnRmKCJD
cmVhdGluZyBpbmxpbmUgZXBpbG9ndWUgYmFzaWMgYmxvY2sgJXAsICMlenUgZm9yICVwIGJjIyV1
IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJsb2NrLmdldCgpLCBtX2dyYXBoLm1fYmxvY2tzLnNp
emUoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBtX2N1cnJlbnRJbmRleCwgQ29k
ZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxp
bmVDYWxsRnJhbWUpKTsKKyAgICBkYXRhTG9nKCJDcmVhdGluZyBpbmxpbmUgZXBpbG9ndWUgYmFz
aWMgYmxvY2sgJXAsICMlenUgZm9yICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIGJs
b2NrLmdldCgpLCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKSwgbV9pbmxpbmVTdGFja1RvcC0+ZXhl
Y3V0YWJsZSgpLCBtX2N1cnJlbnRJbmRleCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxs
RnJhbWUobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKICNlbmRpZgogICAg
IG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tU
b3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1fZ3JhcGgu
bV9ibG9ja3NbbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5sYXN0KCldLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7CkBAIC0xMTYxLDcgKzExNjEs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgLy8gQXQg
dGhpcyBwb2ludCB3ZSByZXR1cm4gYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIHRo
ZSBjYWxsZXIsIGJ1dAogICAgIC8vIGluIHRoZSBuZXcgYmFzaWMgYmxvY2suCiAjaWYgREZHX0VO
QUJMRShERUJVR19WRVJCT1NFKQotICAgIHByaW50ZigiRG9uZSBpbmxpbmluZyBleGVjdXRhYmxl
ICVwLCBjb250aW51aW5nIGNvZGUgZ2VuZXJhdGlvbiBpbiBuZXcgYmxvY2suXG4iLCBleGVjdXRh
YmxlKTsKKyAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIGV4ZWN1dGFibGUgJXAsIGNvbnRpbnVp
bmcgY29kZSBnZW5lcmF0aW9uIGluIG5ldyBibG9jay5cbiIsIGV4ZWN1dGFibGUpOwogI2VuZGlm
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChK
dW1wLCBPcEluZm8obV9jdXJyZW50SW5kZXgpKTsKICAgICAgICAgICAgIGVsc2UgewogI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIlJlZnVzaW5n
IHRvIHBsYW50IGp1bXAgYXQgbGltaXQgJXUgYmVjYXVzZSBibG9jayAlcCBpcyBlbXB0eS5cbiIs
IGxpbWl0LCBtX2N1cnJlbnRCbG9jayk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVmdXNp
bmcgdG8gcGxhbnQganVtcCBhdCBsaW1pdCAldSBiZWNhdXNlIGJsb2NrICVwIGlzIGVtcHR5Llxu
IiwgbGltaXQsIG1fY3VycmVudEJsb2NrKTsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIHNob3VsZENvbnRpbnVlUGFyc2luZzsKQEAgLTE3NjcsNyArMTc2Nyw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4LCBpZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICAgICAgICAgIHByaW50ZigiU2xvdyBjYXNlIGNvdW50IGZvciBHZXRCeUlkIEAlenUgYmMjJXU6
ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJyZW50SW5kZXgs
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIEdldEJ5SWQgQCV6dSBiYyMl
dTogJXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRl
eCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
ICNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5pc1Np
bXBsZURpcmVjdCgpCkBAIC0xODA3LDcgKzE4MDcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBib29sIGhhc0V4aXRTaXRlID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFk
Q2FjaGUpOwogICAgICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAg
ICAgICAgICAgcHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIFB1dEJ5SWQgQCV6dSBiYyMldTog
JXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlNsb3cgY2FzZSBjb3VudCBmb3IgUHV0QnlJZCBAJXp1IGJjIyV1
OiAldTsgZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4
LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwog
I2VuZGlmICAgICAgICAgICAgCiAKICAgICAgICAgICAgIGlmICghaGFzRXhpdFNpdGUgJiYgcHV0
QnlJZFN0YXR1cy5pc1NpbXBsZVJlcGxhY2UoKSkgewpAQCAtMjE4NiwxMiArMjE4NiwxMiBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIGRhdGFGb3JQaGkgPSBtX2dyYXBoW2VudHJ5Lm1fcGhpXS52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgcHJpbnRmKCIgICBIYW5kbGluZyBwaGkgZW50cnkgZm9yIHZhciAldSwgcGhpIEAldS5c
biIsIGVudHJ5Lm1fdmFyTm8sIGVudHJ5Lm1fcGhpKTsKKyAgICAgICAgZGF0YUxvZygiICAgSGFu
ZGxpbmcgcGhpIGVudHJ5IGZvciB2YXIgJXUsIHBoaSBAJXUuXG4iLCBlbnRyeS5tX3Zhck5vLCBl
bnRyeS5tX3BoaSk7CiAjZW5kaWYKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
ZWRlY2Vzc29ycy5zaXplKCk7ICsraSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICBEZWFsaW5nIHdpdGggcHJlZGVj
ZXNzb3IgYmxvY2sgJXUuXG4iLCBwcmVkZWNlc3NvcnNbaV0pOworICAgICAgICAgICAgZGF0YUxv
ZygiICAgICBEZWFsaW5nIHdpdGggcHJlZGVjZXNzb3IgYmxvY2sgJXUuXG4iLCBwcmVkZWNlc3Nv
cnNbaV0pOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHBy
ZWRlY2Vzc29yQmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW3ByZWRlY2Vzc29yc1tpXV0uZ2V0KCk7
CkBAIC0yMjAxLDcgKzIyMDEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3Rh
Y2soKQogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlSW5QcmVkZWNlc3NvciA9IHZhcjsKICAg
ICAgICAgICAgIGlmICh2YWx1ZUluUHJlZGVjZXNzb3IgPT0gTm9Ob2RlKSB7CiAjaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50Zigi
ICAgICAgRGlkIG5vdCBmaW5kIG5vZGUsIGFkZGluZyBwaGkuXG4iKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgICBEaWQgbm90IGZpbmQgbm9kZSwgYWRkaW5nIHBoaS5cbiIpOwogI2Vu
ZGlmCiAKICAgICAgICAgICAgICAgICB2YWx1ZUluUHJlZGVjZXNzb3IgPSBhZGRUb0dyYXBoKFBo
aSwgT3BJbmZvKG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShzdGFja1R5cGUgPT0gQXJndW1lbnRQaGlT
dGFjayA/IGFyZ3VtZW50VG9PcGVyYW5kKHZhck5vKSA6IHN0YXRpY19jYXN0PGludD4odmFyTm8p
KSkpOwpAQCAtMjIxMyw3ICsyMjEzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1Bo
aVN0YWNrKCkKICAgICAgICAgICAgICAgICBwaGlTdGFjay5hcHBlbmQoUGhpU3RhY2tFbnRyeShw
cmVkZWNlc3NvckJsb2NrLCB2YWx1ZUluUHJlZGVjZXNzb3IsIHZhck5vKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5vcCA9PSBHZXRMb2NhbCkg
ewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAg
ICAgICBwcmludGYoIiAgICAgIEZvdW5kIEdldExvY2FsIEAldS5cbiIsIHZhbHVlSW5QcmVkZWNl
c3Nvcik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgR2V0TG9jYWwgQCV1
LlxuIiwgdmFsdWVJblByZWRlY2Vzc29yKTsKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgLy8g
V2Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgVmFyaWFibGVBY2Nlc3NEYXRhcyBhcmUgaWRlbnRp
Y2FsIGJldHdlZW4gdGhlCkBAIC0yMjI1LDcgKzIyMjUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgICAgIHZhbHVlSW5QcmVkZWNlc3NvciA9
IG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBGb3VuZCBAJXUuXG4iLCB2YWx1ZUluUHJlZGVj
ZXNzb3IpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEZvdW5kIEAldS5cbiIsIHZh
bHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFT
U0VSVChtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3AgPT0gU2V0TG9jYWwgfHwgbV9ncmFw
aFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wID09IFBoaSB8fCBtX2dyYXBoW3ZhbHVlSW5QcmVkZWNl
c3Nvcl0ub3AgPT0gRmx1c2ggfHwgKG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5vcCA9PSBT
ZXRBcmd1bWVudCAmJiBzdGFja1R5cGUgPT0gQXJndW1lbnRQaGlTdGFjaykpOwpAQCAtMjIzNiw0
OCArMjIzNiw0OCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogCiAg
ICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gJm1fZ3JhcGhbZW50cnkubV9waGldOwogI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50Zigi
ICAgICAgUmVmIGNvdW50IG9mIEAldSA9ICV1LlxuIiwgZW50cnkubV9waGksIHBoaU5vZGUtPnJl
ZkNvdW50KCkpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgUmVmIGNvdW50IG9mIEAldSA9
ICV1LlxuIiwgZW50cnkubV9waGksIHBoaU5vZGUtPnJlZkNvdW50KCkpOwogI2VuZGlmCiAgICAg
ICAgICAgICBpZiAocGhpTm9kZS0+cmVmQ291bnQoKSkgewogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgIFJlZmZp
bmcgQCV1LlxuIiwgdmFsdWVJblByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICBSZWZmaW5nIEAldS5cbiIsIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAg
ICAgICAgICAgICAgICBtX2dyYXBoLnJlZih2YWx1ZUluUHJlZGVjZXNzb3IpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIXBoaU5vZGUtPmNoaWxkMSgpKSB7CiAjaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50Zigi
ICAgICAgU2V0dGluZyBAJXUtPmNoaWxkMSA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1ZUlu
UHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFNldHRpbmcgQCV1
LT5jaGlsZDEgPSBAJXUuXG4iLCBlbnRyeS5tX3BoaSwgdmFsdWVJblByZWRlY2Vzc29yKTsKICNl
bmRpZgogICAgICAgICAgICAgICAgIHBoaU5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShOb2RlVXNl
KHZhbHVlSW5QcmVkZWNlc3NvcikpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgIENoaWxkcmVuIG9mIEAldTog
IiwgZW50cnkubV9waGkpOwotICAgICAgICAgICAgICAgIHBoaU5vZGUtPmR1bXBDaGlsZHJlbihz
dGRvdXQpOwotICAgICAgICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CisgICAgICAg
ICAgICAgICAgcGhpTm9kZS0+ZHVtcENoaWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZygiLlxuIik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcGhpTm9kZS0+Y2hpbGQyKCkpIHsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAg
ICAgcHJpbnRmKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQyID0gQCV1LlxuIiwgZW50cnkubV9w
aGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
U2V0dGluZyBAJXUtPmNoaWxkMiA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1ZUluUHJlZGVj
ZXNzb3IpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgcGhpTm9kZS0+Y2hpbGRyZW4uc2V0Q2hp
bGQyKE5vZGVVc2UodmFsdWVJblByZWRlY2Vzc29yKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgICAgQ2hpbGRy
ZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7Ci0gICAgICAgICAgICAgICAgcGhpTm9kZS0+ZHVt
cENoaWxkcmVuKHN0ZG91dCk7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIuXG4iKTsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhp
KTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkYXRhRmlsZSgp
KTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIuXG4iKTsKICNlbmRpZgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFwaGlOb2RlLT5j
aGlsZDMoKSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgICAgICAgICBwcmludGYoIiAgICAgIFNldHRpbmcgQCV1LT5jaGlsZDMgPSBAJXUuXG4i
LCBlbnRyeS5tX3BoaSwgdmFsdWVJblByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQzID0gQCV1LlxuIiwgZW50cnkubV9waGksIHZh
bHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBwaGlOb2RlLT5jaGls
ZHJlbi5zZXRDaGlsZDMoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsKICNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIg
ICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAgICAgICAgICAgICBw
aGlOb2RlLT5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgICAgICBwcmludGYoIi5c
biIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIENoaWxkcmVuIG9mIEAldTogIiwg
ZW50cnkubV9waGkpOworICAgICAgICAgICAgICAgIHBoaU5vZGUtPmR1bXBDaGlsZHJlbihXVEY6
OmRhdGFGaWxlKCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIi5cbiIpOwogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0yMjg1LDcgKzIyODUs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAg
Tm9kZUluZGV4IG5ld1BoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8oZGF0YUZvclBoaSkpOwog
ICAgICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQot
ICAgICAgICAgICAgcHJpbnRmKCIgICAgICBTcGxpdHRpbmcgQCV1LCBjcmVhdGVkIEAldS5cbiIs
IGVudHJ5Lm1fcGhpLCBuZXdQaGkpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgU3BsaXR0
aW5nIEAldSwgY3JlYXRlZCBAJXUuXG4iLCBlbnRyeS5tX3BoaSwgbmV3UGhpKTsKICNlbmRpZgog
CiAgICAgICAgICAgICBwaGlOb2RlID0gJm1fZ3JhcGhbZW50cnkubV9waGldOyAvLyByZWxvYWQg
YWZ0ZXIgdmVjdG9yIHJlc2l6ZQpAQCAtMjI5NiwxNyArMjI5NiwxNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgbmV3UGhpTm9kZS5jaGlsZHJl
biA9IHBoaU5vZGUtPmNoaWxkcmVuOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIs
IG5ld1BoaSk7Ci0gICAgICAgICAgICBuZXdQaGlOb2RlLmR1bXBDaGlsZHJlbihzdGRvdXQpOwot
ICAgICAgICAgICAgcHJpbnRmKCIuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIENo
aWxkcmVuIG9mIEAldTogIiwgbmV3UGhpKTsKKyAgICAgICAgICAgIG5ld1BoaU5vZGUuZHVtcENo
aWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIuXG4iKTsKICNl
bmRpZgogCiAgICAgICAgICAgICBwaGlOb2RlLT5jaGlsZHJlbi5pbml0aWFsaXplKG5ld1BoaSwg
dmFsdWVJblByZWRlY2Vzc29yLCBOb05vZGUpOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBA
JXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAgICAgICAgIHBoaU5vZGUtPmR1bXBDaGlsZHJlbihz
dGRvdXQpOwotICAgICAgICAgICAgcHJpbnRmKCIuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgIENoaWxkcmVuIG9mIEAldTogIiwgZW50cnkubV9waGkpOworICAgICAgICAgICAgcGhp
Tm9kZS0+ZHVtcENoaWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAgICAgICBkYXRhTG9n
KCIuXG4iKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfQpAQCAtMjMyNCw3ICsyMzI0LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvYwogICAgIGNhc2UgSnVtcDoK
ICAgICAgICAgbm9kZS5zZXRUYWtlbkJsb2NrSW5kZXgobV9ncmFwaC5ibG9ja0luZGV4Rm9yQnl0
ZWNvZGVPZmZzZXQocG9zc2libGVUYXJnZXRzLCBub2RlLnRha2VuQnl0ZWNvZGVPZmZzZXREdXJp
bmdQYXJzaW5nKCkpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHBy
aW50ZigiTGlua2VkIGJhc2ljIGJsb2NrICVwIHRvICVwLCAjJXUuXG4iLCBibG9jaywgbV9ncmFw
aC5tX2Jsb2Nrc1tub2RlLnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwgbm9kZS50YWtlbkJsb2Nr
SW5kZXgoKSk7CisgICAgICAgIGRhdGFMb2coIkxpbmtlZCBiYXNpYyBibG9jayAlcCB0byAlcCwg
IyV1LlxuIiwgYmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS50YWtlbkJsb2NrSW5kZXgoKV0u
Z2V0KCksIG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKQEAgLTIzMzIsMTMgKzIzMzIsMTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlu
a0Jsb2NrKEJhc2ljQmxvYwogICAgICAgICBub2RlLnNldFRha2VuQmxvY2tJbmRleChtX2dyYXBo
LmJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChwb3NzaWJsZVRhcmdldHMsIG5vZGUudGFrZW5C
eXRlY29kZU9mZnNldER1cmluZ1BhcnNpbmcoKSkpOwogICAgICAgICBub2RlLnNldE5vdFRha2Vu
QmxvY2tJbmRleChtX2dyYXBoLmJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChwb3NzaWJsZVRh
cmdldHMsIG5vZGUubm90VGFrZW5CeXRlY29kZU9mZnNldER1cmluZ1BhcnNpbmcoKSkpOwogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJMaW5rZWQgYmFzaWMg
YmxvY2sgJXAgdG8gJXAsICMldSBhbmQgJXAsICMldS5cbiIsIGJsb2NrLCBtX2dyYXBoLm1fYmxv
Y2tzW25vZGUudGFrZW5CbG9ja0luZGV4KCldLmdldCgpLCBub2RlLnRha2VuQmxvY2tJbmRleCgp
LCBtX2dyYXBoLm1fYmxvY2tzW25vZGUubm90VGFrZW5CbG9ja0luZGV4KCldLmdldCgpLCBub2Rl
Lm5vdFRha2VuQmxvY2tJbmRleCgpKTsKKyAgICAgICAgZGF0YUxvZygiTGlua2VkIGJhc2ljIGJs
b2NrICVwIHRvICVwLCAjJXUgYW5kICVwLCAjJXUuXG4iLCBibG9jaywgbV9ncmFwaC5tX2Jsb2Nr
c1tub2RlLnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwgbm9kZS50YWtlbkJsb2NrSW5kZXgoKSwg
bV9ncmFwaC5tX2Jsb2Nrc1tub2RlLm5vdFRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwgbm9kZS5u
b3RUYWtlbkJsb2NrSW5kZXgoKSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAog
ICAgIGRlZmF1bHQ6CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmlu
dGYoIk1hcmtpbmcgYmFzaWMgYmxvY2sgJXAgYXMgbGlua2VkLlxuIiwgYmxvY2spOworICAgICAg
ICBkYXRhTG9nKCJNYXJraW5nIGJhc2ljIGJsb2NrICVwIGFzIGxpbmtlZC5cbiIsIGJsb2NrKTsK
ICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNDk1LDcgKzI0OTUsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgIC8vIFRoZSBtYXhpbXVt
IGJ5dGVjb2RlIG9mZnNldCB0byBnbyBpbnRvIHRoZSBjdXJyZW50IGJhc2ljYmxvY2sgaXMgZWl0
aGVyIHRoZSBuZXh0IGp1bXAgdGFyZ2V0LCBvciB0aGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbnMu
CiAgICAgICAgIHVuc2lnbmVkIGxpbWl0ID0ganVtcFRhcmdldEluZGV4IDwgY29kZUJsb2NrLT5u
dW1iZXJPZkp1bXBUYXJnZXRzKCkgPyBjb2RlQmxvY2stPmp1bXBUYXJnZXQoanVtcFRhcmdldElu
ZGV4KSA6IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogI2lmIERGR19FTkFCTEUo
REVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGlt
aXQgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVTdGFja1RvcC0+ZXhl
Y3V0YWJsZSgpLCBsaW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICAgICAgZGF0YUxvZygiUGFy
c2luZyBieXRlY29kZSB3aXRoIGxpbWl0ICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIs
IG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbGltaXQsIENvZGVPcmlnaW46OmlubGlu
ZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKSk7
CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgbGltaXQpOwogCkBAIC0y
NTE3LDEzICsyNTE3LDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkK
ICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIGl0cyBieXRlY29kZSBiZWdpbiBhbmQgY29u
dGludWUuCiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5tX2Js
b2Nrcy5sYXN0KCkuZ2V0KCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAg
ICAgICAgICAgICAgICBwcmludGYoIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2Nr
ICVwIGZyb20gYmMjJXUgdG8gYmMjJXUgKHBlZXBob2xlIGNhc2UpLlxuIiwgbV9jdXJyZW50Qmxv
Y2ssIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luLCBtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJs
b2NrICVwIGZyb20gYmMjJXUgdG8gYmMjJXUgKHBlZXBob2xlIGNhc2UpLlxuIiwgbV9jdXJyZW50
QmxvY2ssIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luLCBtX2N1cnJlbnRJbmRleCk7CiAj
ZW5kaWYKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4g
PSBtX2N1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBPd25QdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFB0cihuZXcgQmFzaWNCbG9j
ayhtX2N1cnJlbnRJbmRleCwgbV9ncmFwaC5zaXplKCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxv
Y2FscykpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCJDcmVhdGluZyBiYXNpYyBibG9jayAlcCwgIyV6dSBmb3IgJXAgYmMjJXUgYXQg
aW5saW5lIGRlcHRoICV1LlxuIiwgYmxvY2suZ2V0KCksIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgp
LCBtX2lubGluZVN0YWNrVG9wLT5leGVjdXRhYmxlKCksIG1fY3VycmVudEluZGV4LCBDb2RlT3Jp
Z2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNh
bGxGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBiYXNpYyBi
bG9jayAlcCwgIyV6dSBmb3IgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgYmxvY2su
Z2V0KCksIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpLCBtX2lubGluZVN0YWNrVG9wLT5leGVjdXRh
YmxlKCksIG1fY3VycmVudEluZGV4LCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFt
ZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkpOwogI2VuZGlmCiAgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmlzRW1wdHko
KSB8fCBtX2dyYXBoLm1fYmxvY2tzW21faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3Mu
bGFzdCgpLm1fYmxvY2tJbmRleF0tPmJ5dGVjb2RlQmVnaW4gPCBtX2N1cnJlbnRJbmRleCk7CkBA
IC0yNTcxLDE0ICsyNTcxLDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICBs
aW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tF
bnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwogICAgIGRldGVybWluZVJlYWNoYWJpbGl0eSgp
OwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICBwcmludGYo
IlByb2Nlc3NpbmcgbG9jYWwgdmFyaWFibGUgcGhpcy5cbiIpOworICAgIGRhdGFMb2coIlByb2Nl
c3NpbmcgbG9jYWwgdmFyaWFibGUgcGhpcy5cbiIpOwogI2VuZGlmCiAgICAgCiAgICAgbV9jdXJy
ZW50UHJvZmlsaW5nSW5kZXggPSBtX2N1cnJlbnRJbmRleDsKICAgICAKICAgICBwcm9jZXNzUGhp
U3RhY2s8TG9jYWxQaGlTdGFjaz4oKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCi0gICAgcHJpbnRmKCJQcm9jZXNzaW5nIGFyZ3VtZW50IHBoaXMuXG4iKTsKKyAg
ICBkYXRhTG9nKCJQcm9jZXNzaW5nIGFyZ3VtZW50IHBoaXMuXG4iKTsKICNlbmRpZgogICAgIHBy
b2Nlc3NQaGlTdGFjazxBcmd1bWVudFBoaVN0YWNrPigpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3
IEBACiAvLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGNv
ZGUuCiAjZGVmaW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUg
MAogLy8gTG9nIGV2ZXJ5IHNwZWN1bGF0aW9uIGZhaWx1cmUuCi0jZGVmaW5lIERGR19FTkFCTEVf
VkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NF
X1NQRUNVTEFUSU9OX0ZBSUxVUkUgMQogLy8gRGlzYWJsZSB0aGUgREZHIEpJVCB3aXRob3V0IGhh
dmluZyB0byB0b3VjaCBQbGF0Zm9ybS5oCiAjZGVmaW5lIERGR19ERUJVR19MT0NBTF9ESVNCQUxF
IDAKIC8vIEVuYWJsZSBPU1IgZW50cnkgZnJvbSBiYXNlbGluZSBKSVQuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogICAg
IEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnBy
aW50ZihzdGRlcnIsICJERkcgY29tcGlsaW5nIGNvZGUgYmxvY2sgJXAoJXApLCBudW1iZXIgb2Yg
aW5zdHJ1Y3Rpb25zID0gJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUo
KSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpOworICAgIGRhdGFMb2coIkRGRyBjb21w
aWxpbmcgY29kZSBibG9jayAlcCglcCksIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgPSAldS5cbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLCBjb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKSk7CiAjZW5kaWYKICAgICAKICAgICBHcmFwaCBkZmc7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcg
KzgwLDcgQEAgY29uc3QgY2hhciogR3JhcGg6Om5hbWVPZlZhcmlhYmxlQWNjZXNzRAogc3RhdGlj
IHZvaWQgcHJpbnRXaGl0ZVNwYWNlKHVuc2lnbmVkIGFtb3VudCkKIHsKICAgICB3aGlsZSAoYW1v
dW50LS0gPiAwKQotICAgICAgICBwcmludGYoIiAiKTsKKyAgICAgICAgZGF0YUxvZygiICIpOwog
fQogCiB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAt
MTA3LDEzICsxMDcsMTMgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oTm9kZUluZGV4IG5v
ZAogICAgIC8vIFByaW50IHRoZSBwb3BzLgogICAgIGZvciAodW5zaWduZWQgaSA9IHByZXZpb3Vz
SW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBpbmRleE9mRGl2ZXJnZW5jZTspIHsKICAgICAgICAg
cHJpbnRXaGl0ZVNwYWNlKGkgKiAyKTsKLSAgICAgICAgcHJpbnRmKCI8LS0gJXBcbiIsIHByZXZp
b3VzSW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKKyAg
ICAgICAgZGF0YUxvZygiPC0tICVwXG4iLCBwcmV2aW91c0lubGluZVN0YWNrW2ldLmlubGluZUNh
bGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50IHRo
ZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhPZkRpdmVyZ2VuY2U7IGkgPCBj
dXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgcHJpbnRXaGl0ZVNwYWNl
KGkgKiAyKTsKLSAgICAgICAgcHJpbnRmKCItLT4gJXBcbiIsIGN1cnJlbnRJbmxpbmVTdGFja1tp
XS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICBkYXRhTG9nKCIt
LT4gJXBcbiIsIGN1cnJlbnRJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFi
bGUuZ2V0KCkpOwogICAgIH0KIH0KIApAQCAtMTUwLDY0ICsxNTAsNjQgQEAgdm9pZCBHcmFwaDo6
ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4LCBDbwogICAgIC8vICAgICAgICAgJCMgICAtIHRoZSBp
bmRleCBpbiB0aGUgQ29kZUJsb2NrIG9mIGEgY29uc3RhbnQgeyBmb3IgbnVtZXJpYyBjb25zdGFu
dHMgdGhlIHZhbHVlIGlzIGRpc3BsYXllZCB8IGZvciBpbnRlZ2VycywgaW4gYm90aCBkZWNpbWFs
IGFuZCBoZXggfS4KICAgICAvLyAgICAgICAgIGlkIyAgLSB0aGUgaW5kZXggaW4gdGhlIENvZGVC
bG9jayBvZiBhbiBpZGVudGlmaWVyIHsgaWYgY29kZUJsb2NrIGlzIHBhc3NlZCB0byBkdW1wKCks
IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gaXMgZGlzcGxheWVkIH0uCiAgICAgLy8gICAgICAg
ICB2YXIjIC0gdGhlIGluZGV4IG9mIGEgdmFyIG9uIHRoZSBnbG9iYWwgb2JqZWN0LCB1c2VkIGJ5
IEdldEdsb2JhbFZhci9QdXRHbG9iYWxWYXIgb3BlcmF0aW9ucy4KLSAgICBwcmludGYoIiUgNGQ6
JXM8JWMldToiLCAoaW50KW5vZGVJbmRleCwgc2tpcHBlZCA/ICIgIHNraXBwZWQgICIgOiAiICAg
ICAgICAgICAiLCBtdXN0R2VuZXJhdGUgPyAnIScgOiAnICcsIHJlZkNvdW50KTsKKyAgICBkYXRh
TG9nKCIlIDRkOiVzPCVjJXU6IiwgKGludClub2RlSW5kZXgsIHNraXBwZWQgPyAiICBza2lwcGVk
ICAiIDogIiAgICAgICAgICAgIiwgbXVzdEdlbmVyYXRlID8gJyEnIDogJyAnLCByZWZDb3VudCk7
CiAgICAgaWYgKG5vZGUuaGFzUmVzdWx0KCkgJiYgIXNraXBwZWQgJiYgbm9kZS5oYXNWaXJ0dWFs
UmVnaXN0ZXIoKSkKLSAgICAgICAgcHJpbnRmKCIldSIsIG5vZGUudmlydHVhbFJlZ2lzdGVyKCkp
OworICAgICAgICBkYXRhTG9nKCIldSIsIG5vZGUudmlydHVhbFJlZ2lzdGVyKCkpOwogICAgIGVs
c2UKLSAgICAgICAgcHJpbnRmKCItIik7Ci0gICAgcHJpbnRmKCI+XHQlcygiLCBvcE5hbWUob3Ap
KTsKKyAgICAgICAgZGF0YUxvZygiLSIpOworICAgIGRhdGFMb2coIj5cdCVzKCIsIG9wTmFtZShv
cCkpOwogICAgIGJvb2wgaGFzUHJpbnRlZCA9IGZhbHNlOwogICAgIGlmIChvcCAmIE5vZGVIYXNW
YXJBcmdzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hp
bGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsg
Y2hpbGRJZHgrKykgewogICAgICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICAg
ICAgcHJpbnRmKCIsICIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiwgIik7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBwcmludGYoIkAldSIsIG1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdLmluZGV4KCkpOworICAg
ICAgICAgICAgZGF0YUxvZygiQCV1IiwgbV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0uaW5kZXgo
KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoISFub2RlLmNoaWxkMSgp
KQotICAgICAgICAgICAgcHJpbnRmKCJAJXUiLCBub2RlLmNoaWxkMSgpLmluZGV4KCkpOworICAg
ICAgICAgICAgZGF0YUxvZygiQCV1Iiwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKICAgICAgICAg
aWYgKCEhbm9kZS5jaGlsZDIoKSkKLSAgICAgICAgICAgIHByaW50ZigiLCBAJXUiLCBub2RlLmNo
aWxkMigpLmluZGV4KCkpOworICAgICAgICAgICAgZGF0YUxvZygiLCBAJXUiLCBub2RlLmNoaWxk
MigpLmluZGV4KCkpOwogICAgICAgICBpZiAoISFub2RlLmNoaWxkMygpKQotICAgICAgICAgICAg
cHJpbnRmKCIsIEAldSIsIG5vZGUuY2hpbGQzKCkuaW5kZXgoKSk7CisgICAgICAgICAgICBkYXRh
TG9nKCIsIEAldSIsIG5vZGUuY2hpbGQzKCkuaW5kZXgoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQg
PSAhIW5vZGUuY2hpbGQxKCk7CiAgICAgfQogCiAgICAgaWYgKG5vZGUuaGFzQXJpdGhOb2RlRmxh
Z3MoKSkgewotICAgICAgICBwcmludGYoIiVzJXMiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBh
cml0aE5vZGVGbGFnc0FzU3RyaW5nKG5vZGUucmF3QXJpdGhOb2RlRmxhZ3MoKSkpOworICAgICAg
ICBkYXRhTG9nKCIlcyVzIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgYXJpdGhOb2RlRmxhZ3NB
c1N0cmluZyhub2RlLnJhd0FyaXRoTm9kZUZsYWdzKCkpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9
IHRydWU7CiAgICAgfQogICAgIGlmIChub2RlLmhhc1Zhck51bWJlcigpKSB7Ci0gICAgICAgIHBy
aW50ZigiJXN2YXIldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUudmFyTnVtYmVyKCkp
OworICAgICAgICBkYXRhTG9nKCIlc3ZhciV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9k
ZS52YXJOdW1iZXIoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBp
ZiAobm9kZS5oYXNJZGVudGlmaWVyKCkpIHsKICAgICAgICAgaWYgKGNvZGVCbG9jaykKLSAgICAg
ICAgICAgIHByaW50ZigiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUu
aWRlbnRpZmllck51bWJlcigpLCBjb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVy
TnVtYmVyKCkpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IiVzaWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLmlkZW50aWZpZXJOdW1i
ZXIoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKS51c3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50Zigi
JXNpZCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkp
OworICAgICAgICAgICAgZGF0YUxvZygiJXNpZCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
bm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgaWYgKG5vZGUuaGFzU3RydWN0dXJlU2V0KCkpIHsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBub2RlLnN0cnVjdHVyZVNldCgpLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBwcmludGYoIiVzc3RydWN0KCVwKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUu
c3RydWN0dXJlU2V0KClbaV0pOworICAgICAgICAgICAgZGF0YUxvZygiJXNzdHJ1Y3QoJXApIiwg
aGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVTZXQoKVtpXSk7CiAgICAgICAg
ICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobm9kZS5o
YXNTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpKSB7Ci0gICAgICAgIHByaW50ZigiJXNzdHJ1Y3Qo
JXAgLT4gJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0
aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLCBub2RlLnN0cnVjdHVyZVRyYW5zaXRpb25EYXRh
KCkubmV3U3RydWN0dXJlKTsKKyAgICAgICAgZGF0YUxvZygiJXNzdHJ1Y3QoJXAgLT4gJXApIiwg
aGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnBy
ZXZpb3VzU3RydWN0dXJlLCBub2RlLnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0
dXJlKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChub2RlLmhh
c1N0b3JhZ2VBY2Nlc3NEYXRhKCkpIHsKICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIHN0b3Jh
Z2VBY2Nlc3NEYXRhID0gbV9zdG9yYWdlQWNjZXNzRGF0YVtub2RlLnN0b3JhZ2VBY2Nlc3NEYXRh
SW5kZXgoKV07CiAgICAgICAgIGlmIChjb2RlQmxvY2spCi0gICAgICAgICAgICBwcmludGYoIiVz
aWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBzdG9yYWdlQWNjZXNzRGF0YS5pZGVu
dGlmaWVyTnVtYmVyLCBjb2RlQmxvY2stPmlkZW50aWZpZXIoc3RvcmFnZUFjY2Vzc0RhdGEuaWRl
bnRpZmllck51bWJlcikudXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0
YUxvZygiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIHN0b3JhZ2VBY2Nlc3NE
YXRhLmlkZW50aWZpZXJOdW1iZXIsIGNvZGVCbG9jay0+aWRlbnRpZmllcihzdG9yYWdlQWNjZXNz
RGF0YS5pZGVudGlmaWVyTnVtYmVyKS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiJXNpZCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAi
Iiwgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBkYXRh
TG9nKCIlc2lkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBzdG9yYWdlQWNjZXNzRGF0YS5p
ZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgCi0gICAgICAgIHByaW50ZigiLCAlbHUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQpKTsKKyAgICAg
ICAgZGF0YUxvZygiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzdG9yYWdlQWNj
ZXNzRGF0YS5vZmZzZXQpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAg
IEFTU0VSVChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpID09IG5vZGUuaGFzTG9jYWwoKSk7
CkBAIC0yMTUsODMgKzIxNSw4MyBAQCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5k
ZXgsIENvCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0g
bm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgaW50IG9wZXJhbmQgPSB2YXJpYWJs
ZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKTsKICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9w
ZXJhbmQpKQotICAgICAgICAgICAgcHJpbnRmKCIlc2FyZyV1KCVzKSIsIGhhc1ByaW50ZWQgPyAi
LCAiIDogIiIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpLCBuYW1lT2ZWYXJpYWJsZUFjY2Vz
c0RhdGEodmFyaWFibGVBY2Nlc3NEYXRhKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIlc2FyZyV1
KCVzKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQp
LCBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiJXNyJXUoJXMpIiwgaGFzUHJpbnRlZCA/ICIsICIg
OiAiIiwgb3BlcmFuZCwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNjZXNzRGF0
YSkpOworICAgICAgICAgICAgZGF0YUxvZygiJXNyJXUoJXMpIiwgaGFzUHJpbnRlZCA/ICIsICIg
OiAiIiwgb3BlcmFuZCwgbmFtZU9mVmFyaWFibGVBY2Nlc3NEYXRhKHZhcmlhYmxlQWNjZXNzRGF0
YSkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG5vZGUuaGFz
Q29uc3RhbnRCdWZmZXIoKSAmJiBjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQp
Ci0gICAgICAgICAgICBwcmludGYoIiwgIik7Ci0gICAgICAgIHByaW50ZigiJXU6WyIsIG5vZGUu
c3RhcnRDb25zdGFudCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiwgIik7CisgICAgICAgIGRh
dGFMb2coIiV1OlsiLCBub2RlLnN0YXJ0Q29uc3RhbnQoKSk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBub2RlLm51bUNvbnN0YW50cygpOyArK2kpIHsKICAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgIHByaW50ZigiLCAiKTsKLSAgICAgICAgICAgIHByaW50Zigi
JXMiLCBjb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgpKVtpXS5k
ZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIsICIpOworICAgICAgICAg
ICAgZGF0YUxvZygiJXMiLCBjb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUuc3RhcnRDb25z
dGFudCgpKVtpXS5kZXNjcmlwdGlvbigpKTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIl0i
KTsKKyAgICAgICAgZGF0YUxvZygiXSIpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgaWYgKG9wID09IEpTQ29uc3RhbnQpIHsKLSAgICAgICAgcHJpbnRmKCIlcyQldSIs
IGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuY29uc3RhbnROdW1iZXIoKSk7CisgICAgICAg
IGRhdGFMb2coIiVzJCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5jb25zdGFudE51
bWJlcigpKTsKICAgICAgICAgaWYgKGNvZGVCbG9jaykgewogICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaywgbm9kZUluZGV4KTsKLSAgICAgICAg
ICAgIHByaW50ZigiID0gJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIiA9ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAg
aGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChvcCA9PSBXZWFrSlNDb25zdGFudCkg
ewotICAgICAgICBwcmludGYoIiVzJXAiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLndl
YWtDb25zdGFudCgpKTsKKyAgICAgICAgZGF0YUxvZygiJXMlcCIsIGhhc1ByaW50ZWQgPyAiLCAi
IDogIiIsIG5vZGUud2Vha0NvbnN0YW50KCkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsK
ICAgICB9CiAgICAgaWYgIChub2RlLmlzQnJhbmNoKCkgfHwgbm9kZS5pc0p1bXAoKSkgewotICAg
ICAgICBwcmludGYoIiVzVDojJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLnRha2Vu
QmxvY2tJbmRleCgpKTsKKyAgICAgICAgZGF0YUxvZygiJXNUOiMldSIsIGhhc1ByaW50ZWQgPyAi
LCAiIDogIiIsIG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOwogICAgICAgICBoYXNQcmludGVkID0g
dHJ1ZTsKICAgICB9CiAgICAgaWYgIChub2RlLmlzQnJhbmNoKCkpIHsKLSAgICAgICAgcHJpbnRm
KCIlc0Y6IyV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5ub3RUYWtlbkJsb2NrSW5k
ZXgoKSk7CisgICAgICAgIGRhdGFMb2coIiVzRjojJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIi
LCBub2RlLm5vdFRha2VuQmxvY2tJbmRleCgpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7
CiAgICAgfQogICAgICh2b2lkKWhhc1ByaW50ZWQ7CiAgICAgCi0gICAgcHJpbnRmKCIpIik7Cisg
ICAgZGF0YUxvZygiKSIpOwogCiAgICAgaWYgKCFza2lwcGVkKSB7CiAgICAgICAgIGlmIChub2Rl
Lmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpKQotICAgICAgICAgICAgcHJpbnRmKCIgIHByZWRpY3Rp
bmcgJXMsIGRvdWJsZSByYXRpbyAlbGYlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5kb3VibGVWb3RlUmF0aW8oKSwgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNl
RG91YmxlRm9ybWF0KCkgPyAiLCBmb3JjaW5nIGRvdWJsZSIgOiAiIik7CisgICAgICAgICAgICBk
YXRhTG9nKCIgIHByZWRpY3RpbmcgJXMsIGRvdWJsZSByYXRpbyAlbGYlcyIsIHByZWRpY3Rpb25U
b1N0cmluZyhub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZh
cmlhYmxlQWNjZXNzRGF0YSgpLT5kb3VibGVWb3RlUmF0aW8oKSwgbm9kZS52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgPyAiLCBmb3JjaW5nIGRvdWJsZSIgOiAi
Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFzSGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAg
ICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5nKG5vZGUuZ2V0
SGVhcFByZWRpY3Rpb24oKSkpOworICAgICAgICAgICAgZGF0YUxvZygiICBwcmVkaWN0aW5nICVz
IiwgcHJlZGljdGlvblRvU3RyaW5nKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkpOwogICAgICAg
ICBlbHNlIGlmIChub2RlLmhhc1Zhck51bWJlcigpKQotICAgICAgICAgICAgcHJpbnRmKCIgIHBy
ZWRpY3RpbmcgJXMiLCBwcmVkaWN0aW9uVG9TdHJpbmcoZ2V0R2xvYmFsVmFyUHJlZGljdGlvbihu
b2RlLnZhck51bWJlcigpKSkpOworICAgICAgICAgICAgZGF0YUxvZygiICBwcmVkaWN0aW5nICVz
IiwgcHJlZGljdGlvblRvU3RyaW5nKGdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZS52YXJOdW1i
ZXIoKSkpKTsKICAgICB9CiAgICAgCi0gICAgcHJpbnRmKCJcbiIpOworICAgIGRhdGFMb2coIlxu
Iik7CiB9CiAKIHZvaWQgR3JhcGg6OmR1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAg
Zm9yIChzaXplX3QgYiA9IDA7IGIgPCBtX2Jsb2Nrcy5zaXplKCk7ICsrYikgewogICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tzW2JdLmdldCgpOwotICAgICAgICBwcmludGYoIkJs
b2NrICMldSAoYmMjJXUpOiAlcyVzXG4iLCAoaW50KWIsIGJsb2NrLT5ieXRlY29kZUJlZ2luLCBi
bG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0
ID8gIiAoT1NSIHRhcmdldCkiIDogIiIpOwotICAgICAgICBwcmludGYoIiAgdmFycyBiZWZvcmU6
ICIpOworICAgICAgICBkYXRhTG9nKCJCbG9jayAjJXUgKGJjIyV1KTogJXMlc1xuIiwgKGludCli
LCBibG9jay0+Ynl0ZWNvZGVCZWdpbiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lw
cGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiKTsKKyAgICAg
ICAgZGF0YUxvZygiICB2YXJzIGJlZm9yZTogIik7CiAgICAgICAgIGlmIChibG9jay0+Y2ZhSGFz
VmlzaXRlZCkKLSAgICAgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFsdWVzQXRIZWFkLCBz
dGRvdXQpOworICAgICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdEhlYWQsIFdU
Rjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiPGVtcHR5
PiIpOwotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICAgIHByaW50ZigiICB2YXIgbGlua3M6
ICIpOwotICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhcmlhYmxlc0F0SGVhZCwgc3Rkb3V0
KTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiPGVtcHR5PiIp
OworICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICBkYXRhTG9nKCIgIHZhciBsaW5rczog
Iik7CisgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFyaWFibGVzQXRIZWFkLCBXVEY6OmRh
dGFGaWxlKCkpOworICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gYmxvY2stPmJlZ2luOyBpIDwgYmxvY2stPmVuZDsgKytpKQogICAgICAgICAgICAgZHVtcChp
LCBjb2RlQmxvY2spOwotICAgICAgICBwcmludGYoIiAgdmFycyBhZnRlcjogIik7CisgICAgICAg
IGRhdGFMb2coIiAgdmFycyBhZnRlcjogIik7CiAgICAgICAgIGlmIChibG9jay0+Y2ZhSGFzVmlz
aXRlZCkKLSAgICAgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFsdWVzQXRUYWlsLCBzdGRv
dXQpOworICAgICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdFRhaWwsIFdURjo6
ZGF0YUZpbGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiPGVtcHR5PiIp
OwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCI8ZW1wdHk+Iik7
CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQotICAgIHByaW50ZigiUGhpIE5vZGVzOlxu
Iik7CisgICAgZGF0YUxvZygiUGhpIE5vZGVzOlxuIik7CiAgICAgZm9yIChzaXplX3QgaSA9IG1f
YmxvY2tzLmxhc3QoKS0+ZW5kOyBpIDwgc2l6ZSgpOyArK2kpCiAgICAgICAgIGR1bXAoaSwgY29k
ZUJsb2NrKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEdyYXBoOjpwcmVkaWN0QXJndW1l
bnRUeXBlcyhDb2RlQmxvCiAgICAgICAgIGF0KG1fYXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5wcmVkaWN0KHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpKTsK
ICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYo
IkFyZ3VtZW50IFslenVdIHByZWRpY3Rpb246ICVzXG4iLCBhcmcsIHByZWRpY3Rpb25Ub1N0cmlu
ZyhhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigp
KSk7CisgICAgICAgIGRhdGFMb2coIkFyZ3VtZW50IFslenVdIHByZWRpY3Rpb246ICVzXG4iLCBh
cmcsIHByZWRpY3Rpb25Ub1N0cmluZyhhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAgICB9CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA3MDIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiB7CiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBD
b2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
LSAgICBmcHJpbnRmKHN0ZGVyciwgIkpJVCBjb2RlIGZvciAlcCBzdGFydCBhdCBbJXAsICVwKS4g
U2l6ZSA9ICV6dS5cbiIsIG1fY29kZUJsb2NrLCBsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpLCBz
dGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVy
LmRlYnVnU2l6ZSgpLCBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpKTsKKyAgICBkYXRhTG9nKCJKSVQg
Y29kZSBmb3IgJXAgc3RhcnQgYXQgWyVwLCAlcCkuIFNpemUgPSAlenUuXG4iLCBtX2NvZGVCbG9j
aywgbGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZm
ZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSwgbGlua0J1ZmZlci5k
ZWJ1Z1NpemUoKSk7CiAjZW5kaWYKIAogICAgIC8vIExpbmsgYWxsIGNhbGxzIG91dCBmcm9tIHRo
ZSBKSVQgY29kZSB0byB0aGVpciByZXNwZWN0aXZlIGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBD
CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtYmVyT2ZERkdPU1JFbnRyaWVzKCkpOwogCiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIk9TUiBpbiAlcCglcCkgZnJvbSBi
YyMldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCksIGJ5dGVjb2RlSW5k
ZXgpOworICAgIGRhdGFMb2coIk9TUiBpbiAlcCglcCkgZnJvbSBiYyMldVxuIiwgY29kZUJsb2Nr
LCBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCksIGJ5dGVjb2RlSW5kZXgpOwogI2VuZGlmCiAgICAg
CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKQEAg
LTgwLDkgKzgwLDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwog
ICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBlbnRyeS0+bV9leHBlY3Rl
ZFZhbHVlcy5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgIGlmIChh
cmd1bWVudCA+PSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSB7CiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiICAgIE9TUiBmYWlsZWQg
YmVjYXVzZSBhcmd1bWVudCAlenUgd2FzIG5vdCBwYXNzZWQsIGV4cGVjdGVkICIsIGFyZ3VtZW50
KTsKLSAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50
KS5kdW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAgICAg
ZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1bWVudCAlenUgd2FzIG5vdCBwYXNz
ZWQsIGV4cGVjdGVkICIsIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVk
VmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCIuXG4iKTsKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSog
ZXhlYywgQwogICAgICAgICAKICAgICAgICAgaWYgKCFlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5h
cmd1bWVudChhcmd1bWVudCkudmFsaWRhdGUodmFsdWUpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1
bWVudCAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGFyZ3VtZW50LCB2YWx1ZS5kZXNjcmlwdGlvbigp
KTsKLSAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50
KS5kdW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAgICAg
ZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1bWVudCAlenUgaXMgJXMsIGV4cGVj
dGVkICIsIGFyZ3VtZW50LCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGVudHJ5
LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5kdW1wKFdURjo6ZGF0YUZpbGUo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCIuXG4iKTsKICNlbmRpZgogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgICAgIGlmIChlbnRyeS0+bV9sb2NhbHNGb3JjZWRE
b3VibGUuZ2V0KGxvY2FsKSkgewogICAgICAgICAgICAgaWYgKCFleGVjLT5yZWdpc3RlcnMoKVts
b2NhbF0uanNWYWx1ZSgpLmlzTnVtYmVyKCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJs
ZSAlenUgaXMgJXMsIGV4cGVjdGVkIG51bWJlci5cbiIsIGxvY2FsLCBleGVjLT5yZWdpc3RlcnMo
KVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgJXp1IGlzICVzLCBleHBlY3RlZCBu
dW1iZXIuXG4iLCBsb2NhbCwgZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxdLmpzVmFsdWUoKS5kZXNj
cmlwdGlvbigpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgfQpAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUq
IGV4ZWMsIEMKICAgICAgICAgfQogICAgICAgICBpZiAoIWVudHJ5LT5tX2V4cGVjdGVkVmFsdWVz
LmxvY2FsKGxvY2FsKS52YWxpZGF0ZShleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgp
KSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBwcmludGYoIiAg
ICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgJXp1IGlzICVzLCBleHBlY3RlZCAiLCBsb2Nh
bCwgZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxdLmpzVmFsdWUoKS5kZXNjcmlwdGlvbigpKTsKLSAg
ICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmxvY2FsKGxvY2FsKS5kdW1wKHN0ZG91
dCk7Ci0gICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAg
IE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGxvY2Fs
LCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOworICAg
ICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLmR1bXAoV1RGOjpk
YXRhRmlsZSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIi5cbiIpOwogI2VuZGlmCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTMyLDEzICsxMzIsMTMgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIAogICAgIGlmICghZ2xvYmFsRGF0
YS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2Nv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCi0gICAgICAgIHByaW50ZigiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBzdGFjayBncm93
dGggZmFpbGVkLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ug
c3RhY2sgZ3Jvd3RoIGZhaWxlZC5cbiIpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiICAgIE9T
UiBzaG91bGQgc3VjY2VlZC5cbiIpOworICAgIGRhdGFMb2coIiAgICBPU1Igc2hvdWxkIHN1Y2Nl
ZWQuXG4iKTsKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xNTgsNyArMTU4
LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHZvaWQq
IHJlc3VsdCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZz
ZXQoZW50cnktPm1fbWFjaGluZUNvZGVPZmZzZXQpOwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCi0gICAgcHJpbnRmKCIgICAgT1NSIHJldHVybmluZyBtYWNoaW5lIGNvZGUgYWRk
cmVzcyAlcC5cbiIsIHJlc3VsdCk7CisgICAgZGF0YUxvZygiICAgIE9TUiByZXR1cm5pbmcgbWFj
aGluZSBjb2RlIGFkZHJlc3MgJXAuXG4iLCByZXN1bHQpOwogI2VuZGlmCiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTUgKzM2LDE1IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCAKIHsKICAgICAvLyAxKSBQcm8tZm9ybWEgc3R1ZmYuCiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiT1NSIGV4aXQgZm9yIE5vZGUgQCVk
ICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOworICAgIGRhdGFMb2coIk9TUiBleGl0IGZvciBO
b2RlIEAlZCAoIiwgKGludClleGl0Lm1fbm9kZUluZGV4KTsKICAgICBmb3IgKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyA7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiYmMj
JXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgICAgICBkYXRhTG9nKCJiYyMldSIs
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgLT4gJXAgIiwgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkp
OworICAgICAgICBkYXRhTG9nKCIgLT4gJXAgIiwgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmV4ZWN1dGFibGUuZ2V0KCkpOwogICAgIH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIikgYXQgSklU
IG9mZnNldCAweCV4ICAiLCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKLSAgICBleGl0LmR1bXAoc3Rk
ZXJyKTsKKyAgICBkYXRhTG9nKCIpIGF0IEpJVCBvZmZzZXQgMHgleCAgIiwgbV9qaXQuZGVidWdP
ZmZzZXQoKSk7CisgICAgZXhpdC5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAjZW5kaWYKICNpZiBE
RkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKICAgICBTcGVjdWxhdGlvbkZh
aWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0lu
Zm87CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgIG1faml0Lmp1bXAoR1BSSW5mbzo6cmVnVDIpOwogCiAjaWYgREZHX0VOQUJM
RShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiICAgLT4gJXBcbiIsIGp1bXBU
YXJnZXQpOworICAgIGRhdGFMb2coIiAgIC0+ICVwXG4iLCBqdW1wVGFyZ2V0KTsKICNlbmRpZgog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjY0LmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICsz
NiwxNSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiB7CiAgICAg
Ly8gMSkgUHJvLWZvcm1hIHN0dWZmLgogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICBmcHJpbnRmKHN0ZGVyciwgIk9TUiBleGl0IGZvciBOb2RlIEAlZCAoIiwgKGludClleGl0Lm1f
bm9kZUluZGV4KTsKKyAgICBkYXRhTG9nKCJPU1IgZXhpdCBmb3IgTm9kZSBAJWQgKCIsIChpbnQp
ZXhpdC5tX25vZGVJbmRleCk7CiAgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0
Lm1fY29kZU9yaWdpbjsgOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmNhbGxlcikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJjIyV1IiwgY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KTsKKyAgICAgICAgZGF0YUxvZygiYmMjJXUiLCBjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIC0+ICVwICIsIGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgZGF0YUxv
ZygiIC0+ICVwICIsIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgp
KTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICIpICAiKTsKLSAgICBleGl0LmR1bXAoc3Rk
ZXJyKTsKKyAgICBkYXRhTG9nKCIpICAiKTsKKyAgICBleGl0LmR1bXAoV1RGOjpkYXRhRmlsZSgp
KTsKICNlbmRpZgogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFKQog
ICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0
aW9uRmFpbHVyZURlYnVnSW5mbzsKQEAgLTE4NCwyNCArMTg0LDI0IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICB9CiAgICAgCiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiICAiKTsKKyAgICBkYXRhTG9nKCIg
ICIpOwogICAgIGlmIChudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycykKLSAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJQb2lzb25lZD0ldSAiLCBudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJl
Z2lzdGVycyk7CisgICAgICAgIGRhdGFMb2coIlBvaXNvbmVkPSV1ICIsIG51bWJlck9mUG9pc29u
ZWRWaXJ0dWFsUmVnaXN0ZXJzKTsKICAgICBpZiAobnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVn
aXN0ZXJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRpc3BsYWNlZD0ldSAiLCBudW1iZXJP
ZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpOworICAgICAgICBkYXRhTG9nKCJEaXNwbGFjZWQ9
JXUgIiwgbnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJzKTsKICAgICBpZiAoaGF2ZVVu
Ym94ZWRJbnQzMnMpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5ib3hlZEludDMyICIpOwor
ICAgICAgICBkYXRhTG9nKCJVbmJveGVkSW50MzIgIik7CiAgICAgaWYgKGhhdmVVbmJveGVkRG91
YmxlcykKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmJveGVkRG91YmxlcyAiKTsKKyAgICAg
ICAgZGF0YUxvZygiVW5ib3hlZERvdWJsZXMgIik7CiAgICAgaWYgKGhhdmVVSW50MzJzKQotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIlVJbnQzMiAiKTsKKyAgICAgICAgZGF0YUxvZygiVUludDMy
ICIpOwogICAgIGlmIChoYXZlRlBScykKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGUFIgIik7
CisgICAgICAgIGRhdGFMb2coIkZQUiAiKTsKICAgICBpZiAoaGF2ZUNvbnN0YW50cykKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJDb25zdGFudHMgIik7CisgICAgICAgIGRhdGFMb2coIkNvbnN0
YW50cyAiKTsKICAgICBpZiAoaGF2ZVVuZGVmaW5lZCkKLSAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJVbmRlZmluZWQgIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIik7CisgICAgICAgIGRhdGFM
b2coIlVuZGVmaW5lZCAiKTsKKyAgICBkYXRhTG9nKCIgIik7CiAjZW5kaWYKICAgICAKICAgICBF
bmNvZGVkSlNWYWx1ZSogc2NyYXRjaEJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVl
Kj4obV9qaXQuZ2xvYmFsRGF0YSgpLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpICogc3RkOjptYXgoaGF2ZVVJbnQzMnMgPyAydSA6IDB1LCBudW1iZXJPZlBvaXNv
bmVkVmlydHVhbFJlZ2lzdGVycyArIChudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMg
PD0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPyAwIDogbnVtYmVyT2ZEaXNwbGFjZWRWaXJ0
dWFsUmVnaXN0ZXJzKSkpKTsKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgbV9qaXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CiAK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICItPiAl
cFxuIiwganVtcFRhcmdldCk7CisgICAgZGF0YUxvZygiLT4gJXBcbiIsIGp1bXBUYXJnZXQpOwog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmVj
b3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUlu
ZGV4IC0gMSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50Zihz
dGRlcnIsICJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZvciBjb2Rl
IGJsb2NrICVwLlxuIiwgZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
LCBleGl0Lm1fbm9kZUluZGV4LCBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgY29kZUJs
b2NrKTsKKyAgICBkYXRhTG9nKCJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwg
JXMpIGZvciBjb2RlIGJsb2NrICVwLlxuIiwgZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9r
aW5kKSwgY29kZUJsb2NrKTsKICNlbmRpZgogCiAgICAgewpAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZXhpdC5tX2NvZGUgPSBw
YXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJPU1IgZXhpdCBjb2RlIGF0IFslcCwgJXApLlxu
IiwgcGF0Y2hCdWZmZXIuZGVidWdBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihwYXRjaEJ1
ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBwYXRjaEJ1ZmZlci5kZWJ1Z1NpemUoKSk7CisgICAgICAg
IGRhdGFMb2coIk9TUiBleGl0IGNvZGUgYXQgWyVwLCAlcCkuXG4iLCBwYXRjaEJ1ZmZlci5kZWJ1
Z0FkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHBhdGNoQnVmZmVyLmRlYnVnQWRkcmVzcygp
KSArIHBhdGNoQnVmZmVyLmRlYnVnU2l6ZSgpKTsKICNlbmRpZgogICAgIH0KICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyMSw3ICsxMDIxLDcgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRl
YnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVi
dWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJ
bmZvUmF3KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2Nr
OwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7
Ci0gICAgcHJpbnRmKCJTcGVjdWxhdGlvbiBmYWlsdXJlIGluICVwIGF0IEAldSB3aXRoIGV4ZWN1
dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXph
dGlvbkRlbGF5Q291bnRlciA9ICV1LCBzdWNjZXNzL2ZhaWwgJXUvJXVcbiIsIGNvZGVCbG9jaywg
ZGVidWdJbmZvLT5ub2RlSW5kZXgsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPmppdEV4ZWN1
dGVDb3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpIDogMCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+b3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyKCkgOiAwLCBjb2RlQmxvY2stPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXIoKSwgY29kZUJsb2NrLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOworICAgIGRhdGFMb2co
IlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAl
ZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyID0gJXUsIHN1Y2Nlc3MvZmFpbCAldS8ldVxuIiwgY29kZUJsb2NrLCBkZWJ1Z0luZm8tPm5v
ZGVJbmRleCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSA6
IDAsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
KCkgOiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIoKSA6IDAsIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxv
Y2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NCwyOCArNjQsMjggQEAgcHVibGljOgogICAgICAgICBmaXh1cCgpOwogICAg
ICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb24gZml4dXA6XG4iKTsKKyAgICAgICAgZGF0
YUxvZygiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb24gZml4dXA6XG4iKTsKICAgICAgICAgbV9ncmFw
aC5kdW1wKG1fY29kZUJsb2NrKTsKICNlbmRpZgogCiAgICAgICAgIGxvY2FsQ1NFKCk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
R3JhcGggYWZ0ZXIgQ1NFOlxuIik7CisgICAgICAgIGRhdGFMb2coIkdyYXBoIGFmdGVyIENTRTpc
biIpOwogICAgICAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2spOwogI2VuZGlmCiAKICAgICAg
ICAgYWxsb2NhdGVWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgdmlydHVhbCBy
ZWdpc3RlciBhbGxvY2F0aW9uOlxuIik7CisgICAgICAgIGRhdGFMb2coIkdyYXBoIGFmdGVyIHZp
cnR1YWwgcmVnaXN0ZXIgYWxsb2NhdGlvbjpcbiIpOwogICAgICAgICBtX2dyYXBoLmR1bXAobV9j
b2RlQmxvY2spOwogI2VuZGlmCiAKICAgICAgICAgZ2xvYmFsQ0ZBKCk7CiAKICNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRp
b246XG4iKTsKKyAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb246XG4iKTsK
ICAgICAgICAgbV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKTsKICNlbmRpZgogICAgIH0KQEAgLTEx
OCw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZmxhZ3MgPSBub2RlLnJhd0FyaXRo
Tm9kZUZsYWdzKCk7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUo
b3ApLCBtX2NvbXBpbGVJbmRleCwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhmbGFncykpOworICAg
ICAgICBkYXRhTG9nKCIgICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBp
bGVJbmRleCwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhmbGFncykpOwogI2VuZGlmCiAgICAgICAg
IAogICAgICAgICBmbGFncyAmPSBOb2RlVXNlZEFzTWFzazsKQEAgLTIyMiw3ICsyMjIsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZF
UkJPU0UpCi0gICAgICAgIHByaW50ZigiJXNcbiIsIGNoYW5nZWQgPyAiQ0hBTkdFRCIgOiAiIik7
CisgICAgICAgIGRhdGFMb2coIiVzXG4iLCBjaGFuZ2VkID8gIkNIQU5HRUQiIDogIiIpOwogI2Vu
ZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0gY2hhbmdlZDsKQEAgLTIzMSw3ICsy
MzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3NGb3J3YXJk
KCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAg
ICAgICBwcmludGYoIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9kZSBmbGFncyBmb3J3YXJkIFsl
dV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIGFyaXRobWV0
aWMgbm9kZSBmbGFncyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CiAjZW5kaWYKICAgICAg
ICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7IG1fY29tcGlsZUluZGV4IDwgbV9ncmFwaC5zaXpl
KCk7ICsrbV9jb21waWxlSW5kZXgpCiAgICAgICAgICAgICBwcm9wYWdhdGVBcml0aE5vZGVGbGFn
cyhtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC0yNDAsNyArMjQwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzQmFja3dhcmQoKQogICAgIHsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUHJv
cGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3Vu
dCk7CisgICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9kZSBmbGFncyBi
YWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwogI2VuZGlmCiAgICAgICAgIGZvciAobV9jb21w
aWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21waWxlSW5kZXgtLSA+IDA7KQogICAgICAg
ICAgICAgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3MobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpA
QCAtMjkzLDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5v
cDsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAg
cHJpbnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7
CisgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29t
cGlsZUluZGV4KTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CkBAIC02MzYsNyArNjM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiVzXG4iLCBw
cmVkaWN0aW9uVG9TdHJpbmcobV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSk7
CisgICAgICAgIGRhdGFMb2coIiVzXG4iLCBwcmVkaWN0aW9uVG9TdHJpbmcobV9ncmFwaFttX2Nv
bXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIG1f
Y2hhbmdlZCB8PSBjaGFuZ2VkOwpAQCAtNjQ1LDcgKzY0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9wYWdhdGVQcmVkaWN0aW9uc0ZvcndhcmQoKQogICAgIHsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUHJvcGFnYXRpbmcgcHJl
ZGljdGlvbnMgZm9yd2FyZCBbJXVdXG4iLCArK21fY291bnQpOworICAgICAgICBkYXRhTG9nKCJQ
cm9wYWdhdGluZyBwcmVkaWN0aW9ucyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CiAjZW5k
aWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7IG1fY29tcGlsZUluZGV4IDwgbV9n
cmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgpCiAgICAgICAgICAgICBwcm9wYWdhdGVOb2Rl
UHJlZGljdGlvbnMobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAtNjU0LDcgKzY1NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9wYWdhdGVQcmVkaWN0aW9uc0JhY2t3YXJkKCkKICAgICB7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmlu
dGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7
CisgICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGJhY2t3YXJkIFsldV1c
biIsICsrbV9jb3VudCk7CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IG1f
Z3JhcGguc2l6ZSgpOyBtX2NvbXBpbGVJbmRleC0tID4gMDspCiAgICAgICAgICAgICBwcm9wYWdh
dGVOb2RlUHJlZGljdGlvbnMobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAtNjk3LDcgKzY5
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1JvdW5kT2ZEb3VibGVWb3RpbmcoKQogICAgIHsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50
ZigiVm90aW5nIG9uIGRvdWJsZSB1c2VzIG9mIGxvY2FscyBbJXVdXG4iLCBtX2NvdW50KTsKKyAg
ICAgICAgZGF0YUxvZygiVm90aW5nIG9uIGRvdWJsZSB1c2VzIG9mIGxvY2FscyBbJXVdXG4iLCBt
X2NvdW50KTsKICNlbmRpZgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFw
aC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJpYWJsZUFjY2Vzc0RhdGFbaV0uZmluZCgpLT5jbGVhclZvdGVzKCk7CkBAIC04MjAsNyAr
ODIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOwogCiAjaWYg
REZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAg
ICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
ZGF0YUxvZygiICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgp
OwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG9wKSB7CkBAIC04NDUsNyArODQ1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50
ZigiICBAJXUgLT4gJXMiLCBtX2NvbXBpbGVJbmRleCwgaXNBcnJheSA/ICJHZXRBcnJheUxlbmd0
aCIgOiAiR2V0U3RyaW5nTGVuZ3RoIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgIEAldSAtPiAl
cyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6ICJHZXRTdHJp
bmdMZW5ndGgiKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKGlzQXJyYXkpCiAgICAgICAgICAg
ICAgICAgbm9kZS5vcCA9IEdldEFycmF5TGVuZ3RoOwpAQCAtODk5LDE0ICs4OTksMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5k
aWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBmaXh1cCgpCiAgICAgewogI2lmIERGR19FTkFCTEUo
REVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQZXJmb3JtaW5nIEZp
eHVwXG4iKTsKKyAgICAgICAgZGF0YUxvZygiUGVyZm9ybWluZyBGaXh1cFxuIik7CiAjZW5kaWYK
ICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7IG1fY29tcGlsZUluZGV4IDwgbV9ncmFw
aC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgpCiAgICAgICAgICAgICBmaXh1cE5vZGUobV9ncmFw
aFttX2NvbXBpbGVJbmRleF0pOwpAQCAtOTY3LDcgKzk2Nyw3IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gY29tcHV0ZVN0YXJ0SW5kZXhGb3JDaGlsZHJlbihj
aGlsZDEsIGNoaWxkMiwgY2hpbGQzKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICBsb29rYmFjayAldTogIiwgcmVzdWx0KTsKKyAg
ICAgICAgZGF0YUxvZygiICBsb29rYmFjayAldTogIiwgcmVzdWx0KTsKICNlbmRpZgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIEFTU0VSVChyZXN1bHQgPD0gbV9jb21waWxlSW5k
ZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAg
cHJpbnRmKCIgIGxpbWl0ICV1OiAiLCByZXN1bHQpOworICAgICAgICBkYXRhTG9nKCIgIGxpbWl0
ICV1OiAiLCByZXN1bHQpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtMTM5MSw3ICsxMzkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBw
cmludGYoIiAgIFJlcGxhY2luZyBAJXUgLT4gQCV1IiwgbV9jb21waWxlSW5kZXgsIHJlcGxhY2Vt
ZW50KTsKKyAgICAgICAgZGF0YUxvZygiICAgUmVwbGFjaW5nIEAldSAtPiBAJXUiLCBtX2NvbXBp
bGVJbmRleCwgcmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBOb2RlJiBu
b2RlID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07CkBAIC0xNDA1LDcgKzE0MDUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZWxpbWluYXRlKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgIEVsaW1pbmF0aW5nIEAldSIs
IG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgZGF0YUxvZygiICAgRWxpbWluYXRpbmcgQCV1Iiwg
bV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBOb2RlJiBub2RlID0g
bV9ncmFwaFttX2NvbXBpbGVJbmRleF07CkBAIC0xNDMxLDcgKzE0MzEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BO
YW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwgbV9jb21waWxlSW5kZXgpOworICAgICAg
ICBkYXRhTG9nKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFttX2NvbXBpbGVJ
bmRleF0ub3ApLCBtX2NvbXBpbGVJbmRleCk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIC8v
IE5PVEU6IHRoZXJlIGFyZSBzb21lIG5vZGVzIHRoYXQgd2UgZGVsaWJlcmF0ZWx5IGRvbid0IENT
RSBldmVuIHRob3VnaCB3ZQpAQCAtMTU1OSw3ICsxNTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIG1fbGFzdFNlZW5bbm9kZS5vcCAmIE5vZGVJZE1hc2tdID0gbV9jb21waWxlSW5k
ZXg7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBw
cmludGYoIlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKICAgICB9CiAgICAg
CkBAIC0xNTc0LDcgKzE1NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9jYWxDU0UoKQogICAg
IHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHBy
aW50ZigiUGVyZm9ybWluZyBsb2NhbCBDU0U6Iik7CisgICAgICAgIGRhdGFMb2coIlBlcmZvcm1p
bmcgbG9jYWwgQ1NFOiIpOwogI2VuZGlmCiAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2sgPSAw
OyBibG9jayA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrKQogICAgICAgICAgICAg
cGVyZm9ybUJsb2NrQ1NFKCptX2dyYXBoLm1fYmxvY2tzW2Jsb2NrXSk7CkBAIC0xNTgzLDkgKzE1
ODMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxsb2NhdGVWaXJ0dWFsUmVnaXN0ZXJzKCkKICAg
ICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIlByZXNl
cnZlZCB2YXJzOiAiKTsKLSAgICAgICAgbV9ncmFwaC5tX3ByZXNlcnZlZFZhcnMuZHVtcChzdGRv
dXQpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRhdGFMb2coIlByZXNlcnZlZCB2
YXJzOiAiKTsKKyAgICAgICAgbV9ncmFwaC5tX3ByZXNlcnZlZFZhcnMuZHVtcChXVEY6OmRhdGFG
aWxlKCkpOworICAgICAgICBkYXRhTG9nKCJcbiIpOwogI2VuZGlmCiAgICAgICAgIFNjb3JlQm9h
cmQgc2NvcmVCb2FyZChtX2dyYXBoLCBtX2dyYXBoLm1fcHJlc2VydmVkVmFycyk7CiAgICAgICAg
IHVuc2lnbmVkIHNpemVFeGNsdWRpbmdQaGlOb2RlcyA9IG1fZ3JhcGgubV9ibG9ja3MubGFzdCgp
LT5lbmQ7CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoKHVuc2ln
bmVkKW1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA8IGNhbGxlZVJlZ2lzdGVycykK
ICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyA9IGNhbGxlZVJl
Z2lzdGVyczsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
TnVtIGNhbGxlZSByZWdpc3RlcnM6ICV1XG4iLCBjYWxsZWVSZWdpc3RlcnMpOworICAgICAgICBk
YXRhTG9nKCJOdW0gY2FsbGVlIHJlZ2lzdGVyczogJXVcbiIsIGNhbGxlZVJlZ2lzdGVycyk7CiAj
ZW5kaWYKICAgICB9CiAgICAgCkBAIC0xNjM5LDQyICsxNjM5LDQyIEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghYmxvY2stPmNmYVNob3VsZFJldmlzaXQpCiAgICAgICAgICAgICByZXR1cm47CiAj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYo
IiAgIEJsb2NrICMldSAoYmMjJXUpOlxuIiwgYmxvY2tJbmRleCwgYmxvY2stPmJ5dGVjb2RlQmVn
aW4pOworICAgICAgICBkYXRhTG9nKCIgICBCbG9jayAjJXUgKGJjIyV1KTpcbiIsIGJsb2NrSW5k
ZXgsIGJsb2NrLT5ieXRlY29kZUJlZ2luKTsKICNlbmRpZgogICAgICAgICBzdGF0ZS5iZWdpbkJh
c2ljQmxvY2soYmxvY2spOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9T
RSkKLSAgICAgICAgcHJpbnRmKCIgICAgICBoZWFkIHZhcnM6ICIpOwotICAgICAgICBkdW1wT3Bl
cmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRmKCJcbiIp
OworICAgICAgICBkYXRhTG9nKCIgICAgICBoZWFkIHZhcnM6ICIpOworICAgICAgICBkdW1wT3Bl
cmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgZGF0
YUxvZygiXG4iKTsKICNlbmRpZgogICAgICAgICBmb3IgKE5vZGVJbmRleCBub2RlSW5kZXggPSBi
bG9jay0+YmVnaW47IG5vZGVJbmRleCA8IGJsb2NrLT5lbmQ7ICsrbm9kZUluZGV4KSB7CiAgICAg
ICAgICAgICBpZiAoIW1fZ3JhcGhbbm9kZUluZGV4XS5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1l
KG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5vZGVJbmRleCk7Ci0gICAgICAgICAgICBzdGF0ZS5k
dW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5kZXhdLm9w
KSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIHN0YXRlLmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKICAgICAgICAgICAgIGlmICghc3Rh
dGUuZXhlY3V0ZShub2RlSW5kZXgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmlu
dGYoIiAgICAgIHRhaWwgcmVnczogIik7Ci0gICAgICAgIHN0YXRlLmR1bXAoc3Rkb3V0KTsKLSAg
ICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgICB0YWlsIHJlZ3M6ICIp
OworICAgICAgICBzdGF0ZS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAgIGRhdGFMb2co
IlxuIik7CiAjZW5kaWYKICAgICAgICAgbV9jaGFuZ2VkIHw9IHN0YXRlLmVuZEJhc2ljQmxvY2so
QWJzdHJhY3RTdGF0ZTo6TWVyZ2VUb1N1Y2Nlc3NvcnMpOwogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAgICB0YWlsIHZhcnM6ICIp
OwotICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwgc3Rkb3V0KTsKLSAg
ICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgICB0YWlsIHZhcnM6ICIp
OworICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwgV1RGOjpkYXRhRmls
ZSgpKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogICAgIH0KICAgICAKICAgICB2
b2lkIHBlcmZvcm1Gb3J3YXJkQ0ZBKEFic3RyYWN0U3RhdGUmIHN0YXRlKQogICAgIHsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiQ0ZB
IFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRhdGFMb2coIkNGQSBbJXVdXG4iLCArK21f
Y291bnQpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2sg
PSAwOyBibG9jayA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCShyZXZpc2lvbiAxMDcw
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzIsMTEgKzIzMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBl
YWNoIHJlZ2lzdGVyLCBwcmludCB0aGUgVmlydHVhbFJlZ2lzdGVyICduYW1lJy4KICAgICAgICAg
Zm9yICh1aW50MzJfdCBpID0wOyBpIDwgTlVNX1JFR1M7ICsraSkgewogICAgICAgICAgICAgaWYg
KG1fZGF0YVtpXS5uYW1lICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIpCi0gICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJbJTAyZF0iLCBtX2RhdGFbaV0ubmFtZSk7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZygiWyUwMmRdIiwgbV9kYXRhW2ldLm5hbWUpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWy0tXSIpOworICAgICAgICAgICAg
ICAgIGRhdGFMb2coIlstLV0iKTsKICAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oCShyZXZpc2lvbiAxMDcwMjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDI2ICsxMTksMjYgQEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICB2
b2lkIGR1bXAoKQogICAgIHsKLSAgICAgICAgcHJpbnRmKCIgICAgVVNFRDogWyAiKTsKKyAgICAg
ICAgZGF0YUxvZygiICAgIFVTRUQ6IFsgIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3VzZWQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghbV9mcmVlLmNvbnRh
aW5zKGkpKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIlZDoiLCBpKTsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIlZDoiLCBpKTsKICAgICAgICAgICAgICAgICBpZiAobV91c2VkW2ldID09
IG1heCgpKQotICAgICAgICAgICAgICAgICAgICBwcmludGYoImxvY2FsICIpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJsb2NhbCAiKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV91c2VkW2ldKTsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiJWQgIiwgbV91c2VkW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBwcmludGYoIl1cbiIpOworICAgICAgICBkYXRhTG9nKCJdXG4iKTsKIAotICAg
ICAgICBwcmludGYoIiAgICBGUkVFOiBbICIpOworICAgICAgICBkYXRhTG9nKCIgICAgRlJFRTog
WyAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXNlZC5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgaWYgKG1fZnJlZS5jb250YWlucyhpKSAmJiBtX3VzZWRbaV0gIT0g
bWF4KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fdXNlZFtpXSk7Ci0gICAgICAgICAg
ICAgICAgcHJpbnRmKCIlZCAiLCBpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIlZCAiLCBp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBwcmludGYoIl1cbiIpOworICAg
ICAgICBkYXRhTG9nKCJdXG4iKTsKICAgICB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODQsNyArOTg0LDcgQEAgdGVtcGxhdGU8
Ym9vbCBzdHJpY3Q+CiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRl
cm5hbChOb2RlSW5kZXggbm9kZUluZGV4LCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpCiB7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0lu
dEAlZCAgICIsIG5vZGVJbmRleCk7CisgICAgZGF0YUxvZygiU3BlY0ludEAlZCAgICIsIG5vZGVJ
bmRleCk7CiAjZW5kaWYKICAgICBpZiAoaXNLbm93bk5vdEludGVnZXIobm9kZUluZGV4KSkgewog
ICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlKTsKQEAgLTEwODAsNyArMTA4MCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludFMKIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdf
VkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNEb3VibGVAJWQgICAiLCBub2RlSW5k
ZXgpOworICAgIGRhdGFMb2coIlNwZWNEb3VibGVAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlm
CiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobm9kZUluZGV4KSkgewogICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
KTsKQEAgLTEyMTAsNyArMTIxMCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoTm9kZUlu
ZGV4IG5vZGVJbmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnBy
aW50ZihzdGRlcnIsICJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJbmRleCk7CisgICAgZGF0YUxvZygi
U3BlY0NlbGxAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgaWYgKGlzS25vd25Ob3RD
ZWxsKG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24o
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CkBAIC0xMjgzLDcgKzEyODMsNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNC
b29sQCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICAgZGF0YUxvZygiU3BlY0Jvb2xAJWQgICAiLCBu
b2RlSW5kZXgpOwogI2VuZGlmCiAgICAgaWYgKGlzS25vd25Ob3RCb29sZWFuKG5vZGVJbmRleCkp
IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4NCw3ICs5ODQsNyBAQCB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCBub2RlSW5kZXgs
IERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4KTsKKyAg
ICBkYXRhTG9nKCJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAgIE5vZGUm
IG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50UwogRlBSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlRG91YmxlKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZHX0VO
QUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0RvdWJsZUAlZCAg
ICIsIG5vZGVJbmRleCk7CisgICAgZGF0YUxvZygiU3BlY0RvdWJsZUAlZCAgICIsIG5vZGVJbmRl
eCk7CiAjZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTEy
ODAsNyArMTI4MCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIK
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoTm9kZUluZGV4IG5vZGVJ
bmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRl
cnIsICJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJbmRleCk7CisgICAgZGF0YUxvZygiU3BlY0NlbGxA
JWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRl
eCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJl
Z2lzdGVyKCk7CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVDZWxsCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOworICAg
IGRhdGFMb2coIlNwZWNCb29sQCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAgIE5vZGUm
IG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MzAsMzMgKzQzMCwzMyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUZvcm1hdFN0
cmluZyhEYXRhCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxhYmVsKQog
ewogICAgIGlmIChsYWJlbCkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICI8JXM+XG4iLCBsYWJl
bCk7CisgICAgICAgIGRhdGFMb2coIjwlcz5cbiIsIGxhYmVsKTsKIAotICAgIGZwcmludGYoc3Rk
ZXJyLCAiICBncHJzOlxuIik7CisgICAgZGF0YUxvZygiICBncHJzOlxuIik7CiAgICAgbV9ncHJz
LmR1bXAoKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgZnByczpcbiIpOworICAgIGRhdGFMb2co
IiAgZnByczpcbiIpOwogICAgIG1fZnBycy5kdW1wKCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIg
IFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKKyAgICBkYXRhTG9nKCIgIFZpcnR1YWxSZWdpc3RlcnM6
XG4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXpl
KCk7ICsraSkgewogICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbklu
Zm9baV07CiAgICAgICAgIGlmIChpbmZvLmFsaXZlKCkpCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgICAlIDNkOiVzJXMiLCBpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5zcGlsbEZvcm1hdCgpKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgJSAzZDolcyVzIiwgaSwgZGF0YUZvcm1hdFN0cmluZyhpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0U3RyaW5nKGluZm8uc3BpbGxGb3JtYXQoKSkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAlIDNkOltfX11b
X19dIiwgaSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgJSAzZDpbX19dW19fXSIsIGkpOwog
ICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCi0g
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjpmcHIlZFxuIiwgaW5mby5mcHIoKSk7CisgICAg
ICAgICAgICBkYXRhTG9nKCI6ZnByJWRcbiIsIGluZm8uZnByKCkpOwogICAgICAgICBlbHNlIGlm
IChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmUKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgICAgICAgICAgJiYgIShpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9y
bWF0SlMpCiAjZW5kaWYKICAgICAgICAgICAgICkgewogICAgICAgICAgICAgQVNTRVJUKGluZm8u
Z3ByKCkgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjol
c1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCJcbiIpOwogICAgIH0KICAgICBpZiAobGFiZWwpCi0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiPC8lcz5cbiIsIGxhYmVsKTsKKyAgICAgICAgZGF0YUxvZygiPC8lcz5cbiIsIGxhYmVsKTsK
IH0KICNlbmRpZgogCkBAIC00NjgsMTMgKzQ2OCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0NvbnNpc3RlbmN5KCkKIAogICAgIGZvciAoZ3ByX2l0ZXJhdG9yIGl0ZXIgPSBtX2dwcnMu
YmVnaW4oKTsgaXRlciAhPSBtX2dwcnMuZW5kKCk7ICsraXRlcikgewogICAgICAgICBpZiAoaXRl
ci5pc0xvY2tlZCgpKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRGR19DT05TSVNU
RU5DWV9DSEVDSyBmYWlsZWQ6IGdwciAlcyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVnTmFtZSgp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGdw
ciAlcyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVnTmFtZSgpKTsKICAgICAgICAgICAgIGZhaWxl
ZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChmcHJfaXRlcmF0b3IgaXRlciA9
IG1fZnBycy5iZWdpbigpOyBpdGVyICE9IG1fZnBycy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAg
IGlmIChpdGVyLmlzTG9ja2VkKCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZH
X0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogZnByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVi
dWdOYW1lKCkpOworICAgICAgICAgICAgZGF0YUxvZygiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZh
aWxlZDogZnByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOwogICAgICAgICAg
ICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTUwMiw3ICs1MDIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0NvbnNpc3RlbmN5KCkKICAgICAgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICAgICAgQVNTRVJUKGdwciAhPSBJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgICAgIGlmIChtX2dwcnMubmFtZShncHIpICE9IHZpcnR1YWxSZWdpc3Rl
cikgewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NI
RUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgdmlydHVhbCByZWdpc3RlciAlZCAoZ3ByICVz
KS5cbiIsIHZpcnR1YWxSZWdpc3RlciwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwcikpOworICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IG5hbWUgbWlz
bWF0Y2ggZm9yIHZpcnR1YWwgcmVnaXN0ZXIgJWQgKGdwciAlcykuXG4iLCB2aXJ0dWFsUmVnaXN0
ZXIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpKTsKICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC01MTEsNyArNTExLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgICAgICAgICBG
UFJSZWcgZnByID0gaW5mby5mcHIoKTsKICAgICAgICAgICAgIEFTU0VSVChmcHIgIT0gSW52YWxp
ZEZQUlJlZyk7CiAgICAgICAgICAgICBpZiAobV9mcHJzLm5hbWUoZnByKSAhPSB2aXJ0dWFsUmVn
aXN0ZXIpIHsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRGR19DT05TSVNURU5D
WV9DSEVDSyBmYWlsZWQ6IG5hbWUgbWlzbWF0Y2ggZm9yIHZpcnR1YWwgcmVnaXN0ZXIgJWQgKGZw
ciAlcykuXG4iLCB2aXJ0dWFsUmVnaXN0ZXIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIpKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1l
IG1pc21hdGNoIGZvciB2aXJ0dWFsIHJlZ2lzdGVyICVkIChmcHIgJXMpLlxuIiwgdmlydHVhbFJl
Z2lzdGVyLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSk7CiAgICAgICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI3LDE4ICs1
MjcsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgICAg
IEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJd
OwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpdGVyLnJlZ0lEKCkgIT0gaW5mby5n
cHIoKSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVOQ1lfQ0hF
Q0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQp
LlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IG5hbWUgbWlzbWF0Y2ggZm9yIGdw
ciAlcyAodmlydHVhbCByZWdpc3RlciAlZCkuXG4iLCBpdGVyLmRlYnVnTmFtZSgpLCB2aXJ0dWFs
UmVnaXN0ZXIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQogI2Vsc2UK
ICAgICAgICAgaWYgKCEoaW5mby5yZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKSkgewog
ICAgICAgICAgICAgaWYgKGl0ZXIucmVnSUQoKSAhPSBpbmZvLmdwcigpKSB7Ci0gICAgICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1l
IG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1
Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJERkdf
Q09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1
YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsK
ICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKGl0ZXIucmVnSUQoKSAhPSBpbmZvLnRhZ0dQUigpICYm
IGl0ZXIucmVnSUQoKSAhPSBpbmZvLnBheWxvYWRHUFIoKSkgewotICAgICAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRj
aCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCks
IHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiREZHX0NPTlNJU1RF
TkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJlZ2lz
dGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAg
ICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUy
LDcgKzU1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVuY3koKQogCiAg
ICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVn
aXN0ZXJdOwogICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9IGluZm8uZnByKCkpIHsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFt
ZSBtaXNtYXRjaCBmb3IgZnByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVi
dWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICBkYXRhTG9nKCJERkdfQ09O
U0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBmcHIgJXMgKHZpcnR1YWwg
cmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKICAg
ICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC05NjMsNyArOTYz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICBt
X2NvZGVPcmlnaW5Gb3JPU1IgPSBub2RlLmNvZGVPcmlnaW47CiAgICAgICAgIGlmICghbm9kZS5z
aG91bGRHZW5lcmF0ZSgpKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjdWxhdGl2ZUpJVCBza2lwcGluZyBOb2RlIEAlZCAo
YmMjJXUpIGF0IEpJVCBvZmZzZXQgMHgleCAgICAgIiwgKGludCltX2NvbXBpbGVJbmRleCwgbm9k
ZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1faml0LmRlYnVnT2Zmc2V0KCkpOworICAgICAg
ICAgICAgZGF0YUxvZygiU3BlY3VsYXRpdmVKSVQgc2tpcHBpbmcgTm9kZSBAJWQgKGJjIyV1KSBh
dCBKSVQgb2Zmc2V0IDB4JXggICAgICIsIChpbnQpbV9jb21waWxlSW5kZXgsIG5vZGUuY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKICNlbmRpZgogICAgICAg
ICAgICAgc3dpdGNoIChub2RlLm9wKSB7CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgpAQCAt
OTkwLDcgKzk5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY3VsYXRpdmVKSVQgZ2VuZXJh
dGluZyBOb2RlIEAlZCAoYmMjJXUpIGF0IEpJVCBvZmZzZXQgMHgleCAgICIsIChpbnQpbV9jb21w
aWxlSW5kZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNl
dCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlNwZWN1bGF0aXZlSklUIGdlbmVyYXRpbmcgTm9k
ZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAiLCAoaW50KW1fY29tcGlsZUluZGV4
LCBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CiAj
ZW5kaWYKICNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9FVkVSWV9OT0RFKQogICAgICAgICAg
ICAgbV9qaXQuYnJlYWtwb2ludCgpOwpAQCAtMTAxMSwyMCArMTAxMSwyMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQogICAgICAgICAgICAgaWYgKG5vZGUuaGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgICAg
ICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9bbm9kZS52aXJ0dWFsUmVn
aXN0ZXIoKV07Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICItPiAlcywgdnIjJWQi
LCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgKGludClub2RlLnZp
cnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCItPiAlcywgdnIjJWQi
LCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3RlckZvcm1hdCgpKSwgKGludClub2RlLnZp
cnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1h
dCgpICE9IERhdGFGb3JtYXROb25lKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiLCAlcyIsIEZQUkluZm86OmRlYnVnTmFtZShpbmZvLmZwcigp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIsICVzIiwgRlBSSW5mbzo6ZGVi
dWdOYW1lKGluZm8uZnByKCkpKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiwgJXMgJXMiLCBHUFJJbmZv
OjpkZWJ1Z05hbWUoaW5mby50YWdHUFIoKSksIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnBheWxv
YWRHUFIoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiLCAlcyAlcyIsIEdQ
UkluZm86OmRlYnVnTmFtZShpbmZvLnRhZ0dQUigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8u
cGF5bG9hZEdQUigpKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIsICVzIiwgR1BSSW5mbzo6ZGVidWdO
YW1lKGluZm8uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiwgJXMi
LCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkpOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAiKTsKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgIik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgICAiKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIik7CiAj
ZW5kaWYKICAgICAgICAgfQogICAgICAgICAKQEAgLTEwMzIsMTQgKzEwMzIsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgY29tcHV0ZVZh
bHVlUmVjb3ZlcnlGb3IoYXJndW1lbnRUb09wZXJhbmQoaSkpLmR1bXAoc3RkZXJyKTsKICAgICAg
ICAgCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIDogIik7CisgICAgICAgIGRhdGFMb2coIiA6
ICIpOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgb3BlcmFuZCA9IDA7IG9wZXJhbmQgPCAo
aW50KW1fdmFyaWFibGVzLnNpemUoKTsgKytvcGVyYW5kKQogICAgICAgICAgICAgY29tcHV0ZVZh
bHVlUmVjb3ZlcnlGb3Iob3BlcmFuZCkuZHVtcChzdGRlcnIpOwogI2VuZGlmCiAKICNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIGFic3RyYWN0IHN0YXRlIGlzIHJlbWF0ZXJpYWxpemVkIGZvciB0aGUgbmV4
dCBub2RlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEw
NzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBHQ1RpbWVyIHsKICAgICB9CiAgICAgfkdDVGlt
ZXIoKQogICAgIHsKLSAgICAgICAgcHJpbnRmKCIlczogJS4ybGZtcyAoYXZnLiAlLjJsZiwgbWlu
LiAlLjJsZiwgbWF4LiAlLjJsZilcbiIsIG1fbmFtZSwgbV90aW1lICogMTAwMCwgbV90aW1lICog
MTAwMCAvIG1fY291bnQsIG1fbWluKjEwMDAsIG1fbWF4KjEwMDApOworICAgICAgICBkYXRhTG9n
KCIlczogJS4ybGZtcyAoYXZnLiAlLjJsZiwgbWluLiAlLjJsZiwgbWF4LiAlLjJsZilcbiIsIG1f
bmFtZSwgbV90aW1lICogMTAwMCwgbV90aW1lICogMTAwMCAvIG1fY291bnQsIG1fbWluKjEwMDAs
IG1fbWF4KjEwMDApOwogICAgIH0KICAgICBkb3VibGUgbV90aW1lOwogICAgIGRvdWJsZSBtX21p
bjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgR0NDb3VudGVyIHsKICAgICB9CiAgICAgfkdD
Q291bnRlcigpCiAgICAgewotICAgICAgICBwcmludGYoIiVzOiAlenUgdmFsdWVzIChhdmcuICV6
dSwgbWluLiAlenUsIG1heC4gJXp1KVxuIiwgbV9uYW1lLCBtX3RvdGFsLCBtX3RvdGFsIC8gbV9j
b3VudCwgbV9taW4sIG1fbWF4KTsKKyAgICAgICAgZGF0YUxvZygiJXM6ICV6dSB2YWx1ZXMgKGF2
Zy4gJXp1LCBtaW4uICV6dSwgbWF4LiAlenUpXG4iLCBtX25hbWUsIG1fdG90YWwsIG1fdG90YWwg
LyBtX2NvdW50LCBtX21pbiwgbV9tYXgpOwogICAgIH0KICAgICBjb25zdCBjaGFyKiBtX25hbWU7
CiAgICAgc2l6ZV90IG1fY291bnQ7CkBAIC0zODEsOCArMzgxLDggQEAgdm9pZCBIZWFwOjpkZXN0
cm95KCkKICAgICBBU1NFUlQoIXNpemUoKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQ
X1BST0ZJTElORykKLSAgICBtX3Nsb3RWaXNpdG9yLm1fdmlzaXRlZFR5cGVDb3VudHMuZHVtcChz
dGRlcnIsICJWaXNpdGVkIFR5cGUgQ291bnRzIik7Ci0gICAgbV9kZXN0cm95ZWRUeXBlQ291bnRz
LmR1bXAoc3RkZXJyLCAiRGVzdHJveWVkIFR5cGUgQ291bnRzIik7CisgICAgbV9zbG90VmlzaXRv
ci5tX3Zpc2l0ZWRUeXBlQ291bnRzLmR1bXAoV1RGOjpkYXRhRmlsZSgpLCAiVmlzaXRlZCBUeXBl
IENvdW50cyIpOworICAgIG1fZGVzdHJveWVkVHlwZUNvdW50cy5kdW1wKFdURjo6ZGF0YUZpbGUo
KSwgIkRlc3Ryb3llZCBUeXBlIENvdW50cyIpOwogI2VuZGlmCiAgICAgCiAgICAgcmVsZWFzZUZy
ZWVCbG9ja3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhlYXBC
bG9jay5oIgogCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaD4KQEAg
LTM2LDkgKzM3LDExIEBACiAjZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05T
IDAKIAogI2lmIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT05TCi0jZGVmaW5lIEhFQVBf
TE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oYmxvY2spIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBwcmludGYoIiVzOiVkICVzOiBibG9jayAlcyA9ICVw
LCAlZFxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
ICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fLCAjYmxvY2ssIChibG9jayks
IChibG9jayktPm1fc3RhdGUpOyBcCisjZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04oYmxvY2spIGRvIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRhdGFMb2co
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElP
Tl9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICNibG9jaywgKGJs
b2NrKSwgKGJsb2NrKS0+bV9zdGF0ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
IHdoaWxlIChmYWxzZSkKICNlbHNlCiAjZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04oYmxvY2spICgodm9pZCkwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIHZvaWQgQ2FsbEZyYW1lOjpkdW1wQ2FsbGVyKCkKICAgICBKU1ZhbHVl
IGZ1bmN0aW9uOwogICAgIAogICAgIGludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcih0
aGlzLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0g
ICAgcHJpbnRmKCJDYWxscG9pbnQgPT4gJXM6JWRcbiIsIHVybFN0cmluZy51dGY4KCkuZGF0YSgp
LCBzaWduZWRMaW5lTnVtYmVyKTsKKyAgICBkYXRhTG9nKCJDYWxscG9pbnQgPT4gJXM6JWRcbiIs
IHVybFN0cmluZy51dGY4KCkuZGF0YSgpLCBzaWduZWRMaW5lTnVtYmVyKTsKIH0KIAogUmVnaXN0
ZXJGaWxlKiBDYWxsRnJhbWU6OnJlZ2lzdGVyRmlsZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNzAy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5MiwxMCArNTkyLDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1
bXBDYWxsRnJhbWUoQ2FsbEZyYW0KIAogdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBwcmludGYoIlJlZ2lzdGVyIGZyYW1lOiBcblxu
Iik7Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgcHJpbnRmKCIg
ICAgICAgICAgICB1c2UgICAgICAgICAgICB8ICAgYWRkcmVzcyAgfCAgICAgICAgICAgICAgICB2
YWx1ZSAgICAgICAgICAgICAgIFxuIik7Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuIik7CisgICAgZGF0YUxvZygiUmVnaXN0ZXIgZnJhbWU6IFxuXG4iKTsKKyAgICBkYXRhTG9n
KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGF0YUxvZygiICAgICAgICAgICAgdXNl
ICAgICAgICAgICAgfCAgIGFkZHJlc3MgIHwgICAgICAgICAgICAgICAgdmFsdWUgICAgICAgICAg
ICAgICBcbiIpOworICAgIGRhdGFMb2coIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBjb25z
dCBSZWdpc3RlciogaXQ7CkBAIC02MDUsMzAgKzYwNSwzMCBAQCB2b2lkIEludGVycHJldGVyOjpk
dW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAgICAgaXQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0g
UmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCk7CiAgICAgdiA9ICgqaXQpLmpzVmFsdWUoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIHByaW50ZigiW3RoaXNdICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHgl
bGx4IFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsgKytpdDsK
KyAgICBkYXRhTG9nKCJbdGhpc10gICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAw
eCVsbHggXG4iLCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOyArK2l0
OwogI2Vsc2UKLSAgICBwcmludGYoIlt0aGlzXSAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8
ICUtMTZzICVwIFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsg
KytpdDsKKyAgICBkYXRhTG9nKCJbdGhpc10gICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAl
LTE2cyAlcCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7ICsr
aXQ7CiAjZW5kaWYKICAgICBlbmQgPSBpdCArIG1heChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSAtIDEsIDApOyAvLyAtIDEgdG8gc2tpcCAidGhpcyIKICAgICBpZiAoaXQgIT0gZW5kKSB7CiAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgIHYgPSAoKml0KS5qc1ZhbHVlKCk7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgICAgIHByaW50ZigiW3BhcmFtXSAgICAgICAgICAgICAgICAg
ICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1
ZTo6ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIltwYXJhbV0gICAgICAgICAgICAg
ICAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpT
VmFsdWU6OmVuY29kZSh2KSk7CiAjZWxzZQotICAgICAgICAgICAgcHJpbnRmKCJbcGFyYW1dICAg
ICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9u
KCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbcGFyYW1dICAg
ICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9u
KCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CiAjZW5kaWYKICAgICAgICAgICAgICsraXQ7CiAgICAg
ICAgIH0gd2hpbGUgKGl0ICE9IGVuZCk7CiAgICAgfQotICAgIHByaW50ZigiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbiIpOwotICAgIHByaW50ZigiW0NvZGVCbG9ja10gICAgICAgICAgICAgICAgfCAl
MTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuY29kZUJsb2NrKCkpOyArK2l0OwotICAgIHByaW50Zigi
W1Njb3BlQ2hhaW5dICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuc2Nv
cGVDaGFpbigpKTsgKytpdDsKLSAgICBwcmludGYoIltDYWxsZXJSZWdpc3RlcnNdICAgICAgICAg
IHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsraXQ7Ci0gICAgcHJpbnRmKCJbUmV0
dXJuUENdICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBcbiIsIGl0LCAoKml0KS52UEMoKSk7
ICsraXQ7Ci0gICAgcHJpbnRmKCJbQXJndW1lbnRDb3VudF0gICAgICAgICAgICB8ICUxMHAgfCAl
ZCBcbiIsIGl0LCAoKml0KS5pKCkpOyArK2l0OwotICAgIHByaW50ZigiW0NhbGxlZV0gICAgICAg
ICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuZnVuY3Rpb24oKSk7ICsraXQ7
Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGF0YUxvZygiLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgIGRhdGFMb2coIltDb2RlQmxvY2tdICAgICAgICAg
ICAgICAgIHwgJTEwcCB8ICVwIFxuIiwgaXQsICgqaXQpLmNvZGVCbG9jaygpKTsgKytpdDsKKyAg
ICBkYXRhTG9nKCJbU2NvcGVDaGFpbl0gICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBcbiIsIGl0
LCAoKml0KS5zY29wZUNoYWluKCkpOyArK2l0OworICAgIGRhdGFMb2coIltDYWxsZXJSZWdpc3Rl
cnNdICAgICAgICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsraXQ7CisgICAg
ZGF0YUxvZygiW1JldHVyblBDXSAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwg
KCppdCkudlBDKCkpOyArK2l0OworICAgIGRhdGFMb2coIltBcmd1bWVudENvdW50XSAgICAgICAg
ICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsraXQ7CisgICAgZGF0YUxvZygi
W0NhbGxlZV0gICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuZnVu
Y3Rpb24oKSk7ICsraXQ7CisgICAgZGF0YUxvZygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwog
CiAgICAgaW50IHJlZ2lzdGVyQ291bnQgPSAwOwogCkBAIC02MzcsMzAgKzYzNywzMCBAQCB2b2lk
IEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgIHYgPSAoKml0KS5qc1ZhbHVlKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAg
ICAgICAgIHByaW50ZigiW3IlMmRdICAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZz
IDB4JWxseCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6
OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbciUyZF0gICAgICAgICAgICAgICAg
ICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVz
Y3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCi0gICAgICAgICAgICBwcmlu
dGYoIltyJTJkXSAgICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIHJl
Z2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwg
JS0xNnMgJXAgXG4iLCByZWdpc3RlckNvdW50LCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVl
OjplbmNvZGUodikpOwogI2VuZGlmCiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKyty
ZWdpc3RlckNvdW50OwogICAgICAgICB9IHdoaWxlIChpdCAhPSBlbmQpOwogICAgIH0KLSAgICBw
cmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkYXRhTG9nKCItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxuIik7CiAKICAgICBlbmQgPSBpdCArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnMgLSBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBpZiAoaXQgIT0gZW5kKSB7CiAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgIHYgPSAoKml0KS5qc1ZhbHVlKCk7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgICAgIHByaW50ZigiW3IlMmRdICAgICAgICAgICAgICAgICAg
ICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2Ny
aXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbciUy
ZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVnaXN0
ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNl
Ci0gICAgICAgICAgICBwcmludGYoIltyJTJkXSAgICAgICAgICAgICAgICAgICAgICB8ICUxMHAg
fCAlLTE2cyAlcCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFs
dWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbciUyZF0gICAgICAgICAgICAg
ICAgICAgICAgfCAlMTBwIHwgJS0xNnMgJXAgXG4iLCByZWdpc3RlckNvdW50LCBpdCwgdi5kZXNj
cmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOwogI2VuZGlmCiAgICAgICAgICAgICArK2l0
OwogICAgICAgICAgICAgKytyZWdpc3RlckNvdW50OwogICAgICAgICB9IHdoaWxlIChpdCAhPSBl
bmQpOwogICAgIH0KLSAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBk
YXRhTG9nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiB9CiAKICNlbmRpZgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBtX2xhYmVsc1ttX2J5
dGVjb2RlT2Zmc2V0XSA9IGxhYmVsKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCi0gICAg
ICAgIHByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQgMHgl
bHguXG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKKyAgICAgICAg
ZGF0YUxvZygiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBiYyMldSBhdCBvZmZzZXQgMHglbHgu
XG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09mZnNldCgpKTsKICNlbmRpZgogCiAg
ICAgICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0
aW9uLT51Lm9wY29kZSkpIHsKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0UpCi0gICAg
ICAgIHByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNvZGUgZm9yIGJjIyV1IGF0IG9mZnNl
dCAweCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25nKWRlYnVnT2Zmc2V0KCkpOworICAg
ICAgICBkYXRhTG9nKCJPbGQgSklUIGVtaXR0aW5nIHNsb3cgY29kZSBmb3IgYmMjJXUgYXQgb2Zm
c2V0IDB4JWx4LlxuIiwgbV9ieXRlY29kZU9mZnNldCwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CiAj
ZW5kaWYKIAogICAgICAgICBzd2l0Y2ggKG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJl
bnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CkBAIC03MDYsNyArNzA2LDcgQEAgSklUQ29kZSBK
SVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgIENvZGVSZWYgcmVzdWx0ID0gcGF0
Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFKQot
ICAgIHByaW50ZigiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVwKS5cbiIsIG1f
Y29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCByZXN1bHQuZXhl
Y3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CisgICAgZGF0YUxvZygiSklUIGdlbmVyYXRlZCBjb2Rl
IGZvciAlcCBhdCBbJXAsICVwKS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1l
bW9yeSgpLT5zdGFydCgpLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CiAjZW5k
aWYKICAgICAKICAgICByZXR1cm4gSklUQ29kZShyZXN1bHQsIEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAx
MDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkzMSwxNiArMTkzMSwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUu
YXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmlu
dGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
ID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291
bnRlcigpKTsKKyAgICBkYXRhTG9nKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4
ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGlt
aXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVy
KCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2st
Pmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgICAgICBwcmludGYoIkNvbnNpZGVyaW5nIGxvb3AgT1NSIGludG8gJXAoJXApIHdpdGgg
c3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50
KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigp
LCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7Cisg
ICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGxvb3AgT1NSIGludG8gJXAoJXApIHdpdGggc3Vj
Y2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCks
IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBj
b2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiAjZW5k
aWYKICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxkUmVvcHRpbWl6
ZUZyb21Mb29wTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICAg
ICAgcHJpbnRmKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCku
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAgICAgICAgICBk
YXRhTG9nKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCkuXG4i
LCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CiAjZW5kaWYKICAgICAgICAg
ICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk0
OCw3ICsxOTQ4LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghY29kZUJsb2NrLT5zaG91bGRPcHRpbWl6ZU5vdygp
KSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiRGVs
YXlpbmcgb3B0aW1pemF0aW9uIGZvciAlcCAoaW4gbG9vcCkgYmVjYXVzZSBvZiBpbnN1ZmZpY2ll
bnQgcHJvZmlsaW5nLlxuIiwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkRlbGF5
aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIGxvb3ApIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50
IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMTk1OCwxNCArMTk1OCwxNCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGNvZGVCbG9jay0+
Y29tcGlsZU9wdGltaXplZChjYWxsRnJhbWUsIHNjb3BlQ2hhaW4pOwogI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiV0FSTklORzogb3B0aW1pemVkIGNvbXBpbGF0aW9uIGZyb20gbG9vcCBmYWlsZWQuXG4i
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIldBUk5JTkc6IG9wdGltaXplZCBjb21waWxhdGlvbiBm
cm9tIGxvb3AgZmFpbGVkLlxuIik7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3Ip
OwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgp
ID09IGNvZGVCbG9jaykgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAg
ICBwcmludGYoIk9wdGltaXppbmcgJXAgZnJvbSBsb29wIGZhaWxlZC5cbiIsIGNvZGVCbG9jayk7
CisgICAgICAgICAgICBkYXRhTG9nKCJPcHRpbWl6aW5nICVwIGZyb20gbG9vcCBmYWlsZWQuXG4i
LCBjb2RlQmxvY2spOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVChj
b2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CkBAIC0xOTc5
LDcgKzE5NzksNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAg
ICAgCiAgICAgaWYgKHZvaWQqIGFkZHJlc3MgPSBERkc6OnByZXBhcmVPU1JFbnRyeShjYWxsRnJh
bWUsIG9wdGltaXplZENvZGVCbG9jaywgYnl0ZWNvZGVJbmRleCkpIHsKICNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIk9wdGltaXppbmcgJXAgZnJvbSBsb29wIHN1
Y2NlZWRlZCwgcGVyZm9ybWluZyBPU1IgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgICAgIGRhdGFM
b2coIk9wdGltaXppbmcgJXAgZnJvbSBsb29wIHN1Y2NlZWRlZCwgcGVyZm9ybWluZyBPU1IgYWZ0
ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29v
bigpOwpAQCAtMTk4OSw3ICsxOTg5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0
aW1pemVfZnJvbQogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAg
IHByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3VjY2VlZGVkLCBPU1IgZmFpbGVkLCBh
ZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlv
bkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9nKCJPcHRpbWl6aW5nICVwIGZyb20gbG9vcCBz
dWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVyIGEgZGVsYXkgb2YgJXUuXG4iLCBjb2RlQmxvY2ss
IGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICAv
LyBDb3VudCB0aGUgT1NSIGZhaWx1cmUgYXMgYSBzcGVjdWxhdGlvbiBmYWlsdXJlLiBJZiB0aGlz
IGhhcHBlbnMgYSBsb3QsIHRoZW4KQEAgLTE5OTcsNyArMTk5Nyw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICBvcHRpbWl6ZWRDb2RlQmxvY2stPmNvdW50
U3BlY3VsYXRpb25GYWlsdXJlKCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
LSAgICBwcmludGYoIkVuY291bnRlcmVkIGxvb3AgT1NSIGZhaWx1cmUgaW50byAlcCglcCkgd2l0
aCBzdWNjZXNzL2ZhaWwgJXUvJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVy
KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsK
KyAgICBkYXRhTG9nKCJFbmNvdW50ZXJlZCBsb29wIE9TUiBmYWlsdXJlIGludG8gJXAoJXApIHdp
dGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2Vt
ZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRl
cigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7
CiAjZW5kaWYKIAogICAgIC8vIFdlIGFyZSBhIGxvdCBtb3JlIGNvbnNlcnZhdGl2ZSBhYm91dCB0
cmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIGFmdGVyIE9TUiBmYWlsdXJlIHRoYW4KQEAgLTIwMTAs
NyArMjAxMCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAg
ICAvLyByZW9wdGltaXphdGlvbiB0cmlnZ2VyLgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2st
PnNob3VsZFJlb3B0aW1pemVOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0g
ICAgICAgIHByaW50ZigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGluIGxv
b3AgYWZ0ZXIgT1NSIGZhaWwpLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50
KCkpOworICAgICAgICBkYXRhTG9nKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVw
KSAoaW4gbG9vcCBhZnRlciBPU1IgZmFpbCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVw
bGFjZW1lbnQoKSk7CiAjZW5kaWYKICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIwMjksMjAgKzIwMjksMjAgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAg
IHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX3JldCB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291
bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxh
eUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZygiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX3JldCB3aXRo
IGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9w
dGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3Vu
dGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2Nr
LT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxv
Y2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQotICAgICAgICBwcmludGYoIlJldHVybmluZyBmcm9tIG9sZCBKSVQgY2FsbCBmcmFtZSB3
aXRoIG9wdGltaXplZCByZXBsYWNlbWVudCAlcCglcCksIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1
IiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2Vt
ZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CisgICAgICAgIGRhdGFMb2coIlJldHVy
bmluZyBmcm9tIG9sZCBKSVQgY2FsbCBmcmFtZSB3aXRoIG9wdGltaXplZCByZXBsYWNlbWVudCAl
cCglcCksIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1IiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJl
cGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNz
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50
ZXIoKSk7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCk7CiAgICAgICAgIGlmIChjYWxsZXJGcmFtZSkKLSAgICAgICAgICAgIHByaW50Zigi
LCBjYWxsZXJGcmFtZSA9ICVwLCByZXR1cm5QQyA9ICVwLCBjYWxsZXIgY29kZSBibG9jayA9ICVw
IiwgY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKS52YWx1ZSgpLCBjYWxsZXJGcmFt
ZS0+Y29kZUJsb2NrKCkpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCIsIGNhbGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxlciBjb2RlIGJsb2Nr
ID0gJXAiLCBjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCksIGNhbGxl
ckZyYW1lLT5jb2RlQmxvY2soKSk7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKICAg
ICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxkUmVvcHRpbWl6ZU5vdygp
KSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiVHJp
Z2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGluIHJldHVybikuXG4iLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJUcmln
Z2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gcmV0dXJuKS5cbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKICNlbmRpZgogICAgICAgICAgICAgY29kZUJs
b2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgIH0KQEAgLTIwNTMsNyArMjA1Myw3IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICAKICAgICBpZiAoIWNvZGVC
bG9jay0+c2hvdWxkT3B0aW1pemVOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
Ci0gICAgICAgIHByaW50ZigiRGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAlcCAoaW4gcmV0dXJu
KSBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuXG4iLCBjb2RlQmxvY2spOworICAg
ICAgICBkYXRhTG9nKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChpbiByZXR1cm4pIGJl
Y2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNjIsMTEgKzIwNjIsMTEgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogCiAgICAgSlNPYmplY3QqIGVycm9yID0g
Y29kZUJsb2NrLT5jb21waWxlT3B0aW1pemVkKGNhbGxGcmFtZSwgc2NvcGVDaGFpbik7CiAgICAg
aWYgKGVycm9yKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IG9wdGltaXplZCBj
b21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiV0FSTklO
Rzogb3B0aW1pemVkIGNvbXBpbGF0aW9uIGZyb20gcmV0IGZhaWxlZC5cbiIpOwogICAgIAogICAg
IGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkgPT0gY29kZUJsb2NrKSB7CiAjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJPcHRpbWl6aW5nICVwIGZyb20gcmV0
dXJuIGZhaWxlZC5cbiIsIGNvZGVCbG9jayk7CisgICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcg
JXAgZnJvbSByZXR1cm4gZmFpbGVkLlxuIiwgY29kZUJsb2NrKTsKICNlbmRpZgogCiAgICAgICAg
IEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CkBAIC0yMDc3LDcgKzIwNzcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6
ZV9mcm9tCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkRGR0pJVCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAg
IHByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIHJldHVybiBzdWNjZWVkZWQgYWZ0ZXIgYSBkZWxh
eSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIoKSk7CisgICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBmcm9tIHJldHVybiBzdWNjZWVkZWQg
YWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKICAgICAKICAgICBjb2RlQmxvY2stPm9wdGltaXpl
U29vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNw
cAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJQ
cm9maWxlTm9kZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFByb2ZpbGU6
OnJlc3RvcmVBbGwoKQogI2lmbmRlZiBOREVCVUcKIHZvaWQgUHJvZmlsZTo6ZGVidWdQcmludERh
dGEoKSBjb25zdAogewotICAgIHByaW50ZigiQ2FsbCBncmFwaDpcbiIpOworICAgIGRhdGFMb2co
IkNhbGwgZ3JhcGg6XG4iKTsKICAgICBtX2hlYWQtPmRlYnVnUHJpbnREYXRhKDApOwogfQogCkBA
IC0xMTgsMTggKzExOSwxOCBAQCB2b2lkIFByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5
bGUoCiAgICAgdHlwZWRlZiBWZWN0b3I8TmFtZUNvdW50UGFpcj4gTmFtZUNvdW50UGFpclZlY3Rv
cjsKIAogICAgIEZ1bmN0aW9uQ2FsbEhhc2hDb3VudCBjb3VudGVkRnVuY3Rpb25zOwotICAgIHBy
aW50ZigiQ2FsbCBncmFwaDpcbiIpOworICAgIGRhdGFMb2coIkNhbGwgZ3JhcGg6XG4iKTsKICAg
ICBtX2hlYWQtPmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoMCwgY291bnRlZEZ1bmN0aW9ucyk7
CiAKLSAgICBwcmludGYoIlxuVG90YWwgbnVtYmVyIGluIHN0YWNrOlxuIik7CisgICAgZGF0YUxv
ZygiXG5Ub3RhbCBudW1iZXIgaW4gc3RhY2s6XG4iKTsKICAgICBOYW1lQ291bnRQYWlyVmVjdG9y
IHNvcnRlZEZ1bmN0aW9ucyhjb3VudGVkRnVuY3Rpb25zLnNpemUoKSk7CiAgICAgY29weVRvVmVj
dG9yKGNvdW50ZWRGdW5jdGlvbnMsIHNvcnRlZEZ1bmN0aW9ucyk7CiAKICAgICBzdGQ6OnNvcnQo
c29ydGVkRnVuY3Rpb25zLmJlZ2luKCksIHNvcnRlZEZ1bmN0aW9ucy5lbmQoKSwgZnVuY3Rpb25O
YW1lQ291bnRQYWlyQ29tcGFyYXRvcik7CiAgICAgZm9yIChOYW1lQ291bnRQYWlyVmVjdG9yOjpp
dGVyYXRvciBpdCA9IHNvcnRlZEZ1bmN0aW9ucy5iZWdpbigpOyBpdCAhPSBzb3J0ZWRGdW5jdGlv
bnMuZW5kKCk7ICsraXQpCi0gICAgICAgIHByaW50ZigiICAgICAgICAlLTEyZCVzXG4iLCAoKml0
KS5zZWNvbmQsIFVTdHJpbmcoKCppdCkuZmlyc3QpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBk
YXRhTG9nKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNlY29uZCwgVVN0cmluZygoKml0KS5m
aXJzdCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBwcmludGYoIlxuU29ydCBieSB0b3Agb2Ygc3Rh
Y2ssIHNhbWUgY29sbGFwc2VkICh3aGVuID49IDUpOlxuIik7CisgICAgZGF0YUxvZygiXG5Tb3J0
IGJ5IHRvcCBvZiBzdGFjaywgc2FtZSBjb2xsYXBzZWQgKHdoZW4gPj0gNSk6XG4iKTsKIH0KICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
Tm9kZS5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJQcm9maWxlci5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtMjkzLDkgKzI5NCw5IEBAIHZvaWQg
UHJvZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhKGludCBpbmQKIHsKICAgICAvLyBQcmludCBmdW5j
dGlvbiBuYW1lcwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kZW50TGV2ZWw7ICsraSkKLSAg
ICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICBkYXRhTG9nKCIgICIpOwogCi0gICAgcHJpbnRm
KCJGdW5jdGlvbiBOYW1lICVzICVkIFNlbGZUaW1lICUuM2Ztcy8lLjNmJSUgVG90YWxUaW1lICUu
M2Ztcy8lLjNmJSUgVlNlbGYgJS4zZm1zIFZUb3RhbCAlLjNmbXMgVmlzaWJsZSAlcyBOZXh0IFNp
YmxpbmcgJXNcbiIsCisgICAgZGF0YUxvZygiRnVuY3Rpb24gTmFtZSAlcyAlZCBTZWxmVGltZSAl
LjNmbXMvJS4zZiUlIFRvdGFsVGltZSAlLjNmbXMvJS4zZiUlIFZTZWxmICUuM2ZtcyBWVG90YWwg
JS4zZm1zIFZpc2libGUgJXMgTmV4dCBTaWJsaW5nICVzXG4iLAogICAgICAgICBmdW5jdGlvbk5h
bWUoKS51dGY4KCkuZGF0YSgpLCAKICAgICAgICAgbV9udW1iZXJPZkNhbGxzLCBtX2FjdHVhbFNl
bGZUaW1lLCBzZWxmUGVyY2VudCgpLCBtX2FjdHVhbFRvdGFsVGltZSwgdG90YWxQZXJjZW50KCks
CiAgICAgICAgIG1fdmlzaWJsZVNlbGZUaW1lLCBtX3Zpc2libGVUb3RhbFRpbWUsIApAQCAtMzEy
LDIwICszMTMsMjAgQEAgdm9pZCBQcm9maWxlTm9kZTo6ZGVidWdQcmludERhdGEoaW50IGluZAog
Ly8gcHJpbnQgdGhlIHByb2ZpbGVkIGRhdGEgaW4gYSBmb3JtYXQgdGhhdCBtYXRjaGVzIHRoZSB0
b29sIHNhbXBsZSdzIG91dHB1dC4KIGRvdWJsZSBQcm9maWxlTm9kZTo6ZGVidWdQcmludERhdGFT
YW1wbGVTdHlsZShpbnQgaW5kZW50TGV2ZWwsIEZ1bmN0aW9uQ2FsbEhhc2hDb3VudCYgY291bnRl
ZEZ1bmN0aW9ucykgY29uc3QKIHsKLSAgICBwcmludGYoIiAgICAiKTsKKyAgICBkYXRhTG9nKCIg
ICAgIik7CiAKICAgICAvLyBQcmludCBmdW5jdGlvbiBuYW1lcwogICAgIGNvbnN0IGNoYXIqIG5h
bWUgPSBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpOwogICAgIGRvdWJsZSBzYW1wbGVDb3Vu
dCA9IG1fYWN0dWFsVG90YWxUaW1lICogMTAwMDsKICAgICBpZiAoaW5kZW50TGV2ZWwpIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnRMZXZlbDsgKytpKQotICAgICAgICAgICAg
cHJpbnRmKCIgICIpOworICAgICAgICAgICAgZGF0YUxvZygiICAiKTsKIAogICAgICAgICAgY291
bnRlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25OYW1lKCkuaW1wbCgpKTsKIAotICAgICAgICBwcmlu
dGYoIiUuMGYgJXNcbiIsIHNhbXBsZUNvdW50ID8gc2FtcGxlQ291bnQgOiAxLCBuYW1lKTsKKyAg
ICAgICAgZGF0YUxvZygiJS4wZiAlc1xuIiwgc2FtcGxlQ291bnQgPyBzYW1wbGVDb3VudCA6IDEs
IG5hbWUpOwogICAgIH0gZWxzZQotICAgICAgICBwcmludGYoIiVzXG4iLCBuYW1lKTsKKyAgICAg
ICAgZGF0YUxvZygiJXNcbiIsIG5hbWUpOwogCiAgICAgKytpbmRlbnRMZXZlbDsKIApAQCAtMzM3
LDExICszMzgsMTEgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZQog
ICAgIHN1bU9mQ2hpbGRyZW5zQ291bnQgKj0gMTAwMDsgICAgLy8KICAgICAvLyBQcmludCByZW1h
aW5kZXIgb2Ygc2FtcGxlcyB0byBtYXRjaCBzYW1wbGUncyBvdXRwdXQKICAgICBpZiAoc3VtT2ZD
aGlsZHJlbnNDb3VudCA8IHNhbXBsZUNvdW50KSB7Ci0gICAgICAgIHByaW50ZigiICAgICIpOwor
ICAgICAgICBkYXRhTG9nKCIgICAgIik7CiAgICAgICAgIHdoaWxlIChpbmRlbnRMZXZlbC0tKQot
ICAgICAgICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICAgICAgZGF0YUxvZygiICAiKTsKIAot
ICAgICAgICBwcmludGYoIiUuMGYgJXNcbiIsIHNhbXBsZUNvdW50IC0gc3VtT2ZDaGlsZHJlbnND
b3VudCwgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRhdGFMb2coIiUu
MGYgJXNcbiIsIHNhbXBsZUNvdW50IC0gc3VtT2ZDaGlsZHJlbnNDb3VudCwgZnVuY3Rpb25OYW1l
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fYWN0dWFsVG90YWxUaW1l
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCShyZXZpc2lvbiAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2b2lk
IEpTR2xvYmFsRGF0YTo6ZHVtcFJlZ0V4cFRyYWNlKCkKICAgICBSVFRyYWNlTGlzdDo6aXRlcmF0
b3IgaXRlciA9ICsrbV9ydFRyYWNlTGlzdC0+YmVnaW4oKTsKICAgICAKICAgICBpZiAoaXRlciAh
PSBtX3J0VHJhY2VMaXN0LT5lbmQoKSkgewotICAgICAgICBwcmludGYoIlxuUmVnRXhwIFRyYWNp
bmdcbiIpOwotICAgICAgICBwcmludGYoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoKCkgICAgbWF0Y2hlc1xuIik7Ci0gICAg
ICAgIHByaW50ZigiUmVndWxhciBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICBK
SVQgQWRkcmVzcyAgICAgIGNhbGxzICAgICAgZm91bmRcbiIpOwotICAgICAgICBwcmludGYoIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tKy0tLS0tLS0tLS1cbiIpOworICAgICAgICBkYXRhTG9nKCJcblJlZ0V4cCBUcmFj
aW5nXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2goKSAgICBtYXRjaGVzXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiUmVndWxhciBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAg
ICBKSVQgQWRkcmVzcyAgICAgIGNhbGxzICAgICAgZm91bmRcbiIpOworICAgICAgICBkYXRhTG9n
KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tXG4iKTsKICAgICAKICAgICAgICAgdW5zaWduZWQgcmVD
b3VudCA9IDA7CiAgICAgCiAgICAgICAgIGZvciAoOyBpdGVyICE9IG1fcnRUcmFjZUxpc3QtPmVu
ZCgpOyArK2l0ZXIsICsrcmVDb3VudCkKICAgICAgICAgICAgICgqaXRlciktPnByaW50VHJhY2VE
YXRhKCk7CiAKLSAgICAgICAgcHJpbnRmKCIlZCBSZWd1bGFyIEV4cHJlc3Npb25zXG4iLCByZUNv
dW50KTsKKyAgICAgICAgZGF0YUxvZygiJWQgUmVndWxhciBFeHByZXNzaW9uc1xuIiwgcmVDb3Vu
dCk7CiAgICAgfQogICAgIAogICAgIG1fcnRUcmFjZUxpc3QtPmNsZWFyKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxMywyNCArNDEzLDI0IEBAIHZvaWQgUmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJw
cmV0ZXIKICAgICAgICAgICAgIGRpZmZlcmVuY2VzKys7CiAKICAgICBpZiAoZGlmZmVyZW5jZXMp
IHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJSZWdFeHAgRGlzY3JlcGVuY3kgZm9yIC8lcy9c
biAgICBzdHJpbmcgaW5wdXQgIiwgcGF0dGVybigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBk
YXRhTG9nKCJSZWdFeHAgRGlzY3JlcGVuY3kgZm9yIC8lcy9cbiAgICBzdHJpbmcgaW5wdXQgIiwg
cGF0dGVybigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB1bnNpZ25lZCBzZWdtZW50TGVuID0g
cy5sZW5ndGgoKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCk7CiAKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsIChzZWdtZW50TGVuIDwgMTUwKSA/ICJcIiVzXCJcbiIgOiAiXCIl
MTQ4cy4uLlwiXG4iLCBzLnV0ZjgoKS5kYXRhKCkgKyBzdGFydE9mZnNldCk7CisgICAgICAgIGRh
dGFMb2coKHNlZ21lbnRMZW4gPCAxNTApID8gIlwiJXNcIlxuIiA6ICJcIiUxNDhzLi4uXCJcbiIs
IHMudXRmOCgpLmRhdGEoKSArIHN0YXJ0T2Zmc2V0KTsKIAogICAgICAgICBpZiAoaml0UmVzdWx0
ICE9IGludGVycHJldGVyUmVzdWx0KSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
ICBKSVQgcmVzdWx0ID0gJWQsIGJsYWggaW50ZXJwcmV0ZWQgcmVzdWx0ID0gJWRcbiIsIGppdFJl
c3VsdCwgaW50ZXJwcmV0ZXJSZXN1bHQpOworICAgICAgICAgICAgZGF0YUxvZygiICAgIEpJVCBy
ZXN1bHQgPSAlZCwgYmxhaCBpbnRlcnByZXRlZCByZXN1bHQgPSAlZFxuIiwgaml0UmVzdWx0LCBp
bnRlcnByZXRlclJlc3VsdCk7CiAgICAgICAgICAgICBkaWZmZXJlbmNlcy0tOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgQ29ycmVjdCByZXN1bHQg
PSAlZFxuIiwgaml0UmVzdWx0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBDb3JyZWN0IHJl
c3VsdCA9ICVkXG4iLCBqaXRSZXN1bHQpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRpZmZl
cmVuY2VzKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAyLCBpID0gMDsgaSA8IG1f
bnVtU3VicGF0dGVybnM7IGogKz0yLCBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0
VmVjdG9yW2pdICE9IGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2pdKQotICAgICAgICAgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgb2Zmc2V0WyVkXSA9ICVkLCBpbnRlcnByZXRl
ZCBvZmZzZXRbJWRdID0gJWRcbiIsIGosIG9mZnNldFZlY3RvcltqXSwgaiwgaW50ZXJwcmV0ZXJP
ZmZzZXRWZWN0b3Jbal0pOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSklUIG9m
ZnNldFslZF0gPSAlZCwgaW50ZXJwcmV0ZWQgb2Zmc2V0WyVkXSA9ICVkXG4iLCBqLCBvZmZzZXRW
ZWN0b3Jbal0sIGosIGludGVycHJldGVyT2Zmc2V0VmVjdG9yW2pdKTsKICAgICAgICAgICAgICAg
ICBpZiAoKG9mZnNldFZlY3RvcltqXSA+PSAwKSAmJiAob2Zmc2V0VmVjdG9yW2orMV0gIT0gaW50
ZXJwcmV0ZXJPZmZzZXRWZWN0b3JbaisxXSkpCi0gICAgICAgICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiICAgIEpJVCBvZmZzZXRbJWRdID0gJWQsIGludGVycHJldGVkIG9mZnNldFslZF0g
PSAlZFxuIiwgaisxLCBvZmZzZXRWZWN0b3JbaisxXSwgaisxLCBpbnRlcnByZXRlck9mZnNldFZl
Y3RvcltqKzFdKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEpJVCBvZmZzZXRb
JWRdID0gJWQsIGludGVycHJldGVkIG9mZnNldFslZF0gPSAlZFxuIiwgaisxLCBvZmZzZXRWZWN0
b3JbaisxXSwgaisxLCBpbnRlcnByZXRlck9mZnNldFZlY3RvcltqKzFdKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nQ291bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTAgKzM1LDEwIEBAIHZvaWQgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1bXAo
KQogewogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKICAgICBpZiAoc19hYnN0cmFjdFNh
bXBsaW5nQ291bnRlckNoYWluICE9ICZzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5FbmQp
IHsKLSAgICAgICAgcHJpbnRmKCJcblNhbXBsaW5nIENvdW50ZXIgVmFsdWVzOlxuIik7CisgICAg
ICAgIGRhdGFMb2coIlxuU2FtcGxpbmcgQ291bnRlciBWYWx1ZXM6XG4iKTsKICAgICAgICAgZm9y
IChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNvdW50ZXIgPSBzX2Fic3RyYWN0U2FtcGxp
bmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAmc19hYnN0cmFjdFNhbXBsaW5nQ291bnRl
ckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291bnRlci0+bV9uZXh0KQotICAgICAgICAg
ICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJDb3VudGVyLT5tX25hbWUsIGN1cnJDb3Vu
dGVyLT5tX2NvdW50ZXIpOwotICAgICAgICBwcmludGYoIlxuXG4iKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIlx0JXNcdDogJWxsZFxuIiwgY3VyckNvdW50ZXItPm1fbmFtZSwgY3VyckNvdW50ZXIt
Pm1fY291bnRlcik7CisgICAgICAgIGRhdGFMb2coIlxuXG4iKTsKICAgICB9CiAgICAgc19jb21w
bGV0ZWQgPSB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ0NvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgfkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcigp
CiAgICAgewogICAgICAgICBpZiAoIXNfY29tcGxldGVkKQotICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgXCIlc1wiIGRlbGV0ZWQgZWFybHkgKHdp
dGggY291bnQgJWxsZClcbiIsIG1fbmFtZSwgbV9jb3VudGVyKTsKKyAgICAgICAgICAgIGRhdGFG
aWxlKCJEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgXCIlc1wiIGRlbGV0ZWQgZWFybHkgKHdpdGgg
Y291bnQgJWxsZClcbiIsIG1fbmFtZSwgbV9jb3VudGVyKTsKICAgICAgICAgLy8gT3VyIG1fcmVm
ZXJlciBwb2ludGVyIHNob3VsZCBrbm93IHdoZXJlIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBp
cywKICAgICAgICAgLy8gYW5kIG1fbmV4dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0
aGUgcHJldmlvdXMgbm9kZSBpbiB0aGUgbGlzdC4KICAgICAgICAgQVNTRVJUKCptX3JlZmVyZXIg
PT0gdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0MiwxMiBAQCB2b2lk
IFNjb3BlQ2hhaW5Ob2RlOjpwcmludCgpCiAgICAgICAgIG8tPm1ldGhvZFRhYmxlKCktPmdldFBy
b3BlcnR5TmFtZXMobywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6
Y29uc3RfaXRlcmF0b3IgcHJvcEVuZCA9IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAKLSAgICAgICAg
ZnByaW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0tLS0tXG4iLCBvKTsKKyAgICAgICAg
ZGF0YUxvZygiLS0tLS0gW3Njb3BlICVwXSAtLS0tLVxuIiwgbyk7CiAgICAgICAgIGZvciAoUHJv
cGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIHByb3BJdGVyID0gcHJvcGVydHlOYW1lcy5i
ZWdpbigpOyBwcm9wSXRlciAhPSBwcm9wRW5kOyBwcm9wSXRlcisrKSB7CiAgICAgICAgICAgICBJ
ZGVudGlmaWVyIG5hbWUgPSAqcHJvcEl0ZXI7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IiVzLCAiLCBuYW1lLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIiVzLCAiLCBuYW1lLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfQotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAg
fQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgU3Ry
dWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcmludGYo
Ik51bWJlciBvZiBsaXZlIFN0cnVjdHVyZXM6ICVkXG4iLCBsaXZlU3RydWN0dXJlU2V0LnNpemUo
KSk7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB1c2luZyB0aGUgc2luZ2xlIGl0
ZW0gb3B0aW1pemF0aW9uIGZvciB0cmFuc2l0aW9uIG1hcDogJWRcbiIsIG51bWJlclVzaW5nU2lu
Z2xlU2xvdCk7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IGFyZSBsZWFm
IG5vZGVzOiAlZFxuIiwgbnVtYmVyTGVhZik7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0
dXJlcyB0aGF0IHNpbmdsZXRvbnM6ICVkXG4iLCBudW1iZXJTaW5nbGV0b25zKTsKLSAgICBwcmlu
dGYoIk51bWJlciBvZiBTdHJ1Y3R1cmVzIHdpdGggUHJvcGVydHlNYXBzOiAlZFxuIiwgbnVtYmVy
V2l0aFByb3BlcnR5TWFwcyk7Ci0KLSAgICBwcmludGYoIlNpemUgb2YgYSBzaW5nbGUgU3RydWN0
dXJlczogJWRcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplb2YoU3RydWN0dXJlKSkpOwot
ICAgIHByaW50ZigiU2l6ZSBvZiBzdW0gb2YgYWxsIHByb3BlcnR5IG1hcHM6ICVkXG4iLCB0b3Rh
bFByb3BlcnR5TWFwc1NpemUpOwotICAgIHByaW50ZigiU2l6ZSBvZiBhdmVyYWdlIG9mIGFsbCBw
cm9wZXJ0eSBtYXBzOiAlZlxuIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbFByb3BlcnR5TWFw
c1NpemUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsaXZlU3RydWN0dXJlU2V0LnNpemUoKSkpOwor
ICAgIGRhdGFMb2coIk51bWJlciBvZiBsaXZlIFN0cnVjdHVyZXM6ICVkXG4iLCBsaXZlU3RydWN0
dXJlU2V0LnNpemUoKSk7CisgICAgZGF0YUxvZygiTnVtYmVyIG9mIFN0cnVjdHVyZXMgdXNpbmcg
dGhlIHNpbmdsZSBpdGVtIG9wdGltaXphdGlvbiBmb3IgdHJhbnNpdGlvbiBtYXA6ICVkXG4iLCBu
dW1iZXJVc2luZ1NpbmdsZVNsb3QpOworICAgIGRhdGFMb2coIk51bWJlciBvZiBTdHJ1Y3R1cmVz
IHRoYXQgYXJlIGxlYWYgbm9kZXM6ICVkXG4iLCBudW1iZXJMZWFmKTsKKyAgICBkYXRhTG9nKCJO
dW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IHNpbmdsZXRvbnM6ICVkXG4iLCBudW1iZXJTaW5nbGV0
b25zKTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB3aXRoIFByb3BlcnR5TWFw
czogJWRcbiIsIG51bWJlcldpdGhQcm9wZXJ0eU1hcHMpOworCisgICAgZGF0YUxvZygiU2l6ZSBv
ZiBhIHNpbmdsZSBTdHJ1Y3R1cmVzOiAlZFxuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemVv
ZihTdHJ1Y3R1cmUpKSk7CisgICAgZGF0YUxvZygiU2l6ZSBvZiBzdW0gb2YgYWxsIHByb3BlcnR5
IG1hcHM6ICVkXG4iLCB0b3RhbFByb3BlcnR5TWFwc1NpemUpOworICAgIGRhdGFMb2coIlNpemUg
b2YgYXZlcmFnZSBvZiBhbGwgcHJvcGVydHkgbWFwczogJWZcbiIsIHN0YXRpY19jYXN0PGRvdWJs
ZT4odG90YWxQcm9wZXJ0eU1hcHNTaXplKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obGl2ZVN0cnVj
dHVyZVNldC5zaXplKCkpKTsKICNlbHNlCi0gICAgcHJpbnRmKCJEdW1waW5nIFN0cnVjdHVyZSBz
dGF0aXN0aWNzIGlzIG5vdCBlbmFibGVkLlxuIik7CisgICAgZGF0YUxvZygiRHVtcGluZyBTdHJ1
Y3R1cmUgc3RhdGlzdGljcyBpcyBub3QgZW5hYmxlZC5cbiIpOwogI2VuZGlmCiB9CiAKQEAgLTYw
MSwxMSArNjAxLDExIEBAIHN0YXRpYyBQcm9wZXJ0eU1hcFN0YXRpc3RpY3NFeGl0TG9nZ2VyIGwK
IAogUHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlcjo6flByb3BlcnR5TWFwU3RhdGlzdGlj
c0V4aXRMb2dnZXIoKQogewotICAgIHByaW50ZigiXG5KU0M6OlByb3BlcnR5TWFwIHN0YXRpc3Rp
Y3NcblxuIik7Ci0gICAgcHJpbnRmKCIlZCBwcm9iZXNcbiIsIG51bVByb2Jlcyk7Ci0gICAgcHJp
bnRmKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBudW1Db2xsaXNpb25zLCAxMDAuMCAqIG51
bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOwotICAgIHByaW50ZigiJWQgcmVoYXNoZXNcbiIsIG51
bVJlaGFzaGVzKTsKLSAgICBwcmludGYoIiVkIHJlbW92ZXNcbiIsIG51bVJlbW92ZXMpOworICAg
IGRhdGFMb2coIlxuSlNDOjpQcm9wZXJ0eU1hcCBzdGF0aXN0aWNzXG5cbiIpOworICAgIGRhdGFM
b2coIiVkIHByb2Jlc1xuIiwgbnVtUHJvYmVzKTsKKyAgICBkYXRhTG9nKCIlZCBjb2xsaXNpb25z
ICglLjFmJSUpXG4iLCBudW1Db2xsaXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Q
cm9iZXMpOworICAgIGRhdGFMb2coIiVkIHJlaGFzaGVzXG4iLCBudW1SZWhhc2hlcyk7CisgICAg
ZGF0YUxvZygiJWQgcmVtb3Zlc1xuIiwgbnVtUmVtb3Zlcyk7CiB9CiAKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAx
MDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDb2RlUHJvZmlsZTo6c2FtcGxl
KHZvaWQqIHBjLCB2b2lkKgogCiB2b2lkIENvZGVQcm9maWxlOjpyZXBvcnQoKQogewotICAgIGZw
cmludGYoc3Rkb3V0LCAiPENvZGVQcm9maWxpbmcgJXM6JWQ+XG4iLCBtX2ZpbGUuZGF0YSgpLCBt
X2xpbmVObyk7CisgICAgZGF0YUxvZygiPENvZGVQcm9maWxpbmcgJXM6JWQ+XG4iLCBtX2ZpbGUu
ZGF0YSgpLCBtX2xpbmVObyk7CiAKICAgICAvLyBIb3cgbWFueSBmcmFtZXMgb2YgQy1jb2RlIHRv
IHByaW50IC0gMCwgaWYgbm90IHZlcmJvc2UsIDEgaWYgdmVyYm9zZSwgdXAgdG8gMTAyNCBpZiB2
ZXJ5IHZlcmJvc2UuCiAgICAgdW5zaWduZWQgcmVjdXJzaW9uTGltaXQgPSBDb2RlUHJvZmlsaW5n
OjpiZVZlcnlWZXJib3NlKCkgPyAxMDI0IDogQ29kZVByb2ZpbGluZzo6YmVWZXJib3NlKCk7CkBA
IC0xNzYsMTMgKzE3NiwxMyBAQCB2b2lkIENvZGVQcm9maWxlOjpyZXBvcnQoKQogICAgIH0KIAog
ICAgIC8vIE91dHB1dCB0aGUgcHJvZmlsZSB0cmVlLgotICAgIGZwcmludGYoc3Rkb3V0LCAiVG90
YWwgc2FtcGxlczogJWxsZFxuIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihwcm9maWxlLmNoaWxk
Q291bnQoKSkpOworICAgIGRhdGFMb2coIlRvdGFsIHNhbXBsZXM6ICVsbGRcbiIsIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4ocHJvZmlsZS5jaGlsZENvdW50KCkpKTsKICAgICBwcm9maWxlLmR1bXAo
KTsKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMCA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsg
KytpKQogICAgICAgICBtX2NoaWxkcmVuW2ldLT5yZXBvcnQoKTsKIAotICAgIGZwcmludGYoc3Rk
b3V0LCAiPC9Db2RlUHJvZmlsaW5nICVzOiVkPlxuIiwgbV9maWxlLmRhdGEoKSwgbV9saW5lTm8p
OworICAgIGRhdGFMb2coIjwvQ29kZVByb2ZpbGluZyAlczolZD5cbiIsIG1fZmlsZS5kYXRhKCks
IG1fbGluZU5vKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1By
b2ZpbGVUcmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9Qcm9maWxlVHJlZU5vZGUuaAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5
NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBQcmludCB0aGUgbnVtYmVyIG9mIHNhbXBs
ZXMsIHRoZSBuYW1lIG9mIHRoaXMgbm9kZSwgYW5kIHRoZSBudW1iZXIgb2Ygc2FtcGxlcyB0aGF0
IGFyZSBzdGFjay10b3AKICAgICAgICAgICAgIC8vIGluIHRoaXMgbm9kZSAoc2FtcGxlcyBkaXJl
Y3RseSB3aXRoaW4gdGhpcyBub2RlLCBleGNsdWRpbmcgc2FtcGxlcyBpbiBjaGlsZHJlbi4KICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmRlbnQ7ICsraSkKLSAgICAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiAgICAiKTsKLSAgICAgICAgICAgIGZwcmludGYoc3Rk
b3V0LCAiJSA4bGxkOiAlcyAoJWxsZCBzdGFjayB0b3ApXG4iLAorICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAiKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiUgOGxsZDogJXMgKCVsbGQgc3Rh
Y2sgdG9wKVxuIiwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGVudHJ5
LT5zZWNvbmQuY291bnQoKSksCiAgICAgICAgICAgICAgICAgZW50cnktPmZpcnN0LnV0ZjgoKS5k
YXRhKCksCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihlbnRyeS0+c2Vj
b25kLmNvdW50KCkgLSBlbnRyeS0+c2Vjb25kLmNoaWxkQ291bnQoKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDcwMjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xNyw2ICsxNyw3IEBAIFNFVChXVEZfSEVBREVSUwogICAgIENyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyLmgKICAgICBDdXJyZW50VGltZS5oCiAgICAgRGF0ZU1hdGguaAorICAgIERhdGFM
b2cuaAogICAgIERlY2ltYWxOdW1iZXIuaAogICAgIERlY29kZXIuaAogICAgIERlcXVlLmgKQEAg
LTE0MCw2ICsxNDEsNyBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICBDcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5jcHAKICAgICBDdXJyZW50VGltZS5jcHAKICAgICBEYXRlTWF0aC5jcHAKKyAg
ICBEYXRhTG9nLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3BwCiAgICAgRHluYW1pY0Fubm90YXRp
b25zLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
RGF0YUxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Rh
dGFMb2cuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEYXRhTG9nLmgiCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorCisjZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMAorCisvLyBVbmNvbW1lbnQgdG8g
Zm9yY2UgbG9nZ2luZyB0byB0aGUgZ2l2ZW4gZmlsZSByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlIHNheXMuCisvLyAjZGVmaW5lIERBVEFfTE9HX0ZJTEVOQU1FICIv
dG1wL1dURkxvZy50eHQiCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgREFUQV9MT0dfVE9fRklM
RQorc3RhdGljIEZJTEUqIGZpbGU7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlT25j
ZSgpCit7CisjaWZkZWYgREFUQV9MT0dfRklMRU5BTUUKKyAgICBjb25zdCBjaGFyKiBmaWxlbmFt
ZSA9IERBVEFfTE9HX0ZJTEVOQU1FCisjZWxzZQorICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0g
Z2V0ZW52KCJXVEZfREFUQV9MT0dfRklMRU5BTUUiKTsKKyNlbmRpZgorICAgIGlmIChmaWxlbmFt
ZSkgeworICAgICAgICBmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7CisgICAgICAgIGlmICgh
ZmlsZSkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2FybmluZzogQ291bGQgbm90IG9w
ZW4gbG9nIGZpbGUgJXMgZm9yIHdyaXRpbmcuXG4iLCBmaWxlbmFtZSk7CisgICAgfQorICAgIGlm
ICghZmlsZSkKKyAgICAgICAgZmlsZSA9IHN0ZGVycjsKKyAgICAKKyAgICBzZXR2YnVmKGZpbGUs
IDAsIF9JT05CRiwgMCk7IC8vIFByZWZlciB1bmJ1ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBn
ZXQgYSBmdWxsIGxvZyB1cG9uIGNyYXNoIG9yIGRlYWRsb2NrLgorfQorCisjaWYgT1MoREFSV0lO
KQorc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVMb2dGaWxlT25jZUtleSA9IFBUSFJF
QURfT05DRV9JTklUOworI2VuZGlmCisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlKCkK
K3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcHRocmVhZF9vbmNlKCZpbml0aWFsaXplTG9nRmlsZU9u
Y2VLZXksIGluaXRpYWxpemVMb2dGaWxlT25jZSk7CisjZWxzZQorICAgIGlmICghZmlsZSkKKyAg
ICAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCk7CisjZW5kaWYKK30KKworRklMRSogZGF0YUZp
bGUoKQoreworICAgIGluaXRpYWxpemVMb2dGaWxlKCk7CisgICAgcmV0dXJuIGZpbGU7Cit9Cisj
ZWxzZSAvLyBEQVRBX0xPR19UT19GSUxFCitGSUxFKiBkYXRhRmlsZSgpCit7CisgICAgcmV0dXJu
IHN0ZGVycjsKK30KKyNlbmRpZiAvLyBEQVRBX0xPR19UT19GSUxFCisKK3ZvaWQgZGF0YUxvZ1Yo
Y29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCit7CisgICAgdmZwcmludGYoZGF0
YUZpbGUoKSwgZm9ybWF0LCBhcmdMaXN0KTsKK30KKwordm9pZCBkYXRhTG9nKGNvbnN0IGNoYXIq
IGZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnTGlzdDsKKyAgICB2YV9zdGFydChhcmdM
aXN0LCBmb3JtYXQpOworICAgIGRhdGFMb2dWKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgdmFfZW5k
KGFyZ0xpc3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9EYXRhTG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9EYXRhTG9nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RhdGFMb2cuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFMb2dfaAorI2Rl
ZmluZSBEYXRhTG9nX2gKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworRklMRSogZGF0YUZpbGUoKTsKKwordm9pZCBkYXRhTG9nVihjb25zdCBjaGFyKiBmb3JtYXQs
IHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApOwordm9pZCBkYXRhTG9nKGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6ZGF0YUxvZzsKKworI2VuZGlmIC8vIERhdGFMb2df
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuY3BwCShyZXZpc2lv
biAxMDcwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBIYXNoVGFibGVTdGF0czo6fkhhc2hUYWJs
ZVN0YXRzKCkKIHsKICAgICAvLyBEb24ndCBsb2NrIGhhc2hUYWJsZVN0YXRzTXV0ZXggaGVyZSBi
ZWNhdXNlIGl0IGNhbiBjYXVzZSBkZWFkbG9ja3MgYXQgc2h1dGRvd24gCiAgICAgLy8gaWYgYW55
IHRocmVhZCB3YXMga2lsbGVkIHdoaWxlIGhvbGRpbmcgdGhlIG11dGV4LgotICAgIHByaW50Zigi
XG5XVEY6Okhhc2hUYWJsZSBzdGF0aXN0aWNzXG5cbiIpOwotICAgIHByaW50ZigiJWQgYWNjZXNz
ZXNcbiIsIG51bUFjY2Vzc2VzKTsKLSAgICBwcmludGYoIiVkIHRvdGFsIGNvbGxpc2lvbnMsIGF2
ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVtQ29sbGlzaW9ucywgMS4wICogKG51
bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nlc3Nlcyk7Ci0gICAgcHJpbnRmKCJs
b25nZXN0IGNvbGxpc2lvbiBjaGFpbjogJWRcbiIsIG1heENvbGxpc2lvbnMpOworICAgIGRhdGFM
b2coIlxuV1RGOjpIYXNoVGFibGUgc3RhdGlzdGljc1xuXG4iKTsKKyAgICBkYXRhTG9nKCIlZCBh
Y2Nlc3Nlc1xuIiwgbnVtQWNjZXNzZXMpOworICAgIGRhdGFMb2coIiVkIHRvdGFsIGNvbGxpc2lv
bnMsIGF2ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVtQ29sbGlzaW9ucywgMS4w
ICogKG51bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nlc3Nlcyk7CisgICAgZGF0
YUxvZygibG9uZ2VzdCBjb2xsaXNpb24gY2hhaW46ICVkXG4iLCBtYXhDb2xsaXNpb25zKTsKICAg
ICBmb3IgKGludCBpID0gMTsgaSA8PSBtYXhDb2xsaXNpb25zOyBpKyspIHsKLSAgICAgICAgcHJp
bnRmKCIgICVkIGxvb2t1cHMgd2l0aCBleGFjdGx5ICVkIGNvbGxpc2lvbnMgKCUuMmYlJSAsICUu
MmYlJSB3aXRoIHRoaXMgbWFueSBvciBtb3JlKVxuIiwgY29sbGlzaW9uR3JhcGhbaV0sIGksIDEw
MC4wICogKGNvbGxpc2lvbkdyYXBoW2ldIC0gY29sbGlzaW9uR3JhcGhbaSsxXSkgLyBudW1BY2Nl
c3NlcywgMTAwLjAgKiBjb2xsaXNpb25HcmFwaFtpXSAvIG51bUFjY2Vzc2VzKTsKKyAgICAgICAg
ZGF0YUxvZygiICAlZCBsb29rdXBzIHdpdGggZXhhY3RseSAlZCBjb2xsaXNpb25zICglLjJmJSUg
LCAlLjJmJSUgd2l0aCB0aGlzIG1hbnkgb3IgbW9yZSlcbiIsIGNvbGxpc2lvbkdyYXBoW2ldLCBp
LCAxMDAuMCAqIChjb2xsaXNpb25HcmFwaFtpXSAtIGNvbGxpc2lvbkdyYXBoW2krMV0pIC8gbnVt
QWNjZXNzZXMsIDEwMC4wICogY29sbGlzaW9uR3JhcGhbaV0gLyBudW1BY2Nlc3Nlcyk7CiAgICAg
fQotICAgIHByaW50ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKLSAgICBwcmludGYo
IiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzKTsKKyAgICBkYXRhTG9nKCIlZCByZWhhc2hl
c1xuIiwgbnVtUmVoYXNoZXMpOworICAgIGRhdGFMb2coIiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVp
bnNlcnRzKTsKIH0KIAogdm9pZCBIYXNoVGFibGVTdGF0czo6cmVjb3JkQ29sbGlzaW9uQXRDb3Vu
dChpbnQgY291bnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9j
YXRvci5jcHAJKHJldmlzaW9uIDEwNzAyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
TWV0YUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lk
IE1ldGFBbGxvY2F0b3I6OmZyZWVGcmVlU3BhY2VOb2RlKEZyCiAjaWYgRU5BQkxFKE1FVEFfQUxM
T0NBVE9SX1BST0ZJTEUpCiB2b2lkIE1ldGFBbGxvY2F0b3I6OmR1bXBQcm9maWxlKCkKIHsKLSAg
ICBwcmludGYoIm51bSBhbGxvY2F0aW9ucyA9ICV1LCBudW0gZnJlZXMgPSAldVxuIiwgbV9udW1B
bGxvY2F0aW9ucywgbV9udW1GcmVlcyk7CisgICAgZGF0YUxvZygibnVtIGFsbG9jYXRpb25zID0g
JXUsIG51bSBmcmVlcyA9ICV1XG4iLCBtX251bUFsbG9jYXRpb25zLCBtX251bUZyZWVzKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAkocmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lu
Y2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwOTcsNyAr
MTA5OCw3IEBAIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0cmluZyYgc3RyaW5nKTsKIAogdm9p
ZCBTdHJpbmc6OnNob3coKSBjb25zdAogewotICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGFz
Y2lpRGVidWcoaW1wbCgpKS5kYXRhKCkpOworICAgIGRhdGFMb2coIiVzXG4iLCBhc2NpaURlYnVn
KGltcGwoKSkuZGF0YSgpKTsKIH0KIAogU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVT
dHJpbmcuaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxs
b2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNjgyLDEwICsxNjgzLDEwIEBAIHB1Ymxp
YzoKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wRGlzanVuY3Rpb24oQnl0ZURpc2p1bmN0
aW9uKiBkaXNqdW5jdGlvbikKICAgICB7Ci0gICAgICAgIHByaW50ZigiQnl0ZURpc2p1bmN0aW9u
KCVwKTpcblx0IiwgZGlzanVuY3Rpb24pOworICAgICAgICBkYXRhTG9nKCJCeXRlRGlzanVuY3Rp
b24oJXApOlxuXHQiLCBkaXNqdW5jdGlvbik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBwcmludGYo
InsgJWQgfSAiLCBkaXNqdW5jdGlvbi0+dGVybXNbaV0udHlwZSk7Ci0gICAgICAgIHByaW50Zigi
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coInsgJWQgfSAiLCBkaXNqdW5jdGlvbi0+dGVybXNb
aV0udHlwZSk7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDc0ODMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNlbmQgYWxsIEpTQyBk
ZWJ1ZyBsb2dnaW5nIHRvIGEgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg0MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZWQgd3RmL0RhdGFMb2csIHdoaWNoIGRlZmlu
ZXMgV1RGOjpkYXRhRmlsZSwgV1RGOjpkYXRhTG9nLAorICAgICAgICBhbmQgV1RGOjpkYXRhTG9n
Vi4gQ2hhbmdlZCBhbGwgZGVidWdnaW5nLSBhbmQgcHJvZmlsaW5nLXJlbGF0ZWQgcHJpbnRmcwor
ICAgICAgICB0byB1c2UgV1RGOjpkYXRhTG9nKCkgb3Igb25lIG9mIGl0cyBmcmllbmRzLiBCeSBk
ZWZhdWx0LCBkZWJ1ZyBsb2dnaW5nCisgICAgICAgIGdvZXMgdG8gc3RkZXJyLCB1bmxlc3MgeW91
IGNoYW5nZSB0aGUgc2V0dGluZyBpbiB3dGYvRGF0YUxvZy5jcHAuCisKKyAgICAgICAgKiBXVEYu
cHJvOgorCiAyMDEyLTAyLTAzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3aGVuIGNyb3NzLWNvbXBpbGluZwpJbmRl
eDogU291cmNlL1dURi9XVEYucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnBybwko
cmV2aXNpb24gMTA3MDIyKQorKysgU291cmNlL1dURi9XVEYucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIERhdGVNYXRoLmggXAogICAgIERlY2lt
YWxOdW1iZXIuaCBcCiAgICAgRGVjb2Rlci5oIFwKKyAgICBEYXRhTG9nLmggXCAKICAgICBEZXF1
ZS5oIFwKICAgICBEaXNhbGxvd0NUeXBlLmggXAogICAgIGR0b2EuaCBcCkBAIC0xNzEsNiArMTcy
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3Bw
IFwKICAgICBDdXJyZW50VGltZS5jcHAgXAogICAgIERhdGVNYXRoLmNwcCBcCisgICAgRGF0YUxv
Zy5jcHAgXAogICAgIERlY2ltYWxOdW1iZXIuY3BwIFwKICAgICBkdG9hLmNwcCBcCiAgICAgZHRv
YS9iaWdudW0tZHRvYS5jYyBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDc0ODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAor
MjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEl0
IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0MgZGVidWcgbG9nZ2luZyB0byBhIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBJbnRyb2R1Y2VkIHd0Zi9EYXRhTG9nLCB3aGljaCBkZWZpbmVzIFdURjo6ZGF0YUZpbGUsIFdU
Rjo6ZGF0YUxvZywKKyAgICAgICAgYW5kIFdURjo6ZGF0YUxvZ1YuIENoYW5nZWQgYWxsIGRlYnVn
Z2luZy0gYW5kIHByb2ZpbGluZy1yZWxhdGVkIHByaW50ZnMKKyAgICAgICAgdG8gdXNlIFdURjo6
ZGF0YUxvZygpIG9yIG9uZSBvZiBpdHMgZnJpZW5kcy4gQnkgZGVmYXVsdCwgZGVidWcgbG9nZ2lu
ZworICAgICAgICBnb2VzIHRvIHN0ZGVyciwgdW5sZXNzIHlvdSBjaGFuZ2UgdGhlIHNldHRpbmcg
aW4gd3RmL0RhdGFMb2cuY3BwLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGJlaGF2
aW9yIGlzIHVuY2hhbmdlZC4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9EYXRh
TG9nLmg6IEFkZGVkLgorCiAyMDEyLTAyLTExICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5n
QGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRyaWJ1dGUgc3R5bGVzIHNob3VsZCBiZSBjcmVhdGVk
IGxhemlseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9EYXRh
TG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L0RhdGFMb2cuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9EYXRhTG9nLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9EYXRhTG9nX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRGF0YUxvZ19oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YUxvZy5oPgorI2VuZGlmCg==
</data>
<flag name="review"
          id="128508"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126649</attachid>
            <date>2012-02-11 14:48:11 -0800</date>
            <delta_ts>2012-02-11 14:48:11 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>debuglog_patch_4.diff</filename>
            <type>text/plain</type>
            <size>214131</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0MgZGVidWcgbG9nZ2luZyB0byBh
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJbnRyb2R1Y2VkIHd0Zi9EYXRhTG9nLCB3aGljaCBkZWZpbmVzIFdURjo6ZGF0YUZpbGUs
IFdURjo6ZGF0YUxvZywKKyAgICAgICAgYW5kIFdURjo6ZGF0YUxvZ1YuIENoYW5nZWQgYWxsIGRl
YnVnZ2luZy0gYW5kIHByb2ZpbGluZy1yZWxhdGVkIHByaW50ZnMKKyAgICAgICAgdG8gdXNlIFdU
Rjo6ZGF0YUxvZygpIG9yIG9uZSBvZiBpdHMgZnJpZW5kcy4gQnkgZGVmYXVsdCwgZGVidWcgbG9n
Z2luZworICAgICAgICBnb2VzIHRvIHN0ZGVyciwgdW5sZXNzIHlvdSBjaGFuZ2UgdGhlIHNldHRp
bmcgaW4gd3RmL0RhdGFMb2cuY3BwLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjcHJvai9XVEYvV1RGLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6Cisg
ICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmR1bXBMaW5rU3RhdGlzdGljcyk6CisgICAgICAgIChK
U0M6OkxpbmtCdWZmZXI6OmR1bXBDb2RlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvU0g0QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6OlNINEFzc2VtYmxlcjo6dnByaW50ZlN0ZG91dEluc3RyKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnByaW50VW5hcnlPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRCaW5hcnlP
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRDb25kaXRpb25hbEp1bXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpwcmludENhbGxPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRQdXRC
eUlkT3ApOgorICAgICAgICAoSlNDOjpwcmludEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAg
KEpTQzo6cHJpbnRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJpbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50U3RydWN0dXJl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZHVtcFN0YXRpc3RpY3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6
ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5jcHA6CisgICAgICAgIChKU0M6Ok9wY29kZVN0YXRzOjp+T3Bjb2Rl
U3RhdHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nRmxhZ3M6OnN0b3ApOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1JlZ2lvbjo6
ZHVtcEludGVybmFsKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdUb29sOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0
ZTo6bWVyZ2VTdGF0ZUF0VGFpbCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhv
dXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlRGl2U2FmZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
KToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmludFdoaXRlU3BhY2UpOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpkdW1wQ29kZU9yaWdpbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0QXJndW1lbnRUeXBlcyk6
CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByb3BhZ2F0b3I6OmZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9y
Ojpwcm9wYWdhdGVBcml0aE5vZGVGbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6cHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3NGb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjpwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0JhY2t3YXJkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMpOgorICAgICAgICAo
SlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZVByZWRpY3Rpb25zRm9yd2FyZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlUHJlZGljdGlvbnNCYWNrd2FyZCk6
CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6ZG9Sb3VuZE9mRG91YmxlVm90aW5nKToK
KyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9y
OjpzdGFydEluZGV4Rm9yQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6
OmVuZEluZGV4Rm9yUHVyZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6c2V0
UmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmVsaW1pbmF0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmxvY2FsQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjphbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpERkc6
OlByb3BhZ2F0b3I6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFn
YXRvcjo6cGVyZm9ybUZvcndhcmRDRkEpOgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlckJhbmsu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJhbms6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdTY29yZUJvYXJkLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2NvcmVCb2FyZDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpkZXN0cm95KToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpkdW1wQ2FsbGVyKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvZmlsZTo6ZGVidWdQcmludERhdGEpOgorICAgICAgICAoSlNDOjpQcm9maWxlOjpkZWJ1Z1By
aW50RGF0YVNhbXBsZVN0eWxlKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YSk6CisgICAgICAgIChK
U0M6OlByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6ZHVt
cFJlZ0V4cFRyYWNlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChK
U0M6OlJlZ0V4cDo6bWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyKToKKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nQ291bnRlci5jcHA6CisgICAgICAgIChKU0M6OkFic3RyYWN0U2FtcGxpbmdD
b3VudGVyOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nQ291bnRlci5oOgorICAg
ICAgICAoSlNDOjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6On5EZWxldGFibGVTYW1wbGluZ0Nv
dW50ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6
OlNjb3BlQ2hhaW5Ob2RlOjpwcmludCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlcjo6flByb3BlcnR5TWFwU3RhdGlzdGlj
c0V4aXRMb2dnZXIpOgorICAgICAgICAqIHRvb2xzL0NvZGVQcm9maWxlLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZVByb2ZpbGU6OnJlcG9ydCk6CisgICAgICAgICogdG9vbHMvUHJvZmlsZVRyZWVO
b2RlLmg6CisgICAgICAgIChKU0M6OlByb2ZpbGVUcmVlTm9kZTo6ZHVtcEludGVybmFsKToKKyAg
ICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0RhdGFMb2cuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlT25j
ZSk6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0
YUZpbGUpOgorICAgICAgICAoV1RGOjpkYXRhTG9nVik6CisgICAgICAgIChXVEY6OmRhdGFMb2cp
OgorICAgICAgICAqIHd0Zi9EYXRhTG9nLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKiB3dGYvSGFzaFRhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlU3RhdHM6On5I
YXNoVGFibGVTdGF0cyk6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3BwOgorICAgICAg
ICAoV1RGOjpNZXRhQWxsb2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFN0cmluZzo6c2hvdyk6CisgICAgICAgICogeWFyci9Z
YXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmR1
bXBEaXNqdW5jdGlvbik6CisKIDIwMTItMDItMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIGhhdmUgcG9seW1vcnBoaWMgcHV0X2J5X2lkIGNh
Y2hpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTY3LDYgKzU2Nyw4IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRGF0ZU1hdGguaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRh
TG9nLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRhTG9nLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0RlY29kZXIuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBAQAogICAgICAgICAg
ICAgJ3d0Zi9EYXRlTWF0aC5oJywKICAgICAgICAgICAgICd3dGYvRGVjaW1hbE51bWJlci5oJywK
ICAgICAgICAgICAgICd3dGYvRGVjb2Rlci5oJywKKyAgICAgICAgICAgICd3dGYvRGF0YUxvZy5o
JywKICAgICAgICAgICAgICd3dGYvRGVxdWUuaCcsCiAgICAgICAgICAgICAnd3RmL0Rpc2FsbG93
Q1R5cGUuaCcsCiAgICAgICAgICAgICAnd3RmL0RvdWJseUxpbmtlZExpc3QuaCcsCkBAIC01NjAs
NiArNTYxLDcgQEAKICAgICAgICAgICAgICd3dGYvQ3VycmVudFRpbWUuY3BwJywKICAgICAgICAg
ICAgICd3dGYvRGF0ZU1hdGguY3BwJywKICAgICAgICAgICAgICd3dGYvRGVjaW1hbE51bWJlci5j
cHAnLAorICAgICAgICAgICAgJ3d0Zi9EYXRhTG9nLmNwcCcsCiAgICAgICAgICAgICAnd3RmL0R5
bmFtaWNBbm5vdGF0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9EeW5hbWljQW5ub3RhdGlv
bnMuaCcsCiAgICAgICAgICAgICAnd3RmL0Zhc3RNYWxsb2MuY3BwJywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYv
V1RGLnZjcHJvagkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzMz
LDYgKzczMywxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHd0ZlxEYXRhTG9nLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlx3dGZcRGF0YUxvZy5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxl
CiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxEZXF1ZS5oIgogCQkJPgogCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA3NDg3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsOCBAQAogCQkwRjk2M0IyRDEzRjg1NDAy
MDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMkExM0Y4NTNCRDAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
Rjk2M0IyRjEzRkM2NkJCMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMkUxM0ZDNjZBRTAw
MDJEOUIyIC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFs
dWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5RkM4RDAxNEU2MTJEODAw
RDUyQUUwIC8qIERhdGFMb2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5RkM4Q0QxNEU2MTJENTAwRDUyQUUwIC8qIERhdGFMb2cuY3BwICovOyB9
OworCQkwRjlGQzhEMTE0RTYxMkRBMDBENTJBRTAgLyogRGF0YUxvZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4Q0UxNEU2MTJENTAwRDUyQUUw
IC8qIERhdGFMb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlG
QzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi87IH07
CiAJCTBGOUZDOEM0MTRFMUI2MDAwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQzhDMDE0
RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1
MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04OTksNiArOTAxLDggQEAK
IAkJMEY5NjNCMkIxM0Y4NTNDNzAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjJFMTNGQzY2QUUwMDAyRDlCMiAvKiBNZXRhQWxs
b2NhdG9ySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFBbGxv
Y2F0b3JIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMzYxM0ZD
NkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5
RkM4Q0QxNEU2MTJENTAwRDUyQUUwIC8qIERhdGFMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGF0YUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOUZDOENFMTRFNjEyRDUwMEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9seW1vcnBoaWNQdXRCeUlk
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOEMwMTRFMUI1RkIw
MEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTk3MCw2ICsxOTc0LDggQEAKIAkJNjUxNjJFRjEwOEU2QTIxQzAwNzU1NkNE
IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEY5RkM4Q0QxNEU2MTJENTAwRDUyQUUwIC8qIERhdGFMb2cuY3BwICovLAorCQkJCTBGOUZDOENF
MTRFNjEyRDUwMEQ1MkFFMCAvKiBEYXRhTG9nLmggKi8sCiAJCQkJQTFENzY0NTExMzU0NDQ4QjAw
QzVDN0MwIC8qIEFsaWdubWVudC5oICovLAogCQkJCTkzQUE0Rjc3MDk1NzI1MUYwMDg0QjNBNyAv
KiBBbHdheXNJbmxpbmUuaCAqLywKIAkJCQlBNzNCRTE1NDE0ODQyMDUyMDA5MTIwNEIgLyogQXJy
YXlCdWZmZXIuY3BwICovLApAQCAtMzEzNyw2ICszMTQzLDcgQEAKIAkJCQkwRjU1RjBGNTE0RDEw
NjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkIx
NERGM0YxNjAwQjdCMkU0IC8qIERGR05vZGVSZWZlcmVuY2VCbG9iLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjY2RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHTm9kZVVzZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY5RkM4RDExNEU2MTJEQTAwRDUyQUUwIC8qIERhdGFMb2cuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM0MTRFMUI2MDAwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtMzY4NSw2ICszNjkyLDcgQEAKIAkJCQk4
NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjlGQzhEMDE0RTYxMkQ4MDBENTJBRTAgLyogRGF0
YUxvZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlGQzhDMzE0RTFCNUZFMDBENTJBRTAgLyog
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDc0ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCiAjaW5jbHVkZSA8TWFjcm9B
c3NlbWJsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTMyNiwxMyArMzI3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGxpbmtDb3VudCsrOwogICAgICAgICB0b3RhbEluaXRpYWxTaXplICs9IGlu
aXRpYWxTaXplOwogICAgICAgICB0b3RhbEZpbmFsU2l6ZSArPSBmaW5hbFNpemU7Ci0gICAgICAg
IHByaW50ZigibGluayAlcDogb3JpZyAldSwgY29tcGFjdCAldSAoZGVsdGEgJXUsICUuMmYlJSlc
biIsIAotICAgICAgICAgICAgICAgY29kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxT
aXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZpbmFsU2l6ZSksCi0gICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpLAotICAgICAgICAg
ICAgICAgMTAwLjAgKiAoaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpIC8gaW5pdGlhbFNpemUpOwot
ICAgICAgICBwcmludGYoIlx0dG90YWwgJXU6IG9yaWcgJXUsIGNvbXBhY3QgJXUgKGRlbHRhICV1
LCAlLjJmJSUpXG4iLCAKLSAgICAgICAgICAgICAgIGxpbmtDb3VudCwgdG90YWxJbml0aWFsU2l6
ZSwgdG90YWxGaW5hbFNpemUsIHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSwKLSAg
ICAgICAgICAgICAgIDEwMC4wICogKHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSkg
LyB0b3RhbEluaXRpYWxTaXplKTsKKyAgICAgICAgZGF0YUxvZygibGluayAlcDogb3JpZyAldSwg
Y29tcGFjdCAldSAoZGVsdGEgJXUsICUuMmYlJSlcbiIsIAorICAgICAgICAgICAgICAgICAgICBj
b2RlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFNpemUpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZmluYWxTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxTaXplIC0gZmluYWxTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgMTAwLjAg
KiAoaW5pdGlhbFNpemUgLSBmaW5hbFNpemUpIC8gaW5pdGlhbFNpemUpOworICAgICAgICBkYXRh
TG9nKCJcdHRvdGFsICV1OiBvcmlnICV1LCBjb21wYWN0ICV1IChkZWx0YSAldSwgJS4yZiUlKVxu
IiwgCisgICAgICAgICAgICAgICAgICAgIGxpbmtDb3VudCwgdG90YWxJbml0aWFsU2l6ZSwgdG90
YWxGaW5hbFNpemUsIHRvdGFsSW5pdGlhbFNpemUgLSB0b3RhbEZpbmFsU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgMTAwLjAgKiAodG90YWxJbml0aWFsU2l6ZSAtIHRvdGFsRmluYWxTaXplKSAv
IHRvdGFsSW5pdGlhbFNpemUpOwogICAgIH0KICNlbmRpZgogICAgIApAQCAtMzQ5LDE3ICszNTAs
MTcgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHRzaXplID0gc2l6ZSAvIHNpemVvZihzaG9y
dCk7CiAgICAgICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwogICAgICAgICBzbnByaW50ZihuYW1lQnVm
LCBzaXplb2YobmFtZUJ1ZiksICJfanNjX2ppdCV1IiwgY29kZUNvdW50KyspOwotICAgICAgICBw
cmludGYoIlx0LnN5bnRheCB1bmlmaWVkXG4iCi0gICAgICAgICAgICAgICAiXHQuc2VjdGlvblx0
X19URVhULF9fdGV4dCxyZWd1bGFyLHB1cmVfaW5zdHJ1Y3Rpb25zXG4iCi0gICAgICAgICAgICAg
ICAiXHQuZ2xvYmxcdCVzXG4iCi0gICAgICAgICAgICAgICAiXHQuYWxpZ24gMlxuIgotICAgICAg
ICAgICAgICAgIlx0LmNvZGUgMTZcbiIKLSAgICAgICAgICAgICAgICJcdC50aHVtYl9mdW5jXHQl
c1xuIgotICAgICAgICAgICAgICAgIiMgJXBcbiIKLSAgICAgICAgICAgICAgICIlczpcbiIsIG5h
bWVCdWYsIG5hbWVCdWYsIGNvZGUsIG5hbWVCdWYpOworICAgICAgICBkYXRhTG9nKCJcdC5zeW50
YXggdW5pZmllZFxuIgorICAgICAgICAgICAgICAgICAgICAiXHQuc2VjdGlvblx0X19URVhULF9f
dGV4dCxyZWd1bGFyLHB1cmVfaW5zdHJ1Y3Rpb25zXG4iCisgICAgICAgICAgICAgICAgICAgICJc
dC5nbG9ibFx0JXNcbiIKKyAgICAgICAgICAgICAgICAgICAgIlx0LmFsaWduIDJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIlx0LmNvZGUgMTZcbiIKKyAgICAgICAgICAgICAgICAgICAgIlx0LnRo
dW1iX2Z1bmNcdCVzXG4iCisgICAgICAgICAgICAgICAgICAgICIjICVwXG4iCisgICAgICAgICAg
ICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIG5hbWVCdWYsIGNvZGUsIG5hbWVCdWYpOwogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCi0gICAg
ICAgICAgICBwcmludGYoIlx0LnNob3J0XHQweCV4XG4iLCB0Y29kZVtpXSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJcdC5zaG9ydFx0MHgleFxuIiwgdGNvZGVbaV0pOwogI2VuZGlmCiAgICAgfQog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvU0g0QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDI1LDcgKzIwMjYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgdnByaW50ZlN0ZG91dEluc3RyKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlz
dCBhcmdzKQogICAgIHsKICAgICAgICAgaWYgKGdldGVudigiSmF2YVNjcmlwdENvcmVEdW1wSklU
IikpCi0gICAgICAgICAgICB2ZnByaW50ZihzdGRvdXQsIGZvcm1hdCwgYXJncyk7CisgICAgICAg
ICAgICBXVEY6OmRhdGFMb2dWKGZvcm1hdCwgYXJncyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZv
aWQgcHJpbnRCbG9ja0luc3RyKHVpbnQxNl90KiBmaXJzdCwgdW5zaWduZWQgaW50IG9mZnNldCwg
aW50IG5iSW5zdHIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2
b2lkIENvZGVCbG9jazo6cHJpbnRVbmFyeU9wKEV4ZWNTdGF0ZSogCiAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAKLSAgICBw
cmludGYoIlslNGRdICVzXHRcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICBk
YXRhTG9nKCJbJTRkXSAlc1x0XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CiB9CiAK
IHZvaWQgQ29kZUJsb2NrOjpwcmludEJpbmFyeU9wKEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0
aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgaXQsIGNvbnN0IGNoYXIq
IG9wKSBjb25zdApAQCAtMTYyLDE0ICsxNjIsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50Qmlu
YXJ5T3AoRXhlY1N0YXRlKgogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgIHByaW50ZigiWyU0ZF0gJXNcdFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7CisgICAgZGF0YUxvZygiWyU0ZF0g
JXNcdFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjIpLmRhdGEoKSk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBpbnQgbG9jYXRp
b24sIGNvbnN0IGNoYXIqIG9wKSBjb25zdAogewogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludGYoIlsl
NGRdICVzXHRcdCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgIGRhdGFMb2co
IlslNGRdICVzXHRcdCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogfQogCiB2b2lk
IENvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24s
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBpdCwgY29uc3QgY2hhciogb3Ap
IGNvbnN0CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9w
KEV4ZWNTdGF0ZQogICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICBwcmludGYoIlslNGRdICVzXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlk
TmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICBkYXRhTG9nKCJbJTRk
XSAlc1x0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgaXQgKz0gNTsKIH0KIApAQCAtMTg2LDcgKzE4
Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludENhbGxPcChFeGVjU3RhdGUqIGUKICAgICBpbnQg
ZnVuYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgIGludCBhcmdDb3VudCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgIGludCByZWdpc3Rlck9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
IHByaW50ZigiWyU0ZF0gJXNcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVy
TmFtZShleGVjLCBmdW5jKS5kYXRhKCksIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CisgICAg
ZGF0YUxvZygiWyU0ZF0gJXNcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVy
TmFtZShleGVjLCBmdW5jKS5kYXRhKCksIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CiAgICAg
aXQgKz0gMjsKIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFB1
dEJ5SWRPcChFeGVjU3RhdGUKICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBp
bnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgcHJpbnRmKCJbJTRkXSAlc1x0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBvcCwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNb
aWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgZGF0YUxv
ZygiWyU0ZF0gJXNcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwogICAgIGl0ICs9IDU7CiB9CiAKQEAgLTI0
Myw0OCArMjQzLDQ4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldEZvck50aCgK
IAogc3RhdGljIHZvaWQgcHJpbnRHbG9iYWxSZXNvbHZlSW5mbyhjb25zdCBHbG9iYWxSZXNvbHZl
SW5mbyYgcmVzb2x2ZUluZm8sIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0KQogewotICAgIHBy
aW50ZigiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicmVzb2x2ZV9nbG9i
YWwiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcocmVzb2x2ZUluZm8uc3RydWN0dXJlKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBkYXRhTG9nKCIgIFslNGRdICVzOiAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZz
ZXQsICJyZXNvbHZlX2dsb2JhbCIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhyZXNvbHZlSW5mby5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBzdGF0aWMgdm9pZCBwcmludFN0cnVjdHVy
ZVN0dWJJbmZvKGNvbnN0IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25PZmZzZXQpCiB7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAg
ICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAl
czogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3NlbGYiLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3NlbGYiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1
YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKLSAgICAg
ICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0
X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZFBy
b3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJ
bmZvLnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1
Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2J5X2lkX2NoYWluOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzLCAlc1xuIiwg
aW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfY2hhaW4iLCBwb2ludGVyVG9Tb3VyY2VTdHJp
bmcoc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRh
dGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmNoYWlu
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMsICVzXG4i
LCBpbnN0cnVjdGlvbk9mZnNldCwgImdldF9ieV9pZF9jaGFpbiIsIHBvaW50ZXJUb1NvdXJjZVN0
cmluZyhzdHViSW5mby51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlKS51dGY4KCku
ZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uY2hh
aW4pLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX3NlbGZfbGlzdDoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzOiAlcyAoJWQpXG4i
LCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9ieV9pZF9zZWxmX2xpc3QiLCBwb2ludGVyVG9T
b3VyY2VTdHJpbmcoc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdCkudXRm
OCgpLmRhdGEoKSwgc3R1YkluZm8udS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOworICAgICAg
ICBkYXRhTG9nKCIgIFslNGRdICVzOiAlcyAoJWQpXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9w
X2dldF9ieV9pZF9zZWxmX2xpc3QiLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5n
ZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdCkudXRmOCgpLmRhdGEoKSwgc3R1YkluZm8udS5n
ZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nl
c3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXMg
KCVkKVxuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCIsIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LmdldEJ5SWRQcm90b0xpc3Quc3RydWN0dXJl
TGlzdCkudXRmOCgpLmRhdGEoKSwgc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXpl
KTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMgKCVkKVxuIiwgaW5zdHJ1Y3Rpb25P
ZmZzZXQsICJvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhz
dHViSW5mby51LmdldEJ5SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdCkudXRmOCgpLmRhdGEoKSwg
c3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXplKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIGFj
Y2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Ci0gICAgICAgIHByaW50ZigiICBbJTRk
XSAlczogJXMsICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfdHJhbnNp
dGlvbiIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9u
LnByZXZpb3VzU3RydWN0dXJlKS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmco
c3R1YkluZm8udS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBv
aW50ZXJUb1NvdXJjZVN0cmluZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlczogJXMsICVzLCAlc1xu
IiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIsIHBvaW50ZXJUb1Nv
dXJjZVN0cmluZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJl
KS51dGY4KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcoc3R1YkluZm8udS5wdXRCeUlk
VHJhbnNpdGlvbi5zdHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmlu
ZyhzdHViSW5mby51LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOgotICAgICAg
ICBwcmludGYoIiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9p
ZF9yZXBsYWNlIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFJlcGxh
Y2UuYmFzZU9iamVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRhdGFMb2co
IiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF9yZXBsYWNl
IiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9i
amVjdFN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IGFjY2Vzc191bnNldDoKLSAgICAgICAgcHJpbnRmKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlv
bk9mZnNldCwgInVuc2V0Iik7CisgICAgICAgIGRhdGFMb2coIiAgWyU0ZF0gJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAidW5zZXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNz
X2dldF9ieV9pZF9nZW5lcmljOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXNcbiIsIGluc3Ry
dWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2J5X2lkX2dlbmVyaWMiKTsKKyAgICAgICAgZGF0YUxvZygi
ICBbJTRkXSAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfYnlfaWRfZ2VuZXJpYyIp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX2dlbmVyaWM6Ci0g
ICAgICAgIHByaW50ZigiICBbJTRkXSAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9wdXRf
YnlfaWRfZ2VuZXJpYyIpOworICAgICAgICBkYXRhTG9nKCIgIFslNGRdICVzXG4iLCBpbnN0cnVj
dGlvbk9mZnNldCwgIm9wX3B1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIGFjY2Vzc19nZXRfYXJyYXlfbGVuZ3RoOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0g
JXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAib3BfZ2V0X2FycmF5X2xlbmd0aCIpOworICAgICAg
ICBkYXRhTG9nKCIgIFslNGRdICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgIm9wX2dldF9hcnJh
eV9sZW5ndGgiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdf
bGVuZ3RoOgotICAgICAgICBwcmludGYoIiAgWyU0ZF0gJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0
LCAib3BfZ2V0X3N0cmluZ19sZW5ndGgiKTsKKyAgICAgICAgZGF0YUxvZygiICBbJTRkXSAlc1xu
IiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJvcF9nZXRfc3RyaW5nX2xlbmd0aCIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0y
OTUsNyArMjk1LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRTdHJ1Y3R1cmVTdHViSW5mbyhjb25zdAog
dm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IElu
c3RydWN0aW9uKiB2UEMsIGludCBvcGVyYW5kKSBjb25zdAogewogICAgIHVuc2lnbmVkIGluc3Ry
dWN0aW9uT2Zmc2V0ID0gdlBDIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBwcmludGYo
IiAgWyU0ZF0gJXM6ICVzXG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgbmFtZSwgcG9pbnRlclRvU291
cmNlU3RyaW5nKHZQQ1tvcGVyYW5kXS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CisgICAg
ZGF0YUxvZygiICBbJTRkXSAlczogJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCBuYW1lLCBwb2lu
dGVyVG9Tb3VyY2VTdHJpbmcodlBDW29wZXJhbmRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnByaW50U3RydWN0dXJlcyhjb25zdCBJbnN0cnVjdGlv
biogdlBDKSBjb25zdApAQCAtMzEyLDE1ICszMTIsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50
U3RydWN0dXJlcyhjb25zdCBJbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENb
MF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8p
KSB7Ci0gICAgICAgIHByaW50ZigiICBbJTRkXSAlczogJXMsICVzXG4iLCBpbnN0cnVjdGlvbk9m
ZnNldCwgImdldF9ieV9pZF9wcm90byIsIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNF0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCksIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2UENbNV0udS5z
dHJ1Y3R1cmUpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgIFslNGRdICVzOiAl
cywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX3Byb3RvIiwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewotICAgICAgICBwcmludGYoIiAg
WyU0ZF0gJXM6ICVzLCAlcywgJXNcbiIsIGluc3RydWN0aW9uT2Zmc2V0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb24iLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4
KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlKS51dGY4
KCkuZGF0YSgpLCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4p
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgIFslNGRdICVzOiAlcywgJXMsICVz
XG4iLCBpbnN0cnVjdGlvbk9mZnNldCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIiwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s0XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s1XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRv
U291cmNlU3RyaW5nKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSkgewotICAgICAgICBwcmludGYoIiAg
WyU0ZF0gJXM6ICVzLCAlc1xuIiwgaW5zdHJ1Y3Rpb25PZmZzZXQsICJnZXRfYnlfaWRfY2hhaW4i
LCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzRdLnUuc3RydWN0dXJlKS51dGY4KCkuZGF0YSgp
LCBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4pLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgIFslNGRdICVzOiAlcywgJXNcbiIsIGluc3RydWN0
aW9uT2Zmc2V0LCAiZ2V0X2J5X2lkX2NoYWluIiwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s0
XS51LnN0cnVjdHVyZSkudXRmOCgpLmRhdGEoKSwgcG9pbnRlclRvU291cmNlU3RyaW5nKHZQQ1s1
XS51LnN0cnVjdHVyZUNoYWluKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
cHV0X2J5X2lkKSkgewpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0
cnVjdHVyZXMoY29uc3QgSW4KIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKIHsKICAgICBpZiAoIW1faW5zdHJ1Y3Rpb25zKSB7Ci0gICAgICAgIHByaW50ZigiTm8g
aW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZS5cbiIpOworICAgICAgICBkYXRhTG9nKCJObyBpbnN0cnVj
dGlvbnMgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1Niw3
ICszNTYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2Rl
TGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtp
XS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYo
IiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVk
IGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIGRhdGFMb2coIiVsdSBtX2luc3RydWN0aW9u
czsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3Rlcihz
KVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNv
dW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCiAgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1l
dGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOwpAQCAtMzY3LDM1ICszNjcsMzUgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgICAgICBkdW1wKGV4ZWMsIGJl
Z2luLCBpdCk7CiAKICAgICBpZiAoIW1faWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHByaW50ZigiXG5JZGVudGlmaWVyczpcbiIpOworICAgICAgICBkYXRhTG9nKCJcbklkZW50aWZp
ZXJzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgcHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBtX2lk
ZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIiAgaWQldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIG1faWRlbnRpZmll
cnNbaV0udXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytpOwogICAgICAg
ICB9IHdoaWxlIChpICE9IG1faWRlbnRpZmllcnMuc2l6ZSgpKTsKICAgICB9CiAKICAgICBpZiAo
IW1fY29uc3RhbnRSZWdpc3RlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5Db25z
dGFudHM6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5Db25zdGFudHM6XG4iKTsKICAgICAgICAg
c2l6ZV90IGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgIGsldSA9
ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhl
YywgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCIgICBrJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB2
YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uZ2V0KCkpLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9j
b25zdGFudFJlZ2lzdGVycy5zaXplKCkpOwogICAgIH0KIAogICAgIGlmIChtX3JhcmVEYXRhICYm
ICFtX3JhcmVEYXRhLT5tX3JlZ2V4cHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5t
X3JlZ2V4cHM6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5tX3JlZ2V4cHM6XG4iKTsKICAgICAg
ICAgc2l6ZV90IGkgPSAwOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoIiAgcmUl
dSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHJlZ2V4cFRvU291cmNlU3RyaW5n
KG1fcmFyZURhdGEtPm1fcmVnZXhwc1tpXS5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCIgIHJlJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBy
ZWdleHBUb1NvdXJjZVN0cmluZyhtX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaV0uZ2V0KCkpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJl
RGF0YS0+bV9yZWdleHBzLnNpemUoKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBp
ZiAoIW1fZ2xvYmFsUmVzb2x2ZUluZm9zLmlzRW1wdHkoKSB8fCAhbV9zdHJ1Y3R1cmVTdHViSW5m
b3MuaXNFbXB0eSgpKQotICAgICAgICBwcmludGYoIlxuU3RydWN0dXJlczpcbiIpOworICAgICAg
ICBkYXRhTG9nKCJcblN0cnVjdHVyZXM6XG4iKTsKIAogICAgIGlmICghbV9nbG9iYWxSZXNvbHZl
SW5mb3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNpemVfdCBpID0gMDsKQEAgLTQxNCw3ICs0MTQs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKCFtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuaXNFbXB0eSgpIHx8ICFtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmlzRW1wdHkoKSkK
LSAgICAgICAgcHJpbnRmKCJcblN0cnVjdHVyZXM6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG5T
dHJ1Y3R1cmVzOlxuIik7CiAKICAgICBpZiAoIW1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5p
c0VtcHR5KCkpIHsKICAgICAgICAgc2l6ZV90IGkgPSAwOwpAQCAtNDMzLDM2ICs0MzMsMzYgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogI2VuZGlmCiAKICAgICBp
ZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgcHJpbnRmKCJcbkV4Y2VwdGlvbiBIYW5kbGVyczpcbiIpOworICAgICAg
ICBkYXRhTG9nKCJcbkV4Y2VwdGlvbiBIYW5kbGVyczpcbiIpOwogICAgICAgICB1bnNpZ25lZCBp
ID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAgcHJpbnRmKCJcdCAlZDogeyBzdGFydDog
WyU0ZF0gZW5kOiBbJTRkXSB0YXJnZXQ6IFslNGRdIH1cbiIsIGkgKyAxLCBtX3JhcmVEYXRhLT5t
X2V4Y2VwdGlvbkhhbmRsZXJzW2ldLnN0YXJ0LCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRs
ZXJzW2ldLmVuZCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS50YXJnZXQpOwor
ICAgICAgICAgICAgZGF0YUxvZygiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFy
Z2V0OiBbJTRkXSB9XG4iLCBpICsgMSwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tp
XS5zdGFydCwgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXS5lbmQsIG1fcmFyZURh
dGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV0udGFyZ2V0KTsKICAgICAgICAgICAgICsraTsKICAg
ICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgp
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1faW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJpbnRmKCJJbW1l
ZGlhdGUgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIGRhdGFMb2coIkltbWVkaWF0
ZSBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50ZigiICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBpbnQgZW50cnkgPSAw
OwogICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jh
cmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNl
dHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewogICAgICAgICAgICAg
ICAgIGlmICghKml0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIHByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRyeSArIG1fcmFyZURhdGEtPm1f
aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5taW4sICppdGVyKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcHJpbnRmKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
IH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0
YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogICAgIAogICAg
IGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJs
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByaW50ZigiXG5DaGFyYWN0ZXIgU3dpdGNoIEp1bXAg
VGFibGVzOlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuQ2hhcmFjdGVyIFN3aXRjaCBKdW1wIFRh
YmxlczpcbiIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAg
ICAgICAgcHJpbnRmKCIgICUxZCA9IHtcbiIsIGkpOworICAgICAgICAgICAgZGF0YUxvZygiICAl
MWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9IDA7CiAgICAgICAgICAgICBW
ZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURhdGEtPm1fY2hhcmFj
dGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVuZCgpOwogICAgICAgICAgICAg
Zm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRhLT5t
X2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CkBAIC00NzAsMjcgKzQ3MCwyNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsgbV9yYXJlRGF0YS0+bV9jaGFy
YWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZGKSk7CiAgICAgICAgICAgICAg
ICAgVUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkgKyBtX3JhcmVEYXRhLT5tX2No
YXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAgICAgICAgICAgICBwcmludGYo
Ilx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZygmY2gsIDEpLnV0ZjgoKS5kYXRhKCksICpp
dGVyKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFVT
dHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRlcik7CiAgICAgICAgIH0KLSAgICAgICAg
ICAgIHByaW50ZigiICAgICAgfVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICB9XG4i
KTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1f
Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
bV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmlzRW1w
dHkoKSkgewotICAgICAgICBwcmludGYoIlxuU3RyaW5nIFN3aXRjaCBKdW1wIFRhYmxlczpcbiIp
OworICAgICAgICBkYXRhTG9nKCJcblN0cmluZyBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKICAg
ICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50Zigi
ICAlMWQgPSB7XG4iLCBpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgJTFkID0ge1xuIiwgaSk7
CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zm
c2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5n
T2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikKLSAgICAgICAgICAgICAgICBwcmludGYoIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmlu
ZyhpdGVyLT5maXJzdCkudXRmOCgpLmRhdGEoKSwgaXRlci0+c2Vjb25kLmJyYW5jaE9mZnNldCk7
Ci0gICAgICAgICAgICBwcmludGYoIiAgICAgIH1cbiIpOworICAgICAgICAgICAgICAgIGRhdGFM
b2coIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZyhpdGVyLT5maXJzdCkudXRmOCgpLmRh
dGEoKSwgaXRlci0+c2Vjb25kLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICB9XG4iKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIHBy
aW50ZigiXG4iKTsKKyAgICBkYXRhTG9nKCJcbiIpOwogfQogCiB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGl0KSBjb25z
dApAQCAtNDk4LDczICs0OTgsNzMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CiAgICAgc3dpdGNoIChleGVj
LT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CiAgICAgICAgIGNh
c2Ugb3BfZW50ZXI6IHsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZW50ZXJcbiIsIGxvY2F0
aW9uKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGVudGVyXG4iLCBsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hY3Rp
dmF0aW9uOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50ZigiWyU0ZF0gY3JlYXRlX2FjdGl2YXRpb24gJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBjcmVhdGVfYWN0aXZhdGlvbiAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBy
MCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfY3JlYXRlX2FyZ3VtZW50czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGluaXRfbGF6eV9y
ZWdcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGluaXRfbGF6eV9yZWdcdCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2NhbGxlZTogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIG9wX2dldF9j
YWxsZWUgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBvcF9nZXRfY2FsbGVlICVzXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewogICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY3JlYXRlX3RoaXMgJXMgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY3JlYXRlX3RoaXMgJXMg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAl
c1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGNvbnZlcnRfdGhpc1x0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVz
XG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAg
ICAgZGF0YUxvZygiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsKICAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd2ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBuZXdfYXJyYXlcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYXJndikuZGF0YSgpLCBh
cmdjKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19hcnJheVx0ICVzLCAlcywgJWRc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCBhcmd2KS5kYXRhKCksIGFyZ2MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7CiAgICAgICAgICAgICBpbnQg
ZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50ZigiWyU0ZF0gbmV3X2FycmF5X2J1ZmZlciAlcywgJWQsICVkXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGRzdCkuZGF0YSgpLCBhcmd2LCBhcmdjKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19hcnJheV9idWZmZXIgJXMsICVkLCAlZFxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCBkc3QpLmRhdGEoKSwgYXJndiwgYXJnYyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19yZWdleHA6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBu
ZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfcmVnZXhwXHQgJXMsICIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAocjAg
Pj0wICYmIHIwIDwgKGludCludW1iZXJPZlJlZ0V4cHMoKSkKLSAgICAgICAgICAgICAgICBwcmlu
dGYoIiVzXG4iLCByZWdleHBOYW1lKHJlMCwgcmVnZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZygiJXNcbiIsIHJlZ2V4cE5hbWUocmUwLCByZWdleHAocmUwKSkuZGF0
YSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcmludGYoImJhZF9yZWdl
eHAoJWQpXG4iLCByZTApOworICAgICAgICAgICAgICAgIGRhdGFMb2coImJhZF9yZWdleHAoJWQp
XG4iLCByZTApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9tb3Y6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlsl
NGRdIG1vdlx0XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIG1vdlx0XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CkBAIC02MTMsMTIgKzYx
MywxMiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBwcmVfaW5jXHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHJlX2RlYzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHByZV9kZWNcdFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gcHJlX2RlY1x0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3Bvc3RfaW5jOiB7CkBAIC02OTQsNyArNjk0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAo
RXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2hlY2tfaGFz
X2luc3RhbmNlOiB7CiAgICAgICAgICAgICBpbnQgYmFzZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6IHsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGluc3RhbmNlb2ZcdFx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIzKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gaW5zdGFuY2VvZlx0
XHQgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3R5cGVvZjogewpAQCAtNzQwLDcgKzc0
MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAg
Y2FzZSBvcF9yZXNvbHZlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHByaW50ZigiWyU0ZF0gcmVzb2x2ZVx0XHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHJlc29sdmVcdFx0ICVzLCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTc0OCwxNCArNzQ4LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHBy
aW50ZigiWyU0ZF0gcmVzb2x2ZV9za2lwXHQgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSwgc2tpcExldmVscyk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZl
X3NraXBcdCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCBza2lwTGV2ZWxz
KTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxcdCAlcywgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVu
dGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcmVzb2x2
ZV9nbG9iYWxcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAg
ICAgaXQgKz0gMzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03NjUsNyArNzY1
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAg
ICAgSlNWYWx1ZSBzY29wZSA9IEpTVmFsdWUoKCsraXQpLT51LmpzQ2VsbC5nZXQoKSk7CiAgICAg
ICAgICAgICArK2l0OwogICAgICAgICAgICAgaW50IGRlcHRoID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfZ2xvYmFsX2R5bmFtaWNcdCAlcywg
JXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCB2
YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIHNjb3BlKS51dGY4KCkuZGF0YSgpLCBpZE5hbWUoaWQw
LCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgZGVwdGgpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gcmVzb2x2ZV9nbG9iYWxfZHluYW1pY1x0ICVzLCAlcywgJXMsICVkXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHZhbHVlVG9Tb3VyY2VTdHJpbmco
ZXhlYywgc2NvcGUpLnV0ZjgoKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCBkZXB0aCk7CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHNraXBMZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50Zigi
WyU0ZF0gZ2V0X3Njb3BlZF92YXJcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGluZGV4LCBza2lwTGV2ZWxzKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIGdldF9zY29wZWRfdmFyXHQgJXMsICVkLCAlZFxuIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCwgc2tpcExldmVscyk7CiAgICAgICAg
ICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc4MSw0MSArNzgx
LDQxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAg
ICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNraXBM
ZXZlbHMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwdXRfc2NvcGVkX3Zhclx0ICVk
LCAlZCwgJXNcbiIsIGxvY2F0aW9uLCBpbmRleCwgc2tpcExldmVscywgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X3Njb3BlZF92
YXJcdCAlZCwgJWQsICVzXG4iLCBsb2NhdGlvbiwgaW5kZXgsIHNraXBMZXZlbHMsIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9nbG9iYWxfdmFyXHQgJXMsICVkXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGluZGV4KTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyXHQgJXMsICVkXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGluZGV4KTsKICAgICAgICAgICAgIGl0
Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9n
bG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhclx0ICVkLCAlc1xuIiwgbG9jYXRpb24sIGluZGV4LCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBwdXRfZ2xvYmFsX3Zhclx0ICVkLCAlc1xuIiwgbG9jYXRpb24sIGluZGV4LCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgaXNTdHJpY3QgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHByaW50ZigiWyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBpc1N0
cmljdCA/ICJfc3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWRO
YW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCBpc1N0cmljdCA/
ICJfc3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlk
MCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZW5zdXJlX3Byb3BlcnR5
X2V4aXN0czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYo
IlslNGRdIGVuc3VyZV9wcm9wZXJ0eV9leGlzdHNcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBd
KS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZW5zdXJlX3Byb3BlcnR5X2V4
aXN0c1x0ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfd2l0aF9iYXNlOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAlcywg
JXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZlX3dpdGhfYmFzZSAl
cywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTgyMyw3ICs4MjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMsIGNvCiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSByZXNvbHZlX3dp
dGhfdGhpcyAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50
aWZpZXJzW2lkMF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXNvbHZl
X3dpdGhfdGhpcyAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSk7CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTkwNSwyNSArOTA1LDI1IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlsl
NGRdIHB1dF9nZXR0ZXJfc2V0dGVyXHQgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBd
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhl
YywgcjIpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2V0dGVyX3Nl
dHRlclx0ICVzLCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9tZXRob2RfY2hl
Y2s6IHsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbWV0aG9kX2NoZWNrXG4iLCBsb2NhdGlv
bik7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBtZXRob2RfY2hlY2tcbiIsIGxvY2F0aW9u
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5
X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBkZWxfYnlfaWRcdCAl
cywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lk
MF0pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBkZWxfYnlfaWRcdCAlcywg
JXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
cjIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZ2V0X2J5
X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV92YWxcdCAlcywg
JXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEoKSk7
CiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTkz
MSw3ICs5MzEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxcdCAl
cywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjIpLmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBnZXRfYXJndW1lbnRfYnlfdmFsXHQgJXMs
ICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkp
OwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05
NDIsMzggKzk0MiwzOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHI1ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGdldF9ieV9wbmFtZVx0ICVzLCAl
cywgJXMsICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHI0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV9wbmFtZVx0ICVzLCAlcywgJXMsICVzLCAlcywgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHI0KS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByNSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
cHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gcHV0X2J5X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBkZWxfYnlfdmFsXHQgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIyKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVsX2J5
X3ZhbFx0ICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2luZGV4OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2J5X2luZGV4XHQgJXMsICV1LCAlc1xuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9qbXA6IHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam1wXHRcdCAlZCgtPiVkKVxuIiwgbG9jYXRp
b24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gam1wXHRcdCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29w
OiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludGYoIlslNGRdIGxvb3BcdFx0ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wXHRc
dCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qdHJ1ZTogewpAQCAt
MTAwNCwxMjkgKzEwMDQsMTI5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGpuZXFfcHRyXHRc
dCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsg
b2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpuZXFfcHRyXHRcdCAlcywgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfamxlc3M6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGpsZXNzXHRcdCAlcywgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGpsZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfamxlc3NlcTogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gamxlc3NlcVx0XHQgJXMsICVzLCAlZCgtPiVk
KVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAg
ICAgICBkYXRhTG9nKCJbJTRkXSBqbGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6IHsKICAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludGYoIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGpncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50ZigiWyU0ZF0gamdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbJTRkXSBqZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gam5sZXNzXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBwcmludGYoIlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
cHJpbnRmKCJbJTRkXSBqbmdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgZGF0YUxvZygi
WyU0ZF0gam5ncmVhdGVyXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBwcmludGYoIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFM
b2coIlslNGRdIGpuZ3JlYXRlcmVxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzOiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMsICVkKC0+JWQpXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShl
eGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGxvb3BfaWZfbGVzc1x0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIx
KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3NlcTogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbG9vcF9pZl9sZXNzZXFcdCAlcywgJXMsICVk
KC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGxvb3BfaWZfbGVzc2VxXHQgJXMsICVzLCAlZCgtPiVk
KVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcjog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbG9vcF9pZl9ncmVhdGVy
XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiAr
IG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJcdCAl
cywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zm
c2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9v
cF9pZl9ncmVhdGVyZXE6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRd
IGxvb3BfaWZfZ3JlYXRlcmVxXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBs
b29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9m
ZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9sb29wX2hpbnQ6IHsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
bG9vcF9oaW50XG4iLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBsb29w
X2hpbnRcbiIsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbTogewogICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gc3dpdGNoX2ltbVx0ICVkLCAl
ZCgtPiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2Nh
dGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rl
cikuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9pbW1cdCAlZCwg
JWQoLT4lZCksICVzXG4iLCBsb2NhdGlvbiwgdGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9j
YXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoZXhlYywgc2NydXRpbmVlUmVnaXN0
ZXIpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3N3aXRjaF9jaGFyOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBzd2l0Y2hfY2hhclx0ICVkLCAlZCgtPiVk
KSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiAr
IGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3RlcikuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHN3aXRjaF9jaGFyXHQgJWQsICVkKC0+
JWQpLCAlc1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9u
ICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5k
YXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9z
d2l0Y2hfc3RyaW5nOiB7CiAgICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBzd2l0Y2hfc3RyaW5nXHQgJWQsICVkKC0+JWQp
LCAlc1xuIiwgbG9jYXRpb24sIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsg
ZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRh
KCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3dpdGNoX3N0cmluZ1x0ICVkLCAlZCgt
PiVkKSwgJXNcbiIsIGxvY2F0aW9uLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlv
biArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShleGVjLCBzY3J1dGluZWVSZWdpc3Rlciku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
bmV3X2Z1bmM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgc2hv
dWxkQ2hlY2sgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0g
bmV3X2Z1bmNcdFx0ICVzLCBmJWQsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCksIGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tlZD4iIDogIjxVbmNoZWNrZWQ+
Iik7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBuZXdfZnVuY1x0XHQgJXMsIGYlZCwgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjAsIHNob3VsZENo
ZWNrID8gIjxDaGVja2VkPiIgOiAiPFVuY2hlY2tlZD4iKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXdfZnVuY19leHBcdCAlcywg
ZiVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGYwKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIG5ld19mdW5jX2V4cFx0ICVzLCBmJWRcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7CkBAIC0xMTQyLDM1ICsxMTQy
LDM1IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAg
ICAgIGludCB0aGlzVmFsdWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBh
cmd1bWVudHMgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdEZyZWVS
ZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBj
YWxsX3ZhcmFyZ3NcdCAlcywgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCBjYWxsZWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHRoaXNWYWx1ZSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgYXJndW1lbnRzKS5kYXRhKCksIGZpcnN0RnJlZVJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhbGxfdmFyYXJnc1x0ICVzLCAlcywgJXMs
ICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGNhbGxlZSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgdGhpc1ZhbHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBhcmd1
bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSB0ZWFyX29mZl9hY3Rp
dmF0aW9uXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIHRlYXJfb2ZmX2FjdGl2YXRpb25cdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9h
cmd1bWVudHM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSB0ZWFyX29mZl9hcmd1bWVudHMgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3JldDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludGYoIlslNGRdIHJldFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSByZXRc
dFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1
bHQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRmKCJbJTRkXSBvcF9jYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gb3BfY2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3JldF9vYmplY3Rfb3JfdGhpczogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gY29uc3RydWN0b3Jf
cmV0XHRcdCAlcyAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBjb25zdHJ1Y3Rvcl9yZXRcdFx0ICVzICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7CkBA
IC0xMTgxLDEzICsxMTgxLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgY291bnQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gc3RyY2F0XHRcdCAl
cywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBjb3VudCk7CisgICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBzdHJjYXRcdFx0ICVzLCAlcywgJWRcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGNvdW50KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdG9fcHJpbWl0
aXZlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRk
XSB0b19wcmltaXRpdmVcdCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAg
ZGF0YUxvZygiWyU0ZF0gdG9fcHJpbWl0aXZlXHQgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1l
czogewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIyID0gaXRbM10udS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHIzID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
IGl0WzVdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gZ2V0X3BuYW1lc1x0
ICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMykuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9wbmFt
ZXNcdCAlcywgJXMsICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMikuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjMpLmRhdGEoKSwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RI
KG9wX2dldF9wbmFtZXMpIC0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
MjA3LDc4ICsxMjA3LDc4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIGludCBzaXplID0gaXRbNF0udS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IGl0ZXIgPSBpdFs1XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXRb
Nl0udS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBuZXh0X3BuYW1lXHQgJXMs
ICVzLCAlcywgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVj
LCBkZXN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBiYXNlKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCBpKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCBzaXplKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCBpdGVyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbmV4dF9wbmFtZVx0ICVzLCAlcywgJXMsICVz
LCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZGVzdCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
aSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgc2l6ZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgaXRlcikuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAg
ICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfbmV4dF9wbmFtZSkgLSAxOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXNoX3Njb3BlOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gcHVzaF9zY29wZVx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9zY29wZVx0ICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6IHsKLSAgICAgICAgICAg
IHByaW50ZigiWyU0ZF0gcG9wX3Njb3BlXG4iLCBsb2NhdGlvbik7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBwb3Bfc2NvcGVcbiIsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF9uZXdfc2NvcGU6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludGYoIlslNGRdIHB1c2hfbmV3X3Njb3BlIFx0JXMsICVzLCAlc1xuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lk
ZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHVzaF9uZXdfc2NvcGUgXHQlcywgJXMsICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1f
aWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2ptcF9zY29w
ZXM6IHsKICAgICAgICAgICAgIGludCBzY29wZURlbHRhID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludGYoIlslNGRdIGptcF9zY29wZXNcdF4lZCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBzY29w
ZURlbHRhLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIGRhdGFMb2co
IlslNGRdIGptcF9zY29wZXNcdF4lZCwgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBzY29wZURlbHRh
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjYXRjaFx0XHQgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBjYXRjaFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3Rocm93OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gdGhyb3dcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
dGhyb3dcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJvd19y
ZWZlcmVuY2VfZXJyb3I6IHsKICAgICAgICAgICAgIGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSB0aHJvd19yZWZlcmVuY2VfZXJyb3JcdCAlc1xu
IiwgbG9jYXRpb24sIGNvbnN0YW50TmFtZShleGVjLCBrMCwgZ2V0Q29uc3RhbnQoazApKS5kYXRh
KCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGhyb3dfcmVmZXJlbmNlX2Vycm9yXHQg
JXNcbiIsIGxvY2F0aW9uLCBjb25zdGFudE5hbWUoZXhlYywgazAsIGdldENvbnN0YW50KGswKSku
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
anNyOiB7CiAgICAgICAgICAgICBpbnQgcmV0QWRkckRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
cHJpbnRmKCJbJTRkXSBqc3JcdFx0ICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByZXRBZGRyRHN0KS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQp
OworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0ganNyXHRcdCAlcywgJWQoLT4lZClcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkckRzdCkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3Bfc3JldDogewogICAgICAgICAgICAgaW50IHJldEFkZHJTcmMgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gc3JldFx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkclNyYykuZGF0YSgpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIHNyZXRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHJldEFkZHJTcmMpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2RlYnVnOiB7CiAgICAgICAgICAgICBpbnQgZGVidWdIb29rSUQgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdExpbmUgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZFxuIiwgbG9jYXRp
b24sIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGRlYnVnXHRcdCAlcywgJWQsICVkXG4iLCBsb2NhdGlv
biwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wcm9maWxlX3dpbGxf
Y2FsbDogewogICAgICAgICAgICAgaW50IGZ1bmN0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludGYoIlslNGRdIHByb2ZpbGVfd2lsbF9jYWxsICVzXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIGZ1bmN0aW9uKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcHJvZmlsZV93aWxsX2NhbGwgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgZnVuY3Rpb24pLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6IHsKICAgICAgICAgICAgIGludCBm
dW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBw
cm9maWxlX2RpZF9jYWxsXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVu
Y3Rpb24pLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwcm9maWxlX2RpZF9j
YWxsXHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuY3Rpb24pLmRhdGEo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2VuZDog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludGYoIlslNGRdIGVuZFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBlbmRcdFx0ICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzgyLDI5ICsxMzgyLDI5IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wU3RhdGlzdGljcygpCiAgICAgdG90YWxTaXplICs9IHN5bWJvbFRhYmxlVG90YWxT
aXplOwogICAgIHRvdGFsU2l6ZSArPSAobGl2ZUNvZGVCbG9ja1NldC5zaXplKCkgKiBzaXplb2Yo
Q29kZUJsb2NrKSk7CiAKLSAgICBwcmludGYoIk51bWJlciBvZiBsaXZlIENvZGVCbG9ja3M6ICVk
XG4iLCBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7Ci0gICAgcHJpbnRmKCJTaXplIG9mIGEgc2lu
Z2xlIENvZGVCbG9jayBbc2l6ZW9mKENvZGVCbG9jayldOiAlenVcbiIsIHNpemVvZihDb2RlQmxv
Y2spKTsKLSAgICBwcmludGYoIlNpemUgb2YgYWxsIENvZGVCbG9ja3M6ICV6dVxuIiwgdG90YWxT
aXplKTsKLSAgICBwcmludGYoIkF2ZXJhZ2Ugc2l6ZSBvZiBhIENvZGVCbG9jazogJXp1XG4iLCB0
b3RhbFNpemUgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7Ci0KLSAgICBwcmludGYoIk51bWJl
ciBvZiBGdW5jdGlvbkNvZGUgQ29kZUJsb2NrczogJXp1ICglLjNmJSUpXG4iLCBpc0Z1bmN0aW9u
Q29kZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpc0Z1bmN0aW9uQ29kZSkgKiAxMDAuMCAvIGxpdmVD
b2RlQmxvY2tTZXQuc2l6ZSgpKTsKLSAgICBwcmludGYoIk51bWJlciBvZiBHbG9iYWxDb2RlIENv
ZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNHbG9iYWxDb2RlLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGlzR2xvYmFsQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKLSAg
ICBwcmludGYoIk51bWJlciBvZiBFdmFsQ29kZSBDb2RlQmxvY2tzOiAlenUgKCUuM2YlJSlcbiIs
IGlzRXZhbENvZGUsIHN0YXRpY19jYXN0PGRvdWJsZT4oaXNFdmFsQ29kZSkgKiAxMDAuMCAvIGxp
dmVDb2RlQmxvY2tTZXQuc2l6ZSgpKTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgbGl2ZSBDb2Rl
QmxvY2tzOiAlZFxuIiwgbGl2ZUNvZGVCbG9ja1NldC5zaXplKCkpOworICAgIGRhdGFMb2coIlNp
emUgb2YgYSBzaW5nbGUgQ29kZUJsb2NrIFtzaXplb2YoQ29kZUJsb2NrKV06ICV6dVxuIiwgc2l6
ZW9mKENvZGVCbG9jaykpOworICAgIGRhdGFMb2coIlNpemUgb2YgYWxsIENvZGVCbG9ja3M6ICV6
dVxuIiwgdG90YWxTaXplKTsKKyAgICBkYXRhTG9nKCJBdmVyYWdlIHNpemUgb2YgYSBDb2RlQmxv
Y2s6ICV6dVxuIiwgdG90YWxTaXplIC8gbGl2ZUNvZGVCbG9ja1NldC5zaXplKCkpOworCisgICAg
ZGF0YUxvZygiTnVtYmVyIG9mIEZ1bmN0aW9uQ29kZSBDb2RlQmxvY2tzOiAlenUgKCUuM2YlJSlc
biIsIGlzRnVuY3Rpb25Db2RlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGlzRnVuY3Rpb25Db2RlKSAq
IDEwMC4wIC8gbGl2ZUNvZGVCbG9ja1NldC5zaXplKCkpOworICAgIGRhdGFMb2coIk51bWJlciBv
ZiBHbG9iYWxDb2RlIENvZGVCbG9ja3M6ICV6dSAoJS4zZiUlKVxuIiwgaXNHbG9iYWxDb2RlLCBz
dGF0aWNfY2FzdDxkb3VibGU+KGlzR2xvYmFsQ29kZSkgKiAxMDAuMCAvIGxpdmVDb2RlQmxvY2tT
ZXQuc2l6ZSgpKTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgRXZhbENvZGUgQ29kZUJsb2Nrczog
JXp1ICglLjNmJSUpXG4iLCBpc0V2YWxDb2RlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGlzRXZhbENv
ZGUpICogMTAwLjAgLyBsaXZlQ29kZUJsb2NrU2V0LnNpemUoKSk7CiAKLSAgICBwcmludGYoIk51
bWJlciBvZiBDb2RlQmxvY2tzIHdpdGggcmFyZSBkYXRhOiAlenUgKCUuM2YlJSlcbiIsIGhhc1Jh
cmVEYXRhLCBzdGF0aWNfY2FzdDxkb3VibGU+KGhhc1JhcmVEYXRhKSAqIDEwMC4wIC8gbGl2ZUNv
ZGVCbG9ja1NldC5zaXplKCkpOworICAgIGRhdGFMb2coIk51bWJlciBvZiBDb2RlQmxvY2tzIHdp
dGggcmFyZSBkYXRhOiAlenUgKCUuM2YlJSlcbiIsIGhhc1JhcmVEYXRhLCBzdGF0aWNfY2FzdDxk
b3VibGU+KGhhc1JhcmVEYXRhKSAqIDEwMC4wIC8gbGl2ZUNvZGVCbG9ja1NldC5zaXplKCkpOwog
Ci0gICAgI2RlZmluZSBQUklOVF9TVEFUUyhuYW1lKSBwcmludGYoIk51bWJlciBvZiBDb2RlQmxv
Y2tzIHdpdGggIiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI0lzTm90RW1wdHkpOyBwcmludGYoIlNp
emUgb2YgYWxsICIgI25hbWUgIjogJXp1XG4iLCBuYW1lIyNUb3RhbFNpemUpOyAKKyAgICAjZGVm
aW5lIFBSSU5UX1NUQVRTKG5hbWUpIGRhdGFMb2coIk51bWJlciBvZiBDb2RlQmxvY2tzIHdpdGgg
IiAjbmFtZSAiOiAlenVcbiIsIG5hbWUjI0lzTm90RW1wdHkpOyBkYXRhTG9nKCJTaXplIG9mIGFs
bCAiICNuYW1lICI6ICV6dVxuIiwgbmFtZSMjVG90YWxTaXplKTsgCiAgICAgICAgIEZPUl9FQUNI
X01FTUJFUl9WRUNUT1IoUFJJTlRfU1RBVFMpCiAgICAgICAgIEZPUl9FQUNIX01FTUJFUl9WRUNU
T1JfUkFSRV9EQVRBKFBSSU5UX1NUQVRTKQogICAgICN1bmRlZiBQUklOVF9TVEFUUwogCi0gICAg
cHJpbnRmKCJOdW1iZXIgb2YgQ29kZUJsb2NrcyB3aXRoIGV2YWxDb2RlQ2FjaGU6ICV6dVxuIiwg
ZXZhbENvZGVDYWNoZUlzTm90RW1wdHkpOwotICAgIHByaW50ZigiTnVtYmVyIG9mIENvZGVCbG9j
a3Mgd2l0aCBzeW1ib2xUYWJsZTogJXp1XG4iLCBzeW1ib2xUYWJsZUlzTm90RW1wdHkpOworICAg
IGRhdGFMb2coIk51bWJlciBvZiBDb2RlQmxvY2tzIHdpdGggZXZhbENvZGVDYWNoZTogJXp1XG4i
LCBldmFsQ29kZUNhY2hlSXNOb3RFbXB0eSk7CisgICAgZGF0YUxvZygiTnVtYmVyIG9mIENvZGVC
bG9ja3Mgd2l0aCBzeW1ib2xUYWJsZTogJXp1XG4iLCBzeW1ib2xUYWJsZUlzTm90RW1wdHkpOwog
Ci0gICAgcHJpbnRmKCJTaXplIG9mIGFsbCBzeW1ib2xUYWJsZXM6ICV6dVxuIiwgc3ltYm9sVGFi
bGVUb3RhbFNpemUpOworICAgIGRhdGFMb2coIlNpemUgb2YgYWxsIHN5bWJvbFRhYmxlczogJXp1
XG4iLCBzeW1ib2xUYWJsZVRvdGFsU2l6ZSk7CiAKICNlbHNlCi0gICAgcHJpbnRmKCJEdW1waW5n
IENvZGVCbG9jayBzdGF0aXN0aWNzIGlzIG5vdCBlbmFibGVkLlxuIik7CisgICAgZGF0YUxvZygi
RHVtcGluZyBDb2RlQmxvY2sgc3RhdGlzdGljcyBpcyBub3QgZW5hYmxlZC5cbiIpOwogI2VuZGlm
CiB9CiAKQEAgLTE3MzYsNyArMTczNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0
aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NE
dXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgcHJpbnRmKCJDb2RlIGJsb2Nr
ICVwIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdDLlxuIiwg
dGhpcyk7CisgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICVwIGhhcyBkZWFkIHdlYWsg
cmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdDLlxuIiwgdGhpcyk7CiAKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGJhc2VsaW5lIEpJVCBrbm93cyB0aGF0IGl0IHNob3VsZCBy
ZS13YXJtLXVwIGJlZm9yZQogICAgICAgICAvLyBvcHRpbWl6aW5nLgpAQCAtMTc1NCw3ICsxNzU0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkgewog
ICAgICAgICAgICAgaWYgKGNhbGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01h
cmtlZChjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5n
IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJD
bGVhcmluZyBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCEhY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVlCkBA
IC0xNzY0LDcgKzE3NjQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoCiAgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobV9nbG9iYWxSZXNv
bHZlSW5mb3NbaV0uc3RydWN0dXJlICYmICFIZWFwOjppc01hcmtlZChtX2dsb2JhbFJlc29sdmVJ
bmZvc1tpXS5zdHJ1Y3R1cmUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VV
bmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgcmVzb2x2ZSBp
bmZvIGluICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFy
aW5nIHJlc29sdmUgaW5mbyBpbiAlcC5cbiIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fZ2xv
YmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgIHByaW50Zigi
Q2xlYXJpbmcgc3RydWN0dXJlIGNhY2hlIChraW5kICVkKSBpbiAlcC5cbiIsIHN0dWJJbmZvLmFj
Y2Vzc1R5cGUsIHRoaXMpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIHN0cnVj
dHVyZSBjYWNoZSAoa2luZCAlZCkgaW4gJXAuXG4iLCBzdHViSW5mby5hY2Nlc3NUeXBlLCB0aGlz
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzR2V0QnlJZEFjY2VzcyhhY2Nlc3NU
eXBlKSkgewogICAgICAgICAgICAgICAgIGlmIChnZXRKSVRDb2RlKCkuaml0VHlwZSgpID09IEpJ
VENvZGU6OkRGR0pJVCkKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICB8fCAhSGVhcDo6aXNNYXJrZWQo
bV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZEZ1bmN0aW9uLmdldCgpKQogICAgICAgICAg
ICAgICAgIHx8ICFIZWFwOjppc01hcmtlZChtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVk
UHJvdG90eXBlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KQotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIG1ldGhvZCBjYWxsIGluICVw
LlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIG1ldGhv
ZCBjYWxsIGluICVwLlxuIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWxsTGlu
a0luZm9zW2ldLnJlc2V0KHJlcGF0Y2hCdWZmZXIsIGdldEpJVFR5cGUoKSk7CiAKICAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBnZXRTdHViSW5mbyhtX21ldGhv
ZENhbGxMaW5rSW5mb3NbaV0uYnl0ZWNvZGVJbmRleCk7CkBAIC0yMjExLDcgKzIyMTEsNyBAQCB2
b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiBib29sIENvZGVCbG9jazo6c2hvdWxk
T3B0aW1pemVOb3coKQogewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRm
KCJDb25zaWRlcmluZyBvcHRpbWl6aW5nICVwLi4uXG4iLCB0aGlzKTsKKyAgICBkYXRhTG9nKCJD
b25zaWRlcmluZyBvcHRpbWl6aW5nICVwLi4uXG4iLCB0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKQEAgLTIyMzksNyArMjIzOSw3IEBAIGJvb2wgQ29k
ZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICBwcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChkb3Vi
bGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZWYWx1ZVBy
b2ZpbGVzKCksIChkb3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmls
ZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOworICAgIGRhdGFM
b2coIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChkb3VibGUpbnVtYmVyT2ZMaXZlTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCksIChkb3VibGUp
bnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRz
IC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOwogI2VuZGlmCiAKICAgICBpZiAoKCFudW1iZXJP
ZlZhbHVlUHJvZmlsZXMoKSB8fCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQ
cm9maWxlcyAvIG51bWJlck9mVmFsdWVQcm9maWxlcygpID49IE9wdGlvbnM6OmRlc2lyZWRQcm9m
aWxlTGl2ZW5lc3NSYXRlKQpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnRh
bGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJP
U1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3IgY29kZSBibG9jayAlcCBvY2N1cnJlZCBm
cmVxdWVudGx5OyBjb3VudGluZyBhcyBmcmVxdWVudCBleGl0IHNpdGUuXG4iLCBpLCBleGl0Lm1f
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBERkc6OmV4aXRLaW5k
VG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygiT1NSIGV4aXQg
IyV1IChiYyMldSwgQCV1LCAlcykgZm9yIGNvZGUgYmxvY2sgJXAgb2NjdXJyZWQgZnJlcXVlbnRs
eTsgY291bnRpbmcgYXMgZnJlcXVlbnQgZXhpdCBzaXRlLlxuIiwgaSwgZXhpdC5tX2NvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgZXhpdC5tX25vZGVJbmRleCwgREZHOjpleGl0S2luZFRvU3RyaW5n
KGV4aXQubV9raW5kKSwgdGhpcyk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC0yMjc5LDMwICsyMjc5
LDMwIEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkKICNpZiBFTkFC
TEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKCkKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbHVlUHJvZmlsZSBmb3IgJXA6XG4iLCB0
aGlzKTsKKyAgICBkYXRhTG9nKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsr
aSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRGcm9tQWxsVmFsdWVQcm9m
aWxlcyhpKTsKICAgICAgICAgaWYgKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CiAg
ICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGFyZyA9ICV1OiAiLCBpKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIiAgIGFyZyA9ICV1OiAiLCBpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6ICIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQpOworICAgICAgICAgICAgZGF0YUxvZygiICAgYmMgPSAlZDogIiwgcHJvZmlsZS0+bV9ieXRl
Y29kZU9mZnNldCk7CiAgICAgICAgIGlmICghcHJvZmlsZS0+bnVtYmVyT2ZTYW1wbGVzKCkgJiYg
cHJvZmlsZS0+bV9wcmVkaWN0aW9uID09IFByZWRpY3ROb25lKSB7Ci0gICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIjxlbXB0eT5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiPGVtcHR5Plxu
Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBwcm9maWxlLT5k
dW1wKHN0ZGVycik7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICAgICAgcHJv
ZmlsZS0+ZHVtcChXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAg
IH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIlJhcmVDYXNlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlz
KTsKKyAgICBkYXRhTG9nKCJSYXJlQ2FzZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpOyArK2kp
IHsKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiBwcm9maWxlID0gcmFyZUNhc2VQcm9maWxlKGkp
OwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIGJjID0gJWQ6ICV1XG4iLCBwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0LCBwcm9maWxlLT5tX2NvdW50ZXIpOworICAgICAgICBkYXRhTG9nKCIg
ICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCwgcHJvZmlsZS0+bV9j
b3VudGVyKTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICJTcGVjaWFsRmFzdENhc2VQcm9m
aWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAgIGRhdGFMb2coIlNwZWNpYWxGYXN0Q2FzZVByb2Zp
bGUgZm9yICVwOlxuIiwgdGhpcyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mU3BlY2lhbEZhc3RDYXNlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFJhcmVDYXNlUHJv
ZmlsZSogcHJvZmlsZSA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUoaSk7Ci0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQs
IHByb2ZpbGUtPm1fY291bnRlcik7CisgICAgICAgIGRhdGFMb2coIiAgIGJjID0gJWQ6ICV1XG4i
LCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0LCBwcm9maWxlLT5tX2NvdW50ZXIpOwogICAgIH0K
IH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5j
cHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTkgKzExOCwxOSBAQCBPcGNvZGVTdGF0
czo6fk9wY29kZVN0YXRzKCkKICAgICAgICAgICAgICooY3VycmVudFBhaXJJbmRleCsrKSA9IG1h
a2VfcGFpcihpLCBqKTsKICAgICBxc29ydChzb3J0ZWRQYWlySW5kaWNlcywgbnVtT3Bjb2RlSURz
ICogbnVtT3Bjb2RlSURzLCBzaXplb2YocGFpcjxpbnQsIGludD4pLCBjb21wYXJlT3Bjb2RlUGFp
ckluZGljZXMpOwogICAgIAotICAgIHByaW50ZigiXG5FeGVjdXRlZCBvcGNvZGUgc3RhdGlzdGlj
c1xuIik7IAorICAgIGRhdGFMb2coIlxuRXhlY3V0ZWQgb3Bjb2RlIHN0YXRpc3RpY3NcbiIpOyAK
ICAgICAKLSAgICBwcmludGYoIlRvdGFsIGluc3RydWN0aW9ucyBleGVjdXRlZDogJWxsZFxuXG4i
LCB0b3RhbEluc3RydWN0aW9ucyk7CisgICAgZGF0YUxvZygiVG90YWwgaW5zdHJ1Y3Rpb25zIGV4
ZWN1dGVkOiAlbGxkXG5cbiIsIHRvdGFsSW5zdHJ1Y3Rpb25zKTsKIAotICAgIHByaW50ZigiQWxs
IG9wY29kZXMgYnkgZnJlcXVlbmN5OlxuXG4iKTsKKyAgICBkYXRhTG9nKCJBbGwgb3Bjb2RlcyBi
eSBmcmVxdWVuY3k6XG5cbiIpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkgewogICAgICAgICBpbnQgaW5kZXggPSBzb3J0ZWRJbmRpY2VzW2ldOwotICAgICAg
ICBwcmludGYoIiVzOiVzICVsbGQgLSAlLjJmJSVcbiIsIG9wY29kZU5hbWVzW2luZGV4XSwgcGFk
T3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXgsIDI4KSwgb3Bjb2RlQ291bnRzW2luZGV4XSwgKChk
b3VibGUpIG9wY29kZUNvdW50c1tpbmRleF0pIC8gKChkb3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25z
KSAqIDEwMC4wKTsgICAgCisgICAgICAgIGRhdGFMb2coIiVzOiVzICVsbGQgLSAlLjJmJSVcbiIs
IG9wY29kZU5hbWVzW2luZGV4XSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXgsIDI4KSwg
b3Bjb2RlQ291bnRzW2luZGV4XSwgKChkb3VibGUpIG9wY29kZUNvdW50c1tpbmRleF0pIC8gKChk
b3VibGUpIHRvdGFsSW5zdHJ1Y3Rpb25zKSAqIDEwMC4wKTsgICAgCiAgICAgfQogICAgIAotICAg
IHByaW50ZigiXG4iKTsKLSAgICBwcmludGYoIjItb3Bjb2RlIHNlcXVlbmNlcyBieSBmcmVxdWVu
Y3k6ICVsbGRcblxuIiwgdG90YWxJbnN0cnVjdGlvbnMpOworICAgIGRhdGFMb2coIlxuIik7Cisg
ICAgZGF0YUxvZygiMi1vcGNvZGUgc2VxdWVuY2VzIGJ5IGZyZXF1ZW5jeTogJWxsZFxuXG4iLCB0
b3RhbEluc3RydWN0aW9ucyk7CiAgICAgCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNv
ZGVJRHMgKiBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICBwYWlyPGludCwgaW50PiBpbmRl
eFBhaXIgPSBzb3J0ZWRQYWlySW5kaWNlc1tpXTsKQEAgLTEzOSwxMSArMTM5LDExIEBAIE9wY29k
ZVN0YXRzOjp+T3Bjb2RlU3RhdHMoKQogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgICAgICBwcmludGYoIiVzJXMgJXM6JXMgJWxsZCAlLjJmJSVc
biIsIG9wY29kZU5hbWVzW2luZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUoKE9wY29kZUlE
KWluZGV4UGFpci5maXJzdCwgMjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vjb25kXSwgcGFk
T3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBjb3VudCwgKChkb3Vi
bGUpIGNvdW50KSAvICgoZG91YmxlKSB0b3RhbEluc3RydWN0aW9uUGFpcnMpICogMTAwLjApOwor
ICAgICAgICBkYXRhTG9nKCIlcyVzICVzOiVzICVsbGQgJS4yZiUlXG4iLCBvcGNvZGVOYW1lc1tp
bmRleFBhaXIuZmlyc3RdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIuZmlyc3Qs
IDI4KSwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLnNlY29uZF0sIHBhZE9wY29kZU5hbWUoKE9wY29k
ZUlEKWluZGV4UGFpci5zZWNvbmQsIDI4KSwgY291bnQsICgoZG91YmxlKSBjb3VudCkgLyAoKGRv
dWJsZSkgdG90YWxJbnN0cnVjdGlvblBhaXJzKSAqIDEwMC4wKTsKICAgICB9CiAgICAgCi0gICAg
cHJpbnRmKCJcbiIpOwotICAgIHByaW50ZigiTW9zdCBjb21tb24gb3Bjb2RlcyBhbmQgc2VxdWVu
Y2VzOlxuIik7CisgICAgZGF0YUxvZygiXG4iKTsKKyAgICBkYXRhTG9nKCJNb3N0IGNvbW1vbiBv
cGNvZGVzIGFuZCBzZXF1ZW5jZXM6XG4iKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
T3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgaW50IGluZGV4ID0gc29ydGVkSW5kaWNlc1tpXTsK
QEAgLTE1MSw3ICsxNTEsNyBAQCBPcGNvZGVTdGF0czo6fk9wY29kZVN0YXRzKCkKICAgICAgICAg
ZG91YmxlIG9wY29kZVByb3BvcnRpb24gPSAoKGRvdWJsZSkgb3Bjb2RlQ291bnQpIC8gKChkb3Vi
bGUpIHRvdGFsSW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgaWYgKG9wY29kZVByb3BvcnRpb24gPCAw
LjAwMDEpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgcHJpbnRmKCJcbiVzOiVzICVsbGQg
LSAlLjJmJSVcbiIsIG9wY29kZU5hbWVzW2luZGV4XSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQp
aW5kZXgsIDI4KSwgb3Bjb2RlQ291bnQsIG9wY29kZVByb3BvcnRpb24gKiAxMDAuMCk7CisgICAg
ICAgIGRhdGFMb2coIlxuJXM6JXMgJWxsZCAtICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhd
LCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleCwgMjgpLCBvcGNvZGVDb3VudCwgb3Bjb2Rl
UHJvcG9ydGlvbiAqIDEwMC4wKTsKIAogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bU9w
Y29kZUlEcyAqIG51bU9wY29kZUlEczsgKytqKSB7CiAgICAgICAgICAgICBwYWlyPGludCwgaW50
PiBpbmRleFBhaXIgPSBzb3J0ZWRQYWlySW5kaWNlc1tqXTsKQEAgLTE2NCwxMSArMTY0LDExIEBA
IE9wY29kZVN0YXRzOjp+T3Bjb2RlU3RhdHMoKQogICAgICAgICAgICAgaWYgKGluZGV4UGFpci5m
aXJzdCAhPSBpbmRleCAmJiBpbmRleFBhaXIuc2Vjb25kICE9IGluZGV4KQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBwcmludGYoIiAgICAlcyVzICVzOiVzICVsbGQg
LSAlLjJmJSVcbiIsIG9wY29kZU5hbWVzW2luZGV4UGFpci5maXJzdF0sIHBhZE9wY29kZU5hbWUo
KE9wY29kZUlEKWluZGV4UGFpci5maXJzdCwgMjgpLCBvcGNvZGVOYW1lc1tpbmRleFBhaXIuc2Vj
b25kXSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLnNlY29uZCwgMjgpLCBwYWly
Q291bnQsIHBhaXJQcm9wb3J0aW9uICogMTAwLjApOworICAgICAgICAgICAgZGF0YUxvZygiICAg
ICVzJXMgJXM6JXMgJWxsZCAtICUuMmYlJVxuIiwgb3Bjb2RlTmFtZXNbaW5kZXhQYWlyLmZpcnN0
XSwgcGFkT3Bjb2RlTmFtZSgoT3Bjb2RlSUQpaW5kZXhQYWlyLmZpcnN0LCAyOCksIG9wY29kZU5h
bWVzW2luZGV4UGFpci5zZWNvbmRdLCBwYWRPcGNvZGVOYW1lKChPcGNvZGVJRClpbmRleFBhaXIu
c2Vjb25kLCAyOCksIHBhaXJDb3VudCwgcGFpclByb3BvcnRpb24gKiAxMDAuMCk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgfQotICAgIHByaW50ZigiXG4iKTsKKyAgICBkYXRhTG9nKCJcbiIp
OwogfQogCiB2b2lkIE9wY29kZVN0YXRzOjpyZWNvcmRJbnN0cnVjdGlvbihpbnQgb3Bjb2RlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
YW1wbGluZ1Rvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNCArNjcsMTQgQEAgdm9pZCBT
YW1wbGluZ0ZsYWdzOjpzdG9wKCkKICAgICAgICAgdG90YWwgKz0gc19mbGFnQ291bnRzW2ldOwog
CiAgICAgaWYgKHRvdGFsKSB7Ci0gICAgICAgIHByaW50ZigiXG5TYW1wbGluZ0ZsYWdzOiBzYW1w
bGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0OiAoJWxsZCB0b3RhbClcbiIsIHRvdGFsKTsKKyAgICAg
ICAgZGF0YUxvZygiXG5TYW1wbGluZ0ZsYWdzOiBzYW1wbGUgY291bnRzIHdpdGggZmxhZ3Mgc2V0
OiAoJWxsZCB0b3RhbClcbiIsIHRvdGFsKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8PSAzMjsgKytpKSB7CiAgICAgICAgICAgICBpZiAoc19mbGFnQ291bnRzW2ldKQotICAgICAg
ICAgICAgICAgIHByaW50ZigiICBbICUwMmQgXSA6ICVsbGRcdFx0KCUwMy4yZiUlKVxuIiwgaSwg
c19mbGFnQ291bnRzW2ldLCAoMTAwLjAgKiBzX2ZsYWdDb3VudHNbaV0pIC8gdG90YWwpOworICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgWyAlMDJkIF0gOiAlbGxkXHRcdCglMDMuMmYlJSlcbiIs
IGksIHNfZmxhZ0NvdW50c1tpXSwgKDEwMC4wICogc19mbGFnQ291bnRzW2ldKSAvIHRvdGFsKTsK
ICAgICAgICAgfQotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7
CiAgICAgfSBlbHNlCi0gICAgcHJpbnRmKCJcblNhbXBsaW5nRmxhZ3M6IG5vIHNhbXBsZXMuXG5c
biIpOworICAgIGRhdGFMb2coIlxuU2FtcGxpbmdGbGFnczogbm8gc2FtcGxlcy5cblxuIik7CiB9
CiB1aW50NjRfdCBTYW1wbGluZ0ZsYWdzOjpzX2ZsYWdDb3VudHNbMzNdOwogCkBAIC0xNTEsNyAr
MTUxLDcgQEAgdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpCiB2b2lkIFNhbXBsaW5nUmVnaW9u
OjpkdW1wSW50ZXJuYWwoKQogewogICAgIGlmICghc19zcGVjdHJ1bSkgewotICAgICAgICBwcmlu
dGYoIlxuU2FtcGxpbmdSZWdpb246IHdhcyBuZXZlciBzYW1wbGVkLlxuXG4iKTsKKyAgICAgICAg
ZGF0YUxvZygiXG5TYW1wbGluZ1JlZ2lvbjogd2FzIG5ldmVyIHNhbXBsZWQuXG5cbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTYxLDEwICsxNjEsMTAgQEAgdm9pZCBTYW1w
bGluZ1JlZ2lvbjo6ZHVtcEludGVybmFsKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNp
emUoKTsgaS0tOykKICAgICAgICAgdG90YWwgKz0gbGlzdFtpXS5jb3VudDsKICAgICAKLSAgICBw
cmludGYoIlxuU2FtcGxpbmdSZWdpb246IHNhbXBsZSBjb3VudHMgZm9yIHJlZ2lvbnM6ICglbHUg
c2FtcGxlcylcbiIsIHRvdGFsKTsKKyAgICBkYXRhTG9nKCJcblNhbXBsaW5nUmVnaW9uOiBzYW1w
bGUgY291bnRzIGZvciByZWdpb25zOiAoJWx1IHNhbXBsZXMpXG4iLCB0b3RhbCk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsaXN0LnNpemUoKTsgaS0tOykKLSAgICAgICAgcHJpbnRmKCIgICAg
JTMuMmxmJSUgICVzXG4iLCAoMTAwLjAgKiBsaXN0W2ldLmNvdW50KSAvIHRvdGFsLCBsaXN0W2ld
LmtleSk7CisgICAgICAgIGRhdGFMb2coIiAgICAlMy4ybGYlJSAgJXNcbiIsICgxMDAuMCAqIGxp
c3RbaV0uY291bnQpIC8gdG90YWwsIGxpc3RbaV0ua2V5KTsKIH0KICNlbHNlIC8vIEVOQUJMRShT
QU1QTElOR19SRUdJT05TKQogdm9pZCBTYW1wbGluZ1JlZ2lvbjo6ZHVtcCgpIHsgfQpAQCAtMzcz
LDEwICszNzMsMTAgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgLy8gKDIpIFByaW50IE9wY29kZSBzYW1wbGluZyByZXN1bHRzLgogCi0gICAgcHJpbnRm
KCJcbkJ5dGVjb2RlIHNhbXBsZXMgWypdXG4iKTsKLSAgICBwcmludGYoIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlICAgJSUgb2YgICAgICAgJSUgb2YgICAgIHwgICBjdGkgICAg
IGN0aSAlJVxuIik7Ci0gICAgcHJpbnRmKCJvcGNvZGUgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50ICAgICBWTSAgICAgICAgdG90YWwgICAgfCAgY291bnQgICBvZiBzZWxmXG4iKTsKLSAgICBw
cmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gICB8ICAtLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBkYXRhTG9nKCJcbkJ5dGVjb2Rl
IHNhbXBsZXMgWypdXG4iKTsKKyAgICBkYXRhTG9nKCIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhbXBsZSAgICUlIG9mICAgICAgICUlIG9mICAgICB8ICAgY3RpICAgICBjdGkgJSVcbiIp
OworICAgIGRhdGFMb2coIm9wY29kZSAgICAgICAgICAgICAgICAgICAgICAgY291bnQgICAgIFZN
ICAgICAgICB0b3RhbCAgICB8ICBjb3VudCAgIG9mIHNlbGZcbiIpOworICAgIGRhdGFMb2coIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICB8
ICAtLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bj
b2RlSURzOyArK2kpIHsKICAgICAgICAgbG9uZyBsb25nIGNvdW50ID0gb3Bjb2RlU2FtcGxlSW5m
b1tpXS5jb3VudDsKQEAgLTM5MSwxOCArMzkxLDE4IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZG91YmxlIHBlcmNlbnRPZlRvdGFsID0gKHN0YXRp
Y19jYXN0PGRvdWJsZT4oY291bnQpICogMTAwKSAvIG1fc2FtcGxlQ291bnQ7CiAgICAgICAgIGxv
bmcgbG9uZyBjb3VudEluQ1RJRnVuY3Rpb25zID0gb3Bjb2RlU2FtcGxlSW5mb1tpXS5jb3VudElu
Q1RJRnVuY3Rpb25zOwogICAgICAgICBkb3VibGUgcGVyY2VudEluQ1RJRnVuY3Rpb25zID0gKHN0
YXRpY19jYXN0PGRvdWJsZT4oY291bnRJbkNUSUZ1bmN0aW9ucykgKiAxMDApIC8gY291bnQ7Ci0g
ICAgICAgIGZwcmludGYoc3Rkb3V0LCAiJXM6JXMlLTZsbGQgJS4zZiUlXHQlLjNmJSVcdCAgfCAg
ICUtNmxsZCAlLjNmJSVcbiIsIG9wY29kZU5hbWUsIG9wY29kZVBhZGRpbmcsIGNvdW50LCBwZXJj
ZW50T2ZWTSwgcGVyY2VudE9mVG90YWwsIGNvdW50SW5DVElGdW5jdGlvbnMsIHBlcmNlbnRJbkNU
SUZ1bmN0aW9ucyk7CisgICAgICAgIGRlYnVnRGVidWdQcmludGYoIiVzOiVzJS02bGxkICUuM2Yl
JVx0JS4zZiUlXHQgIHwgICAlLTZsbGQgJS4zZiUlXG4iLCBvcGNvZGVOYW1lLCBvcGNvZGVQYWRk
aW5nLCBjb3VudCwgcGVyY2VudE9mVk0sIHBlcmNlbnRPZlRvdGFsLCBjb3VudEluQ1RJRnVuY3Rp
b25zLCBwZXJjZW50SW5DVElGdW5jdGlvbnMpOwogICAgIH0KICAgICAKLSAgICBwcmludGYoIlxu
WypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgbm90IGNoYXJnZWQgdG8gYW55IEJ5dGVj
b2RlLlxuXG4iKTsKLSAgICBwcmludGYoIlx0U2FtcGxlcyBpbnNpZGUgVk06XHRcdCVsbGQgLyAl
bGxkICglLjNmJSUpXG4iLCBtX29wY29kZVNhbXBsZUNvdW50LCBtX3NhbXBsZUNvdW50LCAoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihtX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBsZUNv
dW50KTsKLSAgICBwcmludGYoIlx0U2FtcGxlcyBpbnNpZGUgaG9zdCBjb2RlOlx0JWxsZCAvICVs
bGQgKCUuM2YlJSlcblxuIiwgbV9zYW1wbGVDb3VudCAtIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1f
c2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fc2FtcGxlQ291bnQgLSBtX29wY29k
ZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBsZUNvdW50KTsKLSAgICBwcmludGYoIlx0c2Ft
cGxlIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgdGhpcyBvcGNvZGVcbiIpOwotICAgIHByaW50Zigi
XHQlJSBvZiBWTTpcdHNhbXBsZSBjb3VudCAvIGFsbCBvcGNvZGUgc2FtcGxlc1xuIik7Ci0gICAg
cHJpbnRmKCJcdCUlIG9mIHRvdGFsOlx0c2FtcGxlIGNvdW50IC8gYWxsIHNhbXBsZXNcbiIpOwot
ICAgIHByaW50ZigiXHQtLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgcHJpbnRmKCJcdGN0aSBjb3Vu
dDpcdHNhbXBsZXMgaW5zaWRlIGEgQ1RJIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGlzIG9wY29kZVxu
Iik7Ci0gICAgcHJpbnRmKCJcdGN0aSAlJSBvZiBzZWxmOlx0Y3RpIGNvdW50IC8gc2FtcGxlIGNv
dW50XG4iKTsKKyAgICBkYXRhTG9nKCJcblsqXSBTYW1wbGVzIGluc2lkZSBob3N0IGNvZGUgYXJl
IG5vdCBjaGFyZ2VkIHRvIGFueSBCeXRlY29kZS5cblxuIik7CisgICAgZGF0YUxvZygiXHRTYW1w
bGVzIGluc2lkZSBWTTpcdFx0JWxsZCAvICVsbGQgKCUuM2YlJSlcbiIsIG1fb3Bjb2RlU2FtcGxl
Q291bnQsIG1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fb3Bjb2RlU2FtcGxl
Q291bnQpICogMTAwKSAvIG1fc2FtcGxlQ291bnQpOworICAgIGRhdGFMb2coIlx0U2FtcGxlcyBp
bnNpZGUgaG9zdCBjb2RlOlx0JWxsZCAvICVsbGQgKCUuM2YlJSlcblxuIiwgbV9zYW1wbGVDb3Vu
dCAtIG1fb3Bjb2RlU2FtcGxlQ291bnQsIG1fc2FtcGxlQ291bnQsIChzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1fc2FtcGxlQ291bnQgLSBtX29wY29kZVNhbXBsZUNvdW50KSAqIDEwMCkgLyBtX3NhbXBs
ZUNvdW50KTsKKyAgICBkYXRhTG9nKCJcdHNhbXBsZSBjb3VudDpcdHNhbXBsZXMgaW5zaWRlIHRo
aXMgb3Bjb2RlXG4iKTsKKyAgICBkYXRhTG9nKCJcdCUlIG9mIFZNOlx0c2FtcGxlIGNvdW50IC8g
YWxsIG9wY29kZSBzYW1wbGVzXG4iKTsKKyAgICBkYXRhTG9nKCJcdCUlIG9mIHRvdGFsOlx0c2Ft
cGxlIGNvdW50IC8gYWxsIHNhbXBsZXNcbiIpOworICAgIGRhdGFMb2coIlx0LS0tLS0tLS0tLS0t
LS1cbiIpOworICAgIGRhdGFMb2coIlx0Y3RpIGNvdW50Olx0c2FtcGxlcyBpbnNpZGUgYSBDVEkg
ZnVuY3Rpb24gY2FsbGVkIGJ5IHRoaXMgb3Bjb2RlXG4iKTsKKyAgICBkYXRhTG9nKCJcdGN0aSAl
JSBvZiBzZWxmOlx0Y3RpIGNvdW50IC8gc2FtcGxlIGNvdW50XG4iKTsKICAgICAKICNpZiBFTkFC
TEUoQ09ERUJMT0NLX1NBTVBMSU5HKQogCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBTYW1wbGlu
Z1Rvb2w6OmR1bXAoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gKDQpIFByaW50IGRhdGEgZnJv
bSAnY29kZUJsb2NrU2FtcGxlcycgYXJyYXkuCiAKLSAgICBwcmludGYoIlxuQ29kZUJsb2NrIHNh
bXBsZXNcblxuIik7IAorICAgIGRhdGFMb2coIlxuQ29kZUJsb2NrIHNhbXBsZXNcblxuIik7IAog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzY29wZUNvdW50OyArK2kpIHsKICAgICAgICAgU2Ny
aXB0U2FtcGxlUmVjb3JkKiByZWNvcmQgPSBjb2RlQmxvY2tTYW1wbGVzW2ldOwpAQCAtNDI4LDIx
ICs0MjgsMjEgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgICAgIGlmIChibG9ja1BlcmNlbnQgPj0gMSkgewogICAgICAgICAgICAgLy9JbnN0cnVjdGlv
biogY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgICAg
IHByaW50ZigiIyVkOiAlczolZDogJWQgLyAlbGxkICglLjNmJSUpXG4iLCBpICsgMSwgcmVjb3Jk
LT5tX2V4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLnV0ZjgoKS5kYXRhKCksIGNvZGVCbG9jay0+bGlu
ZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KDApLCByZWNvcmQtPm1fc2FtcGxlQ291bnQsIG1fc2Ft
cGxlQ291bnQsIGJsb2NrUGVyY2VudCk7CisgICAgICAgICAgICBkYXRhTG9nKCIjJWQ6ICVzOiVk
OiAlZCAvICVsbGQgKCUuM2YlJSlcbiIsIGkgKyAxLCByZWNvcmQtPm1fZXhlY3V0YWJsZS0+c291
cmNlVVJMKCkudXRmOCgpLmRhdGEoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVP
ZmZzZXQoMCksIHJlY29yZC0+bV9zYW1wbGVDb3VudCwgbV9zYW1wbGVDb3VudCwgYmxvY2tQZXJj
ZW50KTsKICAgICAgICAgICAgIGlmIChpIDwgMTApIHsKICAgICAgICAgICAgICAgICBIYXNoTWFw
PHVuc2lnbmVkLHVuc2lnbmVkPiBsaW5lQ291bnRzOwogICAgICAgICAgICAgICAgIGNvZGVCbG9j
ay0+ZHVtcChleGVjKTsKIAotICAgICAgICAgICAgICAgIHByaW50ZigiICAgIE9wY29kZSBhbmQg
bGluZSBudW1iZXIgc2FtcGxlcyBbKl1cblxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIE9wY29kZSBhbmQgbGluZSBudW1iZXIgc2FtcGxlcyBbKl1cblxuIik7CiAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBvcCA9IDA7IG9wIDwgcmVjb3JkLT5tX3NpemU7ICsrb3ApIHsK
ICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gcmVjb3JkLT5tX3NhbXBsZXNbb3BdOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiICAgIFslIDRkXSBoYXMgc2FtcGxlIGNvdW50OiAlIDRkXG4iLCBvcCwgY291bnQp
OworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFslIDRkXSBoYXMgc2FtcGxl
IGNvdW50OiAlIDRkXG4iLCBvcCwgY291bnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbGluZSA9IGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KG9wKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVDb3VudHMuc2V0KGxpbmUsIChsaW5lQ291bnRz
LmNvbnRhaW5zKGxpbmUpID8gbGluZUNvdW50cy5nZXQobGluZSkgOiAwKSArIGNvdW50KTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBw
cmludGYoIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKIAogICAgICAgICAg
ICAgICAgIGludCBsaW5lc0NvdW50ID0gbGluZUNvdW50cy5zaXplKCk7CiAgICAgICAgICAgICAg
ICAgVmVjdG9yPExpbmVDb3VudEluZm8+IGxpbmVDb3VudEluZm8obGluZXNDb3VudCk7CkBAIC00
NTUsMTIgKzQ1NSwxMiBAQCB2b2lkIFNhbXBsaW5nVG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICAgICAgcXNvcnQobGluZUNvdW50SW5mby5iZWdpbigpLCBsaW5lc0NvdW50
LCBzaXplb2YoTGluZUNvdW50SW5mbyksIGNvbXBhcmVMaW5lQ291bnRJbmZvU2FtcGxpbmcpOwog
CiAgICAgICAgICAgICAgICAgZm9yIChsaW5lbm8gPSAwOyBsaW5lbm8gPCBsaW5lc0NvdW50OyAr
K2xpbmVubykgewotICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgICBMaW5lICMlZCBoYXMg
c2FtcGxlIGNvdW50ICVkLlxuIiwgbGluZUNvdW50SW5mb1tsaW5lbm9dLmxpbmUsIGxpbmVDb3Vu
dEluZm9bbGluZW5vXS5jb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBM
aW5lICMlZCBoYXMgc2FtcGxlIGNvdW50ICVkLlxuIiwgbGluZUNvdW50SW5mb1tsaW5lbm9dLmxp
bmUsIGxpbmVDb3VudEluZm9bbGluZW5vXS5jb3VudCk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICBb
Kl0gU2FtcGxlcyBpbnNpZGUgaG9zdCBjb2RlIGFyZSBjaGFyZ2VkIHRvIHRoZSBjYWxsaW5nIEJ5
dGVjb2RlLlxuIik7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICAgIFNhbXBsZXMgb24g
YSBjYWxsIC8gcmV0dXJuIGJvdW5kYXJ5IGFyZSBub3QgY2hhcmdlZCB0byBhIHNwZWNpZmljIG9w
Y29kZSBvciBsaW5lLlxuXG4iKTsKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgICAgICAg
IFNhbXBsZXMgb24gYSBjYWxsIC8gcmV0dXJuIGJvdW5kYXJ5OiAlZCAvICVkICglLjNmJSUpXG5c
biIsIHJlY29yZC0+bV9zYW1wbGVDb3VudCAtIHJlY29yZC0+bV9vcGNvZGVTYW1wbGVDb3VudCwg
cmVjb3JkLT5tX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWNvcmQtPm1fc2Ft
cGxlQ291bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxlQ291bnQpICogMTAwKSAvIHJlY29yZC0+
bV9zYW1wbGVDb3VudCk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgWypdIFNhbXBsZXMgaW5zaWRlIGhvc3QgY29kZSBhcmUgY2hh
cmdlZCB0byB0aGUgY2FsbGluZyBCeXRlY29kZS5cbiIpOworICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgICAgU2FtcGxlcyBvbiBhIGNhbGwgLyByZXR1cm4gYm91bmRhcnkgYXJlIG5vdCBj
aGFyZ2VkIHRvIGEgc3BlY2lmaWMgb3Bjb2RlIG9yIGxpbmUuXG5cbiIpOworICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgICAgICAgIFNhbXBsZXMgb24gYSBjYWxsIC8gcmV0dXJuIGJvdW5k
YXJ5OiAlZCAvICVkICglLjNmJSUpXG5cbiIsIHJlY29yZC0+bV9zYW1wbGVDb3VudCAtIHJlY29y
ZC0+bV9vcGNvZGVTYW1wbGVDb3VudCwgcmVjb3JkLT5tX3NhbXBsZUNvdW50LCAoc3RhdGljX2Nh
c3Q8ZG91YmxlPihyZWNvcmQtPm1fc2FtcGxlQ291bnQgLSByZWNvcmQtPm1fb3Bjb2RlU2FtcGxl
Q291bnQpICogMTAwKSAvIHJlY29yZC0+bV9zYW1wbGVDb3VudCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxNCAr
MTUzLDE0IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICBp
ZiAobWVyZ2VNb2RlICE9IERvbnRNZXJnZSB8fCAhQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBibG9jay0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpIHsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIiAgICAgICAgTWVy
Z2luZyBzdGF0ZSBmb3IgYXJndW1lbnQgJXp1LlxuIiwgYXJndW1lbnQpOworICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgICBNZXJnaW5nIHN0YXRlIGZvciBhcmd1bWVudCAlenUuXG4iLCBhcmd1
bWVudCk7CiAjZW5kaWYKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChi
bG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSwgbV92YXJpYWJsZXMuYXJndW1l
bnQoYXJndW1lbnQpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9j
YWwgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBw
cmludGYoIiAgICAgICAgTWVyZ2luZyBzdGF0ZSBmb3IgbG9jYWwgJXp1LlxuIiwgbG9jYWwpOwor
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBNZXJnaW5nIHN0YXRlIGZvciBsb2NhbCAlenUu
XG4iLCBsb2NhbCk7CiAjZW5kaWYKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VTdGF0ZUF0
VGFpbChibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKSwgbV92YXJpYWJsZXMubG9jYWwo
bG9jYWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CiAgICAgICAgIH0K
QEAgLTkzNyw3ICs5MzcsNyBAQCBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRl
QXRUCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIiAgICAgICAgICBJdCdzIGxp
dmUsIG5vZGUgQCV1LlxuIiwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgICBJdCdzIGxpdmUsIG5vZGUgQCV1LlxuIiwgbm9kZUluZGV4KTsKICNlbmRpZgogCiAgICAg
c3dpdGNoIChub2RlLm9wKSB7CkBAIC05NDcsNyArOTQ3LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAvLyBUaGUgYmxvY2sgdHJhbnNmZXJzIHRo
ZSB2YWx1ZSBmcm9tIGhlYWQgdG8gdGFpbC4KICAgICAgICAgc291cmNlID0gJmluVmFyaWFibGU7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmlu
dGYoIiAgICAgICAgICBUcmFuc2ZlcmluZyBmcm9tIGhlYWQgdG8gdGFpbC5cbiIpOworICAgICAg
ICBkYXRhTG9nKCIgICAgICAgICAgVHJhbnNmZXJpbmcgZnJvbSBoZWFkIHRvIHRhaWwuXG4iKTsK
ICNlbmRpZgogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtOTU1LDcgKzk1NSw3IEBA
IGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgLy8gVGhl
IGJsb2NrIHJlZmluZXMgdGhlIHZhbHVlIHdpdGggYWRkaXRpb25hbCBzcGVjdWxhdGlvbnMuCiAg
ICAgICAgIHNvdXJjZSA9ICZmb3JOb2RlKG5vZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICAgICAgICBSZWZpbmlu
Zy5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgUmVmaW5pbmcuXG4iKTsKICNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtOTY0LDcgKzk2NCw3IEBAIGlubGlu
ZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgLy8gYmVmb3JlIGFu
ZCBhZnRlciBzZXR0aW5nIGl0LgogICAgICAgICBzb3VyY2UgPSAmZm9yTm9kZShub2RlLmNoaWxk
MSgpKTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiICAgICAgICAgIFNldHRpbmcuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAg
ICAgIFNldHRpbmcuXG4iKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC05
NzgsNyArOTc4LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAog
ICAgICAgICAvLyBBYnN0cmFjdCBleGVjdXRpb24gZGlkIG5vdCBjaGFuZ2UgdGhlIG91dHB1dCB2
YWx1ZSBvZiB0aGUgdmFyaWFibGUsIGZvciB0aGlzCiAgICAgICAgIC8vIGJhc2ljIGJsb2NrLCBv
biB0aGlzIGl0ZXJhdGlvbi4KICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJP
U0UpCi0gICAgICAgIHByaW50ZigiICAgICAgICAgIE5vdCBjaGFuZ2VkIVxuIik7CisgICAgICAg
IGRhdGFMb2coIiAgICAgICAgICBOb3QgY2hhbmdlZCFcbiIpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC05ODgsNyArOTg4LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgIC8vIHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUg
Zml4cG9pbnQgbXVzdCBnbyBvbiEKICAgICBkZXN0aW5hdGlvbiA9ICpzb3VyY2U7CiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgIHByaW50ZigiICAgICAgICAg
IENoYW5nZWQhXG4iKTsKKyAgICBkYXRhTG9nKCIgICAgICAgICAgQ2hhbmdlZCFcbiIpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4OSw3ICs1ODksNyBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlQocHJvZmlsZSk7CiAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJp
bnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBi
eXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOworICAgICAgICBk
YXRhTG9nKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4
LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlm
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcHJlZGljdGlvbjsKQEAgLTYyNiw3ICs2MjYsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIk1ha2luZyAlcyBAJXUg
c2FmZSBhdCBiYyMldSBiZWNhdXNlIHNsb3ctY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBleGl0
IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5kZXhd
Lm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRl
eCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKTsKKyAgICAgICAg
ZGF0YUxvZygiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJlY2F1c2Ugc2xvdy1jYXNlIGNv
dW50ZXIgaXMgYXQgJXUgYW5kIGV4aXQgcHJvZmlsZXMgc2F5ICVkLCAlZFxuIiwgR3JhcGg6Om9w
TmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3ApLCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdyksIG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5l
Z2F0aXZlWmVybykpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fZ3JhcGhb
bm9kZUluZGV4XS5vcCkgewpAQCAtNjQyLDEzICs2NDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZURl
ZXBlc3RTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKICAgICAgICAgICAgICAgICB8fCBtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVy
ZmxvdykpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAg
cHJpbnRmKCJNYWtpbmcgQXJpdGhNdWwgQCV1IHRha2UgZGVlcGVzdCBzbG93IGNhc2UuXG4iLCBu
b2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIk1ha2luZyBBcml0aE11bCBAJXUg
dGFrZSBkZWVwZXN0IHNsb3cgY2FzZS5cbiIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICAgICAg
ICAgICAgICBtX2dyYXBoW25vZGVJbmRleF0ubWVyZ2VBcml0aE5vZGVGbGFncyhOb2RlTWF5T3Zl
cmZsb3cgfCBOb2RlTWF5TmVnWmVybyk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50
SW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpIHsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJNYWtp
bmcgQXJpdGhNdWwgQCV1IHRha2UgZmFzdGVyIHNsb3cgY2FzZS5cbiIsIG5vZGVJbmRleCk7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiTWFraW5nIEFyaXRoTXVsIEAldSB0YWtlIGZhc3RlciBz
bG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgbV9ncmFw
aFtub2RlSW5kZXhdLm1lcmdlQXJpdGhOb2RlRmxhZ3MoTm9kZU1heU5lZ1plcm8pOwogICAgICAg
ICAgICAgfQpAQCAtNjc4LDcgKzY3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4g
bm9kZUluZGV4OwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAg
ICAgIHByaW50ZigiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1IGJlY2F1c2Ugc3BlY2lhbCBm
YXN0LWNhc2UgY291bnRlciBpcyBhdCAldSBhbmQgZXhpdCBwcm9maWxlcyBzYXkgJWQsICVkXG4i
LCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5vZGVJbmRleCwgbV9jdXJy
ZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+c3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBPdmVyZmxvdyksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpOworICAgICAgICBkYXRhTG9nKCJNYWtpbmcg
JXMgQCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlz
IGF0ICV1IGFuZCBleGl0IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9n
cmFwaFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVn
YXRpdmVaZXJvKSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdo
dCBiZSBwb3NzaWJsZSB0byBtYWtlIHRoaXMgbW9yZSBncmFudWxhci4gVGhlIERGRyBjZXJ0YWlu
bHkgY2FuCkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bChJbnRlcnByZQogICAgIGVudW0geyBDb25zdGFudEZ1bmN0aW9uLCBMaW5rZWRGdW5jdGlvbiwg
VW5rbm93bkZ1bmN0aW9uIH0gY2FsbFR5cGU7CiAgICAgICAgICAgICAKICNpZiBERkdfRU5BQkxF
KERFQlVHX1ZFUkJPU0UpCi0gICAgcHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQg
QCV6dSBiYyMldTogJXUvJXU7IGV4aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwg
bV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDYWNoZSkpOworICAgIGRhdGFMb2coIlNsb3cgY2FzZSBjb3VudCBmb3IgY2FsbCBhdCBA
JXp1IGJjIyV1OiAldS8ldTsgZXhpdCBwcm9maWxlOiAlZC5cbiIsIG1fZ3JhcGguc2l6ZSgpLCBt
X2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5leGVjdXRpb25FbnRyeUNvdW50KCksIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CiAjZW5kaWYKICAgICAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0
YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKApAQCAtMTAyOSw3ICsxMDI5LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIEFTU0VSVChjYW5J
bmxpbmVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIGtpbmQpKTsKIAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICBwcmludGYoIklubGluaW5nIGV4ZWN1dGFibGUgJXAuXG4iLCBleGVj
dXRhYmxlKTsKKyAgICBkYXRhTG9nKCJJbmxpbmluZyBleGVjdXRhYmxlICVwLlxuIiwgZXhlY3V0
YWJsZSk7CiAjZW5kaWYKICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB3aXRob3V0IGEgZG91YnQg
dGhhdCB3ZSBhcmUgY29tbWl0dGVkIHRvIGlubGluaW5nLiBTbyBiZWdpbiB0aGUgcHJvY2VzcwpA
QCAtMTExMCw3ICsxMTEwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
Ym9vbAogICAgICAgICAvLyBjYWxsZXIuIEl0IGRvZXNuJ3QgbmVlZCB0byBiZSBsaW5rZWQgdG8s
IGJ1dCBpdCBuZWVkcyBvdXRnb2luZyBsaW5rcy4KICAgICAgICAgaWYgKCFpbmxpbmVTdGFja0Vu
dHJ5Lm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCJSZWFzY3JpYmluZyBieXRlY29kZSBpbmRleCBv
ZiBibG9jayAlcCBmcm9tIGJjIyV1IHRvIGJjIyV1IChpbmxpbmUgcmV0dXJuIGNhc2UpLlxuIiwg
bGFzdEJsb2NrLCBsYXN0QmxvY2stPmJ5dGVjb2RlQmVnaW4sIG1fY3VycmVudEluZGV4KTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlJlYXNjcmliaW5nIGJ5dGVjb2RlIGluZGV4IG9mIGJsb2NrICVw
IGZyb20gYmMjJXUgdG8gYmMjJXUgKGlubGluZSByZXR1cm4gY2FzZSkuXG4iLCBsYXN0QmxvY2ss
IGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiwgbV9jdXJyZW50SW5kZXgpOwogI2VuZGlmCiAgICAg
ICAgICAgICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzZXQgdGhlIGJ5dGVjb2RlQmVnaW4u
IE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgbWF0dGVyCiAgICAgICAgICAgICAvLyBmb3IgcmVsZWFz
ZSBidWlsZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2VydmUgYXMgYSBwb3RlbnRp
YWwgdGFyZ2V0CkBAIC0xMTIyLDcgKzExMjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhib29sCiAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nr
cy5sYXN0KCkuZ2V0KCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiRG9uZSBpbmxpbmluZyBleGVjdXRhYmxlICVwLCBjb250aW51aW5nIGNvZGUgZ2Vu
ZXJhdGlvbiBhdCBlcGlsb2d1ZS5cbiIsIGV4ZWN1dGFibGUpOworICAgICAgICBkYXRhTG9nKCJE
b25lIGlubGluaW5nIGV4ZWN1dGFibGUgJXAsIGNvbnRpbnVpbmcgY29kZSBnZW5lcmF0aW9uIGF0
IGVwaWxvZ3VlLlxuIiwgZXhlY3V0YWJsZSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoYm9vbAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZv
ciB0aGUgY29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCiAgICAgT3duUHRyPEJhc2ljQmxvY2s+
IGJsb2NrID0gYWRvcHRQdHIobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9ncmFwaC5zaXpl
KCksIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscykpOwogI2lmIERGR19FTkFCTEUoREVCVUdf
VkVSQk9TRSkKLSAgICBwcmludGYoIkNyZWF0aW5nIGlubGluZSBlcGlsb2d1ZSBiYXNpYyBibG9j
ayAlcCwgIyV6dSBmb3IgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgYmxvY2suZ2V0
KCksIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpLCBtX2lubGluZVN0YWNrVG9wLT5leGVjdXRhYmxl
KCksIG1fY3VycmVudEluZGV4LCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZSht
X2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkpOworICAgIGRhdGFMb2coIkNyZWF0
aW5nIGlubGluZSBlcGlsb2d1ZSBiYXNpYyBibG9jayAlcCwgIyV6dSBmb3IgJXAgYmMjJXUgYXQg
aW5saW5lIGRlcHRoICV1LlxuIiwgYmxvY2suZ2V0KCksIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgp
LCBtX2lubGluZVN0YWNrVG9wLT5leGVjdXRhYmxlKCksIG1fY3VycmVudEluZGV4LCBDb2RlT3Jp
Z2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNh
bGxGcmFtZSkpOwogI2VuZGlmCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKICAg
ICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5pc0VtcHR5KCkgfHwgbV9ncmFwaC5tX2Jsb2Nrc1ttX2lubGluZVN0YWNrVG9wLT5tX2NhbGxl
ci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKV0tPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zm
c2V0KTsKQEAgLTExNjEsNyArMTE2MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKGJvb2wKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHJldHVybiBhbmQgY29udGludWUg
dG8gZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGNhbGxlciwgYnV0CiAgICAgLy8gaW4gdGhlIG5ldyBi
YXNpYyBibG9jay4KICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgcHJpbnRmKCJE
b25lIGlubGluaW5nIGV4ZWN1dGFibGUgJXAsIGNvbnRpbnVpbmcgY29kZSBnZW5lcmF0aW9uIGlu
IG5ldyBibG9jay5cbiIsIGV4ZWN1dGFibGUpOworICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcg
ZXhlY3V0YWJsZSAlcCwgY29udGludWluZyBjb2RlIGdlbmVyYXRpb24gaW4gbmV3IGJsb2NrLlxu
IiwgZXhlY3V0YWJsZSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEzNDMsNyAr
MTM0Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCkpOwogICAg
ICAgICAgICAgZWxzZSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAg
ICAgICAgIHByaW50ZigiUmVmdXNpbmcgdG8gcGxhbnQganVtcCBhdCBsaW1pdCAldSBiZWNhdXNl
IGJsb2NrICVwIGlzIGVtcHR5LlxuIiwgbGltaXQsIG1fY3VycmVudEJsb2NrKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJSZWZ1c2luZyB0byBwbGFudCBqdW1wIGF0IGxpbWl0ICV1IGJlY2F1
c2UgYmxvY2sgJXAgaXMgZW1wdHkuXG4iLCBsaW1pdCwgbV9jdXJyZW50QmxvY2spOwogI2VuZGlm
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQ29udGludWVQYXJzaW5n
OwpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgbV9jdXJyZW50SW5kZXgsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgCiAjaWYgREZHX0VO
QUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCJTbG93IGNhc2UgY291bnQg
Zm9yIEdldEJ5SWQgQCV6dSBiYyMldTogJXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGgu
c2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291
bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlNsb3cgY2FzZSBjb3Vu
dCBmb3IgR2V0QnlJZCBAJXp1IGJjIyV1OiAldTsgZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFw
aC5zaXplKCksIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9j
b3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRDYWNoZSkpOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChnZXRCeUlkU3RhdHVzLmlzU2ltcGxlRGlyZWN0KCkKQEAgLTE4MDcsNyArMTgwNyw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGJv
b2wgaGFzRXhpdFNpdGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSk7CiAgICAgICAgICAgICAKICNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIlNsb3cgY2FzZSBjb3VudCBm
b3IgUHV0QnlJZCBAJXp1IGJjIyV1OiAldTsgZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFwaC5z
aXplKCksIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
PnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3Vu
dGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRDYWNoZSkpOworICAgICAgICAgICAgZGF0YUxvZygiU2xvdyBjYXNlIGNvdW50
IGZvciBQdXRCeUlkIEAlenUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4iLCBtX2dyYXBo
LnNpemUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2Nv
dW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENhY2hlKSk7CiAjZW5kaWYgICAgICAgICAgICAKIAogICAgICAgICAgICAg
aWYgKCFoYXNFeGl0U2l0ZSAmJiBwdXRCeUlkU3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgpKSB7CkBA
IC0yMTg2LDEyICsyMTg2LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFj
aygpCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YUZvclBoaSA9IG1fZ3JhcGhbZW50
cnkubV9waGldLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgIEhhbmRsaW5nIHBoaSBlbnRy
eSBmb3IgdmFyICV1LCBwaGkgQCV1LlxuIiwgZW50cnkubV92YXJObywgZW50cnkubV9waGkpOwor
ICAgICAgICBkYXRhTG9nKCIgICBIYW5kbGluZyBwaGkgZW50cnkgZm9yIHZhciAldSwgcGhpIEAl
dS5cbiIsIGVudHJ5Lm1fdmFyTm8sIGVudHJ5Lm1fcGhpKTsKICNlbmRpZgogCiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZGVjZXNzb3JzLnNpemUoKTsgKytpKSB7CiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgcHJpbnRmKCIg
ICAgIERlYWxpbmcgd2l0aCBwcmVkZWNlc3NvciBibG9jayAldS5cbiIsIHByZWRlY2Vzc29yc1tp
XSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgIERlYWxpbmcgd2l0aCBwcmVkZWNlc3NvciBi
bG9jayAldS5cbiIsIHByZWRlY2Vzc29yc1tpXSk7CiAjZW5kaWYKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3JCbG9jayA9IG1fZ3JhcGgubV9ibG9ja3Nb
cHJlZGVjZXNzb3JzW2ldXS5nZXQoKTsKQEAgLTIyMDEsNyArMjIwMSw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWVJ
blByZWRlY2Vzc29yID0gdmFyOwogICAgICAgICAgICAgaWYgKHZhbHVlSW5QcmVkZWNlc3NvciA9
PSBOb05vZGUpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBEaWQgbm90IGZpbmQgbm9kZSwgYWRkaW5nIHBo
aS5cbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIERpZCBub3QgZmluZCBub2Rl
LCBhZGRpbmcgcGhpLlxuIik7CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgIHZhbHVlSW5QcmVk
ZWNlc3NvciA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8obmV3VmFyaWFibGVBY2Nlc3NEYXRhKHN0
YWNrVHlwZSA9PSBBcmd1bWVudFBoaVN0YWNrID8gYXJndW1lbnRUb09wZXJhbmQodmFyTm8pIDog
c3RhdGljX2Nhc3Q8aW50Pih2YXJObykpKSk7CkBAIC0yMjEzLDcgKzIyMTMsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgICAgIHBoaVN0YWNr
LmFwcGVuZChQaGlTdGFja0VudHJ5KHByZWRlY2Vzc29yQmxvY2ssIHZhbHVlSW5QcmVkZWNlc3Nv
ciwgdmFyTm8pKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9ncmFwaFt2YWx1ZUluUHJlZGVj
ZXNzb3JdLm9wID09IEdldExvY2FsKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgICAgRm91bmQgR2V0TG9jYWwg
QCV1LlxuIiwgdmFsdWVJblByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBGb3VuZCBHZXRMb2NhbCBAJXUuXG4iLCB2YWx1ZUluUHJlZGVjZXNzb3IpOwogI2VuZGlm
CiAKICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBWYXJpYWJs
ZUFjY2Vzc0RhdGFzIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUKQEAgLTIyMjUsNyArMjIyNSw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgICAgICAgICAg
ICAgdmFsdWVJblByZWRlY2Vzc29yID0gbV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLmNoaWxk
MSgpLmluZGV4KCk7CiAgICAgICAgICAgICB9IGVsc2UgewogI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgIEZvdW5k
IEAldS5cbiIsIHZhbHVlSW5QcmVkZWNlc3Nvcik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgRm91bmQgQCV1LlxuIiwgdmFsdWVJblByZWRlY2Vzc29yKTsKICNlbmRpZgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5v
cCA9PSBTZXRMb2NhbCB8fCBtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3AgPT0gUGhpIHx8
IG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5vcCA9PSBGbHVzaCB8fCAobV9ncmFwaFt2YWx1
ZUluUHJlZGVjZXNzb3JdLm9wID09IFNldEFyZ3VtZW50ICYmIHN0YWNrVHlwZSA9PSBBcmd1bWVu
dFBoaVN0YWNrKSk7CkBAIC0yMjM2LDQ4ICsyMjM2LDQ4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnByb2Nlc3NQaGlTdGFjaygpCiAKICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSAmbV9ncmFw
aFtlbnRyeS5tX3BoaV07CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICAgICAgcHJpbnRmKCIgICAgICBSZWYgY291bnQgb2YgQCV1ID0gJXUuXG4iLCBl
bnRyeS5tX3BoaSwgcGhpTm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBSZWYgY291bnQgb2YgQCV1ID0gJXUuXG4iLCBlbnRyeS5tX3BoaSwgcGhpTm9kZS0+cmVm
Q291bnQoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChwaGlOb2RlLT5yZWZDb3VudCgpKSB7
CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAg
ICAgIHByaW50ZigiICAgICAgUmVmZmluZyBAJXUuXG4iLCB2YWx1ZUluUHJlZGVjZXNzb3IpOwor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFJlZmZpbmcgQCV1LlxuIiwgdmFsdWVJblBy
ZWRlY2Vzc29yKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVmKHZhbHVlSW5Q
cmVkZWNlc3Nvcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghcGhpTm9kZS0+
Y2hpbGQxKCkpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICAgICAgcHJpbnRmKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQxID0gQCV1Llxu
IiwgZW50cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CisgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgU2V0dGluZyBAJXUtPmNoaWxkMSA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2
YWx1ZUluUHJlZGVjZXNzb3IpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgcGhpTm9kZS0+Y2hp
bGRyZW4uc2V0Q2hpbGQxKE5vZGVVc2UodmFsdWVJblByZWRlY2Vzc29yKSk7CiAjaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50Zigi
ICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7Ci0gICAgICAgICAgICAgICAg
cGhpTm9kZS0+ZHVtcENoaWxkcmVuKHN0ZG91dCk7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIu
XG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIs
IGVudHJ5Lm1fcGhpKTsKKyAgICAgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RG
OjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIuXG4iKTsKICNlbmRpZgog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFwaGlOb2RlLT5jaGlsZDIoKSkgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKLSAgICAgICAgICAgICAgICBwcmludGYoIiAgICAgIFNldHRpbmcgQCV1LT5jaGls
ZDIgPSBAJXUuXG4iLCBlbnRyeS5tX3BoaSwgdmFsdWVJblByZWRlY2Vzc29yKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICBTZXR0aW5nIEAldS0+Y2hpbGQyID0gQCV1LlxuIiwgZW50
cnkubV9waGksIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBw
aGlOb2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoTm9kZVVzZSh2YWx1ZUluUHJlZGVjZXNzb3IpKTsK
ICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAg
ICAgcHJpbnRmKCIgICAgICBDaGlsZHJlbiBvZiBAJXU6ICIsIGVudHJ5Lm1fcGhpKTsKLSAgICAg
ICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oc3Rkb3V0KTsKLSAgICAgICAgICAgICAg
ICBwcmludGYoIi5cbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIENoaWxkcmVu
IG9mIEAldTogIiwgZW50cnkubV9waGkpOworICAgICAgICAgICAgICAgIHBoaU5vZGUtPmR1bXBD
aGlsZHJlbihXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIi5cbiIp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoIXBoaU5vZGUtPmNoaWxkMygpKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgICAgU2V0dGlu
ZyBAJXUtPmNoaWxkMyA9IEAldS5cbiIsIGVudHJ5Lm1fcGhpLCB2YWx1ZUluUHJlZGVjZXNzb3Ip
OworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFNldHRpbmcgQCV1LT5jaGlsZDMgPSBA
JXUuXG4iLCBlbnRyeS5tX3BoaSwgdmFsdWVJblByZWRlY2Vzc29yKTsKICNlbmRpZgogICAgICAg
ICAgICAgICAgIHBoaU5vZGUtPmNoaWxkcmVuLnNldENoaWxkMyhOb2RlVXNlKHZhbHVlSW5QcmVk
ZWNlc3NvcikpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgICAgICAgICBwcmludGYoIiAgICAgIENoaWxkcmVuIG9mIEAldTogIiwgZW50cnkubV9w
aGkpOwotICAgICAgICAgICAgICAgIHBoaU5vZGUtPmR1bXBDaGlsZHJlbihzdGRvdXQpOwotICAg
ICAgICAgICAgICAgIHByaW50ZigiLlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
ICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5tX3BoaSk7CisgICAgICAgICAgICAgICAgcGhp
Tm9kZS0+ZHVtcENoaWxkcmVuKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAgICAgICAgICAgZGF0
YUxvZygiLlxuIik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KQEAgLTIyODUsNyArMjI4NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQ
aGlTdGFjaygpCiAgICAgICAgICAgICBOb2RlSW5kZXggbmV3UGhpID0gYWRkVG9HcmFwaChQaGks
IE9wSW5mbyhkYXRhRm9yUGhpKSk7CiAgICAgICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIiAgICAgIFNwbGl0dGlu
ZyBAJXUsIGNyZWF0ZWQgQCV1LlxuIiwgZW50cnkubV9waGksIG5ld1BoaSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgICBTcGxpdHRpbmcgQCV1LCBjcmVhdGVkIEAldS5cbiIsIGVudHJ5Lm1f
cGhpLCBuZXdQaGkpOwogI2VuZGlmCiAKICAgICAgICAgICAgIHBoaU5vZGUgPSAmbV9ncmFwaFtl
bnRyeS5tX3BoaV07IC8vIHJlbG9hZCBhZnRlciB2ZWN0b3IgcmVzaXplCkBAIC0yMjk2LDE3ICsy
Mjk2LDE3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjaygpCiAgICAgICAg
ICAgICBuZXdQaGlOb2RlLmNoaWxkcmVuID0gcGhpTm9kZS0+Y2hpbGRyZW47CiAKICNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmludGYoIiAg
ICAgIENoaWxkcmVuIG9mIEAldTogIiwgbmV3UGhpKTsKLSAgICAgICAgICAgIG5ld1BoaU5vZGUu
ZHVtcENoaWxkcmVuKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAgICAg
ICAgICAgZGF0YUxvZygiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBuZXdQaGkpOworICAgICAg
ICAgICAgbmV3UGhpTm9kZS5kdW1wQ2hpbGRyZW4oV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIi5cbiIpOwogI2VuZGlmCiAKICAgICAgICAgICAgIHBoaU5vZGUtPmNoaWxk
cmVuLmluaXRpYWxpemUobmV3UGhpLCB2YWx1ZUluUHJlZGVjZXNzb3IsIE5vTm9kZSk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICBwcmlu
dGYoIiAgICAgIENoaWxkcmVuIG9mIEAldTogIiwgZW50cnkubV9waGkpOwotICAgICAgICAgICAg
cGhpTm9kZS0+ZHVtcENoaWxkcmVuKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIi5cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgQ2hpbGRyZW4gb2YgQCV1OiAiLCBlbnRyeS5t
X3BoaSk7CisgICAgICAgICAgICBwaGlOb2RlLT5kdW1wQ2hpbGRyZW4oV1RGOjpkYXRhRmlsZSgp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIi5cbiIpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9
CkBAIC0yMzI0LDcgKzIzMjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFz
aWNCbG9jCiAgICAgY2FzZSBKdW1wOgogICAgICAgICBub2RlLnNldFRha2VuQmxvY2tJbmRleCht
X2dyYXBoLmJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChwb3NzaWJsZVRhcmdldHMsIG5vZGUu
dGFrZW5CeXRlY29kZU9mZnNldER1cmluZ1BhcnNpbmcoKSkpOwogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJMaW5rZWQgYmFzaWMgYmxvY2sgJXAgdG8gJXAs
ICMldS5cbiIsIGJsb2NrLCBtX2dyYXBoLm1fYmxvY2tzW25vZGUudGFrZW5CbG9ja0luZGV4KCld
LmdldCgpLCBub2RlLnRha2VuQmxvY2tJbmRleCgpKTsKKyAgICAgICAgZGF0YUxvZygiTGlua2Vk
IGJhc2ljIGJsb2NrICVwIHRvICVwLCAjJXUuXG4iLCBibG9jaywgbV9ncmFwaC5tX2Jsb2Nrc1tu
b2RlLnRha2VuQmxvY2tJbmRleCgpXS5nZXQoKSwgbm9kZS50YWtlbkJsb2NrSW5kZXgoKSk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMjMzMiwxMyArMjMzMiwxMyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jCiAgICAgICAgIG5vZGUuc2V0
VGFrZW5CbG9ja0luZGV4KG1fZ3JhcGguYmxvY2tJbmRleEZvckJ5dGVjb2RlT2Zmc2V0KHBvc3Np
YmxlVGFyZ2V0cywgbm9kZS50YWtlbkJ5dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygpKSk7CiAg
ICAgICAgIG5vZGUuc2V0Tm90VGFrZW5CbG9ja0luZGV4KG1fZ3JhcGguYmxvY2tJbmRleEZvckJ5
dGVjb2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgbm9kZS5ub3RUYWtlbkJ5dGVjb2RlT2Zmc2V0
RHVyaW5nUGFyc2luZygpKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAg
ICBwcmludGYoIkxpbmtlZCBiYXNpYyBibG9jayAlcCB0byAlcCwgIyV1IGFuZCAlcCwgIyV1Llxu
IiwgYmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCks
IG5vZGUudGFrZW5CbG9ja0luZGV4KCksIG1fZ3JhcGgubV9ibG9ja3Nbbm9kZS5ub3RUYWtlbkJs
b2NrSW5kZXgoKV0uZ2V0KCksIG5vZGUubm90VGFrZW5CbG9ja0luZGV4KCkpOworICAgICAgICBk
YXRhTG9nKCJMaW5rZWQgYmFzaWMgYmxvY2sgJXAgdG8gJXAsICMldSBhbmQgJXAsICMldS5cbiIs
IGJsb2NrLCBtX2dyYXBoLm1fYmxvY2tzW25vZGUudGFrZW5CbG9ja0luZGV4KCldLmdldCgpLCBu
b2RlLnRha2VuQmxvY2tJbmRleCgpLCBtX2dyYXBoLm1fYmxvY2tzW25vZGUubm90VGFrZW5CbG9j
a0luZGV4KCldLmdldCgpLCBub2RlLm5vdFRha2VuQmxvY2tJbmRleCgpKTsKICNlbmRpZgogICAg
ICAgICBicmVhazsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKICNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiTWFya2luZyBiYXNpYyBibG9jayAlcCBhcyBsaW5r
ZWQuXG4iLCBibG9jayk7CisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgYmFzaWMgYmxvY2sgJXAg
YXMgbGlua2VkLlxuIiwgYmxvY2spOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTI0OTUsNyArMjQ5NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkK
ICAgICAgICAgLy8gVGhlIG1heGltdW0gYnl0ZWNvZGUgb2Zmc2V0IHRvIGdvIGludG8gdGhlIGN1
cnJlbnQgYmFzaWNibG9jayBpcyBlaXRoZXIgdGhlIG5leHQganVtcCB0YXJnZXQsIG9yIHRoZSBl
bmQgb2YgdGhlIGluc3RydWN0aW9ucy4KICAgICAgICAgdW5zaWduZWQgbGltaXQgPSBqdW1wVGFy
Z2V0SW5kZXggPCBjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSA/IGNvZGVCbG9jay0+
anVtcFRhcmdldChqdW1wVGFyZ2V0SW5kZXgpIDogY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIlBh
cnNpbmcgYnl0ZWNvZGUgd2l0aCBsaW1pdCAlcCBiYyMldSBhdCBpbmxpbmUgZGVwdGggJXUuXG4i
LCBtX2lubGluZVN0YWNrVG9wLT5leGVjdXRhYmxlKCksIGxpbWl0LCBDb2RlT3JpZ2luOjppbmxp
bmVEZXB0aEZvckNhbGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSkp
OworICAgICAgICBkYXRhTG9nKCJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGltaXQgJXAgYmMjJXUg
YXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVTdGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBs
aW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxpbmVTdGFja1Rv
cC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQobV9jdXJyZW50
SW5kZXggPCBsaW1pdCk7CiAKQEAgLTI1MTcsMTMgKzI1MTcsMTMgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgaXRz
IGJ5dGVjb2RlIGJlZ2luIGFuZCBjb250aW51ZS4KICAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKS5nZXQoKTsKICNpZiBERkdfRU5BQkxF
KERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVhc2NyaWJpbmcg
Ynl0ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0byBiYyMldSAocGVlcGhvbGUg
Y2FzZSkuXG4iLCBtX2N1cnJlbnRCbG9jaywgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4s
IG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVhc2NyaWJp
bmcgYnl0ZWNvZGUgaW5kZXggb2YgYmxvY2sgJXAgZnJvbSBiYyMldSB0byBiYyMldSAocGVlcGhv
bGUgY2FzZSkuXG4iLCBtX2N1cnJlbnRCbG9jaywgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVn
aW4sIG1fY3VycmVudEluZGV4KTsKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIE93blB0cjxCYXNpY0Jsb2NrPiBibG9jayA9
IGFkb3B0UHRyKG5ldyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBtX2dyYXBoLnNpemUoKSwg
bV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzKSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNyZWF0aW5nIGJhc2ljIGJsb2NrICVw
LCAjJXp1IGZvciAlcCBiYyMldSBhdCBpbmxpbmUgZGVwdGggJXUuXG4iLCBibG9jay5nZXQoKSwg
bV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCksIG1faW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwg
bV9jdXJyZW50SW5kZXgsIENvZGVPcmlnaW46OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5s
aW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkNyZWF0aW5nIGJhc2ljIGJsb2NrICVwLCAjJXp1IGZvciAlcCBiYyMldSBhdCBpbmxp
bmUgZGVwdGggJXUuXG4iLCBibG9jay5nZXQoKSwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCksIG1f
aW5saW5lU3RhY2tUb3AtPmV4ZWN1dGFibGUoKSwgbV9jdXJyZW50SW5kZXgsIENvZGVPcmlnaW46
OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9j
ay5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1f
dW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpIHx8IG1fZ3JhcGgubV9ibG9ja3NbbV9pbmxpbmVTdGFj
a1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9ja0luZGV4XS0+Ynl0ZWNvZGVCZWdp
biA8IG1fY3VycmVudEluZGV4KTsKQEAgLTI1NzEsMTQgKzI1NzEsMTQgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2UoKQogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlu
a2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAgICAg
ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgIHByaW50ZigiUHJvY2Vzc2luZyBsb2NhbCB2YXJpYWJsZSBwaGlzLlxu
Iik7CisgICAgZGF0YUxvZygiUHJvY2Vzc2luZyBsb2NhbCB2YXJpYWJsZSBwaGlzLlxuIik7CiAj
ZW5kaWYKICAgICAKICAgICBtX2N1cnJlbnRQcm9maWxpbmdJbmRleCA9IG1fY3VycmVudEluZGV4
OwogICAgIAogICAgIHByb2Nlc3NQaGlTdGFjazxMb2NhbFBoaVN0YWNrPigpOwogI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICBwcmludGYoIlByb2Nlc3Npbmcg
YXJndW1lbnQgcGhpcy5cbiIpOworICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYXJndW1lbnQgcGhp
cy5cbiIpOwogI2VuZGlmCiAgICAgcHJvY2Vzc1BoaVN0YWNrPEFyZ3VtZW50UGhpU3RhY2s+KCk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZp
c2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21w
aWxlTW9kZSBjb21waWxlTQogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CiAKICNpZiBERkdfRU5BQkxFKERF
QlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJERkcgY29tcGlsaW5nIGNvZGUgYmxv
Y2sgJXAoJXApLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gJXUuXG4iLCBjb2RlQmxvY2ssIGNv
ZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpOwor
ICAgIGRhdGFMb2coIkRGRyBjb21waWxpbmcgY29kZSBibG9jayAlcCglcCksIG51bWJlciBvZiBp
bnN0cnVjdGlvbnMgPSAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
LCBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSk7CiAjZW5kaWYKICAgICAKICAgICBHcmFw
aCBkZmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNp
b24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgY29uc3QgY2hhciogR3JhcGg6Om5hbWVPZlZh
cmlhYmxlQWNjZXNzRAogc3RhdGljIHZvaWQgcHJpbnRXaGl0ZVNwYWNlKHVuc2lnbmVkIGFtb3Vu
dCkKIHsKICAgICB3aGlsZSAoYW1vdW50LS0gPiAwKQotICAgICAgICBwcmludGYoIiAiKTsKKyAg
ICAgICAgZGF0YUxvZygiICIpOwogfQogCiB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihOb2Rl
SW5kZXggbm9kZUluZGV4KQpAQCAtMTA3LDEzICsxMDcsMTMgQEAgdm9pZCBHcmFwaDo6ZHVtcENv
ZGVPcmlnaW4oTm9kZUluZGV4IG5vZAogICAgIC8vIFByaW50IHRoZSBwb3BzLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBpbmRleE9mRGl2
ZXJnZW5jZTspIHsKICAgICAgICAgcHJpbnRXaGl0ZVNwYWNlKGkgKiAyKTsKLSAgICAgICAgcHJp
bnRmKCI8LS0gJXBcbiIsIHByZXZpb3VzSW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5l
eGVjdXRhYmxlLmdldCgpKTsKKyAgICAgICAgZGF0YUxvZygiPC0tICVwXG4iLCBwcmV2aW91c0lu
bGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIC8vIFByaW50IHRoZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5k
ZXhPZkRpdmVyZ2VuY2U7IGkgPCBjdXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgcHJpbnRXaGl0ZVNwYWNlKGkgKiAyKTsKLSAgICAgICAgcHJpbnRmKCItLT4gJXBcbiIs
IGN1cnJlbnRJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkp
OworICAgICAgICBkYXRhTG9nKCItLT4gJXBcbiIsIGN1cnJlbnRJbmxpbmVTdGFja1tpXS5pbmxp
bmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAgIH0KIH0KIApAQCAtMTUwLDY0ICsx
NTAsNjQgQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4LCBDbwogICAgIC8v
ICAgICAgICAgJCMgICAtIHRoZSBpbmRleCBpbiB0aGUgQ29kZUJsb2NrIG9mIGEgY29uc3RhbnQg
eyBmb3IgbnVtZXJpYyBjb25zdGFudHMgdGhlIHZhbHVlIGlzIGRpc3BsYXllZCB8IGZvciBpbnRl
Z2VycywgaW4gYm90aCBkZWNpbWFsIGFuZCBoZXggfS4KICAgICAvLyAgICAgICAgIGlkIyAgLSB0
aGUgaW5kZXggaW4gdGhlIENvZGVCbG9jayBvZiBhbiBpZGVudGlmaWVyIHsgaWYgY29kZUJsb2Nr
IGlzIHBhc3NlZCB0byBkdW1wKCksIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gaXMgZGlzcGxh
eWVkIH0uCiAgICAgLy8gICAgICAgICB2YXIjIC0gdGhlIGluZGV4IG9mIGEgdmFyIG9uIHRoZSBn
bG9iYWwgb2JqZWN0LCB1c2VkIGJ5IEdldEdsb2JhbFZhci9QdXRHbG9iYWxWYXIgb3BlcmF0aW9u
cy4KLSAgICBwcmludGYoIiUgNGQ6JXM8JWMldToiLCAoaW50KW5vZGVJbmRleCwgc2tpcHBlZCA/
ICIgIHNraXBwZWQgICIgOiAiICAgICAgICAgICAiLCBtdXN0R2VuZXJhdGUgPyAnIScgOiAnICcs
IHJlZkNvdW50KTsKKyAgICBkYXRhTG9nKCIlIDRkOiVzPCVjJXU6IiwgKGludClub2RlSW5kZXgs
IHNraXBwZWQgPyAiICBza2lwcGVkICAiIDogIiAgICAgICAgICAgIiwgbXVzdEdlbmVyYXRlID8g
JyEnIDogJyAnLCByZWZDb3VudCk7CiAgICAgaWYgKG5vZGUuaGFzUmVzdWx0KCkgJiYgIXNraXBw
ZWQgJiYgbm9kZS5oYXNWaXJ0dWFsUmVnaXN0ZXIoKSkKLSAgICAgICAgcHJpbnRmKCIldSIsIG5v
ZGUudmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICBkYXRhTG9nKCIldSIsIG5vZGUudmlydHVh
bFJlZ2lzdGVyKCkpOwogICAgIGVsc2UKLSAgICAgICAgcHJpbnRmKCItIik7Ci0gICAgcHJpbnRm
KCI+XHQlcygiLCBvcE5hbWUob3ApKTsKKyAgICAgICAgZGF0YUxvZygiLSIpOworICAgIGRhdGFM
b2coIj5cdCVzKCIsIG9wTmFtZShvcCkpOwogICAgIGJvb2wgaGFzUHJpbnRlZCA9IGZhbHNlOwog
ICAgIGlmIChvcCAmIE5vZGVIYXNWYXJBcmdzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgY2hp
bGRJZHggPSBub2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hpbGQoKSAr
IG5vZGUubnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewogICAgICAgICAgICAgaWYgKGhhc1By
aW50ZWQpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIsICIpOworICAgICAgICAgICAgICAgIGRh
dGFMb2coIiwgIik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICBwcmludGYoIkAldSIsIG1fdmFyQXJnQ2hpbGRyZW5bY2hp
bGRJZHhdLmluZGV4KCkpOworICAgICAgICAgICAgZGF0YUxvZygiQCV1IiwgbV92YXJBcmdDaGls
ZHJlbltjaGlsZElkeF0uaW5kZXgoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoISFub2RlLmNoaWxkMSgpKQotICAgICAgICAgICAgcHJpbnRmKCJAJXUiLCBub2RlLmNo
aWxkMSgpLmluZGV4KCkpOworICAgICAgICAgICAgZGF0YUxvZygiQCV1Iiwgbm9kZS5jaGlsZDEo
KS5pbmRleCgpKTsKICAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDIoKSkKLSAgICAgICAgICAgIHBy
aW50ZigiLCBAJXUiLCBub2RlLmNoaWxkMigpLmluZGV4KCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiLCBAJXUiLCBub2RlLmNoaWxkMigpLmluZGV4KCkpOwogICAgICAgICBpZiAoISFub2RlLmNo
aWxkMygpKQotICAgICAgICAgICAgcHJpbnRmKCIsIEAldSIsIG5vZGUuY2hpbGQzKCkuaW5kZXgo
KSk7CisgICAgICAgICAgICBkYXRhTG9nKCIsIEAldSIsIG5vZGUuY2hpbGQzKCkuaW5kZXgoKSk7
CiAgICAgICAgIGhhc1ByaW50ZWQgPSAhIW5vZGUuY2hpbGQxKCk7CiAgICAgfQogCiAgICAgaWYg
KG5vZGUuaGFzQXJpdGhOb2RlRmxhZ3MoKSkgewotICAgICAgICBwcmludGYoIiVzJXMiLCBoYXNQ
cmludGVkID8gIiwgIiA6ICIiLCBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKG5vZGUucmF3QXJpdGhO
b2RlRmxhZ3MoKSkpOworICAgICAgICBkYXRhTG9nKCIlcyVzIiwgaGFzUHJpbnRlZCA/ICIsICIg
OiAiIiwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhub2RlLnJhd0FyaXRoTm9kZUZsYWdzKCkpKTsK
ICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChub2RlLmhhc1Zhck51
bWJlcigpKSB7Ci0gICAgICAgIHByaW50ZigiJXN2YXIldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDog
IiIsIG5vZGUudmFyTnVtYmVyKCkpOworICAgICAgICBkYXRhTG9nKCIlc3ZhciV1IiwgaGFzUHJp
bnRlZCA/ICIsICIgOiAiIiwgbm9kZS52YXJOdW1iZXIoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQg
PSB0cnVlOwogICAgIH0KICAgICBpZiAobm9kZS5oYXNJZGVudGlmaWVyKCkpIHsKICAgICAgICAg
aWYgKGNvZGVCbG9jaykKLSAgICAgICAgICAgIHByaW50ZigiJXNpZCV1eyVzfSIsIGhhc1ByaW50
ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBjb2RlQmxvY2stPmlkZW50
aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIiVzaWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIi
LCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKG5vZGUuaWRl
bnRpZmllck51bWJlcigpKS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHByaW50ZigiJXNpZCV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9k
ZS5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAgICAgICAgZGF0YUxvZygiJXNpZCV1IiwgaGFz
UHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOwogICAgICAgICBo
YXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG5vZGUuaGFzU3RydWN0dXJlU2V0KCkp
IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2RlLnN0cnVjdHVyZVNldCgpLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBwcmludGYoIiVzc3RydWN0KCVwKSIsIGhhc1ByaW50
ZWQgPyAiLCAiIDogIiIsIG5vZGUuc3RydWN0dXJlU2V0KClbaV0pOworICAgICAgICAgICAgZGF0
YUxvZygiJXNzdHJ1Y3QoJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1
cmVTZXQoKVtpXSk7CiAgICAgICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAobm9kZS5oYXNTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpKSB7Ci0gICAg
ICAgIHByaW50ZigiJXNzdHJ1Y3QoJXAgLT4gJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
bm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLCBub2RlLnN0
cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlKTsKKyAgICAgICAgZGF0YUxvZygi
JXNzdHJ1Y3QoJXAgLT4gJXApIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5zdHJ1Y3R1
cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLCBub2RlLnN0cnVjdHVyZVRyYW5z
aXRpb25EYXRhKCkubmV3U3RydWN0dXJlKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAg
ICAgfQogICAgIGlmIChub2RlLmhhc1N0b3JhZ2VBY2Nlc3NEYXRhKCkpIHsKICAgICAgICAgU3Rv
cmFnZUFjY2Vzc0RhdGEmIHN0b3JhZ2VBY2Nlc3NEYXRhID0gbV9zdG9yYWdlQWNjZXNzRGF0YVtu
b2RlLnN0b3JhZ2VBY2Nlc3NEYXRhSW5kZXgoKV07CiAgICAgICAgIGlmIChjb2RlQmxvY2spCi0g
ICAgICAgICAgICBwcmludGYoIiVzaWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBz
dG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyLCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
c3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlcikudXN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgZGF0YUxvZygiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAi
IDogIiIsIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKS51c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiJXNpZCV1Iiwg
aGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJl
cik7CisgICAgICAgICAgICBkYXRhTG9nKCIlc2lkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIi
LCBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgCi0gICAgICAg
IHByaW50ZigiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzdG9yYWdlQWNjZXNz
RGF0YS5vZmZzZXQpKTsKKyAgICAgICAgZGF0YUxvZygiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQpKTsKICAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7CiAgICAgfQogICAgIEFTU0VSVChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgp
ID09IG5vZGUuaGFzTG9jYWwoKSk7CkBAIC0yMTUsODMgKzIxNSw4MyBAQCB2b2lkIEdyYXBoOjpk
dW1wKE5vZGVJbmRleCBub2RlSW5kZXgsIENvCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAg
aW50IG9wZXJhbmQgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKTsKICAgICAgICAgaWYg
KG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQotICAgICAgICAgICAgcHJpbnRmKCIlc2FyZyV1
KCVzKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQp
LCBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGVBY2Nlc3NEYXRhKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKCIlc2FyZyV1KCVzKSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG9wZXJh
bmRUb0FyZ3VtZW50KG9wZXJhbmQpLCBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGVB
Y2Nlc3NEYXRhKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiJXNyJXUoJXMp
IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgb3BlcmFuZCwgbmFtZU9mVmFyaWFibGVBY2Nlc3NE
YXRhKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAgICAgICAgZGF0YUxvZygiJXNyJXUoJXMp
IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgb3BlcmFuZCwgbmFtZU9mVmFyaWFibGVBY2Nlc3NE
YXRhKHZhcmlhYmxlQWNjZXNzRGF0YSkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAg
ICB9CiAgICAgaWYgKG5vZGUuaGFzQ29uc3RhbnRCdWZmZXIoKSAmJiBjb2RlQmxvY2spIHsKICAg
ICAgICAgaWYgKGhhc1ByaW50ZWQpCi0gICAgICAgICAgICBwcmludGYoIiwgIik7Ci0gICAgICAg
IHByaW50ZigiJXU6WyIsIG5vZGUuc3RhcnRDb25zdGFudCgpKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIiwgIik7CisgICAgICAgIGRhdGFMb2coIiV1OlsiLCBub2RlLnN0YXJ0Q29uc3RhbnQoKSk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLm51bUNvbnN0YW50cygpOyAr
K2kpIHsKICAgICAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgICAgIHByaW50ZigiLCAiKTsK
LSAgICAgICAgICAgIHByaW50ZigiJXMiLCBjb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUu
c3RhcnRDb25zdGFudCgpKVtpXS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIsICIpOworICAgICAgICAgICAgZGF0YUxvZygiJXMiLCBjb2RlQmxvY2stPmNvbnN0YW50
QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgpKVtpXS5kZXNjcmlwdGlvbigpKTsKICAgICAgICAg
fQotICAgICAgICBwcmludGYoIl0iKTsKKyAgICAgICAgZGF0YUxvZygiXSIpOwogICAgICAgICBo
YXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG9wID09IEpTQ29uc3RhbnQpIHsKLSAg
ICAgICAgcHJpbnRmKCIlcyQldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuY29uc3Rh
bnROdW1iZXIoKSk7CisgICAgICAgIGRhdGFMb2coIiVzJCV1IiwgaGFzUHJpbnRlZCA/ICIsICIg
OiAiIiwgbm9kZS5jb25zdGFudE51bWJlcigpKTsKICAgICAgICAgaWYgKGNvZGVCbG9jaykgewog
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaywg
bm9kZUluZGV4KTsKLSAgICAgICAgICAgIHByaW50ZigiID0gJXMiLCB2YWx1ZS5kZXNjcmlwdGlv
bigpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiA9ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24oKSk7
CiAgICAgICAgIH0KICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChv
cCA9PSBXZWFrSlNDb25zdGFudCkgewotICAgICAgICBwcmludGYoIiVzJXAiLCBoYXNQcmludGVk
ID8gIiwgIiA6ICIiLCBub2RlLndlYWtDb25zdGFudCgpKTsKKyAgICAgICAgZGF0YUxvZygiJXMl
cCIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUud2Vha0NvbnN0YW50KCkpOwogICAgICAg
ICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgIChub2RlLmlzQnJhbmNoKCkgfHwg
bm9kZS5pc0p1bXAoKSkgewotICAgICAgICBwcmludGYoIiVzVDojJXUiLCBoYXNQcmludGVkID8g
IiwgIiA6ICIiLCBub2RlLnRha2VuQmxvY2tJbmRleCgpKTsKKyAgICAgICAgZGF0YUxvZygiJXNU
OiMldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUudGFrZW5CbG9ja0luZGV4KCkpOwog
ICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgIChub2RlLmlzQnJhbmNo
KCkpIHsKLSAgICAgICAgcHJpbnRmKCIlc0Y6IyV1IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwg
bm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKSk7CisgICAgICAgIGRhdGFMb2coIiVzRjojJXUiLCBo
YXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLm5vdFRha2VuQmxvY2tJbmRleCgpKTsKICAgICAg
ICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgICh2b2lkKWhhc1ByaW50ZWQ7CiAgICAg
Ci0gICAgcHJpbnRmKCIpIik7CisgICAgZGF0YUxvZygiKSIpOwogCiAgICAgaWYgKCFza2lwcGVk
KSB7CiAgICAgICAgIGlmIChub2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpKQotICAgICAgICAg
ICAgcHJpbnRmKCIgIHByZWRpY3RpbmcgJXMsIGRvdWJsZSByYXRpbyAlbGYlcyIsIHByZWRpY3Rp
b25Ub1N0cmluZyhub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2Rl
LnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5kb3VibGVWb3RlUmF0aW8oKSwgbm9kZS52YXJpYWJsZUFj
Y2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgPyAiLCBmb3JjaW5nIGRvdWJsZSIg
OiAiIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgIHByZWRpY3RpbmcgJXMsIGRvdWJsZSByYXRp
byAlbGYlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5w
cmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5kb3VibGVWb3RlUmF0aW8o
KSwgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgPyAi
LCBmb3JjaW5nIGRvdWJsZSIgOiAiIik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaGFzSGVhcFBy
ZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGlj
dGlvblRvU3RyaW5nKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkpOworICAgICAgICAgICAgZGF0
YUxvZygiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5nKG5vZGUuZ2V0SGVhcFBy
ZWRpY3Rpb24oKSkpOwogICAgICAgICBlbHNlIGlmIChub2RlLmhhc1Zhck51bWJlcigpKQotICAg
ICAgICAgICAgcHJpbnRmKCIgIHByZWRpY3RpbmcgJXMiLCBwcmVkaWN0aW9uVG9TdHJpbmcoZ2V0
R2xvYmFsVmFyUHJlZGljdGlvbihub2RlLnZhck51bWJlcigpKSkpOworICAgICAgICAgICAgZGF0
YUxvZygiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5nKGdldEdsb2JhbFZhclBy
ZWRpY3Rpb24obm9kZS52YXJOdW1iZXIoKSkpKTsKICAgICB9CiAgICAgCi0gICAgcHJpbnRmKCJc
biIpOworICAgIGRhdGFMb2coIlxuIik7CiB9CiAKIHZvaWQgR3JhcGg6OmR1bXAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgZm9yIChzaXplX3QgYiA9IDA7IGIgPCBtX2Jsb2Nrcy5zaXpl
KCk7ICsrYikgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tzW2JdLmdldCgp
OwotICAgICAgICBwcmludGYoIkJsb2NrICMldSAoYmMjJXUpOiAlcyVzXG4iLCAoaW50KWIsIGJs
b2NrLT5ieXRlY29kZUJlZ2luLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQp
IiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIpOwotICAgICAgICBw
cmludGYoIiAgdmFycyBiZWZvcmU6ICIpOworICAgICAgICBkYXRhTG9nKCJCbG9jayAjJXUgKGJj
IyV1KTogJXMlc1xuIiwgKGludCliLCBibG9jay0+Ynl0ZWNvZGVCZWdpbiwgYmxvY2stPmlzUmVh
Y2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0
YXJnZXQpIiA6ICIiKTsKKyAgICAgICAgZGF0YUxvZygiICB2YXJzIGJlZm9yZTogIik7CiAgICAg
ICAgIGlmIChibG9jay0+Y2ZhSGFzVmlzaXRlZCkKLSAgICAgICAgICAgIGR1bXBPcGVyYW5kcyhi
bG9jay0+dmFsdWVzQXRIZWFkLCBzdGRvdXQpOworICAgICAgICAgICAgZHVtcE9wZXJhbmRzKGJs
b2NrLT52YWx1ZXNBdEhlYWQsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHByaW50ZigiPGVtcHR5PiIpOwotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICAg
IHByaW50ZigiICB2YXIgbGlua3M6ICIpOwotICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZh
cmlhYmxlc0F0SGVhZCwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZygiPGVtcHR5PiIpOworICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICBk
YXRhTG9nKCIgIHZhciBsaW5rczogIik7CisgICAgICAgIGR1bXBPcGVyYW5kcyhibG9jay0+dmFy
aWFibGVzQXRIZWFkLCBXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICBkYXRhTG9nKCJcbiIpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gYmxvY2stPmJlZ2luOyBpIDwgYmxvY2stPmVuZDsgKytp
KQogICAgICAgICAgICAgZHVtcChpLCBjb2RlQmxvY2spOwotICAgICAgICBwcmludGYoIiAgdmFy
cyBhZnRlcjogIik7CisgICAgICAgIGRhdGFMb2coIiAgdmFycyBhZnRlcjogIik7CiAgICAgICAg
IGlmIChibG9jay0+Y2ZhSGFzVmlzaXRlZCkKLSAgICAgICAgICAgIGR1bXBPcGVyYW5kcyhibG9j
ay0+dmFsdWVzQXRUYWlsLCBzdGRvdXQpOworICAgICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2Nr
LT52YWx1ZXNBdFRhaWwsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHByaW50ZigiPGVtcHR5PiIpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCI8ZW1wdHk+Iik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgfQotICAg
IHByaW50ZigiUGhpIE5vZGVzOlxuIik7CisgICAgZGF0YUxvZygiUGhpIE5vZGVzOlxuIik7CiAg
ICAgZm9yIChzaXplX3QgaSA9IG1fYmxvY2tzLmxhc3QoKS0+ZW5kOyBpIDwgc2l6ZSgpOyArK2kp
CiAgICAgICAgIGR1bXAoaSwgY29kZUJsb2NrKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lk
IEdyYXBoOjpwcmVkaWN0QXJndW1lbnRUeXBlcyhDb2RlQmxvCiAgICAgICAgIGF0KG1fYXJndW1l
bnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbigpKTsKICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQotICAgICAgICBwcmludGYoIkFyZ3VtZW50IFslenVdIHByZWRpY3Rpb246ICVzXG4iLCBh
cmcsIHByZWRpY3Rpb25Ub1N0cmluZyhhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CisgICAgICAgIGRhdGFMb2coIkFyZ3VtZW50IFslenVd
IHByZWRpY3Rpb246ICVzXG4iLCBhcmcsIHByZWRpY3Rpb25Ub1N0cmluZyhhdChtX2FyZ3VtZW50
c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiB7CiAgICAgLy8gTGluayB0aGUgY29k
ZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgogI2lmIERGR19F
TkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkpJVCBjb2RlIGZvciAl
cCBzdGFydCBhdCBbJXAsICVwKS4gU2l6ZSA9ICV6dS5cbiIsIG1fY29kZUJsb2NrLCBsaW5rQnVm
ZmVyLmRlYnVnQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0Fk
ZHJlc3MoKSkgKyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpLCBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgp
KTsKKyAgICBkYXRhTG9nKCJKSVQgY29kZSBmb3IgJXAgc3RhcnQgYXQgWyVwLCAlcCkuIFNpemUg
PSAlenUuXG4iLCBtX2NvZGVCbG9jaywgbGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSwgc3RhdGlj
X2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1
Z1NpemUoKSwgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSk7CiAjZW5kaWYKIAogICAgIC8vIExpbmsg
YWxsIGNhbGxzIG91dCBmcm9tIHRoZSBKSVQgY29kZSB0byB0aGVpciByZXNwZWN0aXZlIGZ1bmN0
aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShy
ZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtYmVyT2ZERkdP
U1JFbnRyaWVzKCkpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYo
Ik9TUiBpbiAlcCglcCkgZnJvbSBiYyMldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmFsdGVy
bmF0aXZlKCksIGJ5dGVjb2RlSW5kZXgpOworICAgIGRhdGFMb2coIk9TUiBpbiAlcCglcCkgZnJv
bSBiYyMldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCksIGJ5dGVjb2Rl
SW5kZXgpOwogI2VuZGlmCiAgICAgCiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5
KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJndW1l
bnQgPCBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5udW1iZXJPZkFyZ3VtZW50cygpOyArK2FyZ3Vt
ZW50KSB7CiAgICAgICAgIGlmIChhcmd1bWVudCA+PSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHBy
aW50ZigiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1bWVudCAlenUgd2FzIG5vdCBwYXNzZWQs
IGV4cGVjdGVkICIsIGFyZ3VtZW50KTsKLSAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFs
dWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5kdW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYo
Ii5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1
bWVudCAlenUgd2FzIG5vdCBwYXNzZWQsIGV4cGVjdGVkICIsIGFyZ3VtZW50KTsKKyAgICAgICAg
ICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5kdW1wKFdURjo6
ZGF0YUZpbGUoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIuXG4iKTsKICNlbmRpZgogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgICAgICAKICAgICAgICAgaWYgKCFlbnRy
eS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkudmFsaWRhdGUodmFsdWUpKSB7
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIHByaW50ZigiICAgIE9T
UiBmYWlsZWQgYmVjYXVzZSBhcmd1bWVudCAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGFyZ3VtZW50
LCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFs
dWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5kdW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYo
Ii5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1
bWVudCAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGFyZ3VtZW50LCB2YWx1ZS5kZXNjcmlwdGlvbigp
KTsKKyAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50
KS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIuXG4iKTsKICNl
bmRpZgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEwNyw3ICsxMDcsNyBA
QCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgICAgIGlmIChl
bnRyeS0+bV9sb2NhbHNGb3JjZWREb3VibGUuZ2V0KGxvY2FsKSkgewogICAgICAgICAgICAgaWYg
KCFleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmlzTnVtYmVyKCkpIHsKICNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICAgICAgICAgIHByaW50ZigiICAgIE9TUiBm
YWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVjdGVkIG51bWJlci5cbiIsIGxv
Y2FsLCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUg
JXp1IGlzICVzLCBleHBlY3RlZCBudW1iZXIuXG4iLCBsb2NhbCwgZXhlYy0+cmVnaXN0ZXJzKClb
bG9jYWxdLmpzVmFsdWUoKS5kZXNjcmlwdGlvbigpKTsKICNlbmRpZgogICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAgfQogICAgICAgICBpZiAoIWVu
dHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmxvY2FsKGxvY2FsKS52YWxpZGF0ZShleGVjLT5yZWdpc3Rl
cnMoKVtsb2NhbF0uanNWYWx1ZSgpKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0g
ICAgICAgICAgICBwcmludGYoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgJXp1IGlz
ICVzLCBleHBlY3RlZCAiLCBsb2NhbCwgZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxdLmpzVmFsdWUo
KS5kZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmxv
Y2FsKGxvY2FsKS5kdW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIi5cbiIpOworICAg
ICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMg
JXMsIGV4cGVjdGVkICIsIGxvY2FsLCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgp
LmRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9j
YWwobG9jYWwpLmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIi5c
biIpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTMyLDEz
ICsxMzIsMTMgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAg
IAogICAgIGlmICghZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3co
JmV4ZWMtPnJlZ2lzdGVycygpW2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkgewog
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50ZigiICAgIE9TUiBmYWls
ZWQgYmVjYXVzZSBzdGFjayBncm93dGggZmFpbGVkLlxuIik7CisgICAgICAgIGRhdGFMb2coIiAg
ICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC5cbiIpOwogI2VuZGlmCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgIHByaW50ZigiICAgIE9TUiBzaG91bGQgc3VjY2VlZC5cbiIpOworICAgIGRhdGFMb2co
IiAgICBPU1Igc2hvdWxkIHN1Y2NlZWQuXG4iKTsKICNlbmRpZgogICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0
ZSogZXhlYywgQwogICAgIHZvaWQqIHJlc3VsdCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoZW50cnktPm1fbWFjaGluZUNvZGVPZmZzZXQpOwogICAg
IAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCIgICAgT1NSIHJldHVy
bmluZyBtYWNoaW5lIGNvZGUgYWRkcmVzcyAlcC5cbiIsIHJlc3VsdCk7CisgICAgZGF0YUxvZygi
ICAgIE9TUiByZXR1cm5pbmcgbWFjaGluZSBjb2RlIGFkZHJlc3MgJXAuXG4iLCByZXN1bHQpOwog
I2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lv
biAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE1IEBAIHZvaWQgT1NSRXhp
dENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKIHsKICAgICAvLyAxKSBQcm8tZm9ybWEgc3R1
ZmYuCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAi
T1NSIGV4aXQgZm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOworICAgIGRh
dGFMb2coIk9TUiBleGl0IGZvciBOb2RlIEAlZCAoIiwgKGludClleGl0Lm1fbm9kZUluZGV4KTsK
ICAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyA7IGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiYmMjJXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBkYXRhTG9nKCJiYyMldSIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAg
IGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIgLT4gJXAgIiwgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUuZ2V0KCkpOworICAgICAgICBkYXRhTG9nKCIgLT4gJXAgIiwgY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAgIH0KLSAgICBmcHJp
bnRmKHN0ZGVyciwgIikgYXQgSklUIG9mZnNldCAweCV4ICAiLCBtX2ppdC5kZWJ1Z09mZnNldCgp
KTsKLSAgICBleGl0LmR1bXAoc3RkZXJyKTsKKyAgICBkYXRhTG9nKCIpIGF0IEpJVCBvZmZzZXQg
MHgleCAgIiwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CisgICAgZXhpdC5kdW1wKFdURjo6ZGF0YUZp
bGUoKSk7CiAjZW5kaWYKICNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVS
RSkKICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVj
dWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIG1faml0Lmp1bXAoR1BSSW5mbzo6cmVn
VDIpOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJy
LCAiICAgLT4gJXBcbiIsIGp1bXBUYXJnZXQpOworICAgIGRhdGFMb2coIiAgIC0+ICVwXG4iLCBq
dW1wVGFyZ2V0KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDE1ICszNiwxNSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGls
ZUV4aXQoY29uc3QgCiB7CiAgICAgLy8gMSkgUHJvLWZvcm1hIHN0dWZmLgogI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIk9TUiBleGl0IGZvciBOb2Rl
IEAlZCAoIiwgKGludClleGl0Lm1fbm9kZUluZGV4KTsKKyAgICBkYXRhTG9nKCJPU1IgZXhpdCBm
b3IgTm9kZSBAJWQgKCIsIChpbnQpZXhpdC5tX25vZGVJbmRleCk7CiAgICAgZm9yIChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgOyBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
ImJjIyV1IiwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICAgICAgZGF0YUxvZygiYmMj
JXUiLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBpZiAoIWNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiIC0+ICVwICIsIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdl
dCgpKTsKKyAgICAgICAgZGF0YUxvZygiIC0+ICVwICIsIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lLT5leGVjdXRhYmxlLmdldCgpKTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICIpICAi
KTsKLSAgICBleGl0LmR1bXAoc3RkZXJyKTsKKyAgICBkYXRhTG9nKCIpICAiKTsKKyAgICBleGl0
LmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKICNlbmRpZgogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9T
UEVDVUxBVElPTl9GQUlMVVJFKQogICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVi
dWdJbmZvID0gbmV3IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKQEAgLTE4NCwyNCArMTg0
LDI0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICB9CiAg
ICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAi
ICAiKTsKKyAgICBkYXRhTG9nKCIgICIpOwogICAgIGlmIChudW1iZXJPZlBvaXNvbmVkVmlydHVh
bFJlZ2lzdGVycykKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJQb2lzb25lZD0ldSAiLCBudW1i
ZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycyk7CisgICAgICAgIGRhdGFMb2coIlBvaXNvbmVk
PSV1ICIsIG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKTsKICAgICBpZiAobnVtYmVy
T2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRp
c3BsYWNlZD0ldSAiLCBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMpOworICAgICAg
ICBkYXRhTG9nKCJEaXNwbGFjZWQ9JXUgIiwgbnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0
ZXJzKTsKICAgICBpZiAoaGF2ZVVuYm94ZWRJbnQzMnMpCi0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiVW5ib3hlZEludDMyICIpOworICAgICAgICBkYXRhTG9nKCJVbmJveGVkSW50MzIgIik7CiAg
ICAgaWYgKGhhdmVVbmJveGVkRG91YmxlcykKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmJv
eGVkRG91YmxlcyAiKTsKKyAgICAgICAgZGF0YUxvZygiVW5ib3hlZERvdWJsZXMgIik7CiAgICAg
aWYgKGhhdmVVSW50MzJzKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVJbnQzMiAiKTsKKyAg
ICAgICAgZGF0YUxvZygiVUludDMyICIpOwogICAgIGlmIChoYXZlRlBScykKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGUFIgIik7CisgICAgICAgIGRhdGFMb2coIkZQUiAiKTsKICAgICBpZiAo
aGF2ZUNvbnN0YW50cykKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb25zdGFudHMgIik7Cisg
ICAgICAgIGRhdGFMb2coIkNvbnN0YW50cyAiKTsKICAgICBpZiAoaGF2ZVVuZGVmaW5lZCkKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJVbmRlZmluZWQgIik7Ci0gICAgZnByaW50ZihzdGRlcnIs
ICIgIik7CisgICAgICAgIGRhdGFMb2coIlVuZGVmaW5lZCAiKTsKKyAgICBkYXRhTG9nKCIgIik7
CiAjZW5kaWYKICAgICAKICAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PEVuY29kZWRKU1ZhbHVlKj4obV9qaXQuZ2xvYmFsRGF0YSgpLT5zY3JhdGNoQnVmZmVy
Rm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogc3RkOjptYXgoaGF2ZVVJbnQzMnMgPyAy
dSA6IDB1LCBudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycyArIChudW1iZXJPZkRpc3Bs
YWNlZFZpcnR1YWxSZWdpc3RlcnMgPD0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPyAwIDog
bnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJzKSkpKTsKQEAgLTYyNCw3ICs2MjQsNyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgbV9qaXQuanVt
cChHUFJJbmZvOjpyZWdUMSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAg
ZnByaW50ZihzdGRlcnIsICItPiAlcFxuIiwganVtcFRhcmdldCk7CisgICAgZGF0YUxvZygiLT4g
JXBcbiIsIGp1bXBUYXJnZXQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEwNzQ4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292
ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSAoYmMj
JXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwLlxuIiwgZXhpdEluZGV4LCBleGl0Lm1fY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBleGl0S2luZFRvU3RyaW5n
KGV4aXQubV9raW5kKSwgY29kZUJsb2NrKTsKKyAgICBkYXRhTG9nKCJHZW5lcmF0aW5nIE9TUiBl
eGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwLlxuIiwgZXhpdEluZGV4
LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBleGl0
S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgY29kZUJsb2NrKTsKICNlbmRpZgogCiAgICAgewpA
QCAtNjYsNyArNjYsNyBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgZXhpdC5tX2NvZGUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKIAogI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJPU1IgZXhp
dCBjb2RlIGF0IFslcCwgJXApLlxuIiwgcGF0Y2hCdWZmZXIuZGVidWdBZGRyZXNzKCksIHN0YXRp
Y19jYXN0PGNoYXIqPihwYXRjaEJ1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBwYXRjaEJ1ZmZlci5k
ZWJ1Z1NpemUoKSk7CisgICAgICAgIGRhdGFMb2coIk9TUiBleGl0IGNvZGUgYXQgWyVwLCAlcCku
XG4iLCBwYXRjaEJ1ZmZlci5kZWJ1Z0FkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHBhdGNo
QnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIHBhdGNoQnVmZmVyLmRlYnVnU2l6ZSgpKTsKICNlbmRp
ZgogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAg
dm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIFNwZWN1bGF0aW9u
RmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWls
dXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGRlYnVnSW5mby0+Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgcHJpbnRmKCJTcGVjdWxhdGlvbiBmYWlsdXJlIGlu
ICVwIGF0IEAldSB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1LCBzdWNjZXNzL2ZhaWwg
JXUvJXVcbiIsIGNvZGVCbG9jaywgZGVidWdJbmZvLT5ub2RlSW5kZXgsIGFsdGVybmF0aXZlID8g
YWx0ZXJuYXRpdmUtPmppdEV4ZWN1dGVDb3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVy
bmF0aXZlLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIDogMCwgYWx0ZXJuYXRpdmUgPyBh
bHRlcm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkgOiAwLCBjb2RlQmxvY2stPnNw
ZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5zcGVjdWxhdGl2ZUZhaWxDb3Vu
dGVyKCkpOworICAgIGRhdGFMb2coIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXUsIHN1Y2Nlc3MvZmFpbCAldS8ldVxuIiwgY29k
ZUJsb2NrLCBkZWJ1Z0luZm8tPm5vZGVJbmRleCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+
aml0RXhlY3V0ZUNvdW50ZXIoKSA6IDAsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSA6IDAsIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVTdWNj
ZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3Iu
Y3BwCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b3BhZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwyOCArNjQsMjggQEAgcHVibGljOgog
ICAgICAgICBmaXh1cCgpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb24gZml4
dXA6XG4iKTsKKyAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb24gZml4dXA6
XG4iKTsKICAgICAgICAgbV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKTsKICNlbmRpZgogCiAgICAg
ICAgIGxvY2FsQ1NFKCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJP
U0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgQ1NFOlxuIik7CisgICAgICAgIGRhdGFM
b2coIkdyYXBoIGFmdGVyIENTRTpcbiIpOwogICAgICAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxv
Y2spOwogI2VuZGlmCiAKICAgICAgICAgYWxsb2NhdGVWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
R3JhcGggYWZ0ZXIgdmlydHVhbCByZWdpc3RlciBhbGxvY2F0aW9uOlxuIik7CisgICAgICAgIGRh
dGFMb2coIkdyYXBoIGFmdGVyIHZpcnR1YWwgcmVnaXN0ZXIgYWxsb2NhdGlvbjpcbiIpOwogICAg
ICAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2spOwogI2VuZGlmCiAKICAgICAgICAgZ2xvYmFs
Q0ZBKCk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
R3JhcGggYWZ0ZXIgcHJvcGFnYXRpb246XG4iKTsKKyAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0
ZXIgcHJvcGFnYXRpb246XG4iKTsKICAgICAgICAgbV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKTsK
ICNlbmRpZgogICAgIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ZmxhZ3MgPSBub2RlLnJhd0FyaXRoTm9kZUZsYWdzKCk7CiAgICAgICAgIAogI2lmIERGR19FTkFC
TEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6
ICVzICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCwgYXJpdGhOb2RlRmxhZ3NB
c1N0cmluZyhmbGFncykpOworICAgICAgICBkYXRhTG9nKCIgICAlcyBAJXU6ICVzICIsIEdyYXBo
OjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhmbGFn
cykpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmbGFncyAmPSBOb2RlVXNlZEFzTWFzazsK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiJXNcbiIsIGNoYW5n
ZWQgPyAiQ0hBTkdFRCIgOiAiIik7CisgICAgICAgIGRhdGFMb2coIiVzXG4iLCBjaGFuZ2VkID8g
IkNIQU5HRUQiIDogIiIpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgfD0g
Y2hhbmdlZDsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvcGFnYXRl
QXJpdGhOb2RlRmxhZ3NGb3J3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIGFyaXRobWV0aWMg
bm9kZSBmbGFncyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRhdGFMb2co
IlByb3BhZ2F0aW5nIGFyaXRobWV0aWMgbm9kZSBmbGFncyBmb3J3YXJkIFsldV1cbiIsICsrbV9j
b3VudCk7CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7IG1fY29tcGls
ZUluZGV4IDwgbV9ncmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgpCiAgICAgICAgICAgICBw
cm9wYWdhdGVBcml0aE5vZGVGbGFncyhtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CkBAIC0yNDAs
NyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzQmFj
a3dhcmQoKQogICAgIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIHByaW50ZigiUHJvcGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGJhY2t3
YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIGFy
aXRobWV0aWMgbm9kZSBmbGFncyBiYWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwogI2VuZGlm
CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21waWxl
SW5kZXgtLSA+IDA7KQogICAgICAgICAgICAgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3MobV9ncmFw
aFttX2NvbXBpbGVJbmRleF0pOwpAQCAtMjkzLDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUo
b3ApLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogIiwgR3Jh
cGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKICNlbmRpZgogICAgICAgICAKICAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CkBAIC02MzYsNyArNjM2LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAg
ICAgICBwcmludGYoIiVzXG4iLCBwcmVkaWN0aW9uVG9TdHJpbmcobV9ncmFwaFttX2NvbXBpbGVJ
bmRleF0ucHJlZGljdGlvbigpKSk7CisgICAgICAgIGRhdGFMb2coIiVzXG4iLCBwcmVkaWN0aW9u
VG9TdHJpbmcobV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSk7CiAjZW5kaWYK
ICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBjaGFuZ2VkOwpAQCAtNjQ1LDcgKzY0NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9wYWdhdGVQcmVkaWN0aW9uc0ZvcndhcmQoKQogICAg
IHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHBy
aW50ZigiUHJvcGFnYXRpbmcgcHJlZGljdGlvbnMgZm9yd2FyZCBbJXVdXG4iLCArK21fY291bnQp
OworICAgICAgICBkYXRhTG9nKCJQcm9wYWdhdGluZyBwcmVkaWN0aW9ucyBmb3J3YXJkIFsldV1c
biIsICsrbV9jb3VudCk7CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7
IG1fY29tcGlsZUluZGV4IDwgbV9ncmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgpCiAgICAg
ICAgICAgICBwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMobV9ncmFwaFttX2NvbXBpbGVJbmRleF0p
OwpAQCAtNjU0LDcgKzY1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9wYWdhdGVQcmVkaWN0
aW9uc0JhY2t3YXJkKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGJhY2t3YXJk
IFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRhdGFMb2coIlByb3BhZ2F0aW5nIHByZWRp
Y3Rpb25zIGJhY2t3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7CiAjZW5kaWYKICAgICAgICAgZm9y
IChtX2NvbXBpbGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOyBtX2NvbXBpbGVJbmRleC0tID4gMDsp
CiAgICAgICAgICAgICBwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMobV9ncmFwaFttX2NvbXBpbGVJ
bmRleF0pOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1JvdW5kT2ZE
b3VibGVWb3RpbmcoKQogICAgIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZF
UkJPU0UpCi0gICAgICAgIHByaW50ZigiVm90aW5nIG9uIGRvdWJsZSB1c2VzIG9mIGxvY2FscyBb
JXVdXG4iLCBtX2NvdW50KTsKKyAgICAgICAgZGF0YUxvZygiVm90aW5nIG9uIGRvdWJsZSB1c2Vz
IG9mIGxvY2FscyBbJXVdXG4iLCBtX2NvdW50KTsKICNlbmRpZgogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsraSkK
ICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGFbaV0uZmluZCgpLT5jbGVh
clZvdGVzKCk7CkBAIC04MjAsNyArODIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTm9kZVR5cGUg
b3AgPSBub2RlLm9wOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQotICAgICAgICBwcmludGYoIiAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29t
cGlsZUluZGV4KTsKKyAgICAgICAgZGF0YUxvZygiICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1l
KG9wKSwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBzd2l0Y2gg
KG9wKSB7CkBAIC04NDUsNyArODQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9T
RSkKLSAgICAgICAgICAgIHByaW50ZigiICBAJXUgLT4gJXMiLCBtX2NvbXBpbGVJbmRleCwgaXNB
cnJheSA/ICJHZXRBcnJheUxlbmd0aCIgOiAiR2V0U3RyaW5nTGVuZ3RoIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCIgIEAldSAtPiAlcyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFy
cmF5TGVuZ3RoIiA6ICJHZXRTdHJpbmdMZW5ndGgiKTsKICNlbmRpZgogICAgICAgICAgICAgaWYg
KGlzQXJyYXkpCiAgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldEFycmF5TGVuZ3RoOwpAQCAt
ODk5LDE0ICs4OTksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShE
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAg
IGRhdGFMb2coIlxuIik7CiAjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBmaXh1cCgpCiAg
ICAgewogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAg
cHJpbnRmKCJQZXJmb3JtaW5nIEZpeHVwXG4iKTsKKyAgICAgICAgZGF0YUxvZygiUGVyZm9ybWlu
ZyBGaXh1cFxuIik7CiAjZW5kaWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7IG1f
Y29tcGlsZUluZGV4IDwgbV9ncmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgpCiAgICAgICAg
ICAgICBmaXh1cE5vZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwpAQCAtOTY3LDcgKzk2Nyw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gY29tcHV0ZVN0
YXJ0SW5kZXhGb3JDaGlsZHJlbihjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKTsKICNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICBsb29rYmFj
ayAldTogIiwgcmVzdWx0KTsKKyAgICAgICAgZGF0YUxvZygiICBsb29rYmFjayAldTogIiwgcmVz
dWx0KTsKICNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTk5MCw3ICs5
OTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIEFTU0VSVChy
ZXN1bHQgPD0gbV9jb21waWxlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgIGxpbWl0ICV1OiAiLCByZXN1bHQpOworICAg
ICAgICBkYXRhTG9nKCIgIGxpbWl0ICV1OiAiLCByZXN1bHQpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTM5MSw3ICsxMzkxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgIFJlcGxhY2luZyBAJXUgLT4gQCV1IiwgbV9j
b21waWxlSW5kZXgsIHJlcGxhY2VtZW50KTsKKyAgICAgICAgZGF0YUxvZygiICAgUmVwbGFjaW5n
IEAldSAtPiBAJXUiLCBtX2NvbXBpbGVJbmRleCwgcmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07CkBAIC0x
NDA1LDcgKzE0MDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxpbWluYXRlKCkKICAgICB7CiAj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYo
IiAgIEVsaW1pbmF0aW5nIEAldSIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgZGF0YUxvZygi
ICAgRWxpbWluYXRpbmcgQCV1IiwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgIAog
ICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFttX2NvbXBpbGVJbmRleF07CkBAIC0xNDMxLDcg
KzE0MzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICAg
JXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwgbV9j
b21waWxlSW5kZXgpOworICAgICAgICBkYXRhTG9nKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5h
bWUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0ub3ApLCBtX2NvbXBpbGVJbmRleCk7CiAjZW5kaWYK
ICAgICAgICAgCiAgICAgICAgIC8vIE5PVEU6IHRoZXJlIGFyZSBzb21lIG5vZGVzIHRoYXQgd2Ug
ZGVsaWJlcmF0ZWx5IGRvbid0IENTRSBldmVuIHRob3VnaCB3ZQpAQCAtMTU1OSw3ICsxNTU5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fbGFzdFNlZW5bbm9kZS5vcCAmIE5vZGVJ
ZE1hc2tdID0gbV9jb21waWxlSW5kZXg7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7
CiAjZW5kaWYKICAgICB9CiAgICAgCkBAIC0xNTc0LDcgKzE1NzQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgbG9jYWxDU0UoKQogICAgIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUGVyZm9ybWluZyBsb2NhbCBDU0U6Iik7CisgICAg
ICAgIGRhdGFMb2coIlBlcmZvcm1pbmcgbG9jYWwgQ1NFOiIpOwogI2VuZGlmCiAgICAgICAgIGZv
ciAodW5zaWduZWQgYmxvY2sgPSAwOyBibG9jayA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyAr
K2Jsb2NrKQogICAgICAgICAgICAgcGVyZm9ybUJsb2NrQ1NFKCptX2dyYXBoLm1fYmxvY2tzW2Js
b2NrXSk7CkBAIC0xNTgzLDkgKzE1ODMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxsb2NhdGVW
aXJ0dWFsUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQot
ICAgICAgICBwcmludGYoIlByZXNlcnZlZCB2YXJzOiAiKTsKLSAgICAgICAgbV9ncmFwaC5tX3By
ZXNlcnZlZFZhcnMuZHVtcChzdGRvdXQpOwotICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAg
IGRhdGFMb2coIlByZXNlcnZlZCB2YXJzOiAiKTsKKyAgICAgICAgbV9ncmFwaC5tX3ByZXNlcnZl
ZFZhcnMuZHVtcChXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICBkYXRhTG9nKCJcbiIpOwogI2Vu
ZGlmCiAgICAgICAgIFNjb3JlQm9hcmQgc2NvcmVCb2FyZChtX2dyYXBoLCBtX2dyYXBoLm1fcHJl
c2VydmVkVmFycyk7CiAgICAgICAgIHVuc2lnbmVkIHNpemVFeGNsdWRpbmdQaGlOb2RlcyA9IG1f
Z3JhcGgubV9ibG9ja3MubGFzdCgpLT5lbmQ7CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoKHVuc2lnbmVkKW1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyA8IGNhbGxlZVJlZ2lzdGVycykKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyA9IGNhbGxlZVJlZ2lzdGVyczsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgICAgIHByaW50ZigiTnVtIGNhbGxlZSByZWdpc3RlcnM6ICV1XG4iLCBjYWxsZWVS
ZWdpc3RlcnMpOworICAgICAgICBkYXRhTG9nKCJOdW0gY2FsbGVlIHJlZ2lzdGVyczogJXVcbiIs
IGNhbGxlZVJlZ2lzdGVycyk7CiAjZW5kaWYKICAgICB9CiAgICAgCkBAIC0xNjM5LDQyICsxNjM5
LDQyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghYmxvY2stPmNmYVNob3VsZFJldmlzaXQpCiAg
ICAgICAgICAgICByZXR1cm47CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQotICAgICAgICBwcmludGYoIiAgIEJsb2NrICMldSAoYmMjJXUpOlxuIiwgYmxvY2tJbmRl
eCwgYmxvY2stPmJ5dGVjb2RlQmVnaW4pOworICAgICAgICBkYXRhTG9nKCIgICBCbG9jayAjJXUg
KGJjIyV1KTpcbiIsIGJsb2NrSW5kZXgsIGJsb2NrLT5ieXRlY29kZUJlZ2luKTsKICNlbmRpZgog
ICAgICAgICBzdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOwogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAgICBoZWFkIHZhcnM6
ICIpOwotICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgc3Rkb3V0KTsK
LSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgICBoZWFkIHZhcnM6
ICIpOworICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkYXRh
RmlsZSgpKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogICAgICAgICBmb3IgKE5v
ZGVJbmRleCBub2RlSW5kZXggPSBibG9jay0+YmVnaW47IG5vZGVJbmRleCA8IGJsb2NrLT5lbmQ7
ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICBpZiAoIW1fZ3JhcGhbbm9kZUluZGV4XS5zaG91
bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmIERGR19FTkFCTEUo
REVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICAgICAgJXMg
QCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5vZGVJbmRleCk7
Ci0gICAgICAgICAgICBzdGF0ZS5kdW1wKHN0ZG91dCk7Ci0gICAgICAgICAgICBwcmludGYoIlxu
Iik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUo
bV9ncmFwaFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4KTsKKyAgICAgICAgICAgIHN0YXRlLmR1
bXAoV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYK
ICAgICAgICAgICAgIGlmICghc3RhdGUuZXhlY3V0ZShub2RlSW5kZXgpKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICAgIHRhaWwgcmVnczogIik7Ci0gICAgICAgIHN0
YXRlLmR1bXAoc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkYXRhTG9n
KCIgICAgICB0YWlsIHJlZ3M6ICIpOworICAgICAgICBzdGF0ZS5kdW1wKFdURjo6ZGF0YUZpbGUo
KSk7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAjZW5kaWYKICAgICAgICAgbV9jaGFuZ2VkIHw9
IHN0YXRlLmVuZEJhc2ljQmxvY2soQWJzdHJhY3RTdGF0ZTo6TWVyZ2VUb1N1Y2Nlc3NvcnMpOwog
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRm
KCIgICAgICB0YWlsIHZhcnM6ICIpOwotICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVl
c0F0VGFpbCwgc3Rkb3V0KTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICBkYXRhTG9n
KCIgICAgICB0YWlsIHZhcnM6ICIpOworICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVl
c0F0VGFpbCwgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKICNlbmRp
ZgogICAgIH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1Gb3J3YXJkQ0ZBKEFic3RyYWN0U3RhdGUm
IHN0YXRlKQogICAgIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIHByaW50ZigiQ0ZBIFsldV1cbiIsICsrbV9jb3VudCk7CisgICAgICAgIGRhdGFM
b2coIkNGQSBbJXVdXG4iLCArK21fY291bnQpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2sgPSAwOyBibG9jayA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgp
OyArK2Jsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJh
bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVy
QmFuay5oCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsMTEgKzIzMiwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIEZvciBlYWNoIHJlZ2lzdGVyLCBwcmludCB0aGUgVmlydHVhbFJlZ2lz
dGVyICduYW1lJy4KICAgICAgICAgZm9yICh1aW50MzJfdCBpID0wOyBpIDwgTlVNX1JFR1M7ICsr
aSkgewogICAgICAgICAgICAgaWYgKG1fZGF0YVtpXS5uYW1lICE9IEludmFsaWRWaXJ0dWFsUmVn
aXN0ZXIpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbJTAyZF0iLCBtX2RhdGFb
aV0ubmFtZSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiWyUwMmRdIiwgbV9kYXRhW2ldLm5h
bWUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
Wy0tXSIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIlstLV0iKTsKICAgICAgICAgfQotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAg
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2Fy
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2Fy
ZC5oCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nj
b3JlQm9hcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDI2ICsxMTksMjYgQEAgcHVibGljOgog
I2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoKQogICAgIHsKLSAgICAgICAgcHJpbnRmKCIg
ICAgVVNFRDogWyAiKTsKKyAgICAgICAgZGF0YUxvZygiICAgIFVTRUQ6IFsgIik7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGlmICghbV9mcmVlLmNvbnRhaW5zKGkpKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIl
ZDoiLCBpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIlZDoiLCBpKTsKICAgICAgICAgICAg
ICAgICBpZiAobV91c2VkW2ldID09IG1heCgpKQotICAgICAgICAgICAgICAgICAgICBwcmludGYo
ImxvY2FsICIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJsb2NhbCAiKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV91c2Vk
W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiJWQgIiwgbV91c2VkW2ldKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBwcmludGYoIl1cbiIpOworICAgICAgICBk
YXRhTG9nKCJdXG4iKTsKIAotICAgICAgICBwcmludGYoIiAgICBGUkVFOiBbICIpOworICAgICAg
ICBkYXRhTG9nKCIgICAgRlJFRTogWyAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fdXNlZC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZnJlZS5jb250YWlu
cyhpKSAmJiBtX3VzZWRbaV0gIT0gbWF4KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1f
dXNlZFtpXSk7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBpKTsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIlZCAiLCBpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBwcmludGYoIl1cbiIpOworICAgICAgICBkYXRhTG9nKCJdXG4iKTsKICAgICB9CiAKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODQs
NyArOTg0LDcgQEAgdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5kZXggbm9kZUluZGV4LCBEYXRhRm9ybWF0
JiByZXR1cm5Gb3JtYXQpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZw
cmludGYoc3RkZXJyLCAiU3BlY0ludEAlZCAgICIsIG5vZGVJbmRleCk7CisgICAgZGF0YUxvZygi
U3BlY0ludEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBpZiAoaXNLbm93bk5vdElu
dGVnZXIobm9kZUluZGV4KSkgewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKQEAgLTEwODAsNyArMTA4MCw3
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludFMKIEZQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogewog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNE
b3VibGVAJWQgICAiLCBub2RlSW5kZXgpOworICAgIGRhdGFMb2coIlNwZWNEb3VibGVAJWQgICAi
LCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobm9kZUluZGV4
KSkgewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKQEAgLTEyMTAsNyArMTIxMCw3IEBAIEZQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUNlbGwoTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJ
bmRleCk7CisgICAgZGF0YUxvZygiU3BlY0NlbGxAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlm
CiAgICAgaWYgKGlzS25vd25Ob3RDZWxsKG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWluYXRl
U3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7
CkBAIC0xMjgzLDcgKzEyODMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVDZWxsCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJ
bmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICBm
cHJpbnRmKHN0ZGVyciwgIlNwZWNCb29sQCVkICAgIiwgbm9kZUluZGV4KTsKKyAgICAgZGF0YUxv
ZygiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgaWYgKGlzS25vd25O
b3RCb29sZWFuKG5vZGVJbmRleCkpIHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVj
dXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw3ICs5ODQsNyBAQCB0ZW1wbGF0ZTxib29s
IHN0cmljdD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludEludGVybmFs
KE5vZGVJbmRleCBub2RlSW5kZXgsIERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCkKIHsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJTcGVjSW50QCVk
ICAgIiwgbm9kZUluZGV4KTsKKyAgICBkYXRhTG9nKCJTcGVjSW50QCVkICAgIiwgbm9kZUluZGV4
KTsKICNlbmRpZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtMTEy
OSw3ICsxMTI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50Uwog
RlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3Rk
ZXJyLCAiU3BlY0RvdWJsZUAlZCAgICIsIG5vZGVJbmRleCk7CisgICAgZGF0YUxvZygiU3BlY0Rv
dWJsZUAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9k
ZUluZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0
dWFsUmVnaXN0ZXIoKTsKQEAgLTEyODAsNyArMTI4MCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZURvdWIKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUNlbGwoTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCi0gICAgZnByaW50ZihzdGRlcnIsICJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJbmRleCk7Cisg
ICAgZGF0YUxvZygiU3BlY0NlbGxAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgTm9k
ZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0Jvb2xAJWQg
ICAiLCBub2RlSW5kZXgpOworICAgIGRhdGFMb2coIlNwZWNCb29sQCVkICAgIiwgbm9kZUluZGV4
KTsKICNlbmRpZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsMzMgKzQzMCwzMyBAQCBzdGF0aWMgY29u
c3QgY2hhciogZGF0YUZvcm1hdFN0cmluZyhEYXRhCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1w
KGNvbnN0IGNoYXIqIGxhYmVsKQogewogICAgIGlmIChsYWJlbCkKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICI8JXM+XG4iLCBsYWJlbCk7CisgICAgICAgIGRhdGFMb2coIjwlcz5cbiIsIGxhYmVs
KTsKIAotICAgIGZwcmludGYoc3RkZXJyLCAiICBncHJzOlxuIik7CisgICAgZGF0YUxvZygiICBn
cHJzOlxuIik7CiAgICAgbV9ncHJzLmR1bXAoKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgZnBy
czpcbiIpOworICAgIGRhdGFMb2coIiAgZnByczpcbiIpOwogICAgIG1fZnBycy5kdW1wKCk7Ci0g
ICAgZnByaW50ZihzdGRlcnIsICIgIFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKKyAgICBkYXRhTG9n
KCIgIFZpcnR1YWxSZWdpc3RlcnM6XG4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkgewogICAgICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9baV07CiAgICAgICAgIGlmIChpbmZvLmFsaXZlKCkpCi0g
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAlIDNkOiVzJXMiLCBpLCBkYXRhRm9ybWF0
U3RyaW5nKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSksIGRhdGFGb3JtYXRTdHJpbmcoaW5mby5zcGls
bEZvcm1hdCgpKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgJSAzZDolcyVzIiwgaSwgZGF0
YUZvcm1hdFN0cmluZyhpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpLCBkYXRhRm9ybWF0U3RyaW5nKGlu
Zm8uc3BpbGxGb3JtYXQoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgICAlIDNkOltfX11bX19dIiwgaSk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAg
JSAzZDpbX19dW19fXSIsIGkpOwogICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09
IERhdGFGb3JtYXREb3VibGUpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjpmcHIlZFxu
IiwgaW5mby5mcHIoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCI6ZnByJWRcbiIsIGluZm8uZnBy
KCkpOwogICAgICAgICBlbHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1h
dE5vbmUKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAgICAgJiYgIShpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCiAjZW5kaWYKICAgICAgICAgICAgICkgewogICAg
ICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIjolc1xuIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8u
Z3ByKCkpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxu
Iik7CisgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwogICAgIH0KICAgICBpZiAobGFiZWwpCi0g
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiPC8lcz5cbiIsIGxhYmVsKTsKKyAgICAgICAgZGF0YUxv
ZygiPC8lcz5cbiIsIGxhYmVsKTsKIH0KICNlbmRpZgogCkBAIC00NjgsMTMgKzQ2OCwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0NvbnNpc3RlbmN5KCkKIAogICAgIGZvciAoZ3ByX2l0
ZXJhdG9yIGl0ZXIgPSBtX2dwcnMuYmVnaW4oKTsgaXRlciAhPSBtX2dwcnMuZW5kKCk7ICsraXRl
cikgewogICAgICAgICBpZiAoaXRlci5pc0xvY2tlZCgpKSB7Ci0gICAgICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IGdwciAlcyBpcyBsb2NrZWQu
XG4iLCBpdGVyLmRlYnVnTmFtZSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkRGR19DT05TSVNU
RU5DWV9DSEVDSyBmYWlsZWQ6IGdwciAlcyBpcyBsb2NrZWQuXG4iLCBpdGVyLmRlYnVnTmFtZSgp
KTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9y
IChmcHJfaXRlcmF0b3IgaXRlciA9IG1fZnBycy5iZWdpbigpOyBpdGVyICE9IG1fZnBycy5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChpdGVyLmlzTG9ja2VkKCkpIHsKLSAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogZnByICVzIGlz
IGxvY2tlZC5cbiIsIGl0ZXIuZGVidWdOYW1lKCkpOworICAgICAgICAgICAgZGF0YUxvZygiREZH
X0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogZnByICVzIGlzIGxvY2tlZC5cbiIsIGl0ZXIuZGVi
dWdOYW1lKCkpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0K
QEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0NvbnNpc3RlbmN5
KCkKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICAgICAgQVNT
RVJUKGdwciAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgIGlmIChtX2dwcnMubmFtZShn
cHIpICE9IHZpcnR1YWxSZWdpc3RlcikgewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgdmlydHVh
bCByZWdpc3RlciAlZCAoZ3ByICVzKS5cbiIsIHZpcnR1YWxSZWdpc3RlciwgR1BSSW5mbzo6ZGVi
dWdOYW1lKGdwcikpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkRGR19DT05TSVNURU5DWV9D
SEVDSyBmYWlsZWQ6IG5hbWUgbWlzbWF0Y2ggZm9yIHZpcnR1YWwgcmVnaXN0ZXIgJWQgKGdwciAl
cykuXG4iLCB2aXJ0dWFsUmVnaXN0ZXIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpKTsKICAgICAg
ICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0
ZW5jeSgpCiAgICAgICAgICAgICBGUFJSZWcgZnByID0gaW5mby5mcHIoKTsKICAgICAgICAgICAg
IEFTU0VSVChmcHIgIT0gSW52YWxpZEZQUlJlZyk7CiAgICAgICAgICAgICBpZiAobV9mcHJzLm5h
bWUoZnByKSAhPSB2aXJ0dWFsUmVnaXN0ZXIpIHsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6IG5hbWUgbWlzbWF0Y2ggZm9yIHZp
cnR1YWwgcmVnaXN0ZXIgJWQgKGZwciAlcykuXG4iLCB2aXJ0dWFsUmVnaXN0ZXIsIEZQUkluZm86
OmRlYnVnTmFtZShmcHIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJERkdfQ09OU0lTVEVO
Q1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciB2aXJ0dWFsIHJlZ2lzdGVyICVkIChm
cHIgJXMpLlxuIiwgdmlydHVhbFJlZ2lzdGVyLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSk7CiAg
ICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTI3LDE4ICs1MjcsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tD
b25zaXN0ZW5jeSgpCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9u
SW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChp
dGVyLnJlZ0lEKCkgIT0gaW5mby5ncHIoKSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMg
KHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkRGR19DT05TSVNURU5DWV9DSEVDSyBmYWlsZWQ6
IG5hbWUgbWlzbWF0Y2ggZm9yIGdwciAlcyAodmlydHVhbCByZWdpc3RlciAlZCkuXG4iLCBpdGVy
LmRlYnVnTmFtZSgpLCB2aXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAgICAgZmFpbGVkID0gdHJ1
ZTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgaWYgKCEoaW5mby5yZWdpc3RlckZvcm1hdCgp
ICYgRGF0YUZvcm1hdEpTKSkgewogICAgICAgICAgICAgaWYgKGl0ZXIucmVnSUQoKSAhPSBpbmZv
LmdwcigpKSB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJERkdfQ09OU0lTVEVO
Q1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0
ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwgdmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21h
dGNoIGZvciBncHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUo
KSwgdmlydHVhbFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGl0ZXIucmVnSUQo
KSAhPSBpbmZvLnRhZ0dQUigpICYmIGl0ZXIucmVnSUQoKSAhPSBpbmZvLnBheWxvYWRHUFIoKSkg
ewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RFTkNZX0NIRUNL
IGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZ3ByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5c
biIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZygiREZHX0NPTlNJU1RFTkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3Ig
Z3ByICVzICh2aXJ0dWFsIHJlZ2lzdGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1
YWxSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNo
ZWNrQ29uc2lzdGVuY3koKQogCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5l
cmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwogICAgICAgICBpZiAoaXRlci5yZWdJRCgpICE9
IGluZm8uZnByKCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiREZHX0NPTlNJU1RF
TkNZX0NIRUNLIGZhaWxlZDogbmFtZSBtaXNtYXRjaCBmb3IgZnByICVzICh2aXJ0dWFsIHJlZ2lz
dGVyICVkKS5cbiIsIGl0ZXIuZGVidWdOYW1lKCksIHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJERkdfQ09OU0lTVEVOQ1lfQ0hFQ0sgZmFpbGVkOiBuYW1lIG1pc21hdGNo
IGZvciBmcHIgJXMgKHZpcnR1YWwgcmVnaXN0ZXIgJWQpLlxuIiwgaXRlci5kZWJ1Z05hbWUoKSwg
dmlydHVhbFJlZ2lzdGVyKTsKICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9CkBAIC05NjMsNyArOTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShC
YXNpY0Jsb2NrJgogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JPU1IgPSBub2RlLmNvZGVPcmlnaW47
CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpKSB7CiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjdWxhdGl2ZUpJ
VCBza2lwcGluZyBOb2RlIEAlZCAoYmMjJXUpIGF0IEpJVCBvZmZzZXQgMHgleCAgICAgIiwgKGlu
dCltX2NvbXBpbGVJbmRleCwgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1faml0LmRl
YnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZygiU3BlY3VsYXRpdmVKSVQgc2tpcHBp
bmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAgICIsIChpbnQpbV9jb21w
aWxlSW5kZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2ppdC5kZWJ1Z09mZnNl
dCgpKTsKICNlbmRpZgogICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKSB7CiAgICAgICAgICAg
ICBjYXNlIFNldExvY2FsOgpAQCAtOTkwLDcgKzk5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIAogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
U3BlY3VsYXRpdmVKSVQgZ2VuZXJhdGluZyBOb2RlIEAlZCAoYmMjJXUpIGF0IEpJVCBvZmZzZXQg
MHgleCAgICIsIChpbnQpbV9jb21waWxlSW5kZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlNwZWN1bGF0
aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAi
LCAoaW50KW1fY29tcGlsZUluZGV4LCBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbV9q
aXQuZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKICNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9F
VkVSWV9OT0RFKQogICAgICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwpAQCAtMTAxMSwyMCAr
MTAxMSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICAgICAgaWYgKG5vZGUuaGFzUmVzdWx0
KCkpIHsKICAgICAgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlv
bkluZm9bbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKV07Ci0gICAgICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICItPiAlcywgdnIjJWQiLCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSwgKGludClub2RlLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCItPiAlcywgdnIjJWQiLCBkYXRhRm9ybWF0VG9TdHJpbmcoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSwgKGludClub2RlLnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgICAgICBp
ZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiLCAlcyIsIEZQUkluZm86
OmRlYnVnTmFtZShpbmZvLmZwcigpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIsICVzIiwgRlBSSW5mbzo6ZGVidWdOYW1lKGluZm8uZnByKCkpKTsKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkgJiBEYXRhRm9ybWF0SlMpCi0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiwgJXMgJXMiLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby50YWdHUFIoKSksIEdQUkluZm86
OmRlYnVnTmFtZShpbmZvLnBheWxvYWRHUFIoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiLCAlcyAlcyIsIEdQUkluZm86OmRlYnVnTmFtZShpbmZvLnRhZ0dQUigpKSwgR1BS
SW5mbzo6ZGVidWdOYW1lKGluZm8ucGF5bG9hZEdQUigpKSk7CiAjZW5kaWYKICAgICAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIs
ICVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGluZm8uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiwgJXMiLCBHUFJJbmZvOjpkZWJ1Z05hbWUoaW5mby5ncHIoKSkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAi
KTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIik7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAiKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgIik7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKQEAgLTEwMzIs
MTQgKzEwMzIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IoYXJndW1lbnRUb09wZXJhbmQoaSkp
LmR1bXAoc3RkZXJyKTsKICAgICAgICAgCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIDogIik7
CisgICAgICAgIGRhdGFMb2coIiA6ICIpOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgb3Bl
cmFuZCA9IDA7IG9wZXJhbmQgPCAoaW50KW1fdmFyaWFibGVzLnNpemUoKTsgKytvcGVyYW5kKQog
ICAgICAgICAgICAgY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3Iob3BlcmFuZCkuZHVtcChzdGRlcnIp
OwogI2VuZGlmCiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogICAgICAg
ICAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGFic3RyYWN0IHN0YXRlIGlzIHJlbWF0
ZXJpYWxpemVkIGZvciB0aGUgbmV4dCBub2RlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBHQ1RpbWVy
IHsKICAgICB9CiAgICAgfkdDVGltZXIoKQogICAgIHsKLSAgICAgICAgcHJpbnRmKCIlczogJS4y
bGZtcyAoYXZnLiAlLjJsZiwgbWluLiAlLjJsZiwgbWF4LiAlLjJsZilcbiIsIG1fbmFtZSwgbV90
aW1lICogMTAwMCwgbV90aW1lICogMTAwMCAvIG1fY291bnQsIG1fbWluKjEwMDAsIG1fbWF4KjEw
MDApOworICAgICAgICBkYXRhTG9nKCIlczogJS4ybGZtcyAoYXZnLiAlLjJsZiwgbWluLiAlLjJs
ZiwgbWF4LiAlLjJsZilcbiIsIG1fbmFtZSwgbV90aW1lICogMTAwMCwgbV90aW1lICogMTAwMCAv
IG1fY291bnQsIG1fbWluKjEwMDAsIG1fbWF4KjEwMDApOwogICAgIH0KICAgICBkb3VibGUgbV90
aW1lOwogICAgIGRvdWJsZSBtX21pbjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgR0NDb3Vu
dGVyIHsKICAgICB9CiAgICAgfkdDQ291bnRlcigpCiAgICAgewotICAgICAgICBwcmludGYoIiVz
OiAlenUgdmFsdWVzIChhdmcuICV6dSwgbWluLiAlenUsIG1heC4gJXp1KVxuIiwgbV9uYW1lLCBt
X3RvdGFsLCBtX3RvdGFsIC8gbV9jb3VudCwgbV9taW4sIG1fbWF4KTsKKyAgICAgICAgZGF0YUxv
ZygiJXM6ICV6dSB2YWx1ZXMgKGF2Zy4gJXp1LCBtaW4uICV6dSwgbWF4LiAlenUpXG4iLCBtX25h
bWUsIG1fdG90YWwsIG1fdG90YWwgLyBtX2NvdW50LCBtX21pbiwgbV9tYXgpOwogICAgIH0KICAg
ICBjb25zdCBjaGFyKiBtX25hbWU7CiAgICAgc2l6ZV90IG1fY291bnQ7CkBAIC0zODEsOCArMzgx
LDggQEAgdm9pZCBIZWFwOjpkZXN0cm95KCkKICAgICBBU1NFUlQoIXNpemUoKSk7CiAgICAgCiAj
aWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKLSAgICBtX3Nsb3RWaXNpdG9yLm1fdmlz
aXRlZFR5cGVDb3VudHMuZHVtcChzdGRlcnIsICJWaXNpdGVkIFR5cGUgQ291bnRzIik7Ci0gICAg
bV9kZXN0cm95ZWRUeXBlQ291bnRzLmR1bXAoc3RkZXJyLCAiRGVzdHJveWVkIFR5cGUgQ291bnRz
Iik7CisgICAgbV9zbG90VmlzaXRvci5tX3Zpc2l0ZWRUeXBlQ291bnRzLmR1bXAoV1RGOjpkYXRh
RmlsZSgpLCAiVmlzaXRlZCBUeXBlIENvdW50cyIpOworICAgIG1fZGVzdHJveWVkVHlwZUNvdW50
cy5kdW1wKFdURjo6ZGF0YUZpbGUoKSwgIkRlc3Ryb3llZCBUeXBlIENvdW50cyIpOwogI2VuZGlm
CiAgICAgCiAgICAgcmVsZWFzZUZyZWVCbG9ja3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIkhlYXBCbG9jay5oIgogCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3Qu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQWxs
b2NhdGlvbkFsaWduZWQuaD4KQEAgLTM2LDkgKzM3LDExIEBACiAjZGVmaW5lIEhFQVBfTE9HX0JM
T0NLX1NUQVRFX1RSQU5TSVRJT05TIDAKIAogI2lmIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT05TCi0jZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oYmxvY2spIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwcmludGYoIiVz
OiVkICVzOiBibG9jayAlcyA9ICVwLCAlZFxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElP
Tl9fLCAjYmxvY2ssIChibG9jayksIChibG9jayktPm1fc3RhdGUpOyBcCisjZGVmaW5lIEhFQVBf
TE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oYmxvY2spIGRvIHsgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGRhdGFMb2coICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICIlczolZCAlczogYmxvY2sgJXMgPSAlcCwg
JWRcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9fRklMRV9f
LCBfX0xJTkVfXywgX19GVU5DVElPTl9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICNibG9jaywgKGJsb2NrKSwgKGJsb2NrKS0+bV9zdGF0ZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCiAjZGVmaW5lIEhFQVBf
TE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04oYmxvY2spICgodm9pZCkwKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9u
IDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgQ2FsbEZyYW1lOjpkdW1w
Q2FsbGVyKCkKICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwogICAgIAogICAgIGludGVycHJldGVyKCkt
PnJldHJpZXZlTGFzdENhbGxlcih0aGlzLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJs
U3RyaW5nLCBmdW5jdGlvbik7Ci0gICAgcHJpbnRmKCJDYWxscG9pbnQgPT4gJXM6JWRcbiIsIHVy
bFN0cmluZy51dGY4KCkuZGF0YSgpLCBzaWduZWRMaW5lTnVtYmVyKTsKKyAgICBkYXRhTG9nKCJD
YWxscG9pbnQgPT4gJXM6JWRcbiIsIHVybFN0cmluZy51dGY4KCkuZGF0YSgpLCBzaWduZWRMaW5l
TnVtYmVyKTsKIH0KIAogUmVnaXN0ZXJGaWxlKiBDYWxsRnJhbWU6OnJlZ2lzdGVyRmlsZSgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MiwxMCArNTkyLDEwIEBA
IHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBDYWxsRnJhbWUoQ2FsbEZyYW0KIAogdm9pZCBJbnRlcnBy
ZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBwcmludGYo
IlJlZ2lzdGVyIGZyYW1lOiBcblxuIik7Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuIik7Ci0gICAgcHJpbnRmKCIgICAgICAgICAgICB1c2UgICAgICAgICAgICB8ICAgYWRkcmVz
cyAgfCAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICAgICAgICAgIFxuIik7Ci0gICAgcHJpbnRm
KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGF0YUxvZygiUmVnaXN0ZXIgZnJhbWU6
IFxuXG4iKTsKKyAgICBkYXRhTG9nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgZGF0
YUxvZygiICAgICAgICAgICAgdXNlICAgICAgICAgICAgfCAgIGFkZHJlc3MgIHwgICAgICAgICAg
ICAgICAgdmFsdWUgICAgICAgICAgICAgICBcbiIpOworICAgIGRhdGFMb2coIi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tXG4iKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKTsKICAgICBjb25zdCBSZWdpc3RlciogaXQ7CkBAIC02MDUsMzAgKzYwNSwzMCBA
QCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAgICAgaXQgPSBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpIC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0g
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CiAgICAgdiA9ICgqaXQpLmpzVmFsdWUoKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHByaW50ZigiW3RoaXNdICAgICAgICAgICAgICAgICAg
ICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1
ZTo6ZW5jb2RlKHYpKTsgKytpdDsKKyAgICBkYXRhTG9nKCJbdGhpc10gICAgICAgICAgICAgICAg
ICAgICB8ICUxMHAgfCAlLTE2cyAweCVsbHggXG4iLCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1Zh
bHVlOjplbmNvZGUodikpOyArK2l0OwogI2Vsc2UKLSAgICBwcmludGYoIlt0aGlzXSAgICAgICAg
ICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzICVwIFxuIiwgaXQsIHYuZGVzY3JpcHRpb24oKSwg
SlNWYWx1ZTo6ZW5jb2RlKHYpKTsgKytpdDsKKyAgICBkYXRhTG9nKCJbdGhpc10gICAgICAgICAg
ICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpT
VmFsdWU6OmVuY29kZSh2KSk7ICsraXQ7CiAjZW5kaWYKICAgICBlbmQgPSBpdCArIG1heChjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIDEsIDApOyAvLyAtIDEgdG8gc2tpcCAidGhpcyIKICAg
ICBpZiAoaXQgIT0gZW5kKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHYgPSAoKml0KS5q
c1ZhbHVlKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIHByaW50ZigiW3Bh
cmFtXSAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgaXQsIHYu
ZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IltwYXJhbV0gICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIGl0
LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CiAjZWxzZQotICAgICAgICAg
ICAgcHJpbnRmKCJbcGFyYW1dICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBc
biIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbcGFyYW1dICAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBc
biIsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CiAjZW5kaWYKICAg
ICAgICAgICAgICsraXQ7CiAgICAgICAgIH0gd2hpbGUgKGl0ICE9IGVuZCk7CiAgICAgfQotICAg
IHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwotICAgIHByaW50ZigiW0NvZGVCbG9j
a10gICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkuY29kZUJsb2NrKCkp
OyArK2l0OwotICAgIHByaW50ZigiW1Njb3BlQ2hhaW5dICAgICAgICAgICAgICAgfCAlMTBwIHwg
JXAgXG4iLCBpdCwgKCppdCkuc2NvcGVDaGFpbigpKTsgKytpdDsKLSAgICBwcmludGYoIltDYWxs
ZXJSZWdpc3RlcnNdICAgICAgICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7ICsr
aXQ7Ci0gICAgcHJpbnRmKCJbUmV0dXJuUENdICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlcCBc
biIsIGl0LCAoKml0KS52UEMoKSk7ICsraXQ7Ci0gICAgcHJpbnRmKCJbQXJndW1lbnRDb3VudF0g
ICAgICAgICAgICB8ICUxMHAgfCAlZCBcbiIsIGl0LCAoKml0KS5pKCkpOyArK2l0OwotICAgIHBy
aW50ZigiW0NhbGxlZV0gICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJXAgXG4iLCBpdCwgKCpp
dCkuZnVuY3Rpb24oKSk7ICsraXQ7Ci0gICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxu
Iik7CisgICAgZGF0YUxvZygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgIGRhdGFMb2co
IltDb2RlQmxvY2tdICAgICAgICAgICAgICAgIHwgJTEwcCB8ICVwIFxuIiwgaXQsICgqaXQpLmNv
ZGVCbG9jaygpKTsgKytpdDsKKyAgICBkYXRhTG9nKCJbU2NvcGVDaGFpbl0gICAgICAgICAgICAg
ICB8ICUxMHAgfCAlcCBcbiIsIGl0LCAoKml0KS5zY29wZUNoYWluKCkpOyArK2l0OworICAgIGRh
dGFMb2coIltDYWxsZXJSZWdpc3RlcnNdICAgICAgICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgq
aXQpLmkoKSk7ICsraXQ7CisgICAgZGF0YUxvZygiW1JldHVyblBDXSAgICAgICAgICAgICAgICAg
fCAlMTBwIHwgJXAgXG4iLCBpdCwgKCppdCkudlBDKCkpOyArK2l0OworICAgIGRhdGFMb2coIltB
cmd1bWVudENvdW50XSAgICAgICAgICAgIHwgJTEwcCB8ICVkIFxuIiwgaXQsICgqaXQpLmkoKSk7
ICsraXQ7CisgICAgZGF0YUxvZygiW0NhbGxlZV0gICAgICAgICAgICAgICAgICAgfCAlMTBwIHwg
JXAgXG4iLCBpdCwgKCppdCkuZnVuY3Rpb24oKSk7ICsraXQ7CisgICAgZGF0YUxvZygiLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbiIpOwogCiAgICAgaW50IHJlZ2lzdGVyQ291bnQgPSAwOwogCkBAIC02
MzcsMzAgKzYzNywzMCBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFt
CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHYgPSAoKml0KS5qc1ZhbHVlKCk7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIHByaW50ZigiW3IlMmRdICAgICAgICAgICAgICAg
ICAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRl
c2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJb
ciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGx4IFxuIiwgcmVn
aXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNl
bHNlCi0gICAgICAgICAgICBwcmludGYoIltyJTJkXSAgICAgICAgICAgICAgICAgICAgICB8ICUx
MHAgfCAlLTE2cyAlcCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpT
VmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbciUyZF0gICAgICAgICAg
ICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgJXAgXG4iLCByZWdpc3RlckNvdW50LCBpdCwgdi5k
ZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOwogI2VuZGlmCiAgICAgICAgICAgICAr
K2l0OwogICAgICAgICAgICAgKytyZWdpc3RlckNvdW50OwogICAgICAgICB9IHdoaWxlIChpdCAh
PSBlbmQpOwogICAgIH0KLSAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAg
ICBkYXRhTG9nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAKICAgICBlbmQgPSBpdCArIGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAg
ICBpZiAoaXQgIT0gZW5kKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHYgPSAoKml0KS5q
c1ZhbHVlKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIHByaW50ZigiW3Il
MmRdICAgICAgICAgICAgICAgICAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lz
dGVyQ291bnQsIGl0LCB2LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0x
NnMgMHglbGx4IFxuIiwgcmVnaXN0ZXJDb3VudCwgaXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1
ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCi0gICAgICAgICAgICBwcmludGYoIltyJTJkXSAgICAgICAg
ICAgICAgICAgICAgICB8ICUxMHAgfCAlLTE2cyAlcCBcbiIsIHJlZ2lzdGVyQ291bnQsIGl0LCB2
LmRlc2NyaXB0aW9uKCksIEpTVmFsdWU6OmVuY29kZSh2KSk7CisgICAgICAgICAgICBkYXRhTG9n
KCJbciUyZF0gICAgICAgICAgICAgICAgICAgICAgfCAlMTBwIHwgJS0xNnMgJXAgXG4iLCByZWdp
c3RlckNvdW50LCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOwogI2Vu
ZGlmCiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKytyZWdpc3RlckNvdW50OwogICAg
ICAgICB9IHdoaWxlIChpdCAhPSBlbmQpOwogICAgIH0KLSAgICBwcmludGYoIi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tXG4iKTsKKyAgICBkYXRhTG9nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiB9
CiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA3
NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBtX2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0XSA9IGxhYmVsKCk7CiAKICNpZiBFTkFC
TEUoSklUX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZv
ciBiYyMldSBhdCBvZmZzZXQgMHglbHguXG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1
Z09mZnNldCgpKTsKKyAgICAgICAgZGF0YUxvZygiT2xkIEpJVCBlbWl0dGluZyBjb2RlIGZvciBi
YyMldSBhdCBvZmZzZXQgMHglbHguXG4iLCBtX2J5dGVjb2RlT2Zmc2V0LCAobG9uZylkZWJ1Z09m
ZnNldCgpKTsKICNlbmRpZgogCiAgICAgICAgIHN3aXRjaCAobV9pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSkpIHsKQEAgLTQyOSw3ICs0MjksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSklUX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiT2xkIEpJVCBlbWl0dGluZyBzbG93IGNv
ZGUgZm9yIGJjIyV1IGF0IG9mZnNldCAweCVseC5cbiIsIG1fYnl0ZWNvZGVPZmZzZXQsIChsb25n
KWRlYnVnT2Zmc2V0KCkpOworICAgICAgICBkYXRhTG9nKCJPbGQgSklUIGVtaXR0aW5nIHNsb3cg
Y29kZSBmb3IgYmMjJXUgYXQgb2Zmc2V0IDB4JWx4LlxuIiwgbV9ieXRlY29kZU9mZnNldCwgKGxv
bmcpZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKIAogICAgICAgICBzd2l0Y2ggKG1faW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CkBAIC03MTAs
NyArNzEwLDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAg
IENvZGVSZWYgcmVzdWx0ID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7CiAgICAgCiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFKQotICAgIHByaW50ZigiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAl
cCBhdCBbJXAsICVwKS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgp
LT5zdGFydCgpLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CisgICAgZGF0YUxv
ZygiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVwKS5cbiIsIG1fY29kZUJsb2Nr
LCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCByZXN1bHQuZXhlY3V0YWJsZU1l
bW9yeSgpLT5lbmQoKSk7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4gSklUQ29kZShyZXN1bHQs
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzMSwxNiArMTkzMSwxNiBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGgg
ZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2st
Pm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9nKCJFbnRlcmVkIG9wdGlt
aXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxv
Y2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYK
IAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIkNvbnNpZGVyaW5nIGxvb3Ag
T1NSIGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBj
b2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3Vs
YXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0
aXZlRmFpbENvdW50ZXIoKSk7CisgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGxvb3AgT1NS
IGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRp
dmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZl
RmFpbENvdW50ZXIoKSk7CiAjZW5kaWYKICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKS0+c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQotICAgICAgICAgICAgcHJpbnRmKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9u
IG9mICVwKCVwKSAoaW4gbG9vcCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9m
ICVwKCVwKSAoaW4gbG9vcCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQo
KSk7CiAjZW5kaWYKICAgICAgICAgICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3B0aW1pemVfZnJvbQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghY29kZUJsb2Nr
LT5zaG91bGRPcHRpbWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICAgICAgICAgIHByaW50ZigiRGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAlcCAoaW4gbG9vcCkg
YmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJvZmlsaW5nLlxuIiwgY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIGxvb3ApIGJl
Y2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CiAjZW5kaWYK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk1OCwxNCArMTk1OCwxNCBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGNvZGVCbG9jay0+Y29tcGlsZU9wdGltaXplZChjYWxsRnJhbWUsIHNjb3BlQ2hh
aW4pOwogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCiAgICAgICAgIGlmIChlcnJvcikKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogb3B0aW1pemVkIGNvbXBpbGF0aW9u
IGZyb20gbG9vcCBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIldBUk5JTkc6IG9w
dGltaXplZCBjb21waWxhdGlvbiBmcm9tIGxvb3AgZmFpbGVkLlxuIik7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0oZXJyb3IpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBpZiAoY29k
ZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNvZGVCbG9jaykgewogI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCi0gICAgICAgICAgICBwcmludGYoIk9wdGltaXppbmcgJXAgZnJvbSBsb29wIGZh
aWxlZC5cbiIsIGNvZGVCbG9jayk7CisgICAgICAgICAgICBkYXRhTG9nKCJPcHRpbWl6aW5nICVw
IGZyb20gbG9vcCBmYWlsZWQuXG4iLCBjb2RlQmxvY2spOwogI2VuZGlmCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CkBAIC0xOTc5LDcgKzE5NzksNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgCiAgICAgaWYgKHZvaWQqIGFkZHJlc3MgPSBERkc6OnBy
ZXBhcmVPU1JFbnRyeShjYWxsRnJhbWUsIG9wdGltaXplZENvZGVCbG9jaywgYnl0ZWNvZGVJbmRl
eCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIk9wdGlt
aXppbmcgJXAgZnJvbSBsb29wIHN1Y2NlZWRlZCwgcGVyZm9ybWluZyBPU1IgYWZ0ZXIgYSBkZWxh
eSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIoKSk7CisgICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgJXAgZnJvbSBsb29wIHN1Y2NlZWRl
ZCwgcGVyZm9ybWluZyBPU1IgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29k
ZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgICAgICBj
b2RlQmxvY2stPm9wdGltaXplU29vbigpOwpAQCAtMTk4OSw3ICsxOTg5LDcgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIH0KICAgICAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3Vj
Y2VlZGVkLCBPU1IgZmFpbGVkLCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9nKCJPcHRp
bWl6aW5nICVwIGZyb20gbG9vcCBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVyIGEgZGVsYXkg
b2YgJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
KCkpOwogI2VuZGlmCiAKICAgICAvLyBDb3VudCB0aGUgT1NSIGZhaWx1cmUgYXMgYSBzcGVjdWxh
dGlvbiBmYWlsdXJlLiBJZiB0aGlzIGhhcHBlbnMgYSBsb3QsIHRoZW4KQEAgLTE5OTcsNyArMTk5
Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICBvcHRp
bWl6ZWRDb2RlQmxvY2stPmNvdW50U3BlY3VsYXRpb25GYWlsdXJlKCk7CiAgICAgCiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVuY291bnRlcmVkIGxvb3AgT1NSIGZh
aWx1cmUgaW50byAlcCglcCkgd2l0aCBzdWNjZXNzL2ZhaWwgJXUvJXUuXG4iLCBjb2RlQmxvY2ss
IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVj
dWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3Vs
YXRpdmVGYWlsQ291bnRlcigpKTsKKyAgICBkYXRhTG9nKCJFbmNvdW50ZXJlZCBsb29wIE9TUiBm
YWlsdXJlIGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2Nr
LCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3Bl
Y3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1
bGF0aXZlRmFpbENvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIC8vIFdlIGFyZSBhIGxvdCBtb3Jl
IGNvbnNlcnZhdGl2ZSBhYm91dCB0cmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIGFmdGVyIE9TUiBm
YWlsdXJlIHRoYW4KQEAgLTIwMTAsNyArMjAxMCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wdGltaXplX2Zyb20KICAgICAvLyByZW9wdGltaXphdGlvbiB0cmlnZ2VyLgogICAgIGlm
IChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3VsZFJlb3B0aW1pemVOb3coKSkgewogI2lmIEVOQUJM
RShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50ZigiVHJpZ2dlcmluZyByZW9wdGltaXph
dGlvbiBvZiAlcCglcCkgKGluIGxvb3AgYWZ0ZXIgT1NSIGZhaWwpLlxuIiwgY29kZUJsb2NrLCBj
b2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAgICAgICBkYXRhTG9nKCJUcmlnZ2VyaW5nIHJl
b3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4gbG9vcCBhZnRlciBPU1IgZmFpbCkuXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CiAjZW5kaWYKICAgICAgICAgY29kZUJs
b2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwMjksMjAgKzIwMjksMjAg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX3JldCB3
aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUs
IG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVD
b3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJs
b2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZygiRW50ZXJlZCBv
cHRpbWl6ZV9mcm9tX3JldCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2Rl
QmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5k
aWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBwcmludGYoIlJldHVybmluZyBmcm9t
IG9sZCBKSVQgY2FsbCBmcmFtZSB3aXRoIG9wdGltaXplZCByZXBsYWNlbWVudCAlcCglcCksIHdp
dGggc3VjY2Vzcy9mYWlsICV1LyV1IiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50
KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigp
LCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7Cisg
ICAgICAgIGRhdGFMb2coIlJldHVybmluZyBmcm9tIG9sZCBKSVQgY2FsbCBmcmFtZSB3aXRoIG9w
dGltaXplZCByZXBsYWNlbWVudCAlcCglcCksIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1IiwgY29k
ZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQo
KS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkt
PnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIGlmIChjYWxsZXJGcmFtZSkK
LSAgICAgICAgICAgIHByaW50ZigiLCBjYWxsZXJGcmFtZSA9ICVwLCByZXR1cm5QQyA9ICVwLCBj
YWxsZXIgY29kZSBibG9jayA9ICVwIiwgY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KS52YWx1ZSgpLCBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCkpOwotICAgICAgICBwcmludGYoIlxu
Iik7CisgICAgICAgICAgICBkYXRhTG9nKCIsIGNhbGxlckZyYW1lID0gJXAsIHJldHVyblBDID0g
JXAsIGNhbGxlciBjb2RlIGJsb2NrID0gJXAiLCBjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpLnZhbHVlKCksIGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKSk7CisgICAgICAgIGRhdGFM
b2coIlxuIik7CiAjZW5kaWYKICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+
c2hvdWxkUmVvcHRpbWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICAgICAgICAgIHByaW50ZigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGlu
IHJldHVybikuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAg
ICAgICAgICBkYXRhTG9nKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoaW4g
cmV0dXJuKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKICNlbmRp
ZgogICAgICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgIH0KQEAgLTIw
NTMsNyArMjA1Myw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20K
ICAgICAKICAgICBpZiAoIWNvZGVCbG9jay0+c2hvdWxkT3B0aW1pemVOb3coKSkgewogI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIHByaW50ZigiRGVsYXlpbmcgb3B0aW1pemF0
aW9uIGZvciAlcCAoaW4gcmV0dXJuKSBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcu
XG4iLCBjb2RlQmxvY2spOworICAgICAgICBkYXRhTG9nKCJEZWxheWluZyBvcHRpbWl6YXRpb24g
Zm9yICVwIChpbiByZXR1cm4pIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIs
IGNvZGVCbG9jayk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNjIsMTEg
KzIwNjIsMTEgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogCiAg
ICAgSlNPYmplY3QqIGVycm9yID0gY29kZUJsb2NrLT5jb21waWxlT3B0aW1pemVkKGNhbGxGcmFt
ZSwgc2NvcGVDaGFpbik7CiAgICAgaWYgKGVycm9yKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IldBUk5JTkc6IG9wdGltaXplZCBjb21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQuXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygiV0FSTklORzogb3B0aW1pemVkIGNvbXBpbGF0aW9uIGZyb20gcmV0IGZh
aWxlZC5cbiIpOwogICAgIAogICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkgPT0gY29k
ZUJsb2NrKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgcHJpbnRmKCJP
cHRpbWl6aW5nICVwIGZyb20gcmV0dXJuIGZhaWxlZC5cbiIsIGNvZGVCbG9jayk7CisgICAgICAg
IGRhdGFMb2coIk9wdGltaXppbmcgJXAgZnJvbSByZXR1cm4gZmFpbGVkLlxuIiwgY29kZUJsb2Nr
KTsKICNlbmRpZgogCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CkBAIC0yMDc3LDcgKzIwNzcsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiT3B0aW1pemluZyAlcCBmcm9tIHJldHVybiBz
dWNjZWVkZWQgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBm
cm9tIHJldHVybiBzdWNjZWVkZWQgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKICAgICAKICAg
ICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEwMiw3ICsx
MDMsNyBAQCB2b2lkIFByb2ZpbGU6OnJlc3RvcmVBbGwoKQogI2lmbmRlZiBOREVCVUcKIHZvaWQg
UHJvZmlsZTo6ZGVidWdQcmludERhdGEoKSBjb25zdAogewotICAgIHByaW50ZigiQ2FsbCBncmFw
aDpcbiIpOworICAgIGRhdGFMb2coIkNhbGwgZ3JhcGg6XG4iKTsKICAgICBtX2hlYWQtPmRlYnVn
UHJpbnREYXRhKDApOwogfQogCkBAIC0xMTgsMTggKzExOSwxOCBAQCB2b2lkIFByb2ZpbGU6OmRl
YnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoCiAgICAgdHlwZWRlZiBWZWN0b3I8TmFtZUNvdW50UGFp
cj4gTmFtZUNvdW50UGFpclZlY3RvcjsKIAogICAgIEZ1bmN0aW9uQ2FsbEhhc2hDb3VudCBjb3Vu
dGVkRnVuY3Rpb25zOwotICAgIHByaW50ZigiQ2FsbCBncmFwaDpcbiIpOworICAgIGRhdGFMb2co
IkNhbGwgZ3JhcGg6XG4iKTsKICAgICBtX2hlYWQtPmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUo
MCwgY291bnRlZEZ1bmN0aW9ucyk7CiAKLSAgICBwcmludGYoIlxuVG90YWwgbnVtYmVyIGluIHN0
YWNrOlxuIik7CisgICAgZGF0YUxvZygiXG5Ub3RhbCBudW1iZXIgaW4gc3RhY2s6XG4iKTsKICAg
ICBOYW1lQ291bnRQYWlyVmVjdG9yIHNvcnRlZEZ1bmN0aW9ucyhjb3VudGVkRnVuY3Rpb25zLnNp
emUoKSk7CiAgICAgY29weVRvVmVjdG9yKGNvdW50ZWRGdW5jdGlvbnMsIHNvcnRlZEZ1bmN0aW9u
cyk7CiAKICAgICBzdGQ6OnNvcnQoc29ydGVkRnVuY3Rpb25zLmJlZ2luKCksIHNvcnRlZEZ1bmN0
aW9ucy5lbmQoKSwgZnVuY3Rpb25OYW1lQ291bnRQYWlyQ29tcGFyYXRvcik7CiAgICAgZm9yIChO
YW1lQ291bnRQYWlyVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZEZ1bmN0aW9ucy5iZWdpbigp
OyBpdCAhPSBzb3J0ZWRGdW5jdGlvbnMuZW5kKCk7ICsraXQpCi0gICAgICAgIHByaW50ZigiICAg
ICAgICAlLTEyZCVzXG4iLCAoKml0KS5zZWNvbmQsIFVTdHJpbmcoKCppdCkuZmlyc3QpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNl
Y29uZCwgVVN0cmluZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBwcmludGYo
IlxuU29ydCBieSB0b3Agb2Ygc3RhY2ssIHNhbWUgY29sbGFwc2VkICh3aGVuID49IDUpOlxuIik7
CisgICAgZGF0YUxvZygiXG5Tb3J0IGJ5IHRvcCBvZiBzdGFjaywgc2FtZSBjb2xsYXBzZWQgKHdo
ZW4gPj0gNSk6XG4iKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5jcHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQcm9maWxlci5oIgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBPUyhXSU5ET1dTKQpAQCAt
MjkzLDkgKzI5NCw5IEBAIHZvaWQgUHJvZmlsZU5vZGU6OmRlYnVnUHJpbnREYXRhKGludCBpbmQK
IHsKICAgICAvLyBQcmludCBmdW5jdGlvbiBuYW1lcwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
aW5kZW50TGV2ZWw7ICsraSkKLSAgICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICBkYXRhTG9n
KCIgICIpOwogCi0gICAgcHJpbnRmKCJGdW5jdGlvbiBOYW1lICVzICVkIFNlbGZUaW1lICUuM2Zt
cy8lLjNmJSUgVG90YWxUaW1lICUuM2Ztcy8lLjNmJSUgVlNlbGYgJS4zZm1zIFZUb3RhbCAlLjNm
bXMgVmlzaWJsZSAlcyBOZXh0IFNpYmxpbmcgJXNcbiIsCisgICAgZGF0YUxvZygiRnVuY3Rpb24g
TmFtZSAlcyAlZCBTZWxmVGltZSAlLjNmbXMvJS4zZiUlIFRvdGFsVGltZSAlLjNmbXMvJS4zZiUl
IFZTZWxmICUuM2ZtcyBWVG90YWwgJS4zZm1zIFZpc2libGUgJXMgTmV4dCBTaWJsaW5nICVzXG4i
LAogICAgICAgICBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpLCAKICAgICAgICAgbV9udW1i
ZXJPZkNhbGxzLCBtX2FjdHVhbFNlbGZUaW1lLCBzZWxmUGVyY2VudCgpLCBtX2FjdHVhbFRvdGFs
VGltZSwgdG90YWxQZXJjZW50KCksCiAgICAgICAgIG1fdmlzaWJsZVNlbGZUaW1lLCBtX3Zpc2li
bGVUb3RhbFRpbWUsIApAQCAtMzEyLDIwICszMTMsMjAgQEAgdm9pZCBQcm9maWxlTm9kZTo6ZGVi
dWdQcmludERhdGEoaW50IGluZAogLy8gcHJpbnQgdGhlIHByb2ZpbGVkIGRhdGEgaW4gYSBmb3Jt
YXQgdGhhdCBtYXRjaGVzIHRoZSB0b29sIHNhbXBsZSdzIG91dHB1dC4KIGRvdWJsZSBQcm9maWxl
Tm9kZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZShpbnQgaW5kZW50TGV2ZWwsIEZ1bmN0aW9u
Q2FsbEhhc2hDb3VudCYgY291bnRlZEZ1bmN0aW9ucykgY29uc3QKIHsKLSAgICBwcmludGYoIiAg
ICAiKTsKKyAgICBkYXRhTG9nKCIgICAgIik7CiAKICAgICAvLyBQcmludCBmdW5jdGlvbiBuYW1l
cwogICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpOwog
ICAgIGRvdWJsZSBzYW1wbGVDb3VudCA9IG1fYWN0dWFsVG90YWxUaW1lICogMTAwMDsKICAgICBp
ZiAoaW5kZW50TGV2ZWwpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnRMZXZl
bDsgKytpKQotICAgICAgICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICAgICAgZGF0YUxvZygi
ICAiKTsKIAogICAgICAgICAgY291bnRlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25OYW1lKCkuaW1w
bCgpKTsKIAotICAgICAgICBwcmludGYoIiUuMGYgJXNcbiIsIHNhbXBsZUNvdW50ID8gc2FtcGxl
Q291bnQgOiAxLCBuYW1lKTsKKyAgICAgICAgZGF0YUxvZygiJS4wZiAlc1xuIiwgc2FtcGxlQ291
bnQgPyBzYW1wbGVDb3VudCA6IDEsIG5hbWUpOwogICAgIH0gZWxzZQotICAgICAgICBwcmludGYo
IiVzXG4iLCBuYW1lKTsKKyAgICAgICAgZGF0YUxvZygiJXNcbiIsIG5hbWUpOwogCiAgICAgKytp
bmRlbnRMZXZlbDsKIApAQCAtMzM3LDExICszMzgsMTEgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpk
ZWJ1Z1ByaW50RGF0YVNhbXBsZQogICAgIHN1bU9mQ2hpbGRyZW5zQ291bnQgKj0gMTAwMDsgICAg
Ly8KICAgICAvLyBQcmludCByZW1haW5kZXIgb2Ygc2FtcGxlcyB0byBtYXRjaCBzYW1wbGUncyBv
dXRwdXQKICAgICBpZiAoc3VtT2ZDaGlsZHJlbnNDb3VudCA8IHNhbXBsZUNvdW50KSB7Ci0gICAg
ICAgIHByaW50ZigiICAgICIpOworICAgICAgICBkYXRhTG9nKCIgICAgIik7CiAgICAgICAgIHdo
aWxlIChpbmRlbnRMZXZlbC0tKQotICAgICAgICAgICAgcHJpbnRmKCIgICIpOworICAgICAgICAg
ICAgZGF0YUxvZygiICAiKTsKIAotICAgICAgICBwcmludGYoIiUuMGYgJXNcbiIsIHNhbXBsZUNv
dW50IC0gc3VtT2ZDaGlsZHJlbnNDb3VudCwgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGRhdGFMb2coIiUuMGYgJXNcbiIsIHNhbXBsZUNvdW50IC0gc3VtT2ZDaGlsZHJl
bnNDb3VudCwgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG1fYWN0dWFsVG90YWxUaW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MDIsMTcgKzUwMiwxNyBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6ZHVtcFJlZ0V4cFRyYWNlKCkKICAg
ICBSVFRyYWNlTGlzdDo6aXRlcmF0b3IgaXRlciA9ICsrbV9ydFRyYWNlTGlzdC0+YmVnaW4oKTsK
ICAgICAKICAgICBpZiAoaXRlciAhPSBtX3J0VHJhY2VMaXN0LT5lbmQoKSkgewotICAgICAgICBw
cmludGYoIlxuUmVnRXhwIFRyYWNpbmdcbiIpOwotICAgICAgICBwcmludGYoIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoKCkg
ICAgbWF0Y2hlc1xuIik7Ci0gICAgICAgIHByaW50ZigiUmVndWxhciBFeHByZXNzaW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICBKSVQgQWRkcmVzcyAgICAgIGNhbGxzICAgICAgZm91bmRcbiIp
OwotICAgICAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS1cbiIpOworICAgICAgICBk
YXRhTG9nKCJcblJlZ0V4cCBUcmFjaW5nXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2go
KSAgICBtYXRjaGVzXG4iKTsKKyAgICAgICAgZGF0YUxvZygiUmVndWxhciBFeHByZXNzaW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICBKSVQgQWRkcmVzcyAgICAgIGNhbGxzICAgICAgZm91bmRc
biIpOworICAgICAgICBkYXRhTG9nKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tXG4iKTsKICAgICAK
ICAgICAgICAgdW5zaWduZWQgcmVDb3VudCA9IDA7CiAgICAgCiAgICAgICAgIGZvciAoOyBpdGVy
ICE9IG1fcnRUcmFjZUxpc3QtPmVuZCgpOyArK2l0ZXIsICsrcmVDb3VudCkKICAgICAgICAgICAg
ICgqaXRlciktPnByaW50VHJhY2VEYXRhKCk7CiAKLSAgICAgICAgcHJpbnRmKCIlZCBSZWd1bGFy
IEV4cHJlc3Npb25zXG4iLCByZUNvdW50KTsKKyAgICAgICAgZGF0YUxvZygiJWQgUmVndWxhciBF
eHByZXNzaW9uc1xuIiwgcmVDb3VudCk7CiAgICAgfQogICAgIAogICAgIG1fcnRUcmFjZUxpc3Qt
PmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMywyNCArNDEzLDI0IEBAIHZvaWQgUmVnRXhwOjpt
YXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIKICAgICAgICAgICAgIGRpZmZlcmVuY2VzKys7CiAK
ICAgICBpZiAoZGlmZmVyZW5jZXMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJSZWdFeHAg
RGlzY3JlcGVuY3kgZm9yIC8lcy9cbiAgICBzdHJpbmcgaW5wdXQgIiwgcGF0dGVybigpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCJSZWdFeHAgRGlzY3JlcGVuY3kgZm9yIC8lcy9c
biAgICBzdHJpbmcgaW5wdXQgIiwgcGF0dGVybigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB1
bnNpZ25lZCBzZWdtZW50TGVuID0gcy5sZW5ndGgoKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydE9mZnNldCk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsIChzZWdtZW50TGVuIDwgMTUw
KSA/ICJcIiVzXCJcbiIgOiAiXCIlMTQ4cy4uLlwiXG4iLCBzLnV0ZjgoKS5kYXRhKCkgKyBzdGFy
dE9mZnNldCk7CisgICAgICAgIGRhdGFMb2coKHNlZ21lbnRMZW4gPCAxNTApID8gIlwiJXNcIlxu
IiA6ICJcIiUxNDhzLi4uXCJcbiIsIHMudXRmOCgpLmRhdGEoKSArIHN0YXJ0T2Zmc2V0KTsKIAog
ICAgICAgICBpZiAoaml0UmVzdWx0ICE9IGludGVycHJldGVyUmVzdWx0KSB7Ci0gICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgcmVzdWx0ID0gJWQsIGJsYWggaW50ZXJwcmV0ZWQg
cmVzdWx0ID0gJWRcbiIsIGppdFJlc3VsdCwgaW50ZXJwcmV0ZXJSZXN1bHQpOworICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEpJVCByZXN1bHQgPSAlZCwgYmxhaCBpbnRlcnByZXRlZCByZXN1bHQg
PSAlZFxuIiwgaml0UmVzdWx0LCBpbnRlcnByZXRlclJlc3VsdCk7CiAgICAgICAgICAgICBkaWZm
ZXJlbmNlcy0tOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgICAgQ29ycmVjdCByZXN1bHQgPSAlZFxuIiwgaml0UmVzdWx0KTsKKyAgICAgICAgICAgIGRh
dGFMb2coIiAgICBDb3JyZWN0IHJlc3VsdCA9ICVkXG4iLCBqaXRSZXN1bHQpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGRpZmZlcmVuY2VzKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAyLCBpID0gMDsgaSA8IG1fbnVtU3VicGF0dGVybnM7IGogKz0yLCBpKyspIHsKICAgICAg
ICAgICAgICAgICBpZiAob2Zmc2V0VmVjdG9yW2pdICE9IGludGVycHJldGVyT2Zmc2V0VmVjdG9y
W2pdKQotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBKSVQgb2Zmc2V0
WyVkXSA9ICVkLCBpbnRlcnByZXRlZCBvZmZzZXRbJWRdID0gJWRcbiIsIGosIG9mZnNldFZlY3Rv
cltqXSwgaiwgaW50ZXJwcmV0ZXJPZmZzZXRWZWN0b3Jbal0pOworICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgSklUIG9mZnNldFslZF0gPSAlZCwgaW50ZXJwcmV0ZWQgb2Zmc2V0WyVk
XSA9ICVkXG4iLCBqLCBvZmZzZXRWZWN0b3Jbal0sIGosIGludGVycHJldGVyT2Zmc2V0VmVjdG9y
W2pdKTsKICAgICAgICAgICAgICAgICBpZiAoKG9mZnNldFZlY3RvcltqXSA+PSAwKSAmJiAob2Zm
c2V0VmVjdG9yW2orMV0gIT0gaW50ZXJwcmV0ZXJPZmZzZXRWZWN0b3JbaisxXSkpCi0gICAgICAg
ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgIEpJVCBvZmZzZXRbJWRdID0gJWQsIGlu
dGVycHJldGVkIG9mZnNldFslZF0gPSAlZFxuIiwgaisxLCBvZmZzZXRWZWN0b3JbaisxXSwgaisx
LCBpbnRlcnByZXRlck9mZnNldFZlY3RvcltqKzFdKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEpJVCBvZmZzZXRbJWRdID0gJWQsIGludGVycHJldGVkIG9mZnNldFslZF0gPSAl
ZFxuIiwgaisxLCBvZmZzZXRWZWN0b3JbaisxXSwgaisxLCBpbnRlcnByZXRlck9mZnNldFZlY3Rv
cltqKzFdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAkocmV2aXNp
b24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3Vu
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBAIHZvaWQgQWJzdHJhY3RT
YW1wbGluZ0NvdW50ZXI6OmR1bXAoKQogewogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykK
ICAgICBpZiAoc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluICE9ICZzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW5FbmQpIHsKLSAgICAgICAgcHJpbnRmKCJcblNhbXBsaW5nIENvdW50
ZXIgVmFsdWVzOlxuIik7CisgICAgICAgIGRhdGFMb2coIlxuU2FtcGxpbmcgQ291bnRlciBWYWx1
ZXM6XG4iKTsKICAgICAgICAgZm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNvdW50
ZXIgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAmc19h
YnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291bnRl
ci0+bV9uZXh0KQotICAgICAgICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJDb3Vu
dGVyLT5tX25hbWUsIGN1cnJDb3VudGVyLT5tX2NvdW50ZXIpOwotICAgICAgICBwcmludGYoIlxu
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlx0JXNcdDogJWxsZFxuIiwgY3VyckNvdW50ZXIt
Pm1fbmFtZSwgY3VyckNvdW50ZXItPm1fY291bnRlcik7CisgICAgICAgIGRhdGFMb2coIlxuXG4i
KTsKICAgICB9CiAgICAgc19jb21wbGV0ZWQgPSB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAkocmV2aXNpb24g
MTA3NDg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgfkRlbGV0
YWJsZVNhbXBsaW5nQ291bnRlcigpCiAgICAgewogICAgICAgICBpZiAoIXNfY29tcGxldGVkKQot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgXCIl
c1wiIGRlbGV0ZWQgZWFybHkgKHdpdGggY291bnQgJWxsZClcbiIsIG1fbmFtZSwgbV9jb3VudGVy
KTsKKyAgICAgICAgICAgIGRhdGFGaWxlKCJEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgXCIlc1wi
IGRlbGV0ZWQgZWFybHkgKHdpdGggY291bnQgJWxsZClcbiIsIG1fbmFtZSwgbV9jb3VudGVyKTsK
ICAgICAgICAgLy8gT3VyIG1fcmVmZXJlciBwb2ludGVyIHNob3VsZCBrbm93IHdoZXJlIHRoZSBw
b2ludGVyIHRvIHRoaXMgbm9kZSBpcywKICAgICAgICAgLy8gYW5kIG1fbmV4dCBzaG91bGQga25v
dyB0aGF0IHRoaXMgbm9kZSBpcyB0aGUgcHJldmlvdXMgbm9kZSBpbiB0aGUgbGlzdC4KICAgICAg
ICAgQVNTRVJUKCptX3JlZmVyZXIgPT0gdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDEyICs0MiwxMiBAQCB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpwcmludCgpCiAgICAgICAgIG8t
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMobywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgcHJvcEVuZCA9IHByb3BlcnR5TmFt
ZXMuZW5kKCk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLSBbc2NvcGUgJXBdIC0t
LS0tXG4iLCBvKTsKKyAgICAgICAgZGF0YUxvZygiLS0tLS0gW3Njb3BlICVwXSAtLS0tLVxuIiwg
byk7CiAgICAgICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIHByb3BJ
dGVyID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBwcm9wSXRlciAhPSBwcm9wRW5kOyBwcm9wSXRl
cisrKSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSAqcHJvcEl0ZXI7Ci0gICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzLCAiLCBuYW1lLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiVzLCAiLCBuYW1lLnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAg
IGRhdGFMb2coIlxuIik7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miwx
NyArMTQyLDE3IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBwcmludGYoIk51bWJlciBvZiBsaXZlIFN0cnVjdHVyZXM6ICVkXG4iLCBs
aXZlU3RydWN0dXJlU2V0LnNpemUoKSk7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3RydWN0dXJl
cyB1c2luZyB0aGUgc2luZ2xlIGl0ZW0gb3B0aW1pemF0aW9uIGZvciB0cmFuc2l0aW9uIG1hcDog
JWRcbiIsIG51bWJlclVzaW5nU2luZ2xlU2xvdCk7Ci0gICAgcHJpbnRmKCJOdW1iZXIgb2YgU3Ry
dWN0dXJlcyB0aGF0IGFyZSBsZWFmIG5vZGVzOiAlZFxuIiwgbnVtYmVyTGVhZik7Ci0gICAgcHJp
bnRmKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IHNpbmdsZXRvbnM6ICVkXG4iLCBudW1iZXJT
aW5nbGV0b25zKTsKLSAgICBwcmludGYoIk51bWJlciBvZiBTdHJ1Y3R1cmVzIHdpdGggUHJvcGVy
dHlNYXBzOiAlZFxuIiwgbnVtYmVyV2l0aFByb3BlcnR5TWFwcyk7Ci0KLSAgICBwcmludGYoIlNp
emUgb2YgYSBzaW5nbGUgU3RydWN0dXJlczogJWRcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplb2YoU3RydWN0dXJlKSkpOwotICAgIHByaW50ZigiU2l6ZSBvZiBzdW0gb2YgYWxsIHByb3Bl
cnR5IG1hcHM6ICVkXG4iLCB0b3RhbFByb3BlcnR5TWFwc1NpemUpOwotICAgIHByaW50ZigiU2l6
ZSBvZiBhdmVyYWdlIG9mIGFsbCBwcm9wZXJ0eSBtYXBzOiAlZlxuIiwgc3RhdGljX2Nhc3Q8ZG91
YmxlPih0b3RhbFByb3BlcnR5TWFwc1NpemUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsaXZlU3Ry
dWN0dXJlU2V0LnNpemUoKSkpOworICAgIGRhdGFMb2coIk51bWJlciBvZiBsaXZlIFN0cnVjdHVy
ZXM6ICVkXG4iLCBsaXZlU3RydWN0dXJlU2V0LnNpemUoKSk7CisgICAgZGF0YUxvZygiTnVtYmVy
IG9mIFN0cnVjdHVyZXMgdXNpbmcgdGhlIHNpbmdsZSBpdGVtIG9wdGltaXphdGlvbiBmb3IgdHJh
bnNpdGlvbiBtYXA6ICVkXG4iLCBudW1iZXJVc2luZ1NpbmdsZVNsb3QpOworICAgIGRhdGFMb2co
Ik51bWJlciBvZiBTdHJ1Y3R1cmVzIHRoYXQgYXJlIGxlYWYgbm9kZXM6ICVkXG4iLCBudW1iZXJM
ZWFmKTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgU3RydWN0dXJlcyB0aGF0IHNpbmdsZXRvbnM6
ICVkXG4iLCBudW1iZXJTaW5nbGV0b25zKTsKKyAgICBkYXRhTG9nKCJOdW1iZXIgb2YgU3RydWN0
dXJlcyB3aXRoIFByb3BlcnR5TWFwczogJWRcbiIsIG51bWJlcldpdGhQcm9wZXJ0eU1hcHMpOwor
CisgICAgZGF0YUxvZygiU2l6ZSBvZiBhIHNpbmdsZSBTdHJ1Y3R1cmVzOiAlZFxuIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemVvZihTdHJ1Y3R1cmUpKSk7CisgICAgZGF0YUxvZygiU2l6ZSBv
ZiBzdW0gb2YgYWxsIHByb3BlcnR5IG1hcHM6ICVkXG4iLCB0b3RhbFByb3BlcnR5TWFwc1NpemUp
OworICAgIGRhdGFMb2coIlNpemUgb2YgYXZlcmFnZSBvZiBhbGwgcHJvcGVydHkgbWFwczogJWZc
biIsIHN0YXRpY19jYXN0PGRvdWJsZT4odG90YWxQcm9wZXJ0eU1hcHNTaXplKSAvIHN0YXRpY19j
YXN0PGRvdWJsZT4obGl2ZVN0cnVjdHVyZVNldC5zaXplKCkpKTsKICNlbHNlCi0gICAgcHJpbnRm
KCJEdW1waW5nIFN0cnVjdHVyZSBzdGF0aXN0aWNzIGlzIG5vdCBlbmFibGVkLlxuIik7CisgICAg
ZGF0YUxvZygiRHVtcGluZyBTdHJ1Y3R1cmUgc3RhdGlzdGljcyBpcyBub3QgZW5hYmxlZC5cbiIp
OwogI2VuZGlmCiB9CiAKQEAgLTYwMSwxMSArNjAxLDExIEBAIHN0YXRpYyBQcm9wZXJ0eU1hcFN0
YXRpc3RpY3NFeGl0TG9nZ2VyIGwKIAogUHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlcjo6
flByb3BlcnR5TWFwU3RhdGlzdGljc0V4aXRMb2dnZXIoKQogewotICAgIHByaW50ZigiXG5KU0M6
OlByb3BlcnR5TWFwIHN0YXRpc3RpY3NcblxuIik7Ci0gICAgcHJpbnRmKCIlZCBwcm9iZXNcbiIs
IG51bVByb2Jlcyk7Ci0gICAgcHJpbnRmKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBudW1D
b2xsaXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOwotICAgIHByaW50
ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKLSAgICBwcmludGYoIiVkIHJlbW92ZXNc
biIsIG51bVJlbW92ZXMpOworICAgIGRhdGFMb2coIlxuSlNDOjpQcm9wZXJ0eU1hcCBzdGF0aXN0
aWNzXG5cbiIpOworICAgIGRhdGFMb2coIiVkIHByb2Jlc1xuIiwgbnVtUHJvYmVzKTsKKyAgICBk
YXRhTG9nKCIlZCBjb2xsaXNpb25zICglLjFmJSUpXG4iLCBudW1Db2xsaXNpb25zLCAxMDAuMCAq
IG51bUNvbGxpc2lvbnMgLyBudW1Qcm9iZXMpOworICAgIGRhdGFMb2coIiVkIHJlaGFzaGVzXG4i
LCBudW1SZWhhc2hlcyk7CisgICAgZGF0YUxvZygiJWQgcmVtb3Zlc1xuIiwgbnVtUmVtb3Zlcyk7
CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9m
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvQ29kZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCBDb2RlUHJvZmlsZTo6c2FtcGxlKHZvaWQqIHBjLCB2b2lkKgogCiB2b2lkIENvZGVQcm9maWxl
OjpyZXBvcnQoKQogewotICAgIGZwcmludGYoc3Rkb3V0LCAiPENvZGVQcm9maWxpbmcgJXM6JWQ+
XG4iLCBtX2ZpbGUuZGF0YSgpLCBtX2xpbmVObyk7CisgICAgZGF0YUxvZygiPENvZGVQcm9maWxp
bmcgJXM6JWQ+XG4iLCBtX2ZpbGUuZGF0YSgpLCBtX2xpbmVObyk7CiAKICAgICAvLyBIb3cgbWFu
eSBmcmFtZXMgb2YgQy1jb2RlIHRvIHByaW50IC0gMCwgaWYgbm90IHZlcmJvc2UsIDEgaWYgdmVy
Ym9zZSwgdXAgdG8gMTAyNCBpZiB2ZXJ5IHZlcmJvc2UuCiAgICAgdW5zaWduZWQgcmVjdXJzaW9u
TGltaXQgPSBDb2RlUHJvZmlsaW5nOjpiZVZlcnlWZXJib3NlKCkgPyAxMDI0IDogQ29kZVByb2Zp
bGluZzo6YmVWZXJib3NlKCk7CkBAIC0xNzYsMTMgKzE3NiwxMyBAQCB2b2lkIENvZGVQcm9maWxl
OjpyZXBvcnQoKQogICAgIH0KIAogICAgIC8vIE91dHB1dCB0aGUgcHJvZmlsZSB0cmVlLgotICAg
IGZwcmludGYoc3Rkb3V0LCAiVG90YWwgc2FtcGxlczogJWxsZFxuIiwgc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihwcm9maWxlLmNoaWxkQ291bnQoKSkpOworICAgIGRhdGFMb2coIlRvdGFsIHNhbXBs
ZXM6ICVsbGRcbiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocHJvZmlsZS5jaGlsZENvdW50KCkp
KTsKICAgICBwcm9maWxlLmR1bXAoKTsKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMCA7IGkg
PCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICBtX2NoaWxkcmVuW2ldLT5yZXBvcnQo
KTsKIAotICAgIGZwcmludGYoc3Rkb3V0LCAiPC9Db2RlUHJvZmlsaW5nICVzOiVkPlxuIiwgbV9m
aWxlLmRhdGEoKSwgbV9saW5lTm8pOworICAgIGRhdGFMb2coIjwvQ29kZVByb2ZpbGluZyAlczol
ZD5cbiIsIG1fZmlsZS5kYXRhKCksIG1fbGluZU5vKTsKIH0KIAogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAkocmV2aXNpb24gMTA3NDg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBQcmlu
dCB0aGUgbnVtYmVyIG9mIHNhbXBsZXMsIHRoZSBuYW1lIG9mIHRoaXMgbm9kZSwgYW5kIHRoZSBu
dW1iZXIgb2Ygc2FtcGxlcyB0aGF0IGFyZSBzdGFjay10b3AKICAgICAgICAgICAgIC8vIGluIHRo
aXMgbm9kZSAoc2FtcGxlcyBkaXJlY3RseSB3aXRoaW4gdGhpcyBub2RlLCBleGNsdWRpbmcgc2Ft
cGxlcyBpbiBjaGlsZHJlbi4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bmRlbnQ7ICsraSkKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiAgICAiKTsKLSAg
ICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiJSA4bGxkOiAlcyAoJWxsZCBzdGFjayB0b3ApXG4i
LAorICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAiKTsKKyAgICAgICAgICAgIGRhdGFMb2co
IiUgOGxsZDogJXMgKCVsbGQgc3RhY2sgdG9wKVxuIiwKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGVudHJ5LT5zZWNvbmQuY291bnQoKSksCiAgICAgICAgICAgICAgICAg
ZW50cnktPmZpcnN0LnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihlbnRyeS0+c2Vjb25kLmNvdW50KCkgLSBlbnRyeS0+c2Vjb25kLmNoaWxkQ291
bnQoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw3IEBAIFNFVChXVEZfSEVBREVSUwogICAg
IENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgKICAgICBDdXJyZW50VGltZS5oCiAgICAg
RGF0ZU1hdGguaAorICAgIERhdGFMb2cuaAogICAgIERlY2ltYWxOdW1iZXIuaAogICAgIERlY29k
ZXIuaAogICAgIERlcXVlLmgKQEAgLTE0MCw2ICsxNDEsNyBAQCBTRVQoV1RGX1NPVVJDRVMKICAg
ICBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKICAgICBDdXJyZW50VGltZS5jcHAK
ICAgICBEYXRlTWF0aC5jcHAKKyAgICBEYXRhTG9nLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3Bw
CiAgICAgRHluYW1pY0Fubm90YXRpb25zLmNwcAogICAgIEZhc3RNYWxsb2MuY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGFMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0YUxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0RhdGFMb2cuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhTG9nLmgiCisjaW5jbHVkZSA8c3RkYXJnLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCisjZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUg
MAorCisvLyBVbmNvbW1lbnQgdG8gZm9yY2UgbG9nZ2luZyB0byB0aGUgZ2l2ZW4gZmlsZSByZWdh
cmRsZXNzIG9mIHdoYXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNheXMuCisvLyAjZGVmaW5l
IERBVEFfTE9HX0ZJTEVOQU1FICIvdG1wL1dURkxvZy50eHQiCisKK25hbWVzcGFjZSBXVEYgewor
CisjaWYgREFUQV9MT0dfVE9fRklMRQorc3RhdGljIEZJTEUqIGZpbGU7CisKK3N0YXRpYyB2b2lk
IGluaXRpYWxpemVMb2dGaWxlT25jZSgpCit7CisjaWZkZWYgREFUQV9MT0dfRklMRU5BTUUKKyAg
ICBjb25zdCBjaGFyKiBmaWxlbmFtZSA9IERBVEFfTE9HX0ZJTEVOQU1FCisjZWxzZQorICAgIGNv
bnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREFUQV9MT0dfRklMRU5BTUUiKTsKKyNl
bmRpZgorICAgIGlmIChmaWxlbmFtZSkgeworICAgICAgICBmaWxlID0gZm9wZW4oZmlsZW5hbWUs
ICJ3Iik7CisgICAgICAgIGlmICghZmlsZSkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
V2FybmluZzogQ291bGQgbm90IG9wZW4gbG9nIGZpbGUgJXMgZm9yIHdyaXRpbmcuXG4iLCBmaWxl
bmFtZSk7CisgICAgfQorICAgIGlmICghZmlsZSkKKyAgICAgICAgZmlsZSA9IHN0ZGVycjsKKyAg
ICAKKyAgICBzZXR2YnVmKGZpbGUsIDAsIF9JT05CRiwgMCk7IC8vIFByZWZlciB1bmJ1ZmZlcmVk
IG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1cG9uIGNyYXNoIG9yIGRlYWRsb2Nr
LgorfQorCisjaWYgT1MoREFSV0lOKQorc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVM
b2dGaWxlT25jZUtleSA9IFBUSFJFQURfT05DRV9JTklUOworI2VuZGlmCisKK3N0YXRpYyB2b2lk
IGluaXRpYWxpemVMb2dGaWxlKCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcHRocmVhZF9vbmNl
KCZpbml0aWFsaXplTG9nRmlsZU9uY2VLZXksIGluaXRpYWxpemVMb2dGaWxlT25jZSk7CisjZWxz
ZQorICAgIGlmICghZmlsZSkKKyAgICAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCk7CisjZW5k
aWYKK30KKworRklMRSogZGF0YUZpbGUoKQoreworICAgIGluaXRpYWxpemVMb2dGaWxlKCk7Cisg
ICAgcmV0dXJuIGZpbGU7Cit9CisjZWxzZSAvLyBEQVRBX0xPR19UT19GSUxFCitGSUxFKiBkYXRh
RmlsZSgpCit7CisgICAgcmV0dXJuIHN0ZGVycjsKK30KKyNlbmRpZiAvLyBEQVRBX0xPR19UT19G
SUxFCisKK3ZvaWQgZGF0YUxvZ1YoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3Qp
Cit7CisgICAgdmZwcmludGYoZGF0YUZpbGUoKSwgZm9ybWF0LCBhcmdMaXN0KTsKK30KKwordm9p
ZCBkYXRhTG9nKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnTGlz
dDsKKyAgICB2YV9zdGFydChhcmdMaXN0LCBmb3JtYXQpOworICAgIGRhdGFMb2dWKGZvcm1hdCwg
YXJnTGlzdCk7CisgICAgdmFfZW5kKGFyZ0xpc3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRhTG9nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRhTG9nLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGFMb2cuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIERhdGFMb2dfaAorI2RlZmluZSBEYXRhTG9nX2gKKworI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworRklMRSogZGF0YUZpbGUoKTsKKwordm9pZCBkYXRhTG9n
Vihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDAp
Owordm9pZCBkYXRhTG9nKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URigxLCAyKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6ZGF0YUxvZzsK
KworI2VuZGlmIC8vIERhdGFMb2dfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0hhc2hUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9I
YXNoVGFibGUuY3BwCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0hhc2hUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBIYXNo
VGFibGVTdGF0czo6fkhhc2hUYWJsZVN0YXRzKCkKIHsKICAgICAvLyBEb24ndCBsb2NrIGhhc2hU
YWJsZVN0YXRzTXV0ZXggaGVyZSBiZWNhdXNlIGl0IGNhbiBjYXVzZSBkZWFkbG9ja3MgYXQgc2h1
dGRvd24gCiAgICAgLy8gaWYgYW55IHRocmVhZCB3YXMga2lsbGVkIHdoaWxlIGhvbGRpbmcgdGhl
IG11dGV4LgotICAgIHByaW50ZigiXG5XVEY6Okhhc2hUYWJsZSBzdGF0aXN0aWNzXG5cbiIpOwot
ICAgIHByaW50ZigiJWQgYWNjZXNzZXNcbiIsIG51bUFjY2Vzc2VzKTsKLSAgICBwcmludGYoIiVk
IHRvdGFsIGNvbGxpc2lvbnMsIGF2ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xuIiwgbnVt
Q29sbGlzaW9ucywgMS4wICogKG51bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBudW1BY2Nl
c3Nlcyk7Ci0gICAgcHJpbnRmKCJsb25nZXN0IGNvbGxpc2lvbiBjaGFpbjogJWRcbiIsIG1heENv
bGxpc2lvbnMpOworICAgIGRhdGFMb2coIlxuV1RGOjpIYXNoVGFibGUgc3RhdGlzdGljc1xuXG4i
KTsKKyAgICBkYXRhTG9nKCIlZCBhY2Nlc3Nlc1xuIiwgbnVtQWNjZXNzZXMpOworICAgIGRhdGFM
b2coIiVkIHRvdGFsIGNvbGxpc2lvbnMsIGF2ZXJhZ2UgJS4yZiBwcm9iZXMgcGVyIGFjY2Vzc1xu
IiwgbnVtQ29sbGlzaW9ucywgMS4wICogKG51bUFjY2Vzc2VzICsgbnVtQ29sbGlzaW9ucykgLyBu
dW1BY2Nlc3Nlcyk7CisgICAgZGF0YUxvZygibG9uZ2VzdCBjb2xsaXNpb24gY2hhaW46ICVkXG4i
LCBtYXhDb2xsaXNpb25zKTsKICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtYXhDb2xsaXNpb25z
OyBpKyspIHsKLSAgICAgICAgcHJpbnRmKCIgICVkIGxvb2t1cHMgd2l0aCBleGFjdGx5ICVkIGNv
bGxpc2lvbnMgKCUuMmYlJSAsICUuMmYlJSB3aXRoIHRoaXMgbWFueSBvciBtb3JlKVxuIiwgY29s
bGlzaW9uR3JhcGhbaV0sIGksIDEwMC4wICogKGNvbGxpc2lvbkdyYXBoW2ldIC0gY29sbGlzaW9u
R3JhcGhbaSsxXSkgLyBudW1BY2Nlc3NlcywgMTAwLjAgKiBjb2xsaXNpb25HcmFwaFtpXSAvIG51
bUFjY2Vzc2VzKTsKKyAgICAgICAgZGF0YUxvZygiICAlZCBsb29rdXBzIHdpdGggZXhhY3RseSAl
ZCBjb2xsaXNpb25zICglLjJmJSUgLCAlLjJmJSUgd2l0aCB0aGlzIG1hbnkgb3IgbW9yZSlcbiIs
IGNvbGxpc2lvbkdyYXBoW2ldLCBpLCAxMDAuMCAqIChjb2xsaXNpb25HcmFwaFtpXSAtIGNvbGxp
c2lvbkdyYXBoW2krMV0pIC8gbnVtQWNjZXNzZXMsIDEwMC4wICogY29sbGlzaW9uR3JhcGhbaV0g
LyBudW1BY2Nlc3Nlcyk7CiAgICAgfQotICAgIHByaW50ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJl
aGFzaGVzKTsKLSAgICBwcmludGYoIiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzKTsKKyAg
ICBkYXRhTG9nKCIlZCByZWhhc2hlc1xuIiwgbnVtUmVoYXNoZXMpOworICAgIGRhdGFMb2coIiVk
IHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzKTsKIH0KIAogdm9pZCBIYXNoVGFibGVTdGF0czo6
cmVjb3JkQ29sbGlzaW9uQXRDb3VudChpbnQgY291bnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL01ldGFBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDEwNzQ4NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyOCw3ICs0MjgsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmZyZWVGcmVlU3BhY2VOb2RlKEZy
CiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiB2b2lkIE1ldGFBbGxvY2F0b3I6
OmR1bXBQcm9maWxlKCkKIHsKLSAgICBwcmludGYoIm51bSBhbGxvY2F0aW9ucyA9ICV1LCBudW0g
ZnJlZXMgPSAldVxuIiwgbV9udW1BbGxvY2F0aW9ucywgbV9udW1GcmVlcyk7CisgICAgZGF0YUxv
ZygibnVtIGFsbG9jYXRpb25zID0gJXUsIG51bSBmcmVlcyA9ICV1XG4iLCBtX251bUFsbG9jYXRp
b25zLCBtX251bUZyZWVzKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTEwOTcsNyArMTA5OCw3IEBAIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0
cmluZyYgc3RyaW5nKTsKIAogdm9pZCBTdHJpbmc6OnNob3coKSBjb25zdAogewotICAgIGZwcmlu
dGYoc3RkZXJyLCAiJXNcbiIsIGFzY2lpRGVidWcoaW1wbCgpKS5kYXRhKCkpOworICAgIGRhdGFM
b2coIiVzXG4iLCBhc2NpaURlYnVnKGltcGwoKSkuZGF0YSgpKTsKIH0KIAogU3RyaW5nKiBzdHJp
bmcoY29uc3QgY2hhciogcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVk
ZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNjgy
LDEwICsxNjgzLDEwIEBAIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wRGlz
anVuY3Rpb24oQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbikKICAgICB7Ci0gICAgICAgIHBy
aW50ZigiQnl0ZURpc2p1bmN0aW9uKCVwKTpcblx0IiwgZGlzanVuY3Rpb24pOworICAgICAgICBk
YXRhTG9nKCJCeXRlRGlzanVuY3Rpb24oJXApOlxuXHQiLCBkaXNqdW5jdGlvbik7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBwcmludGYoInsgJWQgfSAiLCBkaXNqdW5jdGlvbi0+dGVybXNbaV0udHlw
ZSk7Ci0gICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coInsgJWQgfSAi
LCBkaXNqdW5jdGlvbi0+dGVybXNbaV0udHlwZSk7CisgICAgICAgIGRhdGFMb2coIlxuIik7CiAg
ICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTExICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSXQgc2hvdWxkIGJlIHBvc3Np
YmxlIHRvIHNlbmQgYWxsIEpTQyBkZWJ1ZyBsb2dnaW5nIHRvIGEgZmlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0MTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZWQgd3Rm
L0RhdGFMb2csIHdoaWNoIGRlZmluZXMgV1RGOjpkYXRhRmlsZSwgV1RGOjpkYXRhTG9nLAorICAg
ICAgICBhbmQgV1RGOjpkYXRhTG9nVi4gQ2hhbmdlZCBhbGwgZGVidWdnaW5nLSBhbmQgcHJvZmls
aW5nLXJlbGF0ZWQgcHJpbnRmcworICAgICAgICB0byB1c2UgV1RGOjpkYXRhTG9nKCkgb3Igb25l
IG9mIGl0cyBmcmllbmRzLiBCeSBkZWZhdWx0LCBkZWJ1ZyBsb2dnaW5nCisgICAgICAgIGdvZXMg
dG8gc3RkZXJyLCB1bmxlc3MgeW91IGNoYW5nZSB0aGUgc2V0dGluZyBpbiB3dGYvRGF0YUxvZy5j
cHAuCisKKyAgICAgICAgKiBXVEYucHJvOgorCiAyMDEyLTAyLTAzICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3aGVu
IGNyb3NzLWNvbXBpbGluZwpJbmRleDogU291cmNlL1dURi9XVEYucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvV1RGLnBybwkocmV2aXNpb24gMTA3NDg3KQorKysgU291cmNlL1dURi9XVEYu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIERh
dGVNYXRoLmggXAogICAgIERlY2ltYWxOdW1iZXIuaCBcCiAgICAgRGVjb2Rlci5oIFwKKyAgICBE
YXRhTG9nLmggXCAKICAgICBEZXF1ZS5oIFwKICAgICBEaXNhbGxvd0NUeXBlLmggXAogICAgIGR0
b2EuaCBcCkBAIC0xNzEsNiArMTcyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuY3BwIFwKICAgICBDdXJyZW50VGltZS5jcHAgXAogICAgIERhdGVN
YXRoLmNwcCBcCisgICAgRGF0YUxvZy5jcHAgXAogICAgIERlY2ltYWxOdW1iZXIuY3BwIFwKICAg
ICBkdG9hLmNwcCBcCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYyBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDc0ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgorCisgICAgICAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzZW5kIGFsbCBKU0Mg
ZGVidWcgbG9nZ2luZyB0byBhIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc4NDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBJbnRyb2R1Y2VkIHd0Zi9EYXRhTG9nLCB3aGljaCBkZWZp
bmVzIFdURjo6ZGF0YUZpbGUsIFdURjo6ZGF0YUxvZywKKyAgICAgICAgYW5kIFdURjo6ZGF0YUxv
Z1YuIENoYW5nZWQgYWxsIGRlYnVnZ2luZy0gYW5kIHByb2ZpbGluZy1yZWxhdGVkIHByaW50ZnMK
KyAgICAgICAgdG8gdXNlIFdURjo6ZGF0YUxvZygpIG9yIG9uZSBvZiBpdHMgZnJpZW5kcy4gQnkg
ZGVmYXVsdCwgZGVidWcgbG9nZ2luZworICAgICAgICBnb2VzIHRvIHN0ZGVyciwgdW5sZXNzIHlv
dSBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gd3RmL0RhdGFMb2cuY3BwLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBiZWNhdXNlIGJlaGF2aW9yIGlzIHVuY2hhbmdlZC4KKworICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3d0Zi9EYXRhTG9nLmg6IEFkZGVkLgorCiAyMDEyLTAyLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2l6ZSBhc3NlcnQgZm9y
IExlbmd0aApJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RhdGFM
b2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
RGF0YUxvZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL0RhdGFMb2cuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdl
YkNvcmVfRldEX0RhdGFMb2dfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9EYXRhTG9nX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhTG9nLmg+CisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>