<?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>194419</bug_id>
          
          <creation_ts>2019-02-07 16:28:51 -0800</creation_ts>
          <short_desc>[JSC] Shrink sizeof(CodeBlock) more</short_desc>
          <delta_ts>2019-02-09 12:13:18 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1504002</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-07 16:28:51 -0800</bug_when>
    <thetext>[JSC] Shrink sizeof(CodeBlock) more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504006</commentid>
    <comment_count>1</comment_count>
      <attachid>361469</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-07 16:35:53 -0800</bug_when>
    <thetext>Created attachment 361469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504013</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-07 16:41:38 -0800</bug_when>
    <thetext>Attachment 361469 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:94:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzing  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 37 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>1504057</commentid>
    <comment_count>3</comment_count>
      <attachid>361477</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-07 17:47:40 -0800</bug_when>
    <thetext>Created attachment 361477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504058</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-07 17:49:25 -0800</bug_when>
    <thetext>Attachment 361477 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:94:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzing  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 37 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>1504069</commentid>
    <comment_count>5</comment_count>
      <attachid>361482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-07 18:08:25 -0800</bug_when>
    <thetext>Created attachment 361482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504071</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-07 18:10:27 -0800</bug_when>
    <thetext>Attachment 361482 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:94:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzing  [changelog/unwantedsecurityterms] [3]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 39 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>1504337</commentid>
    <comment_count>7</comment_count>
      <attachid>361482</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-08 15:34:22 -0800</bug_when>
    <thetext>Comment on attachment 361482
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=361482&amp;action=review

Very nice.  r=me with suggestions.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:526
&gt; -    for (const auto&amp; instruction : *m_instructions) {
&gt; +    for (const auto&amp; instruction : instructions()) {

Pre-cache instructions() in a local before the loop so that the compiler knows that it won&apos;t change on each iteration.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1074
&gt; +            auto instruction = instructions().at(propertyAccessInstructions[i]);

Precache instructions in a local before loop.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1204
&gt; +        const auto curInstruction = instructions().at(propertyAccessInstructions[i]);

Precache instructions in a local before loop.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1711
&gt; +    auto instruction = instructions().at(bytecodeOffset);

Use auto&amp; to make is explicit at a glance that this is a reference.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1816
&gt; +    for (const auto&amp; it : instructions()) {

Precache instructions in a local before loop.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2755
&gt; +    for (const auto&amp; instruction : instructions()) {

Precache instructions in a local before loop.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2944
&gt; +    for (const auto&amp; instruction : instructions()) {

Precache instructions in a local before loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504371</commentid>
    <comment_count>8</comment_count>
      <attachid>361482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-08 16:18:31 -0800</bug_when>
    <thetext>Comment on attachment 361482
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=361482&amp;action=review

Thank you!

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:526
&gt;&gt; +    for (const auto&amp; instruction : instructions()) {
&gt; 
&gt; Pre-cache instructions() in a local before the loop so that the compiler knows that it won&apos;t change on each iteration.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1074
&gt;&gt; +            auto instruction = instructions().at(propertyAccessInstructions[i]);
&gt; 
&gt; Precache instructions in a local before loop.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1204
&gt;&gt; +        const auto curInstruction = instructions().at(propertyAccessInstructions[i]);
&gt; 
&gt; Precache instructions in a local before loop.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1711
&gt;&gt; +    auto instruction = instructions().at(bytecodeOffset);
&gt; 
&gt; Use auto&amp; to make is explicit at a glance that this is a reference.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1816
&gt;&gt; +    for (const auto&amp; it : instructions()) {
&gt; 
&gt; Precache instructions in a local before loop.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2755
&gt;&gt; +    for (const auto&amp; instruction : instructions()) {
&gt; 
&gt; Precache instructions in a local before loop.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2944
&gt;&gt; +    for (const auto&amp; instruction : instructions()) {
&gt; 
&gt; Precache instructions in a local before loop.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504390</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-08 16:29:31 -0800</bug_when>
    <thetext>Committed r241222: &lt;https://trac.webkit.org/changeset/241222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504391</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-08 16:30:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/47934328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504604</commentid>
    <comment_count>11</comment_count>
      <attachid>361482</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-09 12:13:18 -0800</bug_when>
    <thetext>Comment on attachment 361482
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=361482&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:526
&gt;&gt;&gt; +    for (const auto&amp; instruction : instructions()) {
&gt;&gt; 
&gt;&gt; Pre-cache instructions() in a local before the loop so that the compiler knows that it won&apos;t change on each iteration.
&gt; 
&gt; Fixed.

While it’s OK to do this if you prefer it from a stylistic point of view, there is no need to change it for correct behavior. The way a range for loop is defined, the compiler will not and must not call instructions() more than once. An example of an on-line reference that makes this clear is &lt;https://en.cppreference.com/w/cpp/language/range-for&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361469</attachid>
            <date>2019-02-07 16:35:53 -0800</date>
            <delta_ts>2019-02-07 17:47:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194419-20190207163552.patch</filename>
            <type>text/plain</type>
            <size>86893</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODUyNDc4MWQ1NDhlNjhhNGRhYjQxNGRiOWFhZjZmODIzYjJhMGMwLi4zYmY0OTRkMzJkNTczYzBh
MDhjNTIzNTJmYTQ3MmY0NmE5Njg1YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTktMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc2l6ZW9mKENvZGVCbG9jaykgbW9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmdXJ0
aGVyIHNocmlua3MgdGhlIHNpemUgb2YgQ29kZUJsb2NrLCBmcm9tIDM1MiB0byAyOTYgKDMwNCku
CisKKyAgICAgICAgMS4gQ29kZUJsb2NrIGNvcGllcyBzbyBtYW55IGRhdGEgZnJvbSBTY3JpcHRF
eGVjdXRhYmxlIGV2ZW4gaWYgU2NyaXB0RXhlY3V0YWJsZQorICAgICAgICBoYXMgdGhlIHNhbWUg
aW5mb3JtYXRpb24uIFRoZXNlIGRhdGEgaXMgbm90IHRvdWNoZWQgaW4gQ29kZUJsb2NrOjp+Q29k
ZUJsb2NrLAorICAgICAgICBzbyB3ZSBjYW4ganVzdCB1c2UgdGhlIGRhdGEgaW4gU2NyaXB0RXhl
Y3V0YWJsZSBpbnN0ZWFkIG9mIGhvbGRpbmcgaXQgaW4gQ29kZUJsb2NrLgorCisgICAgICAgIDIu
IFdlIHJlbW92ZSBtX2luc3RydWN0aW9ucyBwb2ludGVyIHNpbmNlIHRoZSBvd25lcnNoaXAgaXMg
bWFuYWdlZCBieSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICAgICAgQW5kIHdlIGRvIG5vdCB0b3Vj
aCBpdCBpbiBDb2RlQmxvY2s6On5Db2RlQmxvY2suCisKKyAgICAgICAgMy4gV2UgbW92ZSBtX2Nh
bGxlZVNhdmVSZWdpc3RlcnMgZnJvbSBDb2RlQmxvY2sgdG8gQ29kZUJsb2NrOjpKSVREYXRhLiBG
b3IgYmFzZWxpbmUgYW5kIExMSW50CisgICAgICAgIGNhc2VzLCB0aGlzIHBhdGNoIG9mZmVycyBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB3
aGljaCByZXR1cm5zCisgICAgICAgIHNpbmdsZXRvbiB0byBgY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqYCB1c2FibGUgZm9yIExMSW50IGFuZCBCYXNlbGluZSBKSVQgQ29kZUJsb2Nrcy4KKwor
ICAgICAgICA0LiBNb3ZlIG1fY2F0Y2hQcm9maWxlcyB0byBSYXJlRGF0YSBhbmQgbWF0ZXJpYWxp
emUgb25seSB3aGVuIG9wX2NhdGNoJ3Mgc2xvdyBwYXRoIGlzIGNhbGxlZC4KKworICAgICAgICA1
LiBEcm9wIG93bmVyU2NyaXB0RXhlY3V0YWJsZS4gb3duZXJFeGVjdXRhYmxlKCkgcmV0dXJucyBT
Y3JpcHRFeGVjdXRhYmxlKi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c291cmNlQ29kZUZvclRvb2xzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQXNzdW1pbmdKSVRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpk
dW1wU291cmNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0Q2Fs
bGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlQ2F0Y2hM
aXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3cp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5k
Q29sdW1uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuZXdSZXBsYWNlbWVudCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmNvbXB1dGVDYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Ompl
dHRpc29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVy
QW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omdl
dEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGlj
dGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlM
ZXhpY2FsQmluZGluZ1VwZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bGlkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzcGVjaWFsaXphdGlvbktpbmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Y29kZVR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25Ob3RJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc3RydWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3duZXJFeGVjdXRhYmxlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjp0aGlzUmVnaXN0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c291cmNlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaXJzdExpbmVDb2x1bW5PZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om93bmVyU2NyaXB0RXhlY3V0YWJsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0VGhpc1JlZ2lzdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29k
ZS9HbG9iYWxDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6R2xvYmFsQ29kZUJsb2NrOjpHbG9i
YWxDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtw
b2ludCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSUQgY29uc3QpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSURGb3JDYWxsRnJhbWUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjps
b2NhdGlvbiBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjppc1N1
cHBvcnRlZEZvcklubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVFdmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAgKEpT
Qzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpj
YW5Vc2VPU1JFeGl0RnV6emluZyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OmV4ZWN1dGFibGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6
OnNhdmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6c2F2ZU9yQ29weUNhbGxl
ZVNhdmVzRm9yKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVT
dHViKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWdpbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6VW53
aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAg
ICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VJRCk6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uIGNvbnN0KToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zv
cik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlDYWxsZWVT
YXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVy
cyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdp
dGhvdXRMaW5raW5nKToKKyAgICAgICAgKiBqaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogaml0L0pJVFdvcmts
aXN0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVOb3cpOgorICAgICAgICAqIGppdC9SZWdp
c3RlckF0T2Zmc2V0TGlzdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1JlZ2lz
dGVyQXRPZmZzZXRMaXN0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojph
dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6YXBwZW5kU291cmNlVG9FcnJvcik6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2Nr
Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja0ZyYW1lOjpzb3VyY2VJRCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OnNv
dXJjZVVSTCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5k
Q29sdW1uIGNvbnN0KToKKwogMjAxOS0wMi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBCdWZmZXJJbnRlcm5hbCBzaW5nbGUgY2hhcmFj
dGVyIFN0cmluZ0ltcGwgZm9yIFNtYWxsU3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNGYyMjhjY2E4Y2M1OWYxNzk4ZDExNTY2MTY5
ZjA3OTgxZTg1ZDliLi41NDVlOTJiMDY0NGYwYzkxMjdjNjYyMjQ1MTZjNmE4Y2I1ZmNiMjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ3
LDcgKzE0Nyw3IEBAIENvZGVCbG9ja0hhc2ggQ29kZUJsb2NrOjpoYXNoKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1faGFzaCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1NhZmVUb0NvbXB1dGVI
YXNoKCkpOwotICAgICAgICBtX2hhc2ggPSBDb2RlQmxvY2tIYXNoKG93bmVyU2NyaXB0RXhlY3V0
YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkpOworICAgICAgICBtX2hhc2gg
PSBDb2RlQmxvY2tIYXNoKG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6YXRp
b25LaW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gbV9oYXNoOwogfQpAQCAtMTU1LDkgKzE1NSw5
IEBAIENvZGVCbG9ja0hhc2ggQ29kZUJsb2NrOjpoYXNoKCkgY29uc3QKIENTdHJpbmcgQ29kZUJs
b2NrOjpzb3VyY2VDb2RlRm9yVG9vbHMoKSBjb25zdAogewogICAgIGlmIChjb2RlVHlwZSgpICE9
IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgcmV0dXJuIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5z
b3VyY2UoKS50b1VURjgoKTsKKyAgICAgICAgcmV0dXJuIG93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2UoKS50b1VURjgoKTsKICAgICAKLSAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSBzb3Vy
Y2UoKTsKKyAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSBzb3VyY2UoKS5wcm92aWRlcigp
OwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSk7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIHVubGlua2VkID0gZXhlY3V0YWJsZS0+dW5saW5rZWRFeGVjdXRhYmxlKCk7CiAgICAg
dW5zaWduZWQgdW5saW5rZWRTdGFydE9mZnNldCA9IHVubGlua2VkLT5zdGFydE9mZnNldCgpOwpA
QCAtMTk1LDE1ICsxOTUsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUo
UHJpbnRTdHJlYW0mIG91dCwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogICAgIG91dC5wcmlu
dCgiLCAiLCBpbnN0cnVjdGlvbkNvdW50KCkpOwogICAgIGlmICh0aGlzLT5qaXRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQgJiYgbV9zaG91bGRBbHdheXNCZUlubGluZWQpCiAgICAgICAg
IG91dC5wcmludCgiIChTaG91bGRBbHdheXNCZUlubGluZWQpIik7Ci0gICAgaWYgKG93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5uZXZlcklubGluZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUo
KS0+bmV2ZXJJbmxpbmUoKSkKICAgICAgICAgb3V0LnByaW50KCIgKE5ldmVySW5saW5lKSIpOwot
ICAgIGlmIChvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+bmV2ZXJPcHRpbWl6ZSgpKQorICAgIGlm
IChvd25lckV4ZWN1dGFibGUoKS0+bmV2ZXJPcHRpbWl6ZSgpKQogICAgICAgICBvdXQucHJpbnQo
IiAoTmV2ZXJPcHRpbWl6ZSkiKTsKLSAgICBlbHNlIGlmIChvd25lclNjcmlwdEV4ZWN1dGFibGUo
KS0+bmV2ZXJGVExPcHRpbWl6ZSgpKQorICAgIGVsc2UgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5u
ZXZlckZUTE9wdGltaXplKCkpCiAgICAgICAgIG91dC5wcmludCgiIChOZXZlckZUTE9wdGltaXpl
KSIpOwotICAgIGlmIChvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9v
cCgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQog
ICAgICAgICBvdXQucHJpbnQoIiAoRGlkVHJ5VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3du
ZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChvd25lckV4ZWN1
dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2Rl
KSIpOwogICAgIGlmIChtX2RpZEZhaWxKSVRDb21waWxhdGlvbikKICAgICAgICAgb3V0LnByaW50
KCIgKEpJVEZhaWwpIik7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBT
b3VyY2UoKQogCiB2b2lkIENvZGVCbG9jazo6ZHVtcFNvdXJjZShQcmludFN0cmVhbSYgb3V0KQog
ewotICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBvd25lclNjcmlwdEV4ZWN1dGFi
bGUoKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gb3duZXJFeGVjdXRhYmxl
KCk7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzRnVuY3Rpb25FeGVjdXRhYmxlKCkpIHsKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSByZWludGVycHJldF9j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogICAgICAgICBTdHJpbmdWaWV3
IHNvdXJjZSA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFu
Z2UoCkBAIC0yOTQsMjcgKzI5NCwxOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawogICAgICwg
bV9kaWRGYWlsSklUQ29tcGlsYXRpb24oZmFsc2UpCiAgICAgLCBtX2RpZEZhaWxGVExDb21waWxh
dGlvbihmYWxzZSkKICAgICAsIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKLSAgICAs
IG1faXNDb25zdHJ1Y3RvcihvdGhlci5tX2lzQ29uc3RydWN0b3IpCi0gICAgLCBtX2lzU3RyaWN0
TW9kZShvdGhlci5tX2lzU3RyaWN0TW9kZSkKLSAgICAsIG1fY29kZVR5cGUob3RoZXIubV9jb2Rl
VHlwZSkKICAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKG90aGVyLm1fbnVtQ2FsbGVlTG9jYWxzKQog
ICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKICAgICAsIG1fbnVtYmVyT2ZBcmd1bWVu
dHNUb1NraXAob3RoZXIubV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkKICAgICAsIG1faGFzRGVi
dWdnZXJTdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3N0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVE
aXNhYmxlZCkKICAgICAsIG1fbnVtQnJlYWtwb2ludHMoMCkKKyAgICAsIG1faW5zdHJ1Y3Rpb25D
b3VudChvdGhlci5tX2luc3RydWN0aW9uQ291bnQpCisgICAgLCBtX3Njb3BlUmVnaXN0ZXIob3Ro
ZXIubV9zY29wZVJlZ2lzdGVyKQorICAgICwgbV9oYXNoKG90aGVyLm1faGFzaCkKICAgICAsIG1f
dW5saW5rZWRDb2RlKCpvdGhlci52bSgpLCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQo
KSkKICAgICAsIG1fb3duZXJFeGVjdXRhYmxlKCpvdGhlci52bSgpLCB0aGlzLCBvdGhlci5tX293
bmVyRXhlY3V0YWJsZS5nZXQoKSkKICAgICAsIG1fdm0ob3RoZXIubV92bSkKLSAgICAsIG1faW5z
dHJ1Y3Rpb25zKG90aGVyLm1faW5zdHJ1Y3Rpb25zKQogICAgICwgbV9pbnN0cnVjdGlvbnNSYXdQ
b2ludGVyKG90aGVyLm1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcikKLSAgICAsIG1faW5zdHJ1Y3Rp
b25Db3VudChvdGhlci5tX2luc3RydWN0aW9uQ291bnQpCi0gICAgLCBtX3RoaXNSZWdpc3Rlcihv
dGhlci5tX3RoaXNSZWdpc3RlcikKLSAgICAsIG1fc2NvcGVSZWdpc3RlcihvdGhlci5tX3Njb3Bl
UmVnaXN0ZXIpCi0gICAgLCBtX2hhc2gob3RoZXIubV9oYXNoKQotICAgICwgbV9zb3VyY2Uob3Ro
ZXIubV9zb3VyY2UpCi0gICAgLCBtX3NvdXJjZU9mZnNldChvdGhlci5tX3NvdXJjZU9mZnNldCkK
LSAgICAsIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KG90aGVyLm1fZmlyc3RMaW5lQ29sdW1uT2Zm
c2V0KQogICAgICwgbV9jb25zdGFudFJlZ2lzdGVycyhvdGhlci5tX2NvbnN0YW50UmVnaXN0ZXJz
KQogICAgICwgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24ob3RoZXIubV9jb25z
dGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pCiAgICAgLCBtX2Z1bmN0aW9uRGVjbHMob3Ro
ZXIubV9mdW5jdGlvbkRlY2xzKQpAQCAtMzI4LDYgKzMyMCw3IEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29k
ZUJsb2NrCiAgICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQobV9z
Y29wZVJlZ2lzdGVyLmlzTG9jYWwoKSk7CiAKKyAgICBBU1NFUlQoc291cmNlKCkucHJvdmlkZXIo
KSk7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIAog
ICAgIHZtLT5oZWFwLmNvZGVCbG9ja1NldCgpLmFkZCh0aGlzKTsKQEAgLTM1MCw4ICszNDMsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tU
YWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgfQogfQogCi1Db2RlQmxvY2s6OkNvZGVCbG9jayhW
TSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICBKU1Njb3Bl
KiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25l
ZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKK0NvZGVCbG9j
azo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
LCBKU1Njb3BlKiBzY29wZSkKICAgICA6IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1f
Z2xvYmFsT2JqZWN0KCp2bSwgdGhpcywgc2NvcGUtPmdsb2JhbE9iamVjdCgqdm0pKQogICAgICwg
bV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKQEAgLTM2MSwyNCArMzUzLDE2IEBAIENvZGVC
bG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0CiAgICAgLCBtX2RpZEZhaWxKSVRDb21waWxhdGlvbihmYWxzZSkK
ICAgICAsIG1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKGZhbHNlKQogICAgICwgbV9oYXNCZWVuQ29t
cGlsZWRXaXRoRlRMKGZhbHNlKQotICAgICwgbV9pc0NvbnN0cnVjdG9yKHVubGlua2VkQ29kZUJs
b2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgLCBtX2lzU3RyaWN0TW9kZSh1bmxpbmtlZENvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgLCBtX2NvZGVUeXBlKHVubGlua2VkQ29kZUJsb2Nr
LT5jb2RlVHlwZSgpKQogICAgICwgbV9udW1DYWxsZWVMb2NhbHModW5saW5rZWRDb2RlQmxvY2st
Pm51bUNhbGxlZUxvY2FscygpKQogICAgICwgbV9udW1WYXJzKHVubGlua2VkQ29kZUJsb2NrLT5u
dW1WYXJzKCkpCiAgICAgLCBtX2hhc0RlYnVnZ2VyU3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9z
dGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRGlzYWJsZWQpCiAgICAgLCBtX251bUJyZWFrcG9pbnRz
KDApCisgICAgLCBtX3Njb3BlUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKSkKICAgICAsIG1fdW5saW5rZWRDb2RlKCp2bSwgdGhpcywgdW5saW5rZWRDb2RlQmxvY2sp
CiAgICAgLCBtX293bmVyRXhlY3V0YWJsZSgqdm0sIHRoaXMsIG93bmVyRXhlY3V0YWJsZSkKICAg
ICAsIG1fdm0odm0pCi0gICAgLCBtX2luc3RydWN0aW9ucygmdW5saW5rZWRDb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpKQotICAgICwgbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyKG1faW5zdHJ1Y3Rp
b25zLT5yYXdQb2ludGVyKCkpCi0gICAgLCBtX3RoaXNSZWdpc3Rlcih1bmxpbmtlZENvZGVCbG9j
ay0+dGhpc1JlZ2lzdGVyKCkpCi0gICAgLCBtX3Njb3BlUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxv
Y2stPnNjb3BlUmVnaXN0ZXIoKSkKLSAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlUHJvdmlk
ZXIpKQotICAgICwgbV9zb3VyY2VPZmZzZXQoc291cmNlT2Zmc2V0KQotICAgICwgbV9maXJzdExp
bmVDb2x1bW5PZmZzZXQoZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICwgbV9pbnN0cnVjdGlv
bnNSYXdQb2ludGVyKHVubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5yYXdQb2ludGVy
KCkpCiAgICAgLCBtX29zckV4aXRDb3VudGVyKDApCiAgICAgLCBtX29wdGltaXphdGlvbkRlbGF5
Q291bnRlcigwKQogICAgICwgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigwKQpAQCAtMzg4
LDcgKzM3Miw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgQVNTRVJUKGhlYXAoKS0+
aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQobV9zY29wZVJlZ2lzdGVyLmlzTG9jYWwoKSk7CiAK
LSAgICBBU1NFUlQobV9zb3VyY2UpOworICAgIEFTU0VSVChzb3VyY2UoKS5wcm92aWRlcigpKTsK
ICAgICBzZXROdW1QYXJhbWV0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
OwogICAgIAogICAgIHZtLT5oZWFwLmNvZGVCbG9ja1NldCgpLmFkZCh0aGlzKTsKQEAgLTQ2Miw3
ICs0NDYsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIGNvbnN0
IFVubGlua2VkSGFuZGxlckluZm8mIHVubGlua2VkSGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2Nr
LT5leGNlcHRpb25IYW5kbGVyKGkpOwogICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvJiBoYW5k
bGVyID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXTsKICNpZiBFTkFCTEUoSklU
KQotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCeXRlY29kZVB0clRhZz4g
Y29kZVB0ciA9IG1faW5zdHJ1Y3Rpb25zLT5hdCh1bmxpbmtlZEhhbmRsZXIudGFyZ2V0KS0+aXNX
aWRlKCkKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Qnl0ZWNvZGVQdHJU
YWc+IGNvZGVQdHIgPSBpbnN0cnVjdGlvbnMoKS5hdCh1bmxpbmtlZEhhbmRsZXIudGFyZ2V0KS0+
aXNXaWRlKCkKICAgICAgICAgICAgICAgICAgICAgPyBMTEludDo6Z2V0V2lkZUNvZGVQdHI8Qnl0
ZWNvZGVQdHJUYWc+KG9wX2NhdGNoKQogICAgICAgICAgICAgICAgICAgICA6IExMSW50OjpnZXRD
b2RlUHRyPEJ5dGVjb2RlUHRyVGFnPihvcF9jYXRjaCk7CiAgICAgICAgICAgICAgICAgaGFuZGxl
ci5pbml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4oY29kZVB0ci5yZXRhZ2dlZDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPigp
KSk7CkBAIC00OTYsMTAgKzQ4MCw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
IH0KICAgICB9CiAKLSNpZiAhRU5BQkxFKENfTE9PUCkKLSAgICBzZXRDYWxsZWVTYXZlUmVnaXN0
ZXJzKFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKLSNl
bmRpZgotCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVu
dmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJl
ZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKQEAgLTU0Myw3ICs1MjMsNyBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBicmVhazsgXAogICAgIH0KIAotICAgIGZvciAoY29u
c3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25zKCkpIHsKICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgbV9pbnN0cnVjdGlv
bkNvdW50ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CkBAIC04MDUsNyArNzg1LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBp
ZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIAotICAgIC8vIFNldCBvcHRpbWl6YXRp
b24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBz
aW5jZSB0aGVzZQorICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVy
IGluc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAgICAvLyByZWx5IG9u
IHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0dGVkIHRvIGFs
c28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9yZSBhY2N1cmF0
ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgp
OwpAQCAtMTA5MSw3ICsxMDcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRp
b25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICBpZiAo
aml0VHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKICAgICAgICAgY29uc3Qg
VmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucyA9IG1fdW5saW5rZWRDb2RlLT5wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlv
bnMtPmF0KHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKyAgICAgICAgICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
c1tpXSk7CiAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24tPmlzPE9wUHV0QnlJZD4oKSkgewog
ICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJ
ZD4oKS5tZXRhZGF0YSh0aGlzKTsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CkBAIC0xMjIxLDcgKzEyMDEsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgfTsKIAog
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8gY3VySW5zdHJ1Y3Rp
b24gPSBtX2luc3RydWN0aW9ucy0+YXQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOwor
ICAgICAgICBjb25zdCBhdXRvIGN1ckluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQocHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOwogICAgICAgICBzd2l0Y2ggKGN1ckluc3RydWN0
aW9uLT5vcGNvZGVJRCgpKSB7CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAg
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0
YWRhdGEodGhpcyk7CkBAIC0xNTI4LDYgKzE1MDgsMTggQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpy
YXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2sKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdp
c3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycykKK3sKKyAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2Fs
bGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworfQorCit2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVy
QXRPZmZzZXRMaXN0KQoreworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92
ZShyZWdpc3RlckF0T2Zmc2V0TGlzdCk7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpyZXNldEpJVERh
dGEoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKTsK
QEAgLTE3MTYsMTQgKzE3MDgsMTYgQEAgQ2FsbFNpdGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2Vw
dGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IG9yaWdpbmEKIAogdm9pZCBD
b2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBhdXRvIGlu
c3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRv
IGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIE9w
Q2F0Y2ggb3AgPSBpbnN0cnVjdGlvbi0+YXM8T3BDYXRjaD4oKTsKICAgICBhdXRvJiBtZXRhZGF0
YSA9IG9wLm1ldGFkYXRhKHRoaXMpOwogICAgIGlmICghIW1ldGFkYXRhLm1fYnVmZmVyKSB7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBw
cm9maWxlIDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIGF1dG8qIHJhcmVEYXRhID0gbV9y
YXJlRGF0YS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKHJhcmVEYXRhKTsKKyAgICAgICAgZm9yIChh
dXRvJiBwcm9maWxlIDogcmFyZURhdGEtPm1fY2F0Y2hQcm9maWxlcykgewogICAgICAgICAgICAg
aWYgKHByb2ZpbGUuZ2V0KCkgPT0gbWV0YWRhdGEubV9idWZmZXIpIHsKICAgICAgICAgICAgICAg
ICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzQ2LDcgKzE3NDAs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRl
Y29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRjaAogICAgIC8vIHdlIGNhbiBhdm9pZCBwcm9maWxp
bmcgdGhlbSBhbmQgZXh0cmFjdGluZyB0aGVtIHdoZW4gZG9pbmcgT1NSIGVudHJ5CiAgICAgLy8g
aW50byB0aGUgREZHLgogCi0gICAgYXV0byBuZXh0T2Zmc2V0ID0gbV9pbnN0cnVjdGlvbnMtPmF0
KGJ5dGVjb2RlT2Zmc2V0KS5uZXh0KCkub2Zmc2V0KCk7CisgICAgYXV0byBuZXh0T2Zmc2V0ID0g
aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpLm5leHQoKS5vZmZzZXQoKTsKICAgICBG
YXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodGhpcywgbmV4dE9mZnNldCk7CiAgICAgVmVjdG9yPFZpcnR1YWxS
ZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOwogICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CkBAIC0xNzYyLDE2ICsxNzU2LDE3IEBAIHZv
aWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zm
c2V0U2xvdyhjb25zdCBPcENhdGNoCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2Zp
bGVzLT5tX3NpemU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1f
b3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKIAorICAgIGNyZWF0ZVJhcmVEYXRh
SWZOZWNlc3NhcnkoKTsKKwogICAgIC8vIFRoZSBjb21waWxlciB0aHJlYWQgd2lsbCByZWFkIHRo
aXMgcG9pbnRlciB2YWx1ZSBhbmQgdGhlbiBwcm9jZWVkIHRvIGRlcmVmZXJlbmNlIGl0CiAgICAg
Ly8gaWYgaXQgaXMgbm90IG51bGwuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCBhYm92ZSBzdG9y
ZXMgaGFwcGVuIGJlZm9yZSB0aGlzIHN0b3JlIHNvCiAgICAgLy8gdGhlIGNvbXBpbGVyIHRocmVh
ZCByZWFkcyBmdWxseSBpbml0aWFsaXplZCBkYXRhLgogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7IAogCiAgICAgb3AubWV0YWRhdGEodGhpcykubV9idWZmZXIgPSBwcm9maWxlcy5nZXQoKTsK
LQogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
ICAgICBtX2NhdGNoUHJvZmlsZXMuYXBwZW5kKFdURk1vdmUocHJvZmlsZXMpKTsKKyAgICAgICAg
bV9yYXJlRGF0YS0+bV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CiAg
ICAgfQogfQogCkBAIC0xNzk0LDcgKzE3ODksNyBAQCB2b2lkIENvZGVCbG9jazo6cmVtb3ZlRXhj
ZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCkKIHVu
c2lnbmVkIENvZGVCbG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICByZXR1cm4gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCkt
PmZpcnN0TGluZSgpICsgbV91bmxpbmtlZENvZGUtPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCk7CisgICAgcmV0dXJuIG93bmVyRXhlY3V0YWJsZSgpLT5maXJzdExp
bmUoKSArIG1fdW5saW5rZWRDb2RlLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOwogfQogCiB1bnNpZ25lZCBDb2RlQmxvY2s6OmNvbHVtbk51bWJlckZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMTgxMSwxNCArMTgwNiwxNCBA
QCB1bnNpZ25lZCBDb2RlQmxvY2s6OmNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQogdm9pZCBDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1
bW4pIGNvbnN0CiB7CiAgICAgbV91bmxpbmtlZENvZGUtPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKLSAgICBkaXZvdCArPSBtX3NvdXJjZU9mZnNldDsKKyAgICBkaXZvdCAr
PSBzb3VyY2VPZmZzZXQoKTsKICAgICBjb2x1bW4gKz0gbGluZSA/IDEgOiBmaXJzdExpbmVDb2x1
bW5PZmZzZXQoKTsKLSAgICBsaW5lICs9IG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5maXJzdExp
bmUoKTsKKyAgICBsaW5lICs9IG93bmVyRXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKTsKIH0KIAog
Ym9vbCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUs
IHVuc2lnbmVkIGNvbHVtbikKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogKm1faW5zdHJ1
Y3Rpb25zKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IGluc3RydWN0aW9ucygpKSB7CiAg
ICAgICAgIGlmIChpdC0+aXM8T3BEZWJ1Zz4oKSkgewogICAgICAgICAgICAgaW50IHVudXNlZDsK
ICAgICAgICAgICAgIHVuc2lnbmVkIG9wRGVidWdMaW5lOwpAQCAtMTg5Niw3ICsxODkxLDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwg
TExJbnRDYWxsTGlua0luZm8qIGluY28KIAogQ29kZUJsb2NrKiBDb2RlQmxvY2s6Om5ld1JlcGxh
Y2VtZW50KCkKIHsKLSAgICByZXR1cm4gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPm5ld1JlcGxh
Y2VtZW50Q29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKTsKKyAgICByZXR1cm4gb3du
ZXJFeGVjdXRhYmxlKCktPm5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9u
S2luZCgpKTsKIH0KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xOTA1LDcgKzE5MDAsNyBAQCBDb2Rl
QmxvY2sqIENvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvID0gdGhpcy0+Y2xhc3NJbmZvKCp2bSgpKTsKIAogICAgIGlmIChjbGFzc0luZm8gPT0g
RnVuY3Rpb25Db2RlQmxvY2s6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9ja0ZvcihtX2lzQ29uc3Ry
dWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworICAgICAgICByZXR1cm4g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2Nr
Rm9yKGlzQ29uc3RydWN0b3IoKSA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiAK
ICAgICBpZiAoY2xhc3NJbmZvID09IEV2YWxDb2RlQmxvY2s6OmluZm8oKSkKICAgICAgICAgcmV0
dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2Nr
KCk7CkBAIC0xOTI1LDcgKzE5MjAsNyBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBDb2RlQmxvY2s6
OmNvbXB1dGVDYXBhYmlsaXR5TGV2ZWwoKQogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
ID0gdGhpcy0+Y2xhc3NJbmZvKCp2bSgpKTsKIAogICAgIGlmIChjbGFzc0luZm8gPT0gRnVuY3Rp
b25Db2RlQmxvY2s6OmluZm8oKSkgewotICAgICAgICBpZiAobV9pc0NvbnN0cnVjdG9yKQorICAg
ICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKQogICAgICAgICAgICAgcmV0dXJuIERGRzo6ZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiAgICAgICAgIHJldHVybiBERkc6
OmZ1bmN0aW9uRm9yQ2FsbENhcGFiaWxpdHlMZXZlbCh0aGlzKTsKICAgICB9CkBAIC0yMDA2LDcg
KzIwMDEsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVh
c29uIHJlYXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlIG1vZAogICAgICAgICAvLyBUaGlzIGFjY29t
cGxpc2hlcyAoMSksIGFuZCBkb2VzIGl0cyBvd24gYm9vay1rZWVwaW5nIGFib3V0IHdoZXRoZXIg
aXQgaGFzIGFscmVhZHkgaGFwcGVuZWQuCiAgICAgICAgIGlmICghaml0Q29kZSgpLT5kZmdDb21t
b24oKS0+aW52YWxpZGF0ZSgpKSB7CiAgICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGJlZW4g
aW52YWxpZGF0ZWQuCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2Vt
ZW50KCkgfHwgKHZtLmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtl
ZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAodm0uaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkg
JiYgIUhlYXA6OmlzTWFya2VkKG93bmVyRXhlY3V0YWJsZSgpKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjAzOCwxMSArMjAzMywxMSBAQCB2b2lkIENvZGVC
bG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVvcHRpbWl6
YXRpb25Nb2RlIG1vZAogCiAgICAgLy8gSmV0dGlzb24gY2FuIGhhcHBlbiBkdXJpbmcgR0MuIFdl
IGRvbid0IHdhbnQgdG8gaW5zdGFsbCBjb2RlIHRvIGEgZGVhZCBleGVjdXRhYmxlCiAgICAgLy8g
YmVjYXVzZSB0aGF0IHdvdWxkIGFkZCBhIGRlYWQgb2JqZWN0IHRvIHRoZSByZW1lbWJlcmVkIHNl
dC4KLSAgICBpZiAodm0uaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkKKyAgICBpZiAodm0uaGVhcC5pc0N1cnJlbnRU
aHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyRXhlY3V0YWJsZSgpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDIpLgotICAgIG93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSh2bSwgYWx0ZXJuYXRpdmUoKSwgY29kZVR5cGUo
KSwgc3BlY2lhbGl6YXRpb25LaW5kKCkpOworICAgIG93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxs
Q29kZSh2bSwgYWx0ZXJuYXRpdmUoKSwgY29kZVR5cGUoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkp
OwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKERGRzo6c2hvdWxkRHVtcERpc2Fzc2Vt
Ymx5KCkpCkBAIC0yMTk2LDE1ICsyMTkxLDE3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoKSBjb25zdAogfQogCiAjaWYgIUVOQUJMRShDX0xPT1ApCi12
b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVT
YXZlUmVnaXN0ZXJzKQorY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIENvZGVCbG9jazo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0CiB7Ci0gICAgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVy
cyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5n
ZXQoKSkgeworICAgICAgICBpZiAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVy
cyA9IGppdERhdGEtPm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoKSkKKyAgICAgICAgICAgIHJl
dHVybiByZWdpc3RlcnM7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuICZSZWdpc3RlckF0T2Zm
c2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVy
QXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0TGlzdCkKLXsKLSAgICBtX2NhbGxlZVNhdmVS
ZWdpc3RlcnMgPSBXVEZNb3ZlKHJlZ2lzdGVyQXRPZmZzZXRMaXN0KTsKLX0KICAgICAKIHN0YXRp
YyBzaXplX3Qgcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoc2l6ZV90IGNh
bGxlZVNhdmVSZWdpc3RlcnMpCiB7CkBAIC0yMjIwLDcgKzIyMTcsNyBAQCBzaXplX3QgQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkKIAog
c2l6ZV90IENvZGVCbG9jazo6Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkKIHsK
LSAgICByZXR1cm4gcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMobV9jYWxs
ZWVTYXZlUmVnaXN0ZXJzLT5zaXplKCkpOworICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycyhjYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSk7CiB9CiAj
ZW5kaWYKIApAQCAtMjM5OCw3ICsyMzk1LDcgQEAgYXV0byBDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4
aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoREZHOjpPU1JFeGl0U3RhdGUKIAog
ICAgIGJvb2wgZGlkVHJ5VG9FbnRlckluTG9vcCA9IGZhbHNlOwogICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5k
aXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9F
bnRlckluTG9vcCgpKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CiAgICAg
ICAgICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0yNTU1LDcgKzI1NTIsNyBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkUmVv
cHRpbWl6ZUZyb21Mb29wTm93KCkKIAogQXJyYXlQcm9maWxlKiBDb2RlQmxvY2s6OmdldEFycmF5
UHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2Rl
T2Zmc2V0KTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNv
ZGVPZmZzZXQpOwogICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKICNkZWZp
bmUgQ0FTRShPcCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCkBAIC0yNjI5LDEwICsyNjI2
LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5l
c3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyCiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2Zp
bGVCdWNrZXQgOiBtX2NhdGNoUHJvZmlsZXMpIHsKLSAgICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9y
RWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAgICAg
IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAg
ICAgICB9KTsKKyAgICBpZiAoYXV0byogcmFyZURhdGEgPSBtX3JhcmVEYXRhLmdldCgpKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tldCA6IHJhcmVEYXRhLT5tX2NhdGNoUHJvZmls
ZXMpIHsKKyAgICAgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQogICAgIH0KICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTI3NTMsNyArMjc1
Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiAgICAg
ICAgIHJldHVybiBzeW1ib2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCB1aWQpOwogICAgIH07CiAK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25zKSB7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9ucygpKSB7CiAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CkBA
IC0yODg4LDcgKzI4ODcsNyBAQCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKIAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6
OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkK
IHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVP
ZmZzZXQpOwogICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKIAogI2RlZmlu
ZSBDQVNFKE9wKSBcCkBAIC0yOTQyLDcgKzI5NDEsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQogICAgICAgICB9CiAgICAgfQogICAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3Ry
dWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25zKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVj
dGlvbiA6IGluc3RydWN0aW9ucygpKSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICBpZiAoISFiYXNlbGluZUFsdGVybmF0aXZlKCkt
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSkpIHsKICAgICAg
ICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2F0Y2ggfHwgb3Bjb2RlID09IG9wX2VudGVyKSB7CkBA
IC0yOTk5LDEyICsyOTk4LDEyIEBAIGNvbnN0IEluc3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9m
TGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZzZXQg
PSBieXRlY29kZU9mZnNldChwYyk7CiAgICAgaW50IHRhcmdldCA9IG1fdW5saW5rZWRDb2RlLT5v
dXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNldCk7Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLT5h
dChvZmZzZXQgKyB0YXJnZXQpLnB0cigpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChv
ZmZzZXQgKyB0YXJnZXQpLnB0cigpOwogfQogCiBBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRl
Y29kZU9mZnNldCkKIHsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlRm9yUEMobV9pbnN0cnVjdGlv
bnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIoKSk7CisgICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZv
clBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIoKSk7CiB9CiAKIEFyaXRo
UHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiog
cGMpCkBAIC0zMDU1LDcgKzMwNTQsNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKICAgICAgICAgLy8gQmVjYXVzZSBv
cF9wcm9maWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZl
cnkgYmFzaWMgYmxvY2ssIGZpbmRpbmcgCiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVf
Y29udHJvbF9mbG93IHdpbGwgZ2l2ZSB1cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNp
YyBibG9jay4KICAgICAgICAgc2l6ZV90IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwot
ICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KHN0YXJ0SWR4KTsK
KyAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KHN0YXJ0SWR4KTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHJv
ZmlsZV9jb250cm9sX2Zsb3cpOwogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wUHJvZmlsZUNvbnRyb2xGbG93PigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwpAQCAtMzA2MywxMSArMzA2MiwxMSBAQCB2b2lkIENvZGVC
bG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkK
ICAgICAgICAgaW50IGJhc2ljQmxvY2tFbmRPZmZzZXQ7CiAgICAgICAgIGlmIChpICsgMSA8IG9m
ZnNldHNMZW5ndGgpIHsKICAgICAgICAgICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNl
dHNbaSArIDFdOwotICAgICAgICAgICAgYXV0byBlbmRJbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rp
b25zLT5hdChlbmRJZHgpOworICAgICAgICAgICAgYXV0byBlbmRJbnN0cnVjdGlvbiA9IGluc3Ry
dWN0aW9ucygpLmF0KGVuZElkeCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmRJbnN0
cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyk7CiAgICAgICAg
ICAgICBiYXNpY0Jsb2NrRW5kT2Zmc2V0ID0gZW5kSW5zdHJ1Y3Rpb24tPmFzPE9wUHJvZmlsZUNv
bnRyb2xGbG93PigpLm1fdGV4dE9mZnNldCAtIDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBiYXNpY0Jsb2NrRW5kT2Zmc2V0ID0gbV9zb3VyY2VPZmZzZXQgKyBvd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+c291cmNlKCkubGVuZ3RoKCkgLSAxOyAvLyBPZmZzZXQgYmVmb3JlIHRoZSBj
bG9zaW5nIGJyYWNlLgorICAgICAgICAgICAgYmFzaWNCbG9ja0VuZE9mZnNldCA9IHNvdXJjZU9m
ZnNldCgpICsgb3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZSgpLmxlbmd0aCgpIC0gMTsgLy8gT2Zm
c2V0IGJlZm9yZSB0aGUgY2xvc2luZyBicmFjZS4KICAgICAgICAgICAgIGJhc2ljQmxvY2tTdGFy
dE9mZnNldCA9IHN0ZDo6bWluKGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9m
ZnNldCk7IC8vIFNvbWUgc3RhcnQgb2Zmc2V0cyBtYXkgYmUgYXQgdGhlIGNsb3NpbmcgYnJhY2Us
IGVuc3VyZSBpdCBpcyB0aGUgb2Zmc2V0IGJlZm9yZS4KICAgICAgICAgfQogCkBAIC0zMDk1LDcg
KzMwOTQsNyBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2bSgpLT5j
b250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tMb2NhdGlvbihvd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2Nr
RW5kT2Zmc2V0KTsKKyAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRp
b24gPSB2bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tMb2NhdGlvbihv
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNp
Y0Jsb2NrRW5kT2Zmc2V0KTsKIAogICAgICAgICAvLyBGaW5kIGFsbCBmdW5jdGlvbnMgdGhhdCBh
cmUgZW5jbG9zZWQgd2l0aGluIHRoZSByYW5nZTogW2Jhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFz
aWNCbG9ja0VuZE9mZnNldF0KICAgICAgICAgLy8gYW5kIGluc2VydCB0aGVzZSBmdW5jdGlvbnMn
IHN0YXJ0L2VuZCBvZmZzZXRzIGFzIGdhcHMgaW4gdGhlIGN1cnJlbnQgQmFzaWNCbG9ja0xvY2F0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDJi
MzgwZGIyYmFiYmY1Yjk4NDhmM2QzMTU3ZTQ1ODQ3ZmM4ZGJiMDguLmRiMmNkOTJjZjU1ZmY3YmNi
NDNjZjJkYzU2NmUzNDU5NGE4ODgzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKIAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayhWTSosIFN0cnVjdHVyZSos
IENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcik7Ci0gICAgQ29kZUJsb2NrKFZN
KiwgU3RydWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayosIEpTU2NvcGUqLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYsIHVuc2lnbmVk
IHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKyAgICBDb2Rl
QmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkQ29kZUJsb2NrKiwgSlNTY29wZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcik7CiAgICAgYm9vbCBm
aW5pc2hDcmVhdGlvbihWTSYsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqLCBKU1Njb3BlKik7CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBzcGVjaWFsaXphdGlvbktpbmQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWNp
YWxpemF0aW9uRnJvbUlzQ29uc3RydWN0KG1faXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIHJldHVy
biBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChpc0NvbnN0cnVjdG9yKCkpOwogICAgIH0K
IAogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmVGb3JKZXR0aXNvbigpOyAgICAKQEAgLTIxMSw4
ICsyMTEsMTAgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lk
IGR1bXBNYXRoSUNTdGF0cygpOwogCi0gICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3RyaWN0TW9kZTsgfQorICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzU3RyaWN0TW9kZSgpOyB9CisgICAgYm9vbCBpc0NvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlzQ29uc3RydWN0b3IoKTsg
fQogICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkg
PyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQorICAgIENvZGVUeXBlIGNvZGVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBlKCk7IH0KIAogICAgIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
PnNjcmlwdE1vZGUoKTsgfQogCkBAIC0yMjEsNyArMjIzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAKICAgICBpbmxpbmUgYm9vbCBpc0tub3duTm90SW1tZWRpYXRlKGlu
dCBpbmRleCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA9PSBtX3RoaXNSZWdpc3Rlci5vZmZz
ZXQoKSAmJiAhbV9pc1N0cmljdE1vZGUpCisgICAgICAgIGlmIChpbmRleCA9PSB0aGlzUmVnaXN0
ZXIoKS5vZmZzZXQoKSAmJiAhaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICBpZiAoaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKQpAQCAtMjYz
LDYgKzI2NSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBT
ZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxsTm9kZSwgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8UG9seW1vcnBoaWNDYWxsTm9kZT4+IG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzOwogICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmls
ZXM7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29k
ZU9yaWdpbk1hcDsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0
PiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CiAgICAgICAgIEpJVENvZGVNYXAgbV9qaXRDb2RlTWFw
OwogICAgIH07CiAKQEAgLTMyMCw2ICszMjMsOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB2b2lkIHNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5pcXVlX3B0cjxQ
Q1RvQ29kZU9yaWdpbk1hcD4mJik7CiAgICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZv
aWQqIHBjKTsKIAorICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7
CisgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3Rl
ckF0T2Zmc2V0TGlzdD4pOworCiAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRSYXJlQ2FzZVByb2Zp
bGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBSYXJlQ2FzZVByb2ZpbGUqIHJhcmVDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGludCBieXRl
Y29kZU9mZnNldCk7CiAgICAgdW5zaWduZWQgcmFyZUNhc2VQcm9maWxlQ291bnRGb3JCeXRlY29k
ZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBpbnQgYnl0ZWNvZGVPZmZzZXQpOwpA
QCAtMzc0LDcgKzM4MCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICByZXR1cm4gcmV0dXJuQWRkcmVzcyAtIGluc3RydWN0aW9uc0JlZ2luOwogICAgIH0KIAot
ICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVy
biAqbV9pbnN0cnVjdGlvbnM7IH0KKyAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1
Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9
CiAKICAgICBzaXplX3QgcHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCk7CiAKQEAgLTQyMCwxNSAr
NDI2LDEzIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgdm9pZCBq
ZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25SZWFzb24sIFJlb3B0aW1pemF0aW9uTW9kZSA9IERv
bnRDb3VudFJlb3B0aW1pemF0aW9uLCBjb25zdCBGaXJlRGV0YWlsKiA9IG51bGxwdHIpOwogICAg
IAotICAgIEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBt
X293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQotICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4o
bV9vd25lckV4ZWN1dGFibGUuZ2V0KCkpOyB9CisgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUuZ2V0KCk7IH0KICAg
ICAKICAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiBvd25lckVkZ2UoKSBjb25zdCB7IHJl
dHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQogCiAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1cm4g
bV92bTsgfQogCi0gICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNS
ZWdpc3RlcikgeyBtX3RoaXNSZWdpc3RlciA9IHRoaXNSZWdpc3RlcjsgfQotICAgIFZpcnR1YWxS
ZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RoaXNSZWdpc3RlcjsgfQor
ICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7IH0KIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQ29kZS0+dXNlc0V2YWwoKTsgfQogCkBAIC00NDMsMTEgKzQ0Nyw2
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gbV9z
Y29wZVJlZ2lzdGVyOwogICAgIH0KICAgICAKLSAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29kZVR5cGU+KG1fY29kZVR5cGUp
OwotICAgIH0KLQogICAgIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCBwdXRCeUlkQ29udGV4dCgp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY29kZVR5cGUoKSA9PSBFdmFsQ29kZSkKQEAgLTQ1
NSw5ICs0NTQsOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
cmV0dXJuIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZDsKICAgICB9CiAKLSAgICBTb3VyY2VQcm92
aWRlciogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZU9mZnNldDsgfQotICAg
IHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0OyB9CisgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpOyB9CisgICAgdW5zaWduZWQgc291
cmNlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0
YXJ0T2Zmc2V0KCk7IH0KKyAgICB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKTsgfQogCiAgICAgc2l6
ZV90IG51bWJlck9mSnVtcFRhcmdldHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
bnVtYmVyT2ZKdW1wVGFyZ2V0cygpOyB9CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5qdW1wVGFyZ2V0KGluZGV4KTsgfQpA
QCAtNjYyLDEwICs2NjEsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB2b2lkIGNvdW50UmVvcHRpbWl6YXRpb24oKTsKIAogI2lmICFFTkFCTEUoQ19MT09QKQotICAg
IHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7Ci0gICAgdm9pZCBzZXRD
YWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4p
OwotCi0gICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25z
dCB7IHJldHVybiBtX2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KCk7IH0KKyAgICBjb25zdCBSZWdp
c3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0OwogCiAgICAgc3Rh
dGljIHVuc2lnbmVkIG51bWJlck9mTExJbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB7
IHJldHVybiBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKS5u
dW1iZXJPZlNldFJlZ2lzdGVycygpOyB9CiAgICAgc3RhdGljIHNpemVfdCBsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CkBAIC04MzQsOSArODMwLDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBtX2RpZEZhaWxKSVRD
b21waWxhdGlvbiA6IDE7CiAgICAgYm9vbCBtX2RpZEZhaWxGVExDb21waWxhdGlvbiA6IDE7CiAg
ICAgYm9vbCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwgOiAxOwotICAgIGJvb2wgbV9pc0NvbnN0
cnVjdG9yIDogMTsKLSAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKLSAgICB1bnNpZ25lZCBt
X2NvZGVUeXBlIDogMjsgLy8gQ29kZVR5cGUKIAogICAgIC8vIEludGVybmFsIG1ldGhvZHMgZm9y
IHVzZSBieSB2YWxpZGF0aW9uIGNvZGUuIEl0IHdvdWxkIGJlIHByaXZhdGUgaWYgaXQgd2Fzbid0
CiAgICAgLy8gZm9yIHRoZSBmYWN0IHRoYXQgd2UgdXNlIGl0IGZyb20gYW5vbnltb3VzIG5hbWVz
cGFjZXMuCkBAIC04NTIsNiArODQ1LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsK
ICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
OwogCisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKKwogICAgICAgICBEaXJlY3RFdmFsQ29kZUNhY2hl
IG1fZGlyZWN0RXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05NDIsOCArOTM3LDExIEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KCkKICAgICB7Ci0gICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAg
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpIHsKKyAgICAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsg
Ly8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVkIGZyb20gY29tcGlsZXIgdGhyZWFkcy4K
KyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEZNb3ZlKHJhcmVEYXRhKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHZvaWQgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxv
d1Byb2ZpbGVyKCk7CkBAIC05NjIsMjggKzk2MCwxOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG1fbnVtQnJlYWtwb2ludHMgOiAzMDsK
ICAgICAgICAgfTsKICAgICB9OwotICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4g
bV91bmxpbmtlZENvZGU7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVCYXNlPiBtX293bmVy
RXhlY3V0YWJsZTsKLSAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4g
bV9vd25lckVkZ2U7Ci0gICAgVk0qIG1fdm07Ci0KLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVh
bSogbV9pbnN0cnVjdGlvbnM7Ci0gICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2lu
dGVyIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1faW5zdHJ1Y3Rpb25Db3VudCB7IDAgfTsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fc2NvcGVSZWdpc3RlcjsKICAgICBtdXRhYmxlIENvZGVCbG9ja0hhc2ggbV9oYXNoOwogCi0g
ICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKLSAgICB1bnNpZ25lZCBtX3NvdXJj
ZU9mZnNldDsKLSAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZUNvbHVtbk9mZnNldDsKKyAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlOworICAgIFdyaXRlQmFy
cmllcjxTY3JpcHRFeGVjdXRhYmxlPiBtX293bmVyRXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJp
ZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9vd25lckVkZ2U7CisgICAgVk0qIG1fdm07
CiAKKyAgICBjb25zdCB2b2lkKiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIgeyBudWxscHRyIH07
CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdMTEludENhbGxzOwogICAgIFN0
cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5SWRXYXRjaHBvaW50TWFwOwogICAgIFJl
ZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7Ci0jaWYgIUVOQUJMRShDX0xPT1ApCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVREYXRhPiBtX2pp
dERhdGE7CiAjZW5kaWYKQEAgLTk5Myw3ICs5ODIsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIg
bV9sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXM7CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8
VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlczsKLSAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7
CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lz
dGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9z
YW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpAQCAtMTAxMCw2ICs5OTgsNyBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIEJhc2VsaW5lRXhlY3V0aW9u
Q291bnRlciBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgIHVpbnQzMl90IG1fb3NyRXhpdENvdW50
ZXI7CisKICAgICB1aW50MTZfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICB1aW50
MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAppbmRleCBlNTY4YThkZWYwMzQxYTE4ZTg0
OTA1YjI3N2ZhMWU3ODkzMTE3Zjg1Li5iOWYyOGQwMmM3MTQyOTQ3ZDk4MWNiMDdhOWM1NTIyYTA4
MWZhNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJs
b2NrLmgKQEAgLTUyLDExICs1MiwxMCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVi
bGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAK
LSAgICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRXZhbEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3Vy
Y2VQcm92aWRlcikKKyAgICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRXZh
bEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewogICAgICAgICBFdmFsQ29kZUJs
b2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxDb2RlQmxvY2s+
KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIEV2YWxDb2RlQmxvY2sodm0sIHZtLT5ldmFsQ29kZUJs
b2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBz
Y29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlcikpOworICAgICAgICAgICAgRXZhbENvZGVCbG9j
ayh2bSwgdm0tPmV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oKnZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwpA
QCAtNzUsOSArNzQsOCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIEdsb2Jh
bENvZGVCbG9jayB7CiAgICAgewogICAgIH0KICAgICAgICAgCi0gICAgRXZhbENvZGVCbG9jayhW
TSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFdmFsRXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBK
U1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyKQot
ICAgICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUs
IHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIDAsIDEp
CisgICAgRXZhbENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFdmFsRXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0s
IHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpCiAg
ICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRnVuY3Rpb25Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9G
dW5jdGlvbkNvZGVCbG9jay5oCmluZGV4IGNjY2I1YzU1M2QzN2E3ZWM4NzlkY2IxZWQ1NDJlOWUy
NzdkODgxODIuLjg1M2ZhZTk1ZGUzYWEyODQyY2QwYzc2NThhNTZkMTNhOTk1MGVlYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5o
CkBAIC01MywxMSArNTMsMTAgQEAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgZmluYWwgOiBwdWJs
aWMgQ29kZUJsb2NrIHsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0
YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwKLSAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYm
IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGlu
ZUNvbHVtbk9mZnNldCkKKyAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSog
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewogICAg
ICAgICBGdW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxGdW5jdGlvbkNvZGVCbG9jaz4odm0tPmhlYXApKQotICAgICAgICAgICAgRnVuY3Rpb25D
b2RlQmxvY2sodm0sIHZtLT5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJF
eGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlk
ZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CisgICAgICAgICAgICBG
dW5jdGlvbkNvZGVCbG9jayh2bSwgdm0tPmZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLmdldCgp
LCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSk7CiAgICAgICAgIGlm
ICghaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKQEAgLTc0LDkgKzczLDggQEAgY2xhc3MgRnVuY3Rpb25Db2RlQmxv
Y2sgZmluYWwgOiBwdWJsaWMgQ29kZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgRnVuY3Rp
b25Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwKLSAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKLSAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJv
dmlkZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBGdW5jdGlv
bkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICA6IENvZGVCbG9jayh2bSwgc3RydWN0
dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkKICAgICB7CiAg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9i
YWxDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2Rl
QmxvY2suaAppbmRleCBhN2EzMDY3Yjg2N2M3NzM5NGM2ZGE1ZjdkN2MyYzQwN2JkODhmMDE4Li5l
MTFiNzkwNTIwYzgzZGI3MWVmYzMyMjkwMTEzMTIxY2MyYmJmYzgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oCkBAIC00NSw4ICs0NSw4
IEBAIGNsYXNzIEdsb2JhbENvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAgIHsKICAg
ICB9CiAKLSAgICBHbG9iYWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYg
c291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQotICAgICAgICA6IENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4
ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRl
ciksIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIEdsb2JhbENvZGVC
bG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29w
ZSogc2NvcGUpCisgICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgKaW5kZXggNDY3YjNkNTZkMDM4MWY0OTIwOTY3ODMyOGRhMmI5Njc3ODYxNGIwNC4uMjM1
NTZjZDFjNWI5ODAwZGFmZmM2MjA5NmFjZmM3ZTM2MmNiNDVkZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCkBA
IC01MywxMSArNTMsMTAgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1
YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQog
Ci0gICAgc3RhdGljIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAgIEpTU2NvcGUqIHNjb3BlLCBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGlu
ZUNvbHVtbk9mZnNldCkKKyAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRl
KFZNKiB2bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2Nv
cGUpCiAgICAgewogICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLT5oZWFw
KSkKLSAgICAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT5tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29k
ZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCk7CisgICAgICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+bW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CkBAIC03NCw5
ICs3Myw4IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xv
YmFsQ29kZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAg
ICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5s
aW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KQorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNT
Y29wZSogc2NvcGUpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93
bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKQogICAgIHsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2Nr
LmgKaW5kZXggZThiYTMwZmU1YmNjZjIyOWM1YzdiN2M3YzE0Yjc3ZmRhN2I3Nzc3Ni4uZWI3OTVm
ZDM4ZTcwODBlNTI5MGNjYjQwMTljZjFmYTcxNjkxZjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCkBAIC01MywxMSArNTMsMTAg
QEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sg
ewogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFByb2dyYW1D
b2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIFByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAg
IEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIs
IHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBzdGF0aWMgUHJvZ3JhbUNvZGVC
bG9jayogY3JlYXRlKFZNKiB2bSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2Nv
cGUpCiAgICAgewogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dyYW1Db2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAg
ICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT5wcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdl
dCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShz
b3VyY2VQcm92aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CisgICAgICAgICAgICBQcm9n
cmFtQ29kZUJsb2NrKHZtLCB2bS0+cHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAoIWlu
c3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2Rl
QmxvY2ssIHNjb3BlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1
cm4gaW5zdGFuY2U7CkBAIC03NCw5ICs3Myw4IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2sgZmlu
YWwgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgUHJvZ3Jh
bUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9ncmFtRXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYm
IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAg
IDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQorICAgIFByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCisgICAgICAg
IDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNjb3BlKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggNDBjMTM3MjhlYWVmOWQ5ZDk2ZWQwZmUw
YmVjNmFiM2EwODA1ZTk3OS4uMDlhNmRlZDk2ZTA3N2UzNGM0NGQwN2FkOTNlZmExNmE3MGM4NjA5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0y
NjIsNyArMjYyLDcgQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnIKIHsKICAgICBBU1NFUlQoYnJl
YWtwb2ludC5yZXNvbHZlZCk7CiAKLSAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Y29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIAogICAgIFNvdXJj
ZUlEIHNvdXJjZUlEID0gc3RhdGljX2Nhc3Q8U291cmNlSUQ+KGV4ZWN1dGFibGUtPnNvdXJjZUlE
KCkpOwogICAgIGlmIChicmVha3BvaW50LnNvdXJjZUlEICE9IHNvdXJjZUlEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5k
ZXggYjMwYTg2MjVkMjNlZTA2OWM2NzQ3MDcyNTczYzcyN2Y1ZWIyZDIyYS4uZTlkZmJjMmMwODg3
MjVkMWQ3MDY1NDhhNGMxMWI1NzdmOGI0NWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0xMjksNyArMTI5LDcg
QEAgU291cmNlSUQgRGVidWdnZXJDYWxsRnJhbWU6OnNvdXJjZUlEKCkgY29uc3QKICAgICBpZiAo
IWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5vU291cmNlSUQ7CiAgICAgaWYgKGlzVGFpbERl
bGV0ZWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNvZGVCbG9jay0+
b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CisgICAgICAgIHJldHVybiBtX3No
YWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgp
OwogICAgIHJldHVybiBzb3VyY2VJREZvckNhbGxGcmFtZShtX3ZhbGlkTWFjaGluZUZyYW1lKTsK
IH0KIApAQCAtMzE2LDcgKzMxNiw3IEBAIFNvdXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3Vy
Y2VJREZvckNhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAg
ICAgICAgIHJldHVybiBub1NvdXJjZUlEOwotICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOworICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCBi
MWU3YWVjNTRkMmQwNzY0ZDE0Zjk2ZGYxMmYwNGM3OTYwYTVkZTM5Li4yZjM0NDExYjQ3YTE4N2Qy
MGVmMmM0ZjExZThhOWIzMmU3MGFmZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgRGVidWdnZXJM
b2NhdGlvbiBEZWJ1Z2dlclNjb3BlOjpsb2NhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFjb2RlQmxv
Y2spCiAgICAgICAgIHJldHVybiBEZWJ1Z2dlckxvY2F0aW9uKCk7CiAKLSAgICBTY3JpcHRFeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKTsK
KyAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKTsKICAgICByZXR1cm4gRGVidWdnZXJMb2NhdGlvbihleGVjdXRhYmxlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCBjMjM3ODU1NGExZmNhN2U5NTcyMTUwMmRjODEyNWFlMWJkNGZmM2ViLi5kNDY4MzRmYzBlN2Ix
ZDJhNzc2MThlMTliM2IyNTg3YWViMDZhZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgY2xhc3Mg
Qnl0ZUNvZGVQYXJzZXIgewogICAgICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBtX2lubGluZUNhbGxGcmFtZTsKICAgICAgICAgCi0gICAg
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUoKSB7IHJldHVybiBtX2NvZGVCbG9jay0+
b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7IH0KKyAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsgfQogICAg
ICAgICAKICAgICAgICAgUXVlcnlhYmxlRXhpdFByb2ZpbGUgbV9leGl0UHJvZmlsZTsKICAgICAg
ICAgCkBAIC0xNTA0LDcgKzE1MDQsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgIFZF
UkJPU0VfTE9HKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAiLCBtaWdodElubGluZUZ1bmN0
aW9uRm9yKGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kKSwgIlxuIik7CiAgICAgVkVSQk9T
RV9MT0coIiAgICBNaWdodCBjb21waWxlIGZ1bmN0aW9uOiAiLCBtaWdodENvbXBpbGVGdW5jdGlv
bkZvcihjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOwogICAgIFZFUkJPU0Vf
TE9HKCIgICAgSXMgc3VwcG9ydGVkIGZvciBpbmxpbmluZzogIiwgaXNTdXBwb3J0ZWRGb3JJbmxp
bmluZyhjb2RlQmxvY2spLCAiXG4iKTsKLSAgICBWRVJCT1NFX0xPRygiICAgIElzIGlubGluaW5n
IGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxp
bmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKKyAgICBWRVJCT1NFX0xPRygiICAgIElzIGlubGluaW5n
IGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0Nh
bmRpZGF0ZSgpLCAiXG4iKTsKICAgICBpZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7
CiAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBp
cyBub3QgaW5saW5lYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CkBAIC03MDk0
LDcgKzcwOTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAg
ICAgICAgICAgICAgIiAiLCBpbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAg
ICAgfQogICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0gIiwg
Y29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIp
OworICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0gIiwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2Vs
aW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNDA1MzM2Mzg0MjY2Y2Zj
NjZlZTQzN2VkM2M1MTgwYzk3ZGFhNWUwMC4uNzg1MjEwMzA3MGY5MDYzNjBhYmM0NDg0N2I4Yzg1
NzU2YjM0YjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtNDQsMzIgKzQ0LDMyIEBAIGJvb2wgaXNTdXBwb3J0ZWQoKQogCiBib29sIGlz
U3VwcG9ydGVkRm9ySW5saW5pbmcoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJu
IGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUo
KTsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0Nh
bmRpZGF0ZSgpOwogfQogCiBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkKCkKICAgICAgICAgJiYgY29kZUJsb2NrLT5p
bnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQoKQotICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhl
Y3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOworICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOwogfQogYm9vbCBtaWdodENvbXBpbGVQcm9n
cmFtKENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHJldHVybiBpc1N1cHBvcnRlZCgpCiAg
ICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGlt
dW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKLSAgICAgICAgJiYgY29k
ZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKKyAgICAg
ICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKIH0K
IGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQog
ewogICAgIHJldHVybiBpc1N1cHBvcnRlZCgpCiAgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50KCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFi
bGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKKyAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKIH0KIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25G
b3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgcmV0dXJuIGlzU3VwcG9y
dGVkKCkKICAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQotICAgICAg
ICAmJiBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgp
OworICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6
ZSgpOwogfQogCiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29k
ZUJsb2NrKQpAQCAtODksNyArODksNyBAQCBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25z
dHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB9CiBib29sIGNhblVzZU9TUkV4aXRGdXp6aW5n
KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5jYW5Vc2VPU1JFeGl0RnV6emluZygpOworICAgIHJldHVybiBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5jYW5Vc2VPU1JFeGl0RnV6emluZygpOwogfQogCiBz
dGF0aWMgYm9vbCB2ZXJib3NlQ2FwYWJpbGl0aWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAppbmRleCAxNTFmNTczNmM3YWM3MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViLi5i
MTRlOTExODc1YjUyNDkzZTY5NGEyNzAyOTE0NzAzOTM3YjE3YTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00MTcsOSArNDE3LDkgQEAgY2xhc3MgR3JhcGggOiBwdWJs
aWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVG
b3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCiAgICAgewogICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJT
Y3JpcHRFeGVjdXRhYmxlKCk7CisgICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpOworICAgICAgICByZXR1
cm4gaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7
CiAgICAgfQogICAgIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKaW5kZXggZmNiZDUzYjgyYjViYmM0MmI1OTFhZjcxZWJmZDk5ZTg1Zjg1
Mzc1Yi4uMjM0NDRmNDNjN2JkODc2YWMyNjk1NDUzYzIzZjI2NTViYjk0MmYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQ4NCw3ICs0ODQs
NyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgICAgICBlbWl0U3Rv
cmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwpCiAgICAgICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNf
Y2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8g
b3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3Rvcigp
ID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNr
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCkKICAgICAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIGJyYW5jaFRlc3Qz
MihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggMWZm
ZmI3MDE2MDRmNTFjMDkyZDkzNjc1MmY2NDI2YmVhNzE2NTk4OC4uZDFmNjlhYjRkZGJhMDZjMzkw
ZDBhYTU4NWRlN2M1YWVmYmE3OWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbgog
ICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAgCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXgp
Ci0gICAgICAgIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNldERpZFRyeVRv
RW50ZXJJbkxvb3AodHJ1ZSk7CisgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PnNldERpZFRyeVRvRW50ZXJJbkxvb3AodHJ1ZSk7CiAgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpGVExKSVQpOwpAQCAtMzEzLDcgKzMxMyw3
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29k
ZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluCiAKICAgICAvLyA2KSBDb3B5IG91ciBjYWxsZWUg
c2F2ZXMgdG8gYnVmZmVyLgogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4g
MAotICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiByZWdpc3RlclNhdmVMb2NhdGlvbnMgPSBjb2Rl
QmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0
TGlzdCogcmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0
ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwogICAgIFJlZ2lzdGVyU2V0IGRv
bnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcAppbmRleCAxYWVkZWY2ODcwNGIyMzI2ZTQ0YzFmZjBjZWQ2MmJkMDAyZTRj
MTU2Li4wZDZlNjkzMGFiMTMxN2Y1YmU2NTlkZDZiOWNhYjI4YWQxYjA5ZGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGlj
IHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayog
Y29kZUJsb2NrKQogewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogCi0gICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2Nr
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdp
c3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0
ZXJTZXQ6OmFsbEZQUnMoKSk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNh
dmVzLT5zaXplKCk7CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCBzYXZlQ2FsbGVl
U2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgYXV0
byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAg
ICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2
ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlclNldCBk
b250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50
ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lk
IHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVmlyCiAgICAgRnJhbWUgZnJhbWUoY29udGV4dC5mcCgpLCBjb250ZXh0LnN0YWNr
KCkpOwogICAgIEFTU0VSVChjb2RlQmxvY2spOwogCi0gICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgY29u
c3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQ
UnMoKSk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAppbmRleCBjMWFiODQ2OGE1MGNiYzUzMWUyYmY5M2JiNzRiMTE1NmRhMmU5
NDIyLi5mZDZmZGI1M2UzNmFjNTRjN2Q4NDJhNDFiNTRhNzgwYjkzNDkzYTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgICAgICBqaXQuYnJhbmNoVGVz
dDgoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpOb25aZXJvLAogICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKAotICAgICAgICAgICAgICAg
ICAgICBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+YWRkcmVzc09mRGlkVHJ5VG9FbnRlckluTG9vcCgpKSkpOworICAgICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+YWRkcmVzc09mRGlkVHJ5VG9FbnRlckluTG9vcCgpKSkpOwogICAgIH0KICAgICAKICAg
ICBqaXQubW92ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IDIyNzUwYjc5OTdhZjljOWE2YjBlZWEzYTVhY2ZjZWQxNDU4YzdmMmUuLjk4NGZjMGI5
NjFlNTAwOTU0ZDZkZjBjNGE5ZDNhNjc3NzQ5ZWFhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzAyMyw3ICszMDIzLDcgQEAgZXh0ZXJuICJD
IiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2QKICAgICAKICAgICBib29sIGRpZFRyeVRvRW50ZXJJbnRvSW5saW5lZExv
b3BzID0gZmFsc2U7CiAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9
IGV4aXQtPm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5s
aW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZy
YW1lKSB7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5v
d25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CiAgICAgICAgICAgICBkaWRUcnlUb0VudGVySW50
b0lubGluZWRMb29wcyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAppbmRleCAxM2I5NzM5MGRiYWNiMDAzYzI3ZDdl
NjU2MTAwMWZmNTZjNDNiNjdlLi5jNjdlN2EwMDA4YzdlMDM5NGM4YjhlN2U5MjliYzhiMjhkZmZi
YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENv
bXBsZXRlKAogICAgIH0KICAgICAKICAgICBpZiAocmVzdWx0ID09IENvbXBpbGF0aW9uU3VjY2Vz
c2Z1bCkKLSAgICAgICAgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aW5zdGFs
bENvZGUoY29kZUJsb2NrKTsKKyAgICAgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
aW5zdGFsbENvZGUoY29kZUJsb2NrKTsKICAgICAKICAgICBwcm9maWxlZERGR0NvZGVCbG9jay0+
aml0Q29kZSgpLT5kZmcoKS0+c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0
aW9uUmVzdWx0KAogICAgICAgICBwcm9maWxlZERGR0NvZGVCbG9jaywgcmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxZmYwYzMz
N2RhOGM5NWNlOTRjNTZmOGViZTNhOWI2YTRlNGRhYjE1Li41MzU3MjEyOTY5MjVhOTAwOTA0MmYx
MTEwNDhhOTk4NmY4YjdkMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9
CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKGdyYXBoLm1fY29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+bmV2ZXJGVExPcHRpbWl6ZSgpKSkgeworICAgIGlmIChVTkxJS0VMWShncmFw
aC5tX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5ldmVyRlRMT3B0aW1pemUoKSkpIHsK
ICAgICAgICAgaWYgKHZlcmJvc2VDYXBhYmlsaXRpZXMoKSkKICAgICAgICAgICAgIGRhdGFMb2co
IkZUTCByZWplY3RpbmcgIiwgKmdyYXBoLm1fY29kZUJsb2NrLCAiIGJlY2F1c2UgaXQgaXMgbWFy
a2VkIGFzIG5ldmVyIEZUTCBjb21waWxlLlxuIik7CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21w
aWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggM2ZjYTExZTIzOWY0
ZmNmZTI5YzI1ZTlmNGFmYTI5ZDAwNTA5ZjY1Yy4uMzYxYzZhZTk0ZmViNjEyM2E1YTZiMDliMjlh
NGRhYzQwODhkMzk5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0x
NzEsNyArMTcxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBz
dGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNr
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9y
ID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNr
KSk7CisgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KGNvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0
aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKSk7CiAgICAg
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNh
bGxlckZyYW1lLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJGcm9tQ2FsbGVyRnJhbWUpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2Fs
bEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFy
aXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGlu
ayhtYWluUGF0aEp1bXBzLCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggOGFkZmZhMGFm
Mzg2ZjlmNTZmODk3MGJhOTRhNGMzYmJkZjY2ZWI0MC4uMjE4ZWNjNzlmYTJkYjFkOTNjNTA5Y2Iy
NmFkOGM5MmFmYzNiZTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcApAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKAogICAgIGppdC5jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogCiAgICAgUmVn
aXN0ZXJTZXQgYWxsRlRMQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpOwotICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBiYXNlbGluZUNhbGxlZVNhdmVz
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZt
Q2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7
CiAgICAgUmVnaXN0ZXJTZXQgdm1DYWxsZWVTYXZlc1RvU2tpcCA9IFJlZ2lzdGVyU2V0OjpzdGFj
a1JlZ2lzdGVycygpOwogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CkBAIC00
MzQsNyArNDM0LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGNvZGVCbG9j
ay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRleE9mKHJlZyk7Ci0gICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0ZXJPZmZzZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5m
aW5kKHJlZyk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0
ZXJPZmZzZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5maW5kKHJlZyk7CiAgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZSA9IG51bGxwdHI7IAogICAgICAgICBpZiAoZXhpdC5p
c0V4Y2VwdGlvbkhhbmRsZXIoKSkKICAgICAgICAgICAgIHZtQ2FsbGVlU2F2ZSA9IHZtQ2FsbGVl
U2F2ZXMtPmZpbmQocmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5jcHAKaW5kZXggNDU0MjM5NjY4MDQ1Njk3NGM4MDVhMjI4Njg0NmM2M2Y5NDdh
ZTFmNS4uMjU2YTMzYjVkNjEzYmY0MmU4MmMzYjY5M2NjYzZhMzFlMTNjYjJiNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTI1Mywx
NCArMjUzLDE0IEBAIFNvdXJjZU9yaWdpbiBDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWdpbigp
CiAgICAgICAgICAgICAvLyBJbiB0aGUgYWJvdmUgY2FzZSwgdGhlIGV2YWwgZnVuY3Rpb24gd2ls
bCBiZSBpbnRlcnByZXRlZCBhcyB0aGUgaW5kaXJlY3QgY2FsbCB0byBldmFsIGluc2lkZSBmb3JF
YWNoIGZ1bmN0aW9uLgogICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGUgZ2VuZXJhdGVk
IGV2YWwgY29kZSBzaG91bGQgaGF2ZSB0aGUgc291cmNlIG9yaWdpbiB0byB0aGUgb3JpZ2luYWwg
Y2FsbGVyIG9mIHRoZSBmb3JFYWNoIGZ1bmN0aW9uCiAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9m
IHRoZSBzb3VyY2Ugb3JpZ2luIG9mIHRoZSBmb3JFYWNoIGZ1bmN0aW9uLgotICAgICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHZpc2l0b3ItPmNvZGVCbG9jaygp
LT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKSktPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odmlzaXRvci0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAKICAgICAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2Rl
VHlwZTo6RXZhbDoKICAgICAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6
TW9kdWxlOgogICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpHbG9i
YWw6Ci0gICAgICAgICAgICBzb3VyY2VPcmlnaW4gPSB2aXNpdG9yLT5jb2RlQmxvY2soKS0+b3du
ZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNvdXJjZU9yaWdpbigpOworICAgICAgICAgICAgc291cmNl
T3JpZ2luID0gdmlzaXRvci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VP
cmlnaW4oKTsKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsK
IAogICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApp
bmRleCAwNjIyMWZkNjlkYmQ2YjYwZDQzYjliODBjMTQyNmU3Njk0ZDczYzRkLi4xYTY2MmVhZWY2
NjUyM2RhODhlNDhlM2FjODdiMjdiYjRkNzI3ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBK
U1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIAogICAgICAgICBWYXJp
YWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpjb2xs
ZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2Fs
bEZyYW1lLCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNl
KCktPnNvdXJjZU9yaWdpbigpKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUs
ICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2Rl
QmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwgY2FsbGVyQ29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlm
ICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTY0LDcgKzU2
NCw3IEBAIGNsYXNzIFVud2luZEZ1bmN0b3IgewogICAgIHZvaWQgY29weUNhbGxlZVNhdmVzVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAog
ICAgIHsKICNpZiAhRU5BQkxFKENfTE9PUCkgJiYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgPiAwCi0gICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2
ZXMgPSB2aXNpdG9yLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSB2aXNpdG9yLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CiAKICAgICAgICAgaWYgKCFjdXJyZW50Q2FsbGVlU2F2ZXMpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCmluZGV4IDJhYTNmMzAwMGFlYWQ4MzBjMjIwMmUzODBmMzg3ODVjZGQ4
NTI5MTEuLjRkMWM3OTI4YmY0MmZjZmY5MzhhZmRlMjJlYTY0ZTU0ZmJjYjlhMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBA
IC0yNTIsNyArMjUyLDcgQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNp
dG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBDb2RlVHlwZTo6R2xvYmFs
OwogfQogCi1SZWdpc3RlckF0T2Zmc2V0TGlzdCogU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpCitjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogU3RhY2tWaXNpdG9y
OjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7CiAgICAgaWYgKGlzSW5saW5lZEZyYW1l
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzE3LDcgKzMxNyw3IEBAIFN0cmluZyBT
dGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdAogICAgIGNhc2UgQ29kZVR5cGU6
Ok1vZHVsZToKICAgICBjYXNlIENvZGVUeXBlOjpGdW5jdGlvbjoKICAgICBjYXNlIENvZGVUeXBl
OjpHbG9iYWw6IHsKLSAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGNvZGVCbG9jaygpLT5vd25l
clNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CisgICAgICAgIFN0cmluZyBzb3VyY2VV
UkwgPSBjb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwogICAgICAg
ICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0cmFjZUxpbmUgPSBzb3Vy
Y2VVUkwuaW1wbCgpOwogICAgICAgICBicmVhazsKQEAgLTM1OCw3ICszNTgsNyBAQCBTdHJpbmcg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9TdHJpbmcoKSBjb25zdAogaW50cHRyX3QgU3RhY2tWaXNp
dG9yOjpGcmFtZTo6c291cmNlSUQoKQogewogICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHRoaXMtPmNvZGVCbG9jaygpKQotICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CiAgICAgcmV0dXJuIG5vU291cmNlSUQ7CiB9CiAK
QEAgLTQwMywxMCArNDAzLDEwIEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29tcHV0ZUxp
bmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pCiAgICAgdW5zaWdu
ZWQgZGl2b3RDb2x1bW4gPSAwOwogICAgIHJldHJpZXZlRXhwcmVzc2lvbkluZm8oZGl2b3QsIHVu
dXNlZFN0YXJ0T2Zmc2V0LCB1bnVzZWRFbmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RDb2x1bW4p
OwogCi0gICAgbGluZSA9IGRpdm90TGluZSArIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRh
YmxlKCktPmZpcnN0TGluZSgpOworICAgIGxpbmUgPSBkaXZvdExpbmUgKyBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKTsKICAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiAr
IChkaXZvdExpbmUgPyAxIDogY29kZUJsb2NrLT5maXJzdExpbmVDb2x1bW5PZmZzZXQoKSk7CiAK
LSAgICBpZiAoT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBjb2RlQmxvY2stPm93
bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5vdmVycmlkZUxpbmVOdW1iZXIoKmNvZGVCbG9jay0+dm0o
KSkpCisgICAgaWYgKE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+b3ZlcnJpZGVMaW5lTnVtYmVyKCpjb2RlQmxvY2stPnZtKCkp
KQogICAgICAgICBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVyLnZhbHVlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCBm
YTQ1YTM5MzkyNzBhNDU5NmM2YWRkZjNiOWI3ZDkzNTI3ZDM4NmM4Li43YjAwMzE0MTAyMzdlYzkw
ZWM5MmRkZmQ4NjNhYWY1ODgyNzgwNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFN0YWNr
VmlzaXRvciB7CiAgICAgICAgIGJvb2wgaGFzTGluZUFuZENvbHVtbkluZm8oKSBjb25zdDsKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRlTGluZUFuZENvbHVtbih1bnNpZ25l
ZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikgY29uc3Q7CiAKLSAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKIAogICAgICAgICBDbG9uZWRBcmd1
bWVudHMqIGNyZWF0ZUFyZ3VtZW50cygpOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA0YjkwZjNhYWNiZDIyMTk4Y2YzM2JkNjRkN2U4YWM4
MjMyMmU1NDIzLi4xNmUzNjIwNGI5Y2UyMjc4MDc4MGQ4NTliODBkZGU1NWEyM2Y1YmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTI2MSw3ICsy
NjEsNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVC
bG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogICAgICAgICBSZWdpc3RlclNldCBkb250U2F2
ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBS
ZWdpc3RlclNldDo6YWxsRlBScygpKTsKICAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9
IGNhbGxlZVNhdmVzLT5zaXplKCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCBjbGFzcyBBc3NlbWJs
eUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvZGVCbG9jayk7CiAgICAgICAgIAotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2Fs
bGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgY29u
c3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0Ojph
bGxGUFJzKCkpOwogICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMt
PnNpemUoKTsKIApAQCAtMzEzLDcgKzMxMyw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsK
IAotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2st
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwogICAgICAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKICAgICAgICAg
CkBAIC00MDksNyArNDA5LDcgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihFbnRyeUZyYW1lOjpjYWxs
ZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zmc2V0KCkpLCB0ZW1wMSk7CiAKICAgICAgICAgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2
ZVJlZ2lzdGVyT2Zmc2V0cygpOwotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVu
dENhbGxlZVNhdmVzID0gY29kZUJsb2NrKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAg
ICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVC
bG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRD
b3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CiAgICAgICAgIHVu
c2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCmluZGV4
IDU2NzIwMmMxNTM2OWQ4MjAyNGI3MTAxY2FiYjBlY2JhMDI1NDdhM2EuLjY4ZTljOWM5YjU5MGJk
ZTJmNmQ1OWEyM2IzMjg5OWJjNWEyYWZhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBKU0Mgewogdm9pZCBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6c2V0dXBDYWxsZWVTYXZlUmVn
aXN0ZXJzKENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNh
dmVSZWdpc3RlcnMgeyBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkgfTsKLSAg
ICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2Nr
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RlclNhdmVMb2NhdGlvbnMtPnNp
emUoKTsgKytpKSB7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgeyByZWdpc3RlclNh
dmVMb2NhdGlvbnMtPmF0KGkpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNWQ2
ZTA3NzczZGNiZWY1MjcyZDU3MTUxMTE1YTNkNGRjZmQxNjhhMi4uZGEyYzJiMTUyYTc1YWYzODEw
MzZjNmFkNzE4N2Q3NDUwZDM0NWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
Njg3LDcgKzY4Nyw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGls
YXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBh
cmd1bWVudCA8IG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29uc3RydWN0b3IsIHRoZW4gd2Ugd2FudCB0
byBwdXQgaW4gYSBkdW1teSBwcm9maWxpbmcgc2l0ZSAodG8KICAgICAgICAgICAgICAgICAvLyBr
ZWVwIHRoaW5ncyBjb25zaXN0ZW50KSBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byByZWNv
cmQgdGhlIGR1bW15IHZhbHVlLgotICAgICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bV9p
c0NvbnN0cnVjdG9yICYmICFhcmd1bWVudCkKKyAgICAgICAgICAgICAgICBpZiAobV9jb2RlQmxv
Y2stPmlzQ29uc3RydWN0b3IoKSAmJiAhYXJndW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBDYWxsRnJhbWU6OmFyZ3VtZW50
T2Zmc2V0SW5jbHVkaW5nVGhpcyhhcmd1bWVudCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC03NDgsNyArNzQ4LDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAK
ICAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAg
YWRkUHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXND
b25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayk7CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tP
bkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3Ry
dWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAgaWYgKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKICAgICAgICAgYnJhbmNoVGVzdDMyKFplcm8sIHJldHVyblZhbHVlR1BSKS5saW5rVG8oYmVn
aW5MYWJlbCwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDQ3
MWFmOWIyODdlMzcwNTQzODIzYzlhMDlkM2U1NmNlZGY0ZWUxYjUuLmQ5ZmI3NmFmMTlkNTAxNTQ3
MjIxZDkyN2ViZjMyYmVhYThhZGM5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUoCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXpp
bmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiByZXN1bHQ6ICIsIHJlc3VsdCwgIlxu
Iik7CiAgICAgCiAgICAgaWYgKHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCi0gICAg
ICAgIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNvZGVC
bG9jayk7CisgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxDb2Rl
KGNvZGVCbG9jayk7CiAgICAgCiAgICAgY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLT5zZXRPcHRp
bWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQocmVzdWx0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcAppbmRleCBiYjIxMTRjOGUwMzg5
NGMwN2Y1OWEwNzEyNGZkNWZmOGVkN2I2OTlmLi40YzZlZjRmYjU3ODBhNWEwNzM4YTE4MjA4ODM5
YTVjYmEwOTEzNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdv
cmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNw
cApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBKSVRXb3JrbGlzdDo6UGxhbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxKSVRXb3JrbGlzdDo6UGxhbj4gewogICAgICAgICBjYXNlIENvbXBp
bGF0aW9uU3VjY2Vzc2Z1bDoKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBKSVQgY29tcGlsYXRpb24gc3VjY2Vzc2Z1
bC5cbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgp
LT5pbnN0YWxsQ29kZShtX2NvZGVCbG9jayk7CisgICAgICAgICAgICBtX2NvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKG1fY29kZUJsb2NrKTsKICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLT5qaXRTb29uKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1
bHQ6CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZU5vdyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgbG9vcE9TUkVudHJ5Qnl0ZWNvZGUKICAgICAKICAg
ICAvLyBPSywganVzdCBjb21waWxlIGl0LgogICAgIEpJVDo6Y29tcGlsZSh2bSwgY29kZUJsb2Nr
LCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCk7
Ci0gICAgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29k
ZUJsb2NrKTsKKyAgICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShj
b2RlQmxvY2spOwogfQogCiB2b2lkIEpJVFdvcmtsaXN0OjpmaW5hbGl6ZVBsYW5zKFBsYW5zJiBt
eVBsYW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0TGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmNwcAppbmRleCA0OTI1MmZjMjMwMGI3ZjJiM2Q4NmY1M2I4ZWU4YzQ3ZWE3MDc1MjM4
Li5lYjFmMjgzNzhjM2NlNTQzNmM1Yzk3ZWQ4ZGEyNGMwNjZhNTc1NmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcApAQCAtNjYs
NiArNjYsMTYgQEAgdW5zaWduZWQgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmluZGV4T2YoUmVnIHJl
ZykgY29uc3QKICAgICByZXR1cm4gVUlOVF9NQVg7CiB9CiAKK2NvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0JiBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdp
c3RlcnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlc3VsdDsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7CisgICAgICAgIHJlc3VsdC5jb25zdHJ1Y3QoUmVn
aXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIH0pOwor
ICAgIHJldHVybiByZXN1bHQuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJBdE9mZnNldExpc3QuaAppbmRleCA1ZTNhM2NiMmNlMDI5MzQxMTk1N2Y2ODk5MzM5
ZDY3N2Y0YTlmNDU1Li4xNzNjZjk0OTg2NmNjMDk2MWM0MDU3NGYyYzJmOTk5ZDRlNGRkNjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5o
CkBAIC01Miw2ICs1MiwxMSBAQCBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CiAgICAgICAg
IHJldHVybiBtX3JlZ2lzdGVycy5zaXplKCk7CiAgICAgfQogCisgICAgY29uc3QgUmVnaXN0ZXJB
dE9mZnNldCYgYXQoc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
cmVnaXN0ZXJzLmF0KGluZGV4KTsKKyAgICB9CisKICAgICBSZWdpc3RlckF0T2Zmc2V0JiBhdChz
aXplX3QgaW5kZXgpCiAgICAgewogICAgICAgICByZXR1cm4gbV9yZWdpc3RlcnMuYXQoaW5kZXgp
OwpAQCAtNjMsNiArNjgsOCBAQCBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CiAgICAgVmVj
dG9yPFJlZ2lzdGVyQXRPZmZzZXQ+Ojpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnaXN0ZXJzLmJlZ2luKCk7IH0KICAgICBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNldD46
OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzLmVuZCgpOyB9
CiAKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxsaW50QmFzZWxpbmVD
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBhbmQgT2Zmc2V0cyBzYXZlZCBhbmQg
dXNlZCBieSB0aGUgTExJbnQuCisKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZz
ZXQ+IG1fcmVnaXN0ZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNzZmYWFlOGEzZDAwYzRhNDQ3NGE3MjRiZTFlN2Y4Mzdm
MmNjNTIxMC4uNTBjYTk5N2IyMzIyM2VlNDYxOTU4YjlkZDg2ODIwYmI1YWI5NDZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTc2
LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgIGludCBleHByZXNzaW9uU3Rh
cnQgPSBkaXZvdFBvaW50IC0gc3RhcnRPZmZzZXQ7CiAgICAgaW50IGV4cHJlc3Npb25TdG9wID0g
ZGl2b3RQb2ludCArIGVuZE9mZnNldDsKIAotICAgIFN0cmluZ1ZpZXcgc291cmNlU3RyaW5nID0g
Y29kZUJsb2NrLT5zb3VyY2UoKS0+c291cmNlKCk7CisgICAgU3RyaW5nVmlldyBzb3VyY2VTdHJp
bmcgPSBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZSgpOwogICAgIGlmICgh
ZXhwcmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gc3RhdGljX2Nhc3Q8aW50Pihzb3Vy
Y2VTdHJpbmcubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC04Nyw3ICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAKICAgICBTdHJpbmcgbWVzc2FnZSA9IGFz
U3RyaW5nKGpzTWVzc2FnZSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgaWYgKGV4cHJlc3Npb25T
dGFydCA8IGV4cHJlc3Npb25TdG9wKQotICAgICAgICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2Fn
ZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNz
aW9uU3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJj
ZSk7CisgICAgICAgIG1lc3NhZ2UgPSBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJj
ZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvblN0b3Ap
LnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBObyByYW5nZSBpbmZvcm1hdGlvbiwgc28gZ2l2ZSBhIGZldyBj
aGFyYWN0ZXJzIG9mIGNvbnRleHQuCiAgICAgICAgIGludCBkYXRhTGVuZ3RoID0gc291cmNlU3Ry
aW5nLmxlbmd0aCgpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJj
ZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwK
ICAgICAgICAgICAgIHN0b3ArKzsKICAgICAgICAgd2hpbGUgKHN0b3AgPiBleHByZXNzaW9uU3Rh
cnQgJiYgaXNTdHJXaGl0ZVNwYWNlKHNvdXJjZVN0cmluZ1tzdG9wIC0gMV0pKQogICAgICAgICAg
ICAgc3RvcC0tOwotICAgICAgICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2Nr
LT5zb3VyY2UoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9y
SW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpOworICAgICAgICBtZXNzYWdlID0gYXBw
ZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZShz
dGFydCwgc3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hp
bWF0ZVNvdXJjZSk7CiAgICAgfQogICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp2bSwgdm0tPnBy
b3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKHZtLCBtZXNzYWdlKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXgg
Yjg4MmI5OGFmYjA1NDhkN2JjMjllNGJlYjU5NjRmYTAxYTgwODRlYS4uMTE1YjE3OGNlMmJjZjNm
ZjU5MzgyMDdhMGZhZjNjNTdkNTE3YjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKQEAgLTI2OSw4ICsyNjksNyBAQCBDb2Rl
QmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fZXZhbENvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFmdW5jdGlvbik7CiAgICAgICAgIGF1dG8gY29kZUJsb2NrID0gRXZhbENvZGVCbG9j
azo6Y3JlYXRlKHZtLAotICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV2YWxDb2RlQmxvY2suZ2V0KCksIHNjb3BlLAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+
c291cmNlKCkucHJvdmlkZXIoKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxl
LT5tX3VubGlua2VkRXZhbENvZGVCbG9jay5nZXQoKSwgc2NvcGUpOwogICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgfHwgY29kZUJsb2NrKTsKICAgICAgICAg
aWYgKCFjb2RlQmxvY2spIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHRocm93RXhjZXB0aW9u
KApAQCAtMjg3LDggKzI4Niw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29k
ZUJsb2NrRm9yKAogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9wcm9ncmFt
Q29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKICAgICAgICAg
YXV0byBjb2RlQmxvY2sgPSBQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sCi0gICAgICAgICAg
ICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQo
KSwgc2NvcGUsCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBz
dGFydENvbHVtbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSk7CiAgICAgICAgIEVYQ0VQVElPTl9B
U1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSB8fCBjb2RlQmxvY2spOwogICAgICAgICBpZiAo
IWNvZGVCbG9jaykgewogICAgICAgICAgICAgZXhjZXB0aW9uID0gdGhyb3dFeGNlcHRpb24oCkBA
IC0zMDUsOCArMzAzLDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxv
Y2tGb3IoCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dy
YW1Db2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwogICAgICAg
ICBhdXRvIGNvZGVCbG9jayA9IE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwKLSAg
ICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmdldCgpLCBzY29wZSwKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LnByb3ZpZGVyKCksIHN0YXJ0Q29sdW1uKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKTsK
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IGNvZGVC
bG9jayk7CiAgICAgICAgIGlmICghY29kZUJsb2NrKSB7CiAgICAgICAgICAgICBleGNlcHRpb24g
PSB0aHJvd0V4Y2VwdGlvbigKQEAgLTMzOCw4ICszMzUsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4
ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgCi0gICAg
ICAgIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCksIHN0YXJ0Q29s
dW1uKCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgRnVuY3Rpb25Db2Rl
QmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSk7
CiB9CiAKIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxv
Y2tGb3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0Zy
YW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmlu
ZGV4IGRkMjlmMmE5OGY2MTMzOTYyZGExZTZlMDZkNDlmMTgyMmZkY2VkNWQuLjk0YjdkYzQ4Zjg5
NTU3ZTU0N2I3ZTE0NDU2ZGE3ZmI2MmNjZjRmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGludHB0cl90IFN0YWNr
RnJhbWU6OnNvdXJjZUlEKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrKQogICAgICAg
ICByZXR1cm4gbm9Tb3VyY2VJRDsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyU2NyaXB0
RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOworICAgIHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CiB9CiAKIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VV
UkwoKSBjb25zdApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6c291cmNlVVJM
KCkgY29uc3QKICAgICAgICAgcmV0dXJuICJbbmF0aXZlIGNvZGVdIl9zOwogICAgIH0KIAotICAg
IFN0cmluZyBzb3VyY2VVUkwgPSBtX2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCkt
PnNvdXJjZVVSTCgpOworICAgIFN0cmluZyBzb3VyY2VVUkwgPSBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gc291cmNlVVJMOwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgU3RhY2tGcmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1bW4odW5z
aWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0CiAgICAgaW50IHVudXNlZEVuZE9m
ZnNldCA9IDA7CiAgICAgbV9jb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zm
c2V0KG1fYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCB1bnVzZWRTdGFydE9mZnNldCwgdW51c2VkRW5k
T2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogCi0gICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IG1fY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogICAg
IGlmIChPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IGV4ZWN1dGFibGUtPm92ZXJy
aWRlTGluZU51bWJlcigqbV9jb2RlQmxvY2stPnZtKCkpKQogICAgICAgICBsaW5lID0gb3ZlcnJp
ZGVMaW5lTnVtYmVyLnZhbHVlKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361477</attachid>
            <date>2019-02-07 17:47:40 -0800</date>
            <delta_ts>2019-02-07 18:08:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194419-20190207174739.patch</filename>
            <type>text/plain</type>
            <size>86885</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTA4ZmVhN2M1NzhhODIyYTdlODE5NGEyYjYyMjA1NTU1NDhhODM2Li4yMjI2YmExOTQ3MTRhYzNk
ZWRiMmNiNzJmMGRjMDY4MGFjOTg4OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTktMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc2l6ZW9mKENvZGVCbG9jaykgbW9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmdXJ0
aGVyIHNocmlua3MgdGhlIHNpemUgb2YgQ29kZUJsb2NrLCBmcm9tIDM1MiB0byAyOTYgKDMwNCku
CisKKyAgICAgICAgMS4gQ29kZUJsb2NrIGNvcGllcyBzbyBtYW55IGRhdGEgZnJvbSBTY3JpcHRF
eGVjdXRhYmxlIGV2ZW4gaWYgU2NyaXB0RXhlY3V0YWJsZQorICAgICAgICBoYXMgdGhlIHNhbWUg
aW5mb3JtYXRpb24uIFRoZXNlIGRhdGEgaXMgbm90IHRvdWNoZWQgaW4gQ29kZUJsb2NrOjp+Q29k
ZUJsb2NrLAorICAgICAgICBzbyB3ZSBjYW4ganVzdCB1c2UgdGhlIGRhdGEgaW4gU2NyaXB0RXhl
Y3V0YWJsZSBpbnN0ZWFkIG9mIGhvbGRpbmcgaXQgaW4gQ29kZUJsb2NrLgorCisgICAgICAgIDIu
IFdlIHJlbW92ZSBtX2luc3RydWN0aW9ucyBwb2ludGVyIHNpbmNlIHRoZSBvd25lcnNoaXAgaXMg
bWFuYWdlZCBieSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICAgICAgQW5kIHdlIGRvIG5vdCB0b3Vj
aCBpdCBpbiBDb2RlQmxvY2s6On5Db2RlQmxvY2suCisKKyAgICAgICAgMy4gV2UgbW92ZSBtX2Nh
bGxlZVNhdmVSZWdpc3RlcnMgZnJvbSBDb2RlQmxvY2sgdG8gQ29kZUJsb2NrOjpKSVREYXRhLiBG
b3IgYmFzZWxpbmUgYW5kIExMSW50CisgICAgICAgIGNhc2VzLCB0aGlzIHBhdGNoIG9mZmVycyBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB3
aGljaCByZXR1cm5zCisgICAgICAgIHNpbmdsZXRvbiB0byBgY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqYCB1c2FibGUgZm9yIExMSW50IGFuZCBCYXNlbGluZSBKSVQgQ29kZUJsb2Nrcy4KKwor
ICAgICAgICA0LiBNb3ZlIG1fY2F0Y2hQcm9maWxlcyB0byBSYXJlRGF0YSBhbmQgbWF0ZXJpYWxp
emUgb25seSB3aGVuIG9wX2NhdGNoJ3Mgc2xvdyBwYXRoIGlzIGNhbGxlZC4KKworICAgICAgICA1
LiBEcm9wIG93bmVyU2NyaXB0RXhlY3V0YWJsZS4gb3duZXJFeGVjdXRhYmxlKCkgcmV0dXJucyBT
Y3JpcHRFeGVjdXRhYmxlKi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c291cmNlQ29kZUZvclRvb2xzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQXNzdW1pbmdKSVRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpk
dW1wU291cmNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0Q2Fs
bGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlQ2F0Y2hM
aXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3cp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5k
Q29sdW1uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuZXdSZXBsYWNlbWVudCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmNvbXB1dGVDYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Ompl
dHRpc29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVy
QW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omdl
dEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGlj
dGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlM
ZXhpY2FsQmluZGluZ1VwZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bGlkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzcGVjaWFsaXphdGlvbktpbmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Y29kZVR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25Ob3RJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc3RydWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3duZXJFeGVjdXRhYmxlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjp0aGlzUmVnaXN0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c291cmNlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaXJzdExpbmVDb2x1bW5PZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om93bmVyU2NyaXB0RXhlY3V0YWJsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0VGhpc1JlZ2lzdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29k
ZS9HbG9iYWxDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6R2xvYmFsQ29kZUJsb2NrOjpHbG9i
YWxDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtw
b2ludCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSUQgY29uc3QpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSURGb3JDYWxsRnJhbWUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjps
b2NhdGlvbiBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjppc1N1
cHBvcnRlZEZvcklubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVFdmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAgKEpT
Qzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpj
YW5Vc2VPU1JFeGl0RnV6emluZyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OmV4ZWN1dGFibGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6
OnNhdmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6c2F2ZU9yQ29weUNhbGxl
ZVNhdmVzRm9yKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVT
dHViKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWdpbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6VW53
aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAg
ICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VJRCk6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uIGNvbnN0KToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zv
cik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlDYWxsZWVT
YXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVy
cyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdp
dGhvdXRMaW5raW5nKToKKyAgICAgICAgKiBqaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogaml0L0pJVFdvcmts
aXN0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVOb3cpOgorICAgICAgICAqIGppdC9SZWdp
c3RlckF0T2Zmc2V0TGlzdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1JlZ2lz
dGVyQXRPZmZzZXRMaXN0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojph
dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6YXBwZW5kU291cmNlVG9FcnJvcik6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2Nr
Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja0ZyYW1lOjpzb3VyY2VJRCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OnNv
dXJjZVVSTCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5k
Q29sdW1uIGNvbnN0KToKKwogMjAxOS0wMi0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IG1vcmUgZG9lc0dDKCkgZm9yIENoZWNrVHJhcHMsIEdldE1hcEJ1
Y2tldCwgYW5kIFN3aXRjaCBub2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYjRmMjI4Y2NhOGNjNTlmMTc5OGQxMTU2NjE2OWYwNzk4MWU4
NWQ5Yi4uNTQ1ZTkyYjA2NDRmMGM5MTI3YzY2MjI0NTE2YzZhOGNiNWZjYjI0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBDb2RlQmxvY2tIYXNoIENvZGVCbG9jazo6aGFzaCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2hhc2gpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNTYWZlVG9Db21wdXRlSGFzaCgpKTsK
LSAgICAgICAgbV9oYXNoID0gQ29kZUJsb2NrSGFzaChvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+
c291cmNlKCksIHNwZWNpYWxpemF0aW9uS2luZCgpKTsKKyAgICAgICAgbV9oYXNoID0gQ29kZUJs
b2NrSGFzaChvd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCksIHNwZWNpYWxpemF0aW9uS2luZCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIG1faGFzaDsKIH0KQEAgLTE1NSw5ICsxNTUsOSBAQCBDb2Rl
QmxvY2tIYXNoIENvZGVCbG9jazo6aGFzaCgpIGNvbnN0CiBDU3RyaW5nIENvZGVCbG9jazo6c291
cmNlQ29kZUZvclRvb2xzKCkgY29uc3QKIHsKICAgICBpZiAoY29kZVR5cGUoKSAhPSBGdW5jdGlv
bkNvZGUpCi0gICAgICAgIHJldHVybiBvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlKCku
dG9VVEY4KCk7CisgICAgICAgIHJldHVybiBvd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCkudG9V
VEY4KCk7CiAgICAgCi0gICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gc291cmNlKCk7Cisg
ICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gc291cmNlKCkucHJvdmlkZXIoKTsKICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1
bmxpbmtlZCA9IGV4ZWN1dGFibGUtPnVubGlua2VkRXhlY3V0YWJsZSgpOwogICAgIHVuc2lnbmVk
IHVubGlua2VkU3RhcnRPZmZzZXQgPSB1bmxpbmtlZC0+c3RhcnRPZmZzZXQoKTsKQEAgLTE5NSwx
NSArMTk1LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3Ry
ZWFtJiBvdXQsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKICAgICBvdXQucHJpbnQoIiwgIiwg
aW5zdHJ1Y3Rpb25Db3VudCgpKTsKICAgICBpZiAodGhpcy0+aml0VHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUICYmIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKQogICAgICAgICBvdXQucHJp
bnQoIiAoU2hvdWxkQWx3YXlzQmVJbmxpbmVkKSIpOwotICAgIGlmIChvd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+bmV2ZXJJbmxpbmUoKSkKKyAgICBpZiAob3duZXJFeGVjdXRhYmxlKCktPm5ldmVy
SW5saW5lKCkpCiAgICAgICAgIG91dC5wcmludCgiIChOZXZlcklubGluZSkiKTsKLSAgICBpZiAo
b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPm5ldmVyT3B0aW1pemUoKSkKKyAgICBpZiAob3duZXJF
eGVjdXRhYmxlKCktPm5ldmVyT3B0aW1pemUoKSkKICAgICAgICAgb3V0LnByaW50KCIgKE5ldmVy
T3B0aW1pemUpIik7Ci0gICAgZWxzZSBpZiAob3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPm5ldmVy
RlRMT3B0aW1pemUoKSkKKyAgICBlbHNlIGlmIChvd25lckV4ZWN1dGFibGUoKS0+bmV2ZXJGVExP
cHRpbWl6ZSgpKQogICAgICAgICBvdXQucHJpbnQoIiAoTmV2ZXJGVExPcHRpbWl6ZSkiKTsKLSAg
ICBpZiAob3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkKKyAg
ICBpZiAob3duZXJFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkKICAgICAgICAg
b3V0LnByaW50KCIgKERpZFRyeVRvRW50ZXJJbkxvb3ApIik7Ci0gICAgaWYgKG93bmVyU2NyaXB0
RXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAob3duZXJFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBvdXQucHJpbnQoIiAoU3RyaWN0TW9kZSkiKTsKICAg
ICBpZiAobV9kaWRGYWlsSklUQ29tcGlsYXRpb24pCiAgICAgICAgIG91dC5wcmludCgiIChKSVRG
YWlsKSIpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU291cmNlKCkK
IAogdm9pZCBDb2RlQmxvY2s6OmR1bXBTb3VyY2UoUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBT
Y3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7Cisg
ICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG93bmVyRXhlY3V0YWJsZSgpOwogICAg
IGlmIChleGVjdXRhYmxlLT5pc0Z1bmN0aW9uRXhlY3V0YWJsZSgpKSB7CiAgICAgICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgU3RyaW5nVmlldyBzb3VyY2Ug
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKApAQCAt
Mjk0LDI3ICsyOTQsMTkgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sKICAgICAsIG1fZGlkRmFp
bEpJVENvbXBpbGF0aW9uKGZhbHNlKQogICAgICwgbV9kaWRGYWlsRlRMQ29tcGlsYXRpb24oZmFs
c2UpCiAgICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCi0gICAgLCBtX2lzQ29u
c3RydWN0b3Iob3RoZXIubV9pc0NvbnN0cnVjdG9yKQotICAgICwgbV9pc1N0cmljdE1vZGUob3Ro
ZXIubV9pc1N0cmljdE1vZGUpCi0gICAgLCBtX2NvZGVUeXBlKG90aGVyLm1fY29kZVR5cGUpCiAg
ICAgLCBtX251bUNhbGxlZUxvY2FscyhvdGhlci5tX251bUNhbGxlZUxvY2FscykKICAgICAsIG1f
bnVtVmFycyhvdGhlci5tX251bVZhcnMpCiAgICAgLCBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lw
KG90aGVyLm1fbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApCiAgICAgLCBtX2hhc0RlYnVnZ2VyU3Rh
dGVtZW50KGZhbHNlKQogICAgICwgbV9zdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRGlzYWJsZWQp
CiAgICAgLCBtX251bUJyZWFrcG9pbnRzKDApCisgICAgLCBtX2luc3RydWN0aW9uQ291bnQob3Ro
ZXIubV9pbnN0cnVjdGlvbkNvdW50KQorICAgICwgbV9zY29wZVJlZ2lzdGVyKG90aGVyLm1fc2Nv
cGVSZWdpc3RlcikKKyAgICAsIG1faGFzaChvdGhlci5tX2hhc2gpCiAgICAgLCBtX3VubGlua2Vk
Q29kZSgqb3RoZXIudm0oKSwgdGhpcywgb3RoZXIubV91bmxpbmtlZENvZGUuZ2V0KCkpCiAgICAg
LCBtX293bmVyRXhlY3V0YWJsZSgqb3RoZXIudm0oKSwgdGhpcywgb3RoZXIubV9vd25lckV4ZWN1
dGFibGUuZ2V0KCkpCiAgICAgLCBtX3ZtKG90aGVyLm1fdm0pCi0gICAgLCBtX2luc3RydWN0aW9u
cyhvdGhlci5tX2luc3RydWN0aW9ucykKICAgICAsIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcihv
dGhlci5tX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIpCi0gICAgLCBtX2luc3RydWN0aW9uQ291bnQo
b3RoZXIubV9pbnN0cnVjdGlvbkNvdW50KQotICAgICwgbV90aGlzUmVnaXN0ZXIob3RoZXIubV90
aGlzUmVnaXN0ZXIpCi0gICAgLCBtX3Njb3BlUmVnaXN0ZXIob3RoZXIubV9zY29wZVJlZ2lzdGVy
KQotICAgICwgbV9oYXNoKG90aGVyLm1faGFzaCkKLSAgICAsIG1fc291cmNlKG90aGVyLm1fc291
cmNlKQotICAgICwgbV9zb3VyY2VPZmZzZXQob3RoZXIubV9zb3VyY2VPZmZzZXQpCi0gICAgLCBt
X2ZpcnN0TGluZUNvbHVtbk9mZnNldChvdGhlci5tX2ZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAg
ICAsIG1fY29uc3RhbnRSZWdpc3RlcnMob3RoZXIubV9jb25zdGFudFJlZ2lzdGVycykKICAgICAs
IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKG90aGVyLm1fY29uc3RhbnRzU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uKQogICAgICwgbV9mdW5jdGlvbkRlY2xzKG90aGVyLm1fZnVu
Y3Rpb25EZWNscykKQEAgLTMyOCw2ICszMjAsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawog
ICAgIEFTU0VSVChoZWFwKCktPmlzRGVmZXJyZWQoKSk7CiAgICAgQVNTRVJUKG1fc2NvcGVSZWdp
c3Rlci5pc0xvY2FsKCkpOwogCisgICAgQVNTRVJUKHNvdXJjZSgpLnByb3ZpZGVyKCkpOwogICAg
IHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICAKICAgICB2bS0+
aGVhcC5jb2RlQmxvY2tTZXQoKS5hZGQodGhpcyk7CkBAIC0zNTAsOCArMzQzLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2Rl
QmxvY2smIG90aGVyKQogICAgIH0KIH0KIAotQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgSlNTY29wZSogc2NvcGUs
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNl
T2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCitDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29w
ZSogc2NvcGUpCiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9i
amVjdCgqdm0sIHRoaXMsIHNjb3BlLT5nbG9iYWxPYmplY3QoKnZtKSkKICAgICAsIG1fc2hvdWxk
QWx3YXlzQmVJbmxpbmVkKHRydWUpCkBAIC0zNjEsMjQgKzM1MywxNiBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dAogICAgICwgbV9kaWRGYWlsSklUQ29tcGlsYXRpb24oZmFsc2UpCiAgICAgLCBt
X2RpZEZhaWxGVExDb21waWxhdGlvbihmYWxzZSkKICAgICAsIG1faGFzQmVlbkNvbXBpbGVkV2l0
aEZUTChmYWxzZSkKLSAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpKQotICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpKQotICAgICwgbV9jb2RlVHlwZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5
cGUoKSkKICAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKHVubGlua2VkQ29kZUJsb2NrLT5udW1DYWxs
ZWVMb2NhbHMoKSkKICAgICAsIG1fbnVtVmFycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygp
KQogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fc3RlcHBpbmdN
b2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKQogICAgICwgbV9udW1CcmVha3BvaW50cygwKQorICAg
ICwgbV9zY29wZVJlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpCiAg
ICAgLCBtX3VubGlua2VkQ29kZSgqdm0sIHRoaXMsIHVubGlua2VkQ29kZUJsb2NrKQogICAgICwg
bV9vd25lckV4ZWN1dGFibGUoKnZtLCB0aGlzLCBvd25lckV4ZWN1dGFibGUpCiAgICAgLCBtX3Zt
KHZtKQotICAgICwgbV9pbnN0cnVjdGlvbnMoJnVubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKSkKLSAgICAsIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcihtX2luc3RydWN0aW9ucy0+cmF3
UG9pbnRlcigpKQotICAgICwgbV90aGlzUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnRoaXNS
ZWdpc3RlcigpKQotICAgICwgbV9zY29wZVJlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5zY29w
ZVJlZ2lzdGVyKCkpCi0gICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSkKLSAg
ICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKLSAgICAsIG1fZmlyc3RMaW5lQ29sdW1u
T2Zmc2V0KGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAsIG1faW5zdHJ1Y3Rpb25zUmF3UG9p
bnRlcih1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkucmF3UG9pbnRlcigpKQogICAg
ICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
MCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKQEAgLTM4OCw3ICszNzIs
NyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dAogICAgIEFTU0VSVChoZWFwKCktPmlzRGVmZXJy
ZWQoKSk7CiAgICAgQVNTRVJUKG1fc2NvcGVSZWdpc3Rlci5pc0xvY2FsKCkpOwogCi0gICAgQVNT
RVJUKG1fc291cmNlKTsKKyAgICBBU1NFUlQoc291cmNlKCkucHJvdmlkZXIoKSk7CiAgICAgc2V0
TnVtUGFyYW1ldGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKICAgICAK
ICAgICB2bS0+aGVhcC5jb2RlQmxvY2tTZXQoKS5hZGQodGhpcyk7CkBAIC00NjIsNyArNDQ2LDcg
QEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtl
ZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEhhbmRsZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+ZXhjZXB0
aW9uSGFuZGxlcihpKTsKICAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IG1f
cmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNbaV07CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+IGNvZGVQdHIg
PSBtX2luc3RydWN0aW9ucy0+YXQodW5saW5rZWRIYW5kbGVyLnRhcmdldCktPmlzV2lkZSgpCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPiBjb2Rl
UHRyID0gaW5zdHJ1Y3Rpb25zKCkuYXQodW5saW5rZWRIYW5kbGVyLnRhcmdldCktPmlzV2lkZSgp
CiAgICAgICAgICAgICAgICAgICAgID8gTExJbnQ6OmdldFdpZGVDb2RlUHRyPEJ5dGVjb2RlUHRy
VGFnPihvcF9jYXRjaCkKICAgICAgICAgICAgICAgICAgICAgOiBMTEludDo6Z2V0Q29kZVB0cjxC
eXRlY29kZVB0clRhZz4ob3BfY2F0Y2gpOwogICAgICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlh
bGl6ZSh1bmxpbmtlZEhhbmRsZXIsIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+KGNvZGVQdHIucmV0YWdnZWQ8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oKSkpOwpAQCAt
NDk2LDEwICs0ODAsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAg
fQogCi0jaWYgIUVOQUJMRShDX0xPT1ApCi0gICAgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdp
c3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0jZW5kaWYKLQog
ICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVu
dHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2Vk
TW9kdWxlRW52aXJvbm1lbnRzOwogCkBAIC01NDMsNyArNTIzLDcgQEAgYm9vbCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgYnJlYWs7IFwKICAgICB9CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IGluc3RydWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25zKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBp
bnN0cnVjdGlvbiA6IGluc3RydWN0aW9ucygpKSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1faW5zdHJ1Y3Rpb25Db3VudCAr
PSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewpA
QCAtODA1LDcgKzc4NSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgaWYgKHZtLmNv
bnRyb2xGbG93UHJvZmlsZXIoKSkKICAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNG
b3JDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAKLSAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVz
aG9sZHMgb25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhl
c2UKKyAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25seSBhZnRlciBpbnN0cnVj
dGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5z
dHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3Bl
Y3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNz
IHRoZSBjb3N0IG9mIHRpZXItdXApLgogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKQEAgLTEw
OTEsNyArMTA3MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzCiAgICAgaWYgKGppdFR5cGUo
KSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxJ
bnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBt
X3VubGlua2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisgICAgICAgICAgICBhdXRvIGluc3RydWN0
aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOwog
ICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uLT5pczxPcFB1dEJ5SWQ+KCkpIHsKICAgICAgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCkubWV0
YWRhdGEodGhpcyk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOwpAQCAtMTIyMSw3ICsxMjAxLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgIH07CiAKICAgICBmb3Ig
KHNpemVfdCBzaXplID0gcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBhdXRvIGN1ckluc3RydWN0aW9uID0gbV9p
bnN0cnVjdGlvbnMtPmF0KHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKyAgICAgICAg
Y29uc3QgYXV0byBjdXJJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KHByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKICAgICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bj
b2RlSUQoKSkgewogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRo
aXMpOwpAQCAtMTUyOCw2ICsxNTA4LDE4IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQ
cm9maWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiAgICAg
cmV0dXJuIDA7CiB9CiAKK3ZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJl
Z2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2NhbGxlZVNhdmVS
ZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVT
YXZlUmVnaXN0ZXJzKTsKK30KKwordm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3Rl
cnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0
TGlzdCkKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IFdURk1vdmUocmVnaXN0
ZXJBdE9mZnNldExpc3QpOworfQorCiB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CkBAIC0xNzE2
LDE0ICsxNzA4LDE2IEBAIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5k
bGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hCiAKIHZvaWQgQ29kZUJsb2Nr
OjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgYXV0byBpbnN0cnVjdGlv
biA9IG1faW5zdHJ1Y3Rpb25zLT5hdChieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBpbnN0cnVj
dGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBPcENhdGNoIG9w
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBvcC5t
ZXRhZGF0YSh0aGlzKTsKICAgICBpZiAoISFtZXRhZGF0YS5tX2J1ZmZlcikgewogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvZmlsZSA6
IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEu
Z2V0KCk7CisgICAgICAgIEFTU0VSVChyYXJlRGF0YSk7CisgICAgICAgIGZvciAoYXV0byYgcHJv
ZmlsZSA6IHJhcmVEYXRhLT5tX2NhdGNoUHJvZmlsZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9m
aWxlLmdldCgpID09IG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgZm91bmQg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc0Niw3ICsxNzQwLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZz
ZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICAvLyB3ZSBjYW4gYXZvaWQgcHJvZmlsaW5nIHRoZW0g
YW5kIGV4dHJhY3RpbmcgdGhlbSB3aGVuIGRvaW5nIE9TUiBlbnRyeQogICAgIC8vIGludG8gdGhl
IERGRy4KIAotICAgIGF1dG8gbmV4dE9mZnNldCA9IG1faW5zdHJ1Y3Rpb25zLT5hdChieXRlY29k
ZU9mZnNldCkubmV4dCgpLm9mZnNldCgpOworICAgIGF1dG8gbmV4dE9mZnNldCA9IGluc3RydWN0
aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5uZXh0KCkub2Zmc2V0KCk7CiAgICAgRmFzdEJpdFZl
Y3RvciBsaXZlTG9jYWxzID0gYnl0ZWNvZGVMaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KHRoaXMsIG5leHRPZmZzZXQpOwogICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+
IGxpdmVPcGVyYW5kczsKICAgICBsaXZlT3BlcmFuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
aXZlTG9jYWxzLmJpdENvdW50KCkpOwpAQCAtMTc2MiwxNiArMTc1NiwxNyBAQCB2b2lkIENvZGVC
bG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3co
Y29uc3QgT3BDYXRjaAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9z
aXplOyArK2kpCiAgICAgICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQg
PSBsaXZlT3BlcmFuZHNbaV0ub2Zmc2V0KCk7CiAKKyAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNz
YXJ5KCk7CisKICAgICAvLyBUaGUgY29tcGlsZXIgdGhyZWFkIHdpbGwgcmVhZCB0aGlzIHBvaW50
ZXIgdmFsdWUgYW5kIHRoZW4gcHJvY2VlZCB0byBkZXJlZmVyZW5jZSBpdAogICAgIC8vIGlmIGl0
IGlzIG5vdCBudWxsLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgYWJvdmUgc3RvcmVzIGhhcHBl
biBiZWZvcmUgdGhpcyBzdG9yZSBzbwogICAgIC8vIHRoZSBjb21waWxlciB0aHJlYWQgcmVhZHMg
ZnVsbHkgaW5pdGlhbGl6ZWQgZGF0YS4KICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyAKIAog
ICAgIG9wLm1ldGFkYXRhKHRoaXMpLm1fYnVmZmVyID0gcHJvZmlsZXMuZ2V0KCk7Ci0KICAgICB7
CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgbV9j
YXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIG1fcmFyZURh
dGEtPm1fY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92ZShwcm9maWxlcykpOwogICAgIH0KIH0K
IApAQCAtMTc5NCw3ICsxNzg5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlbW92ZUV4Y2VwdGlvbkhh
bmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpCiB1bnNpZ25lZCBD
b2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9u
cygpLnNpemUoKSk7Ci0gICAgcmV0dXJuIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5maXJzdExp
bmUoKSArIG1fdW5saW5rZWRDb2RlLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOworICAgIHJldHVybiBvd25lckV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5lKCkgKyBt
X3VubGlua2VkQ29kZS0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KTsKIH0KIAogdW5zaWduZWQgQ29kZUJsb2NrOjpjb2x1bW5OdW1iZXJGb3JCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTE4MTEsMTQgKzE4MDYsMTQgQEAgdW5zaWdu
ZWQgQ29kZUJsb2NrOjpjb2x1bW5OdW1iZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCkKIHZvaWQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50JiBkaXZvdCwgaW50JiBzdGFydE9mZnNl
dCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25z
dAogewogICAgIG1fdW5saW5rZWRDb2RlLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNv
bHVtbik7Ci0gICAgZGl2b3QgKz0gbV9zb3VyY2VPZmZzZXQ7CisgICAgZGl2b3QgKz0gc291cmNl
T2Zmc2V0KCk7CiAgICAgY29sdW1uICs9IGxpbmUgPyAxIDogZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KCk7Ci0gICAgbGluZSArPSBvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5lKCk7Cisg
ICAgbGluZSArPSBvd25lckV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5lKCk7CiB9CiAKIGJvb2wgQ29k
ZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFuZENvbHVtbih1bnNpZ25lZCBsaW5lLCB1bnNpZ25l
ZCBjb2x1bW4pCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6ICptX2luc3RydWN0aW9ucykg
eworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBpbnN0cnVjdGlvbnMoKSkgewogICAgICAgICBp
ZiAoaXQtPmlzPE9wRGVidWc+KCkpIHsKICAgICAgICAgICAgIGludCB1bnVzZWQ7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBvcERlYnVnTGluZTsKQEAgLTE4OTYsNyArMTg5MSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsIExMSW50Q2Fs
bExpbmtJbmZvKiBpbmNvCiAKIENvZGVCbG9jayogQ29kZUJsb2NrOjpuZXdSZXBsYWNlbWVudCgp
CiB7Ci0gICAgcmV0dXJuIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5uZXdSZXBsYWNlbWVudENv
ZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7CisgICAgcmV0dXJuIG93bmVyRXhlY3V0
YWJsZSgpLT5uZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7
CiB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTkwNSw3ICsxOTAwLDcgQEAgQ29kZUJsb2NrKiBD
b2RlQmxvY2s6OnJlcGxhY2VtZW50KCkKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9
IHRoaXMtPmNsYXNzSW5mbygqdm0oKSk7CiAKICAgICBpZiAoY2xhc3NJbmZvID09IEZ1bmN0aW9u
Q29kZUJsb2NrOjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxvY2tGb3IobV9pc0NvbnN0cnVjdG9yID8g
Q29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9ja0Zvcihpc0Nv
bnN0cnVjdG9yKCkgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogCiAgICAgaWYg
KGNsYXNzSW5mbyA9PSBFdmFsQ29kZUJsb2NrOjppbmZvKCkpCiAgICAgICAgIHJldHVybiBqc0Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygpOwpAQCAt
MTkyNSw3ICsxOTIwLDcgQEAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgQ29kZUJsb2NrOjpjb21wdXRl
Q2FwYWJpbGl0eUxldmVsKCkKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IHRoaXMt
PmNsYXNzSW5mbygqdm0oKSk7CiAKICAgICBpZiAoY2xhc3NJbmZvID09IEZ1bmN0aW9uQ29kZUJs
b2NrOjppbmZvKCkpIHsKLSAgICAgICAgaWYgKG1faXNDb25zdHJ1Y3RvcikKKyAgICAgICAgaWYg
KGlzQ29uc3RydWN0b3IoKSkKICAgICAgICAgICAgIHJldHVybiBERkc6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0Q2FwYWJpbGl0eUxldmVsKHRoaXMpOwogICAgICAgICByZXR1cm4gREZHOjpmdW5jdGlv
bkZvckNhbGxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiAgICAgfQpAQCAtMjAwNiw3ICsyMDAxLDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiByZWFz
b24sIFJlb3B0aW1pemF0aW9uTW9kZSBtb2QKICAgICAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMg
KDEpLCBhbmQgZG9lcyBpdHMgb3duIGJvb2sta2VlcGluZyBhYm91dCB3aGV0aGVyIGl0IGhhcyBh
bHJlYWR5IGhhcHBlbmVkLgogICAgICAgICBpZiAoIWppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlu
dmFsaWRhdGUoKSkgewogICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBiZWVuIGludmFsaWRh
dGVkLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhpcyAhPSByZXBsYWNlbWVudCgpIHx8
ICh2bS5oZWFwLmlzQ3VycmVudFRocmVhZEJ1c3koKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJT
Y3JpcHRFeGVjdXRhYmxlKCkpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9
IHJlcGxhY2VtZW50KCkgfHwgKHZtLmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFw
Ojppc01hcmtlZChvd25lckV4ZWN1dGFibGUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIwMzgsMTEgKzIwMzMsMTEgQEAgdm9pZCBDb2RlQmxvY2s6Ompl
dHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiByZWFzb24sIFJlb3B0aW1pemF0aW9uTW9k
ZSBtb2QKIAogICAgIC8vIEpldHRpc29uIGNhbiBoYXBwZW4gZHVyaW5nIEdDLiBXZSBkb24ndCB3
YW50IHRvIGluc3RhbGwgY29kZSB0byBhIGRlYWQgZXhlY3V0YWJsZQogICAgIC8vIGJlY2F1c2Ug
dGhhdCB3b3VsZCBhZGQgYSBkZWFkIG9iamVjdCB0byB0aGUgcmVtZW1iZXJlZCBzZXQuCi0gICAg
aWYgKHZtLmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtlZChvd25l
clNjcmlwdEV4ZWN1dGFibGUoKSkpCisgICAgaWYgKHZtLmhlYXAuaXNDdXJyZW50VGhyZWFkQnVz
eSgpICYmICFIZWFwOjppc01hcmtlZChvd25lckV4ZWN1dGFibGUoKSkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgyKS4KLSAgICBvd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+aW5zdGFsbENvZGUodm0sIGFsdGVybmF0aXZlKCksIGNvZGVUeXBlKCksIHNwZWNp
YWxpemF0aW9uS2luZCgpKTsKKyAgICBvd25lckV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUodm0s
IGFsdGVybmF0aXZlKCksIGNvZGVUeXBlKCksIHNwZWNpYWxpemF0aW9uS2luZCgpKTsKIAogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIGlmIChERkc6OnNob3VsZER1bXBEaXNhc3NlbWJseSgpKQpA
QCAtMjE5NiwxNSArMjE5MSwxNyBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKCkgY29uc3QKIH0KIAogI2lmICFFTkFCTEUoQ19MT09QKQotdm9pZCBDb2Rl
QmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lz
dGVycykKK2NvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBDb2RlQmxvY2s6OmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSBjb25zdAogewotICAgIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworI2lm
IEVOQUJMRShKSVQpCisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsK
KyAgICAgICAgaWYgKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiByZWdpc3RlcnMgPSBqaXRE
YXRhLT5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gcmVn
aXN0ZXJzOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAmUmVnaXN0ZXJBdE9mZnNldExpc3Q6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiB9CiAKLXZvaWQgQ29kZUJsb2Nr
OjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0
TGlzdD4gcmVnaXN0ZXJBdE9mZnNldExpc3QpCi17Ci0gICAgbV9jYWxsZWVTYXZlUmVnaXN0ZXJz
ID0gV1RGTW92ZShyZWdpc3RlckF0T2Zmc2V0TGlzdCk7Ci19CiAgICAgCiBzdGF0aWMgc2l6ZV90
IHJvdW5kQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKHNpemVfdCBjYWxsZWVTYXZl
UmVnaXN0ZXJzKQogewpAQCAtMjIyMCw3ICsyMjE3LDcgQEAgc2l6ZV90IENvZGVCbG9jazo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpCiAKIHNpemVfdCBD
b2RlQmxvY2s6OmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpCiB7Ci0gICAgcmV0
dXJuIHJvdW5kQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKG1fY2FsbGVlU2F2ZVJl
Z2lzdGVycy0+c2l6ZSgpKTsKKyAgICByZXR1cm4gcm91bmRDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5zaXplKCkpOwogfQogI2VuZGlmCiAK
QEAgLTIzOTgsNyArMjM5NSw3IEBAIGF1dG8gQ29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRl
ckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdFN0YXRlCiAKICAgICBib29s
IGRpZFRyeVRvRW50ZXJJbkxvb3AgPSBmYWxzZTsKICAgICBmb3IgKElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxp
bmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2Fs
bGVyLmlubGluZUNhbGxGcmFtZSkgewotICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5iYXNl
bGluZUNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxv
b3AoKSkgeworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkgewogICAgICAgICAgICAg
ZGlkVHJ5VG9FbnRlckluTG9vcCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMjU1NSw3ICsyNTUyLDcgQEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVG
cm9tTG9vcE5vdygpCiAKIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0g
ICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChieXRlY29kZU9mZnNldCk7
CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0
KTsKICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAjZGVmaW5lIENBU0Uo
T3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXApAQCAtMjYyOSwxMCArMjYyNiwxMiBAQCB2
b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2ln
bmVkJiBudW1iZXJPZkxpdmVOb25BcgogICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0
IDogbV9jYXRjaFByb2ZpbGVzKSB7Ci0gICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Ci0gICAgICAgICAgICBwcm9maWxl
Lm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKLSAgICAgICAgfSk7
CisgICAgaWYgKGF1dG8qIHJhcmVEYXRhID0gbV9yYXJlRGF0YS5nZXQoKSkgeworICAgICAgICBm
b3IgKGF1dG8mIHByb2ZpbGVCdWNrZXQgOiByYXJlRGF0YS0+bV9jYXRjaFByb2ZpbGVzKSB7Cisg
ICAgICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yNzUzLDcgKzI3NTIsNyBAQCB2
b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKQogICAgICAgICByZXR1
cm4gc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKTsKICAgICB9OwogCi0gICAgZm9y
IChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6ICptX2luc3RydWN0aW9ucykgeworICAgIGZvciAo
Y29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiBpbnN0cnVjdGlvbnMoKSkgewogICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogewpAQCAtMjg4OCw3
ICsyODg3LDcgQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRW
YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAg
YXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChieXRlY29kZU9mZnNldCk7Cisg
ICAgYXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsK
ICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAKICNkZWZpbmUgQ0FTRShP
cCkgXApAQCAtMjk0Miw3ICsyOTQxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAg
ICAgICAgfQogICAgIH0KICAgICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6
ICptX2luc3RydWN0aW9ucykgeworICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiBp
bnN0cnVjdGlvbnMoKSkgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+
b3Bjb2RlSUQoKTsKICAgICAgICAgaWYgKCEhYmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYW5kbGVy
Rm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICBp
ZiAob3Bjb2RlID09IG9wX2NhdGNoIHx8IG9wY29kZSA9PSBvcF9lbnRlcikgewpAQCAtMjk5OSwx
MiArMjk5OCwxMiBAQCBjb25zdCBJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1w
VGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKIHsKICAgICBpbnQgb2Zmc2V0ID0gYnl0ZWNv
ZGVPZmZzZXQocGMpOwogICAgIGludCB0YXJnZXQgPSBtX3VubGlua2VkQ29kZS0+b3V0T2ZMaW5l
SnVtcE9mZnNldChvZmZzZXQpOwotICAgIHJldHVybiBtX2luc3RydWN0aW9ucy0+YXQob2Zmc2V0
ICsgdGFyZ2V0KS5wdHIoKTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0ICsg
dGFyZ2V0KS5wdHIoKTsKIH0KIAogQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZz
ZXQpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKG1faW5zdHJ1Y3Rpb25zLT5hdChi
eXRlY29kZU9mZnNldCkucHRyKCkpOworICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0
cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCkucHRyKCkpOwogfQogCiBBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQpAQCAt
MzA1NSw3ICszMDU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tCb3VuZGFy
aWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiAgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmls
ZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2lj
IGJsb2NrLCBmaW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xf
ZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2su
CiAgICAgICAgIHNpemVfdCBzdGFydElkeCA9IGJ5dGVjb2RlT2Zmc2V0c1tpXTsKLSAgICAgICAg
YXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChzdGFydElkeCk7CisgICAgICAg
IGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGFydElkeCk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3Byb2ZpbGVfY29u
dHJvbF9mbG93KTsKICAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFBy
b2ZpbGVDb250cm9sRmxvdz4oKTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YSh0aGlzKTsKQEAgLTMwNjMsMTEgKzMwNjIsMTEgQEAgdm9pZCBDb2RlQmxvY2s6Omlu
c2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpCiAgICAgICAg
IGludCBiYXNpY0Jsb2NrRW5kT2Zmc2V0OwogICAgICAgICBpZiAoaSArIDEgPCBvZmZzZXRzTGVu
Z3RoKSB7CiAgICAgICAgICAgICBzaXplX3QgZW5kSWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2kgKyAx
XTsKLSAgICAgICAgICAgIGF1dG8gZW5kSW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy0+YXQo
ZW5kSWR4KTsKKyAgICAgICAgICAgIGF1dG8gZW5kSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMo
KS5hdChlbmRJZHgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5kSW5zdHJ1Y3Rpb24t
Pm9wY29kZUlEKCkgPT0gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpOwogICAgICAgICAgICAgYmFz
aWNCbG9ja0VuZE9mZnNldCA9IGVuZEluc3RydWN0aW9uLT5hczxPcFByb2ZpbGVDb250cm9sRmxv
dz4oKS5tX3RleHRPZmZzZXQgLSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYmFz
aWNCbG9ja0VuZE9mZnNldCA9IG1fc291cmNlT2Zmc2V0ICsgb3duZXJTY3JpcHRFeGVjdXRhYmxl
KCktPnNvdXJjZSgpLmxlbmd0aCgpIC0gMTsgLy8gT2Zmc2V0IGJlZm9yZSB0aGUgY2xvc2luZyBi
cmFjZS4KKyAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBzb3VyY2VPZmZzZXQoKSAr
IG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDE7IC8vIE9mZnNldCBiZWZv
cmUgdGhlIGNsb3NpbmcgYnJhY2UuCiAgICAgICAgICAgICBiYXNpY0Jsb2NrU3RhcnRPZmZzZXQg
PSBzdGQ6Om1pbihiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2ljQmxvY2tFbmRPZmZzZXQpOyAv
LyBTb21lIHN0YXJ0IG9mZnNldHMgbWF5IGJlIGF0IHRoZSBjbG9zaW5nIGJyYWNlLCBlbnN1cmUg
aXQgaXMgdGhlIG9mZnNldCBiZWZvcmUuCiAgICAgICAgIH0KIApAQCAtMzA5NSw3ICszMDk0LDcg
QEAgdm9pZCBDb2RlQmxvY2s6Omluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZs
b3dQcm9maWxlcigpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAg
IEJhc2ljQmxvY2tMb2NhdGlvbiogYmFzaWNCbG9ja0xvY2F0aW9uID0gdm0oKS0+Y29udHJvbEZs
b3dQcm9maWxlcigpLT5nZXRCYXNpY0Jsb2NrTG9jYXRpb24ob3duZXJTY3JpcHRFeGVjdXRhYmxl
KCktPnNvdXJjZUlEKCksIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNl
dCk7CisgICAgICAgIEJhc2ljQmxvY2tMb2NhdGlvbiogYmFzaWNCbG9ja0xvY2F0aW9uID0gdm0o
KS0+Y29udHJvbEZsb3dQcm9maWxlcigpLT5nZXRCYXNpY0Jsb2NrTG9jYXRpb24ob3duZXJFeGVj
dXRhYmxlKCktPnNvdXJjZUlEKCksIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0Vu
ZE9mZnNldCk7CiAKICAgICAgICAgLy8gRmluZCBhbGwgZnVuY3Rpb25zIHRoYXQgYXJlIGVuY2xv
c2VkIHdpdGhpbiB0aGUgcmFuZ2U6IFtiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2ljQmxvY2tF
bmRPZmZzZXRdCiAgICAgICAgIC8vIGFuZCBpbnNlcnQgdGhlc2UgZnVuY3Rpb25zJyBzdGFydC9l
bmQgb2Zmc2V0cyBhcyBnYXBzIGluIHRoZSBjdXJyZW50IEJhc2ljQmxvY2tMb2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCAyYjM4MGRiMmJh
YmJmNWI5ODQ4ZjNkMzE1N2U0NTg0N2ZjOGRiYjA4Li5kYjJjZDkyY2Y1NWZmN2JjYjQzY2YyZGM1
NjZlMzQ1OTRhODg4MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCkBAIC0xMjEsNyArMTIxLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAKIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBDb3B5UGFy
c2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpOwotICAgIENvZGVCbG9jayhWTSosIFN0cnVj
dHVyZSosIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqLCBKU1Njb3BlKiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmLCB1bnNpZ25lZCBzb3VyY2VP
ZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CisgICAgQ29kZUJsb2NrKFZN
KiwgU3RydWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayosIEpTU2NvcGUqKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpOwogICAgIGJvb2wgZmluaXNoQ3Jl
YXRpb24oVk0mLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29k
ZUJsb2NrKiwgSlNTY29wZSopOwpAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lh
bGl6YXRpb25LaW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlv
bkZyb21Jc0NvbnN0cnVjdChtX2lzQ29uc3RydWN0b3IpOworICAgICAgICByZXR1cm4gc3BlY2lh
bGl6YXRpb25Gcm9tSXNDb25zdHJ1Y3QoaXNDb25zdHJ1Y3RvcigpKTsKICAgICB9CiAKICAgICBD
b2RlQmxvY2sqIGFsdGVybmF0aXZlRm9ySmV0dGlzb24oKTsgICAgCkBAIC0yMTEsOCArMjExLDEw
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgdm9pZCBkdW1wTWF0
aElDU3RhdHMoKTsKIAotICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0cmljdE1vZGU7IH0KKyAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRDb2RlLT5pc1N0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5pc0NvbnN0cnVjdG9yKCk7IH0KICAgICBF
Q01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0
TW9kZSA6IE5vdFN0cmljdE1vZGU7IH0KKyAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRDb2RlLT5jb2RlVHlwZSgpOyB9CiAKICAgICBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5zY3JpcHRN
b2RlKCk7IH0KIApAQCAtMjIxLDcgKzIyMyw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogCiAgICAgaW5saW5lIGJvb2wgaXNLbm93bk5vdEltbWVkaWF0ZShpbnQgaW5kZXgp
CiAgICAgewotICAgICAgICBpZiAoaW5kZXggPT0gbV90aGlzUmVnaXN0ZXIub2Zmc2V0KCkgJiYg
IW1faXNTdHJpY3RNb2RlKQorICAgICAgICBpZiAoaW5kZXggPT0gdGhpc1JlZ2lzdGVyKCkub2Zm
c2V0KCkgJiYgIWlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgaWYgKGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGluZGV4KSkKQEAgLTI2Myw2ICsyNjUs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgU2VudGluZWxM
aW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIEJhc2ljUmF3U2VudGluZWxOb2RlPFBvbHlt
b3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5nUG9seW1vcnBoaWNDYWxsczsKICAgICAgICAgU2Vn
bWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5N
YXA7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxs
ZWVTYXZlUmVnaXN0ZXJzOwogICAgICAgICBKSVRDb2RlTWFwIG1faml0Q29kZU1hcDsKICAgICB9
OwogCkBAIC0zMjAsNiArMzIzLDkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgdm9pZCBzZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVP
cmlnaW5NYXA+JiYpOwogICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lkKiBwYyk7
CiAKKyAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQpOworICAgIHZv
aWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNl
dExpc3Q+KTsKKwogICAgIFJhcmVDYXNlUHJvZmlsZSogYWRkUmFyZUNhc2VQcm9maWxlKGludCBi
eXRlY29kZU9mZnNldCk7CiAgICAgUmFyZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBpbnQgYnl0ZWNvZGVPZmZz
ZXQpOwogICAgIHVuc2lnbmVkIHJhcmVDYXNlUHJvZmlsZUNvdW50Rm9yQnl0ZWNvZGVPZmZzZXQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgaW50IGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTM3NCw3
ICszODAsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0
dXJuIHJldHVybkFkZHJlc3MgLSBpbnN0cnVjdGlvbnNCZWdpbjsKICAgICB9CiAKLSAgICBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gKm1faW5z
dHJ1Y3Rpb25zOyB9CisgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5pbnN0cnVjdGlvbnMoKTsgfQogCiAgICAg
c2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogCkBAIC00MjAsMTUgKzQyNiwxMyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgamV0dGlzb24o
UHJvZmlsZXI6OkpldHRpc29uUmVhc29uLCBSZW9wdGltaXphdGlvbk1vZGUgPSBEb250Q291bnRS
ZW9wdGltaXphdGlvbiwgY29uc3QgRmlyZURldGFpbCogPSBudWxscHRyKTsKICAgICAKLSAgICBF
eGVjdXRhYmxlQmFzZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4
ZWN1dGFibGUuZ2V0KCk7IH0KLSAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lclNjcmlwdEV4ZWN1
dGFibGUoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8U2NyaXB0RXhlY3V0YWJsZSo+KG1fb3duZXJF
eGVjdXRhYmxlLmdldCgpKTsgfQorICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLmdldCgpOyB9CiAgICAgCiAgICAg
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSogb3duZXJFZGdlKCkgY29uc3QgeyByZXR1cm4gbV9v
d25lckVkZ2UuZ2V0KCk7IH0KIAogICAgIFZNKiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0K
IAotICAgIHZvaWQgc2V0VGhpc1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIp
IHsgbV90aGlzUmVnaXN0ZXIgPSB0aGlzUmVnaXN0ZXI7IH0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIg
dGhpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90aGlzUmVnaXN0ZXI7IH0KKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
PnRoaXNSZWdpc3RlcigpOyB9CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZENvZGUtPnVzZXNFdmFsKCk7IH0KIApAQCAtNDQzLDExICs0NDcsNiBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZWdp
c3RlcjsKICAgICB9CiAgICAgCi0gICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvZGVUeXBlPihtX2NvZGVUeXBlKTsKLSAgICB9
Ci0KICAgICBQdXRQcm9wZXJ0eVNsb3Q6OkNvbnRleHQgcHV0QnlJZENvbnRleHQoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKGNvZGVUeXBlKCkgPT0gRXZhbENvZGUpCkBAIC00NTUsOSArNDU0
LDkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQ7CiAgICAgfQogCi0gICAgU291cmNlUHJvdmlkZXIqIHNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9Ci0gICAgdW5zaWduZWQgc291
cmNlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VPZmZzZXQ7IH0KLSAgICB1bnNpZ25l
ZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZUNvbHVt
bk9mZnNldDsgfQorICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKTsgfQorICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNl
dCgpOyB9CisgICAgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vd25lckV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCk7IH0KIAogICAgIHNpemVfdCBudW1i
ZXJPZkp1bXBUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9m
SnVtcFRhcmdldHMoKTsgfQogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+anVtcFRhcmdldChpbmRleCk7IH0KQEAgLTY2Miwx
MCArNjYxLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBj
b3VudFJlb3B0aW1pemF0aW9uKCk7CiAKICNpZiAhRU5BQkxFKENfTE9PUCkKLSAgICB2b2lkIHNl
dENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQpOwotICAgIHZvaWQgc2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KTsKLQotICAg
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldCgpOyB9CisgICAgY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdDsKIAogICAgIHN0YXRpYyB1bnNp
Z25lZCBudW1iZXJPZkxMSW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4g
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkubnVtYmVyT2ZT
ZXRSZWdpc3RlcnMoKTsgfQogICAgIHN0YXRpYyBzaXplX3QgbGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwpAQCAtODM0LDkgKzgzMCw2IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgbV9kaWRGYWlsSklUQ29tcGlsYXRp
b24gOiAxOwogICAgIGJvb2wgbV9kaWRGYWlsRlRMQ29tcGlsYXRpb24gOiAxOwogICAgIGJvb2wg
bV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMIDogMTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6
IDE7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jb2RlVHlw
ZSA6IDI7IC8vIENvZGVUeXBlCiAKICAgICAvLyBJbnRlcm5hbCBtZXRob2RzIGZvciB1c2UgYnkg
dmFsaWRhdGlvbiBjb2RlLiBJdCB3b3VsZCBiZSBwcml2YXRlIGlmIGl0IHdhc24ndAogICAgIC8v
IGZvciB0aGUgZmFjdCB0aGF0IHdlIHVzZSBpdCBmcm9tIGFub255bW91cyBuYW1lc3BhY2VzLgpA
QCAtODUyLDYgKzg0NSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAorICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+
PiBtX2NhdGNoUHJvZmlsZXM7CisKICAgICAgICAgRGlyZWN0RXZhbENvZGVDYWNoZSBtX2RpcmVj
dEV2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTQyLDggKzkzNywxMSBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpCiAgICAgewotICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICBtX3Jh
cmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhKSB7CisgICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxS
YXJlRGF0YT4oKTsKKyAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0
Y2hQcm9maWxlcyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCisgICAgICAg
ICAgICBtX3JhcmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICB2b2lkIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxl
cigpOwpAQCAtOTYyLDI4ICs5NjAsMTkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgICAgICB1bnNpZ25lZCBtX251bUJyZWFrcG9pbnRzIDogMzA7CiAgICAgICAg
IH07CiAgICAgfTsKLSAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxvY2s+IG1fdW5saW5r
ZWRDb2RlOwotICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9vd25lckV4ZWN1dGFi
bGU7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fb3duZXJF
ZGdlOwotICAgIFZNKiBtX3ZtOwotCi0gICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0qIG1faW5z
dHJ1Y3Rpb25zOwotICAgIGNvbnN0IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51
bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2luc3RydWN0aW9uQ291bnQgeyAwIH07Ci0gICAgVmly
dHVhbFJlZ2lzdGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3Bl
UmVnaXN0ZXI7CiAgICAgbXV0YWJsZSBDb2RlQmxvY2tIYXNoIG1faGFzaDsKIAotICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7Ci0gICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7
Ci0gICAgdW5zaWduZWQgbV9maXJzdExpbmVDb2x1bW5PZmZzZXQ7CisgICAgV3JpdGVCYXJyaWVy
PFVubGlua2VkQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZTsKKyAgICBXcml0ZUJhcnJpZXI8U2Ny
aXB0RXhlY3V0YWJsZT4gbV9vd25lckV4ZWN1dGFibGU7CisgICAgV3JpdGVCYXJyaWVyPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fb3duZXJFZGdlOworICAgIFZNKiBtX3ZtOwogCisgICAg
Y29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8
TExJbnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJbnRDYWxsczsKICAgICBTdHJ1Y3R1cmVX
YXRjaHBvaW50TWFwIG1fbGxpbnRHZXRCeUlkV2F0Y2hwb2ludE1hcDsKICAgICBSZWZQdHI8SklU
Q29kZT4gbV9qaXRDb2RlOwotI2lmICFFTkFCTEUoQ19MT09QKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwotI2VuZGlmCiAj
aWYgRU5BQkxFKEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklURGF0YT4gbV9qaXREYXRhOwog
I2VuZGlmCkBAIC05OTMsNyArOTgyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJv
ZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogCiAgICAg
Ly8gQ29uc3RhbnQgUG9vbAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWdpc3RlcikgPT0g
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIFJlZ2lzdGVyX211c3RfYmVfc2FtZV9zaXpl
X2FzX1dyaXRlQmFycmllcl9Vbmtub3duKTsKQEAgLTEwMTAsNiArOTk4LDcgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXIg
bV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICB1aW50MzJfdCBtX29zckV4aXRDb3VudGVyOworCiAg
ICAgdWludDE2X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgdWludDE2X3QgbV9y
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKaW5kZXggZTU2OGE4ZGVmMDM0MWExOGU4NDkwNWIyNzdm
YTFlNzg5MzExN2Y4NS4uYjlmMjhkMDJjNzE0Mjk0N2Q5ODFjYjA3YTljNTUyMmEwODFmYTc5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCkBA
IC01MiwxMSArNTIsMTAgQEAgY2xhc3MgRXZhbENvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBHbG9i
YWxDb2RlQmxvY2sgewogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgc3Rh
dGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAg
ICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlk
ZXIpCisgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIEV2YWxFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssIEpTU2NvcGUqIHNjb3BlKQogICAgIHsKICAgICAgICAgRXZhbENvZGVCbG9jayogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bS0+aGVh
cCkpCi0gICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS0+ZXZhbENvZGVCbG9ja1N0cnVj
dHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdU
Rk1vdmUoc291cmNlUHJvdmlkZXIpKTsKKyAgICAgICAgICAgIEV2YWxDb2RlQmxvY2sodm0sIHZt
LT5ldmFsQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2Vk
Q29kZUJsb2NrLCBzY29wZSk7CiAgICAgICAgIGlmICghaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KCp2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKQEAgLTc1LDkg
Kzc0LDggQEAgY2xhc3MgRXZhbENvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBHbG9iYWxDb2RlQmxv
Y2sgewogICAgIHsKICAgICB9CiAgICAgICAgIAotICAgIEV2YWxDb2RlQmxvY2soVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXZhbEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSog
c2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlcikKLSAgICAgICAg
OiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCAwLCAxKQorICAgIEV2
YWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXZhbEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywgSlNTY29wZSogc2NvcGUpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1
cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKQogICAgIHsKICAg
ICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0
aW9uQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25D
b2RlQmxvY2suaAppbmRleCBjY2NiNWM1NTNkMzdhN2VjODc5ZGNiMWVkNTQyZTllMjc3ZDg4MTgy
Li44NTNmYWU5NWRlM2FhMjg0MmNkMGM3NjU4YTU2ZDEzYTk5NTBlZWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaApAQCAtNTMs
MTEgKzUzLDEwIEBAIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIENvZGVC
bG9jayB7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAKLSAgICBzdGF0aWMgRnVu
Y3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywg
SlNTY29wZSogc2NvcGUsCi0gICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQ
cm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCisgICAgc3RhdGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQogICAgIHsKICAgICAgICAgRnVu
Y3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVu
Y3Rpb25Db2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KHZtLCB2bS0+ZnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgc291
cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgRnVuY3Rpb25D
b2RlQmxvY2sodm0sIHZtLT5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJF
eGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAoIWluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIHNjb3BlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CkBAIC03NCw5ICs3Myw4IEBAIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrIGZpbmFs
IDogcHVibGljIENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIEZ1bmN0aW9uQ29kZUJs
b2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywgSlNTY29wZSogc2NvcGUsCi0gICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3Vy
Y2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpCi0gICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwg
c291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgRnVuY3Rpb25Db2RlQmxv
Y2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
LCBKU1Njb3BlKiBzY29wZSkKKyAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpCiAgICAgewogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsQ29kZUJsb2NrLmgK
aW5kZXggYTdhMzA2N2I4NjdjNzczOTRjNmRhNWY3ZDdjMmM0MDdiZDg4ZjAxOC4uZTExYjc5MDUy
MGM4M2RiNzFlZmMzMjI5MDExMzEyMWNjMmJiZmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaApAQCAtNDUsOCArNDUsOCBAQCBjbGFz
cyBHbG9iYWxDb2RlQmxvY2sgOiBwdWJsaWMgQ29kZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0g
ICAgR2xvYmFsQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVBy
b3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKLSAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxl
LCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3Vy
Y2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBHbG9iYWxDb2RlQmxvY2soVk0q
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3Bl
KQorICAgICAgICA6IENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmlu
ZGV4IDQ2N2IzZDU2ZDAzODFmNDkyMDk2NzgzMjhkYTJiOTY3Nzg2MTRiMDQuLjIzNTU2Y2QxYzVi
OTgwMGRhZmZjNjIwOTZhY2ZjN2UzNjJjYjQ1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAtNTMsMTEg
KzUzLDEwIEBAIGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xv
YmFsQ29kZUJsb2NrIHsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0
YXRpYyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCisgICAgc3RhdGljIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0s
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQogICAg
IHsKICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCi0gICAg
ICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+bW9kdWxlUHJvZ3JhbUNvZGVC
bG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywg
c2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOwor
ICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPm1vZHVsZVByb2dyYW1D
b2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIHNjb3BlKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtLCBv
d25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwpAQCAtNzQsOSArNzMsOCBA
QCBjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIEdsb2JhbENvZGVC
bG9jayB7CiAgICAgewogICAgIH0KIAotICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3Vy
Y2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQotICAgICAgICA6IEds
b2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29k
ZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIDAsIGZpcnN0TGluZUNvbHVt
bk9mZnNldCkKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNj
b3BlKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1
dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4
IGU4YmEzMGZlNWJjY2YyMjljNWM3YjdjN2MxNGI3N2ZkYTdiNzc3NzYuLmViNzk1ZmQzOGU3MDgw
ZTUyOTBjY2I0MDE5Y2YxZmE3MTY5MWY0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaApAQCAtNTMsMTEgKzUzLDEwIEBAIGNsYXNz
IFByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICAg
ICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2Nr
KiBjcmVhdGUoVk0qIHZtLCBQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3Bl
KiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25l
ZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgc3RhdGljIFByb2dyYW1Db2RlQmxvY2sqIGNy
ZWF0ZShWTSogdm0sIFByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQogICAg
IHsKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBQcm9n
cmFtQ29kZUJsb2NrKHZtLCB2bS0+cHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJv
dmlkZXIpLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgUHJvZ3JhbUNvZGVC
bG9jayh2bSwgdm0tPnByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24oKnZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBz
Y29wZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwpAQCAtNzQsOSArNzMsOCBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVi
bGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIFByb2dyYW1Db2RlQmxv
Y2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywK
LSAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQ
cm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQotICAgICAgICA6IEdsb2Jh
bENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJs
b2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIDAsIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKKyAgICBQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQorICAgICAgICA6IEdsb2Jh
bENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJs
b2NrLCBzY29wZSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IDQwYzEzNzI4ZWFlZjlkOWQ5NmVkMGZlMGJlYzZhYjNh
MDgwNWU5NzkuLjA5YTZkZWQ5NmUwNzdlMzRjNDRkMDdhZDkzZWZhMTZhNzBjODYwOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMjYyLDcgKzI2
Miw3IEBAIHZvaWQgRGVidWdnZXI6OnRvZ2dsZUJyZWFrcG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEJyCiB7CiAgICAgQVNTRVJUKGJyZWFrcG9pbnQu
cmVzb2x2ZWQpOwogCi0gICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9j
ay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiAKICAgICBTb3VyY2VJRCBzb3Vy
Y2VJRCA9IHN0YXRpY19jYXN0PFNvdXJjZUlEPihleGVjdXRhYmxlLT5zb3VyY2VJRCgpKTsKICAg
ICBpZiAoYnJlYWtwb2ludC5zb3VyY2VJRCAhPSBzb3VyY2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGIzMGE4
NjI1ZDIzZWUwNjljNjc0NzA3MjU3M2M3MjdmNWViMmQyMmEuLmU5ZGZiYzJjMDg4NzI1ZDFkNzA2
NTQ4YTRjMTFiNTc3ZjhiNDVkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFNvdXJj
ZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CiAgICAgaWYgKCFpc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBub1NvdXJjZUlEOwogICAgIGlmIChpc1RhaWxEZWxldGVkKCkp
Ci0gICAgICAgIHJldHVybiBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOworICAgICAgICByZXR1cm4gbV9zaGFkb3dDaGlj
a2VuRnJhbWUuY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKICAgICBy
ZXR1cm4gc291cmNlSURGb3JDYWxsRnJhbWUobV92YWxpZE1hY2hpbmVGcmFtZSk7CiB9CiAKQEAg
LTMxNiw3ICszMTYsNyBAQCBTb3VyY2VJRCBEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSURGb3JD
YWxsRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICBy
ZXR1cm4gbm9Tb3VyY2VJRDsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKTsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+c291cmNlSUQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXggYjFlN2FlYzU0
ZDJkMDc2NGQxNGY5NmRmMTJmMDRjNzk2MGE1ZGUzOS4uMmYzNDQxMWI0N2ExODdkMjBlZjJjNGYx
MWU4YTliMzJlNzBhZmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIERlYnVnZ2VyTG9jYXRpb24g
RGVidWdnZXJTY29wZTo6bG9jYXRpb24oKSBjb25zdAogICAgIGlmICghY29kZUJsb2NrKQogICAg
ICAgICByZXR1cm4gRGVidWdnZXJMb2NhdGlvbigpOwogCi0gICAgU2NyaXB0RXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7CisgICAgU2Ny
aXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7
CiAgICAgcmV0dXJuIERlYnVnZ2VyTG9jYXRpb24oZXhlY3V0YWJsZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYzIzNzg1
NTRhMWZjYTdlOTU3MjE1MDJkYzgxMjVhZTFiZDRmZjNlYi4uZDQ2ODM0ZmMwZTdiMWQyYTc3NjE4
ZTE5YjNiMjU4N2FlYjA2YWQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTEwODUsNyArMTA4NSw3IEBAIGNsYXNzIEJ5dGVDb2Rl
UGFyc2VyIHsKICAgICAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIElu
bGluZUNhbGxGcmFtZSogbV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgIAotICAgICAgICBTY3Jp
cHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpOyB9CisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUo
KSB7IHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7IH0KICAgICAgICAgCiAg
ICAgICAgIFF1ZXJ5YWJsZUV4aXRQcm9maWxlIG1fZXhpdFByb2ZpbGU7CiAgICAgICAgIApAQCAt
MTUwNCw3ICsxNTA0LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChD
YWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICBWRVJCT1NFX0xP
RygiICAgIE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihj
b2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCksICJcbiIpOwogICAgIFZFUkJPU0VfTE9HKCIg
ICAgTWlnaHQgY29tcGlsZSBmdW5jdGlvbjogIiwgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3IoY29k
ZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQpLCAiXG4iKTsKICAgICBWRVJCT1NFX0xPRygiICAg
IElzIHN1cHBvcnRlZCBmb3IgaW5saW5pbmc6ICIsIGlzU3VwcG9ydGVkRm9ySW5saW5pbmcoY29k
ZUJsb2NrKSwgIlxuIik7Ci0gICAgVkVSQk9TRV9MT0coIiAgICBJcyBpbmxpbmluZyBjYW5kaWRh
dGU6ICIsIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5k
aWRhdGUoKSwgIlxuIik7CisgICAgVkVSQk9TRV9MT0coIiAgICBJcyBpbmxpbmluZyBjYW5kaWRh
dGU6ICIsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUo
KSwgIlxuIik7CiAgICAgaWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0eUxldmVsKSkgewogICAgICAg
ICBWRVJCT1NFX0xPRygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgbm90IGlu
bGluZWFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwpAQCAtNzA5NCw3ICs3MDk0
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAg
ICAgICIgIiwgaW5saW5lQ2FsbEZyYW1lKCktPmRpcmVjdENhbGxlcik7CiAgICAgICAgIH0KICAg
ICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICIsIGlzU3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9j
ay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpLCAiXG4iKTsKKyAgICAg
ICAgICAgICIsIGlzU3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpLCAiXG4iKTsKICAgICAgICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNp
b24oKS0+ZHVtcEJ5dGVjb2RlKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDQwNTMzNjM4NDI2NmNmYzY2ZWU0Mzdl
ZDNjNTE4MGM5N2RhYTVlMDAuLjc4NTIxMDMwNzBmOTA2MzYwYWJjNDQ4NDdiOGM4NTc1NmIzNGI3
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
QEAgLTQ0LDMyICs0NCwzMiBAQCBib29sIGlzU3VwcG9ydGVkKCkKIAogYm9vbCBpc1N1cHBvcnRl
ZEZvcklubGluaW5nKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxv
Y2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCk7CisgICAg
cmV0dXJuIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUo
KTsKIH0KIAogYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewog
ICAgIHJldHVybiBpc1N1cHBvcnRlZCgpCiAgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50KCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUo
KS0+aXNPa1RvT3B0aW1pemUoKTsKKyAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKIH0KIGJvb2wgbWlnaHRDb21waWxlUHJvZ3JhbShDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICByZXR1cm4gaXNTdXBwb3J0ZWQoKQogICAgICAgICAm
JiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1p
emF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCi0gICAgICAgICYmIGNvZGVCbG9jay0+
b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzT2tUb09wdGltaXplKCk7CisgICAgICAgICYmIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzT2tUb09wdGltaXplKCk7CiB9CiBib29sIG1p
Z2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBy
ZXR1cm4gaXNTdXBwb3J0ZWQoKQogICAgICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCgpCi0gICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlz
T2tUb09wdGltaXplKCk7CisgICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PmlzT2tUb09wdGltaXplKCk7CiB9CiBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHJldHVybiBpc1N1cHBvcnRlZCgpCiAg
ICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGlt
dW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKLSAgICAgICAgJiYgY29k
ZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKKyAgICAg
ICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKIH0K
IAogYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaykK
QEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENv
ZGVCbG9jayogY29kZUJsb2NrKQogfQogYm9vbCBjYW5Vc2VPU1JFeGl0RnV6emluZyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+Y2FuVXNlT1NSRXhpdEZ1enppbmcoKTsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+Y2FuVXNlT1NSRXhpdEZ1enppbmcoKTsKIH0KIAogc3RhdGljIGJv
b2wgdmVyYm9zZUNhcGFiaWxpdGllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
aW5kZXggMTUxZjU3MzZjN2FjNzA3M2YxZGVkZWU4ZGY2ZWIzM2UwMDhlZjRlYi4uYjE0ZTkxMTg3
NWI1MjQ5M2U2OTRhMjcwMjkxNDcwMzkzN2IxN2E2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaApAQCAtNDE3LDkgKzQxNyw5IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1
YWwgU2Nhbm5hYmxlIHsKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyU2NyaXB0RXhl
Y3V0YWJsZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKTsKKyAgICAgICAgcmV0dXJuIGlubGlu
ZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogICAgIH0K
ICAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCmluZGV4IGZjYmQ1M2I4MmI1YmJjNDJiNTkxYWY3MWViZmQ5OWU4NWY4NTM3NWIuLjIz
NDQ0ZjQzYzdiZDg3NmFjMjY5NTQ1M2MyM2YyNjU1YmI5NDJmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00ODQsNyArNDg0LDcgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAgICAgZW1pdFN0b3JlQ29kZU9y
aWdpbihDb2RlT3JpZ2luKDApKTsKICAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50
MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwotICAgICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJv
bGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlv
bkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAg
ICAgICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBicmFuY2hUZXN0MzIoWmVybywg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCmluZGV4IDFmZmZiNzAxNjA0
ZjUxYzA5MmQ5MzY3NTJmNjQyNmJlYTcxNjU5ODguLmQxZjY5YWI0ZGRiYTA2YzM5MGQwYWE1ODVk
ZTdjNWFlZmJhNzlkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnku
Y3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSog
ZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW4KICAgICBzYW5p
dGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIAogICAgIGlmIChieXRlY29kZUluZGV4KQotICAgICAg
ICBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zZXREaWRUcnlUb0VudGVySW5M
b29wKHRydWUpOworICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zZXREaWRU
cnlUb0VudGVySW5Mb29wKHRydWUpOwogICAgIAogICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUo
KSAhPSBKSVRDb2RlOjpERkdKSVQpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6RlRMSklUKTsKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbgogCiAgICAgLy8gNikgQ29weSBvdXIgY2FsbGVlIHNhdmVzIHRv
IGJ1ZmZlci4KICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJl
Z2lzdGVyU2F2ZUxvY2F0aW9ucyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwog
ICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2
bUNhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJl
Z2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdp
c3RlclNldDo6YWxsRlBScygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAKaW5kZXggMWFlZGVmNjg3MDRiMjMyNmU0NGMxZmYwY2VkNjJiZDAwMmU0YzE1Ni4uMGQ2
ZTY5MzBhYjEzMTdmNWJlNjU5ZGQ2YjljYWIyOGFkMWIwOWRjMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIHJl
c3RvcmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKIAotICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0Ojph
bGxGUFJzKCkpOwogICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6
ZSgpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgc2F2ZUNhbGxlZVNhdmVzRm9y
KENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgIEFTU0VSVChjb2RlQmxvY2spOwogCi0gICAgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29k
ZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVS
ZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVn
aXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CiAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxl
ZVNhdmVzLT5zaXplKCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBzYXZlT3JD
b3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZpcgogICAgIEZyYW1lIGZyYW1lKGNvbnRleHQuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKICAg
ICBBU1NFUlQoY29kZUJsb2NrKTsKIAotICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVT
YXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQo
UmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwog
ICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAKaW5kZXggYzFhYjg0NjhhNTBjYmM1MzFlMmJmOTNiYjc0YjExNTZkYTJlOTQyMi4uZmQ2
ZmRiNTNlMzZhYzU0YzdkODQyYTQxYjU0YTc4MGI5MzQ5M2E0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICAgICAgaml0LmJyYW5jaFRlc3Q4KAogICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6Tm9uWmVybywKICAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygKLSAgICAgICAgICAgICAgICAgICAgaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCkt
PmFkZHJlc3NPZkRpZFRyeVRvRW50ZXJJbkxvb3AoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmFk
ZHJlc3NPZkRpZFRyeVRvRW50ZXJJbkxvb3AoKSkpKTsKICAgICB9CiAgICAgCiAgICAgaml0Lm1v
dmUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAy
Mjc1MGI3OTk3YWY5YzlhNmIwZWVhM2E1YWNmY2VkMTQ1OGM3ZjJlLi45ODRmYzBiOTYxZTUwMDk1
NGQ2ZGYwYzRhOWQzYTY3Nzc0OWVhYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKQEAgLTMwMjMsNyArMzAyMyw3IEBAIGV4dGVybiAiQyIgdm9pZCBK
SVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kCiAgICAgCiAgICAgYm9vbCBkaWRUcnlUb0VudGVySW50b0lubGluZWRMb29wcyA9IGZh
bHNlOwogICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBleGl0LT5t
X2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxG
cmFtZSA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyLmlubGluZUNhbGxGcmFtZSkgewot
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJTY3Jp
cHRFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkgeworICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmRpZFRy
eVRvRW50ZXJJbkxvb3AoKSkgewogICAgICAgICAgICAgZGlkVHJ5VG9FbnRlckludG9JbmxpbmVk
TG9vcHMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5jcHAKaW5kZXggMTNiOTczOTBkYmFjYjAwM2MyN2Q3ZTY1NjEwMDFm
ZjU2YzQzYjY3ZS4uYzY3ZTdhMDAwOGM3ZTAzOTRjOGI4ZTdlOTI5YmM4YjI4ZGZmYmM5MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUb0ZU
TERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSgK
ICAgICB9CiAgICAgCiAgICAgaWYgKHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCi0g
ICAgICAgIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNv
ZGVCbG9jayk7CisgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxD
b2RlKGNvZGVCbG9jayk7CiAgICAgCiAgICAgcHJvZmlsZWRERkdDb2RlQmxvY2stPmppdENvZGUo
KS0+ZGZnKCktPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3Vs
dCgKICAgICAgICAgcHJvZmlsZWRERkdDb2RlQmxvY2ssIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMWZmMGMzMzdkYThjOTVj
ZTk0YzU2ZjhlYmUzYTliNmE0ZTRkYWIxNS4uNTM1NzIxMjk2OTI1YTkwMDkwNDJmMTExMDQ4YTk5
ODZmOGI3ZDIyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcApAQCAtNDA1LDcgKzQwNSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdy
YXBoJiBncmFwaCkKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgfQogICAgIAot
ICAgIGlmIChVTkxJS0VMWShncmFwaC5tX2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxl
KCktPm5ldmVyRlRMT3B0aW1pemUoKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoZ3JhcGgubV9jb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZXZlckZUTE9wdGltaXplKCkpKSB7CiAgICAgICAg
IGlmICh2ZXJib3NlQ2FwYWJpbGl0aWVzKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGVEwgcmVq
ZWN0aW5nICIsICpncmFwaC5tX2NvZGVCbG9jaywgIiBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhcyBu
ZXZlciBGVEwgY29tcGlsZS5cbiIpOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDNmY2ExMWUyMzlmNGZjZmUyOWMy
NWU5ZjRhZmEyOWQwMDUwOWY2NWMuLjM2MWM2YWU5NGZlYjYxMjNhNWE2YjA5YjI5YTRkYWM0MDg4
ZDM5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTcxLDcgKzE3
MSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgc3RhdGUuYWxs
b2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOworICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0
cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwogICAgICAgICAgICAg
bGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFt
ZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lKSk7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZp
eHVwLCBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVw
R2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBh
dGhKdW1wcywgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDhhZGZmYTBhZjM4NmY5ZjU2
Zjg5NzBiYTk0YTRjM2JiZGY2NmViNDAuLjIxOGVjYzc5ZmEyZGIxZDkzYzUwOWNiMjZhZDhjOTJh
ZmMzYmUzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKQEAgLTQxOSw3ICs0MTksNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigK
ICAgICBqaXQuY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAogICAgIFJlZ2lzdGVyU2V0
IGFsbEZUTENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKLSAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGJhc2VsaW5lQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOwogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiB2bUNhbGxlZVNh
dmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwogICAgIFJl
Z2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZXNUb1NraXAgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3Rl
cnMoKTsKICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewpAQCAtNDM0LDcgKzQz
NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgdW53aW5kSW5kZXggPSBjb2RlQmxvY2stPmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKS0+aW5kZXhPZihyZWcpOwotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
KiBiYXNlbGluZVJlZ2lzdGVyT2Zmc2V0ID0gYmFzZWxpbmVDYWxsZWVTYXZlcy0+ZmluZChyZWcp
OworICAgICAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0KiBiYXNlbGluZVJlZ2lzdGVyT2Zmc2V0
ID0gYmFzZWxpbmVDYWxsZWVTYXZlcy0+ZmluZChyZWcpOwogICAgICAgICBSZWdpc3RlckF0T2Zm
c2V0KiB2bUNhbGxlZVNhdmUgPSBudWxscHRyOyAKICAgICAgICAgaWYgKGV4aXQuaXNFeGNlcHRp
b25IYW5kbGVyKCkpCiAgICAgICAgICAgICB2bUNhbGxlZVNhdmUgPSB2bUNhbGxlZVNhdmVzLT5m
aW5kKHJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwCmluZGV4IDQ1NDIzOTY2ODA0NTY5NzRjODA1YTIyODY4NDZjNjNmOTQ3YWUxZjUuLjI1
NmEzM2I1ZDYxM2JmNDJlODJjM2I2OTNjY2M2YTMxZTEzY2IyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0yNTMsMTQgKzI1Mywx
NCBAQCBTb3VyY2VPcmlnaW4gQ2FsbEZyYW1lOjpjYWxsZXJTb3VyY2VPcmlnaW4oKQogICAgICAg
ICAgICAgLy8gSW4gdGhlIGFib3ZlIGNhc2UsIHRoZSBldmFsIGZ1bmN0aW9uIHdpbGwgYmUgaW50
ZXJwcmV0ZWQgYXMgdGhlIGluZGlyZWN0IGNhbGwgdG8gZXZhbCBpbnNpZGUgZm9yRWFjaCBmdW5j
dGlvbi4KICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlIGdlbmVyYXRlZCBldmFsIGNv
ZGUgc2hvdWxkIGhhdmUgdGhlIHNvdXJjZSBvcmlnaW4gdG8gdGhlIG9yaWdpbmFsIGNhbGxlciBv
ZiB0aGUgZm9yRWFjaCBmdW5jdGlvbgogICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgc291
cmNlIG9yaWdpbiBvZiB0aGUgZm9yRWFjaCBmdW5jdGlvbi4KLSAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih2aXNpdG9yLT5jb2RlQmxvY2soKS0+b3duZXJT
Y3JpcHRFeGVjdXRhYmxlKCkpLT5pc0J1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHZpc2l0b3ItPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKSktPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgICAgIEZBTExU
SFJPVUdIOwogCiAgICAgICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGU6OkV2
YWw6CiAgICAgICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGU6Ok1vZHVsZToK
ICAgICAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6R2xvYmFsOgotICAg
ICAgICAgICAgc291cmNlT3JpZ2luID0gdmlzaXRvci0+Y29kZUJsb2NrKCktPm93bmVyU2NyaXB0
RXhlY3V0YWJsZSgpLT5zb3VyY2VPcmlnaW4oKTsKKyAgICAgICAgICAgIHNvdXJjZU9yaWdpbiA9
IHZpc2l0b3ItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlT3JpZ2luKCk7
CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkRvbmU7CiAKICAgICAg
ICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6TmF0aXZlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMDYy
MjFmZDY5ZGJkNmI2MGQ0M2I5YjgwYzE0MjZlNzY5NGQ3M2M0ZC4uMWE2NjJlYWVmNjY1MjNkYTg4
ZTQ4ZTNhYzg3YjI3YmI0ZDcyNzgyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgSlNWYWx1ZSBl
dmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAKICAgICAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWik7
Ci0gICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwg
bWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLT5zb3Vy
Y2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFi
bGVzVW5kZXJURFopOworICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5z
b3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
ZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwp
CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBj
bGFzcyBVbndpbmRGdW5jdG9yIHsKICAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKICAgICB7CiAj
aWYgIUVOQUJMRShDX0xPT1ApICYmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4g
MAotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gdmlz
aXRvci0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICBjb25zdCBSZWdpc3RlckF0T2Zm
c2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gdmlzaXRvci0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOwogCiAgICAgICAgIGlmICghY3VycmVudENhbGxlZVNhdmVzKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAppbmRleCAyYWEzZjMwMDBhZWFkODMwYzIyMDJlMzgwZjM4Nzg1Y2RkODUyOTExLi40
ZDFjNzkyOGJmNDJmY2ZmOTM4YWZkZTIyZWE2NGU1NGZiY2I5YTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjUyLDcg
KzI1Miw3IEBAIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlIFN0YWNrVmlzaXRvcjo6RnJh
bWU6OmNvZGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQ29kZVR5cGU6Okdsb2JhbDsKIH0KIAot
UmVnaXN0ZXJBdE9mZnNldExpc3QqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdp
c3RlcnMoKQorY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIFN0YWNrVmlzaXRvcjo6RnJhbWU6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKQogewogICAgIGlmIChpc0lubGluZWRGcmFtZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxNyw3ICszMTcsNyBAQCBTdHJpbmcgU3RhY2tWaXNp
dG9yOjpGcmFtZTo6c291cmNlVVJMKCkgY29uc3QKICAgICBjYXNlIENvZGVUeXBlOjpNb2R1bGU6
CiAgICAgY2FzZSBDb2RlVHlwZTo6RnVuY3Rpb246CiAgICAgY2FzZSBDb2RlVHlwZTo6R2xvYmFs
OiB7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBjb2RlQmxvY2soKS0+b3duZXJTY3JpcHRF
eGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gY29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKICAgICAgICAgaWYgKCFz
b3VyY2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgdHJhY2VMaW5lID0gc291cmNlVVJMLmlt
cGwoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTgsNyArMzU4LDcgQEAgU3RyaW5nIFN0YWNrVmlz
aXRvcjo6RnJhbWU6OnRvU3RyaW5nKCkgY29uc3QKIGludHB0cl90IFN0YWNrVmlzaXRvcjo6RnJh
bWU6OnNvdXJjZUlEKCkKIHsKICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB0aGlzLT5j
b2RlQmxvY2soKSkKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRh
YmxlKCktPnNvdXJjZUlEKCk7CisgICAgICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5zb3VyY2VJRCgpOwogICAgIHJldHVybiBub1NvdXJjZUlEOwogfQogCkBAIC00MDMs
MTAgKzQwMywxMCBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29s
dW1uKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKQogICAgIHVuc2lnbmVkIGRpdm90
Q29sdW1uID0gMDsKICAgICByZXRyaWV2ZUV4cHJlc3Npb25JbmZvKGRpdm90LCB1bnVzZWRTdGFy
dE9mZnNldCwgdW51c2VkRW5kT2Zmc2V0LCBkaXZvdExpbmUsIGRpdm90Q29sdW1uKTsKIAotICAg
IGxpbmUgPSBkaXZvdExpbmUgKyBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5m
aXJzdExpbmUoKTsKKyAgICBsaW5lID0gZGl2b3RMaW5lICsgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+Zmlyc3RMaW5lKCk7CiAgICAgY29sdW1uID0gZGl2b3RDb2x1bW4gKyAoZGl2b3RM
aW5lID8gMSA6IGNvZGVCbG9jay0+Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCkpOwogCi0gICAgaWYg
KE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gY29kZUJsb2NrLT5vd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+b3ZlcnJpZGVMaW5lTnVtYmVyKCpjb2RlQmxvY2stPnZtKCkpKQorICAg
IGlmIChPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPm92ZXJyaWRlTGluZU51bWJlcigqY29kZUJsb2NrLT52bSgpKSkKICAgICAg
ICAgbGluZSA9IG92ZXJyaWRlTGluZU51bWJlci52YWx1ZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKaW5kZXggZmE0NWEzOTM5
MjcwYTQ1OTZjNmFkZGYzYjliN2Q5MzUyN2QzODZjOC4uN2IwMDMxNDEwMjM3ZWM5MGVjOTJkZGZk
ODYzYWFmNTg4Mjc4MDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBTdGFja1Zpc2l0b3Ig
ewogICAgICAgICBib29sIGhhc0xpbmVBbmRDb2x1bW5JbmZvKCkgY29uc3Q7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgY29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUs
IHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0OwogCi0gICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgQ2xvbmVkQXJndW1lbnRzKiBj
cmVhdGVBcmd1bWVudHMoKTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxGcmFtZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggNGI5MGYzYWFjYmQyMjE5OGNmMzNiZDY0ZDdlOGFjODIzMjJlNTQy
My4uMTZlMzYyMDRiOWNlMjI3ODA3ODBkODU5YjgwZGRlNTVhMjNmNWJlMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0yNjEsNyArMjYxLDcgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwogCi0gICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAg
ICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3Rl
cnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJT
ZXQ6OmFsbEZQUnMoKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVT
YXZlcy0+c2l6ZSgpOwogCkBAIC0yNzksNyArMjc5LDcgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJz
IDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChjb2RlQmxv
Y2spOwogICAgICAgICAKLSAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVz
ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpOwogICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVy
U2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygp
KTsKICAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7
CiAKQEAgLTMxMyw3ICszMTMsNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFj
cm9Bc3NlbWJsZXIgewogICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAgICAg
ICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVT
YXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxs
ZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogICAgICAgICBSZWdp
c3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0Ojpz
dGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKICAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CiAgICAgICAgIApAQCAtNDA5
LDcgKzQwOSw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoRW50cnlGcmFtZTo6Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgdGVtcDEpOwogCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3Rl
ck9mZnNldHMoKTsKLSAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVT
YXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2soKS0+
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogICAgICAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lz
dGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgICAgICB1bnNpZ25lZCBy
ZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAppbmRleCA1NjcyMDJj
MTUzNjlkODIwMjRiNzEwMWNhYmIwZWNiYTAyNTQ3YTNhLi42OGU5YzljOWI1OTBiZGUyZjZkNTlh
MjNiMzI4OTliYzVhMmFmYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0
ZXJzIHsgUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIH07Ci0gICAgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucyA9IGNvZGVCbG9jay0+Y2FsbGVl
U2F2ZVJlZ2lzdGVycygpOworICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiByZWdpc3Rl
clNhdmVMb2NhdGlvbnMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5zaXplKCk7ICsr
aSkgewogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5IHsgcmVnaXN0ZXJTYXZlTG9jYXRp
b25zLT5hdChpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDVkNmUwNzc3M2Rj
YmVmNTI3MmQ1NzE1MTExNWEzZDRkY2ZkMTY4YTIuLmRhMmMyYjE1MmE3NWFmMzgxMDM2YzZhZDcx
ODdkNzQ1MGQzNDVkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTY4Nyw3ICs2
ODcsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpbGF0aW9uRWZm
b3J0IGVmZm9ydCkKICAgICAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQg
PCBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnN0cnVjdG9yLCB0aGVuIHdlIHdhbnQgdG8gcHV0IGlu
IGEgZHVtbXkgcHJvZmlsaW5nIHNpdGUgKHRvCiAgICAgICAgICAgICAgICAgLy8ga2VlcCB0aGlu
Z3MgY29uc2lzdGVudCkgYnV0IHdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gcmVjb3JkIHRoZSBk
dW1teSB2YWx1ZS4KLSAgICAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPm1faXNDb25zdHJ1
Y3RvciAmJiAhYXJndW1lbnQpCisgICAgICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0Nv
bnN0cnVjdG9yKCkgJiYgIWFyZ3VtZW50KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldElu
Y2x1ZGluZ1RoaXMoYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNzQ4LDcgKzc0OCw3IEBAIHZvaWQgSklUOjpjb21w
aWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogCiAgICAgICAg
IGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbldp
dGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0
b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hl
Y2spOworICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRp
b24obV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5
Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAg
ICAgIGJyYW5jaFRlc3QzMihaZXJvLCByZXR1cm5WYWx1ZUdQUikubGlua1RvKGJlZ2luTGFiZWws
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAppbmRleCA0NzFhZjliMjg3
ZTM3MDU0MzgyM2M5YTA5ZDNlNTZjZWRmNGVlMWI1Li5kOWZiNzZhZjE5ZDUwMTU0NzIyMWQ5Mjdl
YmYzMmJlYWE4YWRjOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApAQCAt
NjMsNyArNjMsNyBAQCB2b2lkIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpj
b21waWxhdGlvbkRpZENvbXBsZXRlKAogICAgICAgICBkYXRhTG9nKCJPcHRpbWl6aW5nIGNvbXBp
bGF0aW9uIG9mICIsICpjb2RlQmxvY2ssICIgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAg
IAogICAgIGlmIChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKQotICAgICAgICBjb2Rl
QmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShjb2RlQmxvY2spOwor
ICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShjb2RlQmxv
Y2spOwogICAgIAogICAgIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+c2V0T3B0aW1pemF0aW9u
VGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KHJlc3VsdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKaW5kZXggYmIyMTE0YzhlMDM4OTRjMDdmNTlh
MDcxMjRmZDVmZjhlZDdiNjk5Zi4uNGM2ZWY0ZmI1NzgwYTVhMDczOGExODIwODgzOWE1Y2JhMDkx
MzY0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgY2xhc3MgSklUV29ya2xpc3Q6OlBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SklUV29ya2xpc3Q6OlBsYW4+IHsKICAgICAgICAgY2FzZSBDb21waWxhdGlvblN1
Y2Nlc3NmdWw6CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCIgICAgSklUIGNvbXBpbGF0aW9uIHN1Y2Nlc3NmdWwuXG4iKTsK
LSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aW5zdGFs
bENvZGUobV9jb2RlQmxvY2spOworICAgICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5pbnN0YWxsQ29kZShtX2NvZGVCbG9jayk7CiAgICAgICAgICAgICBtX2NvZGVCbG9j
ay0+aml0U29vbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZWZhdWx0OgpAQCAt
MzA5LDcgKzMwOSw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmNvbXBpbGVOb3coQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIHVuc2lnbmVkIGxvb3BPU1JFbnRyeUJ5dGVjb2RlCiAgICAgCiAgICAgLy8gT0ss
IGp1c3QgY29tcGlsZSBpdC4KICAgICBKSVQ6OmNvbXBpbGUodm0sIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25NdXN0U3VjY2VlZCwgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQpOwotICAgIGNv
ZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNvZGVCbG9jayk7
CisgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29kZUJsb2Nr
KTsKIH0KIAogdm9pZCBKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyhQbGFucyYgbXlQbGFucykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExp
c3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5j
cHAKaW5kZXggNDkyNTJmYzIzMDBiN2YyYjNkODZmNTNiOGVlOGM0N2VhNzA3NTIzOC4uZWIxZjI4
Mzc4YzNjZTU0MzZjNWM5N2VkOGRhMjRjMDY2YTU3NTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKQEAgLTY2LDYgKzY2LDE2
IEBAIHVuc2lnbmVkIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjppbmRleE9mKFJlZyByZWcpIGNvbnN0
CiAgICAgcmV0dXJuIFVJTlRfTUFYOwogfQogCitjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYg
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkK
K3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZXN1bHQ7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10geworICAgICAgICByZXN1bHQuY29uc3RydWN0KFJlZ2lzdGVyU2V0
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gcmVzdWx0LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShBU1NFTUJMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyQXRPZmZzZXRMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmgKaW5kZXggNWUzYTNjYjJjZTAyOTM0MTE5NTdmNjg5OTMzOWQ2NzdmNGE5
ZjQ1NS4uMTczY2Y5NDk4NjZjYzA5NjFjNDA1NzRmMmMyZjk5OWQ0ZTRkZDYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaApAQCAtNTIs
NiArNTIsMTEgQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3QgewogICAgICAgICByZXR1cm4g
bV9yZWdpc3RlcnMuc2l6ZSgpOwogICAgIH0KIAorICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQm
IGF0KHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JlZ2lzdGVy
cy5hdChpbmRleCk7CisgICAgfQorCiAgICAgUmVnaXN0ZXJBdE9mZnNldCYgYXQoc2l6ZV90IGlu
ZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcmVnaXN0ZXJzLmF0KGluZGV4KTsKQEAgLTYz
LDYgKzY4LDggQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3QgewogICAgIFZlY3RvcjxSZWdp
c3RlckF0T2Zmc2V0Pjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3Jl
Z2lzdGVycy5iZWdpbigpOyB9CiAgICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+Ojpjb25zdF9p
dGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVycy5lbmQoKTsgfQogCisgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgYW5kIE9mZnNldHMgc2F2ZWQgYW5kIHVzZWQgYnkg
dGhlIExMSW50LgorCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWdpc3RlckF0T2Zmc2V0PiBtX3Jl
Z2lzdGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuY3BwCmluZGV4IDc2ZmFhZThhM2QwMGM0YTQ0NzRhNzI0YmUxZTdmODM3ZjJjYzUyMTAu
LjUwY2E5OTdiMjMyMjNlZTQ2MTk1OGI5ZGQ4NjgyMGJiNWFiOTQ2YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICBpbnQgZXhwcmVzc2lvblN0YXJ0ID0gZGl2
b3RQb2ludCAtIHN0YXJ0T2Zmc2V0OwogICAgIGludCBleHByZXNzaW9uU3RvcCA9IGRpdm90UG9p
bnQgKyBlbmRPZmZzZXQ7CiAKLSAgICBTdHJpbmdWaWV3IHNvdXJjZVN0cmluZyA9IGNvZGVCbG9j
ay0+c291cmNlKCktPnNvdXJjZSgpOworICAgIFN0cmluZ1ZpZXcgc291cmNlU3RyaW5nID0gY29k
ZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2UoKTsKICAgICBpZiAoIWV4cHJlc3Np
b25TdG9wIHx8IGV4cHJlc3Npb25TdGFydCA+IHN0YXRpY19jYXN0PGludD4oc291cmNlU3RyaW5n
Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtODcsNyArODcsNyBAQCBzdGF0
aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvcklu
c3RhbmNlKiBleGNlcHRpb24sCiAgICAgCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhc1N0cmluZyhq
c01lc3NhZ2UpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIGlmIChleHByZXNzaW9uU3RhcnQgPCBl
eHByZXNzaW9uU3RvcCkKLSAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVC
bG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvblN0b3Ap
LnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOworICAg
ICAgICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25TdG9wKS50b1N0cmlu
ZygpLCB0eXBlLCBFcnJvckluc3RhbmNlOjpGb3VuZEV4YWN0U291cmNlKTsKICAgICBlbHNlIHsK
ICAgICAgICAgLy8gTm8gcmFuZ2UgaW5mb3JtYXRpb24sIHNvIGdpdmUgYSBmZXcgY2hhcmFjdGVy
cyBvZiBjb250ZXh0LgogICAgICAgICBpbnQgZGF0YUxlbmd0aCA9IHNvdXJjZVN0cmluZy5sZW5n
dGgoKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9y
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgICAg
ICAgICBzdG9wKys7CiAgICAgICAgIHdoaWxlIChzdG9wID4gZXhwcmVzc2lvblN0YXJ0ICYmIGlz
U3RyV2hpdGVTcGFjZShzb3VyY2VTdHJpbmdbc3RvcCAtIDFdKSkKICAgICAgICAgICAgIHN0b3At
LTsKLSAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNl
KCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKS50b1N0cmluZygpLCB0eXBlLCBFcnJvckluc3RhbmNl
OjpGb3VuZEFwcHJveGltYXRlU291cmNlKTsKKyAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVyKG1l
c3NhZ2UsIGNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0
b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3Vy
Y2UpOwogICAgIH0KICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdm0sIHZtLT5wcm9wZXJ0eU5h
bWVzLT5tZXNzYWdlLCBqc1N0cmluZyh2bSwgbWVzc2FnZSkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IGI4ODJiOThh
ZmIwNTQ4ZDdiYzI5ZTRiZWI1OTY0ZmEwMWE4MDg0ZWEuLjExNWIxNzhjZTJiY2YzZmY1OTM4MjA3
YTBmYWYzYzU3ZDUxN2I4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC0yNjksOCArMjY5LDcgQEAgQ29kZUJsb2NrKiBT
Y3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZnVuY3Rpb24pOwogICAgICAgICBhdXRvIGNvZGVCbG9jayA9IEV2YWxDb2RlQmxvY2s6OmNyZWF0
ZSh2bSwKLSAgICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrLmdldCgpLCBzY29wZSwKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LnByb3ZpZGVyKCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZEV2YWxDb2RlQmxvY2suZ2V0KCksIHNjb3BlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IGNvZGVCbG9jayk7CiAgICAgICAgIGlmICghY29k
ZUJsb2NrKSB7CiAgICAgICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigKQEAgLTI4
Nyw4ICsyODYsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zv
cigKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9j
ayk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbik7CiAgICAgICAgIGF1dG8gY29k
ZUJsb2NrID0gUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLAotICAgICAgICAgICAgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3Bl
LAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgc3RhcnRDb2x1
bW4oKSk7CisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJv
Z3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgfHwgY29kZUJsb2NrKTsKICAgICAgICAgaWYgKCFjb2RlQmxv
Y2spIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHRocm93RXhjZXB0aW9uKApAQCAtMzA1LDgg
KzMwMyw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAog
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKICAgICAgICAgYXV0byBj
b2RlQmxvY2sgPSBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sCi0gICAgICAgICAg
ICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKSwgc2NvcGUsCi0gICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBzdGFydENvbHVtbigpKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUt
Pm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSk7CiAgICAgICAg
IEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSB8fCBjb2RlQmxvY2spOwog
ICAgICAgICBpZiAoIWNvZGVCbG9jaykgewogICAgICAgICAgICAgZXhjZXB0aW9uID0gdGhyb3dF
eGNlcHRpb24oCkBAIC0zMzgsOCArMzM1LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxl
OjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIAotICAgICAgICBzb3Vy
Y2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydE9mZnNldCgpLCBzdGFydENvbHVtbigpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEZ1bmN0aW9uQ29kZUJsb2NrOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkpOwogfQogCiBD
b2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRleCBkZDI5
ZjJhOThmNjEzMzk2MmRhMWU2ZTA2ZDQ5ZjE4MjJmZGNlZDVkLi45NGI3ZGM0OGY4OTU1N2U1NDdi
N2UxNDQ1NmRhN2ZiNjJjY2Y0Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdGFja0ZyYW1lLmNwcApAQCAtNTUsNyArNTUsNyBAQCBpbnRwdHJfdCBTdGFja0ZyYW1lOjpz
b3VyY2VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jaykKICAgICAgICAgcmV0dXJu
IG5vU291cmNlSUQ7Ci0gICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFi
bGUoKS0+c291cmNlSUQoKTsKKyAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5zb3VyY2VJRCgpOwogfQogCiBTdHJpbmcgU3RhY2tGcmFtZTo6c291cmNlVVJMKCkgY29u
c3QKQEAgLTY3LDcgKzY3LDcgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OnNvdXJjZVVSTCgpIGNvbnN0
CiAgICAgICAgIHJldHVybiAiW25hdGl2ZSBjb2RlXSJfczsKICAgICB9CiAKLSAgICBTdHJpbmcg
c291cmNlVVJMID0gbV9jb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VV
UkwoKTsKKyAgICBTdHJpbmcgc291cmNlVVJMID0gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5zb3VyY2VVUkwoKTsKICAgICBpZiAoIXNvdXJjZVVSTC5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIHNvdXJjZVVSTDsKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkIFN0YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVuc2lnbmVkJiBs
aW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25zdAogICAgIGludCB1bnVzZWRFbmRPZmZzZXQgPSAw
OwogICAgIG1fY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChtX2J5
dGVjb2RlT2Zmc2V0LCBkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVudXNlZEVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKIAotICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX2Nv
ZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKICAgICBpZiAoT3B0
aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBleGVjdXRhYmxlLT5vdmVycmlkZUxpbmVO
dW1iZXIoKm1fY29kZUJsb2NrLT52bSgpKSkKICAgICAgICAgbGluZSA9IG92ZXJyaWRlTGluZU51
bWJlci52YWx1ZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361482</attachid>
            <date>2019-02-07 18:08:25 -0800</date>
            <delta_ts>2019-02-08 15:34:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194419-20190207180824.patch</filename>
            <type>text/plain</type>
            <size>88293</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTA4ZmVhN2M1NzhhODIyYTdlODE5NGEyYjYyMjA1NTU1NDhhODM2Li4yMjI2YmExOTQ3MTRhYzNk
ZWRiMmNiNzJmMGRjMDY4MGFjOTg4OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTktMDItMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc2l6ZW9mKENvZGVCbG9jaykgbW9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmdXJ0
aGVyIHNocmlua3MgdGhlIHNpemUgb2YgQ29kZUJsb2NrLCBmcm9tIDM1MiB0byAyOTYgKDMwNCku
CisKKyAgICAgICAgMS4gQ29kZUJsb2NrIGNvcGllcyBzbyBtYW55IGRhdGEgZnJvbSBTY3JpcHRF
eGVjdXRhYmxlIGV2ZW4gaWYgU2NyaXB0RXhlY3V0YWJsZQorICAgICAgICBoYXMgdGhlIHNhbWUg
aW5mb3JtYXRpb24uIFRoZXNlIGRhdGEgaXMgbm90IHRvdWNoZWQgaW4gQ29kZUJsb2NrOjp+Q29k
ZUJsb2NrLAorICAgICAgICBzbyB3ZSBjYW4ganVzdCB1c2UgdGhlIGRhdGEgaW4gU2NyaXB0RXhl
Y3V0YWJsZSBpbnN0ZWFkIG9mIGhvbGRpbmcgaXQgaW4gQ29kZUJsb2NrLgorCisgICAgICAgIDIu
IFdlIHJlbW92ZSBtX2luc3RydWN0aW9ucyBwb2ludGVyIHNpbmNlIHRoZSBvd25lcnNoaXAgaXMg
bWFuYWdlZCBieSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICAgICAgQW5kIHdlIGRvIG5vdCB0b3Vj
aCBpdCBpbiBDb2RlQmxvY2s6On5Db2RlQmxvY2suCisKKyAgICAgICAgMy4gV2UgbW92ZSBtX2Nh
bGxlZVNhdmVSZWdpc3RlcnMgZnJvbSBDb2RlQmxvY2sgdG8gQ29kZUJsb2NrOjpKSVREYXRhLiBG
b3IgYmFzZWxpbmUgYW5kIExMSW50CisgICAgICAgIGNhc2VzLCB0aGlzIHBhdGNoIG9mZmVycyBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB3
aGljaCByZXR1cm5zCisgICAgICAgIHNpbmdsZXRvbiB0byBgY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqYCB1c2FibGUgZm9yIExMSW50IGFuZCBCYXNlbGluZSBKSVQgQ29kZUJsb2Nrcy4KKwor
ICAgICAgICA0LiBNb3ZlIG1fY2F0Y2hQcm9maWxlcyB0byBSYXJlRGF0YSBhbmQgbWF0ZXJpYWxp
emUgb25seSB3aGVuIG9wX2NhdGNoJ3Mgc2xvdyBwYXRoIGlzIGNhbGxlZC4KKworICAgICAgICA1
LiBEcm9wIG93bmVyU2NyaXB0RXhlY3V0YWJsZS4gb3duZXJFeGVjdXRhYmxlKCkgcmV0dXJucyBT
Y3JpcHRFeGVjdXRhYmxlKi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c291cmNlQ29kZUZvclRvb2xzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQXNzdW1pbmdKSVRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpk
dW1wU291cmNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0Q2Fs
bGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlQ2F0Y2hM
aXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3cp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5k
Q29sdW1uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuZXdSZXBsYWNlbWVudCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmNvbXB1dGVDYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Ompl
dHRpc29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVy
QW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omdl
dEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGlj
dGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlM
ZXhpY2FsQmluZGluZ1VwZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bGlkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzcGVjaWFsaXphdGlvbktpbmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmlzU3RyaWN0TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aXNDb25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Y29kZVR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25Ob3RJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc3RydWN0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3duZXJFeGVjdXRhYmxlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjp0aGlzUmVnaXN0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c291cmNlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaXJzdExpbmVDb2x1bW5PZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om93bmVyU2NyaXB0RXhlY3V0YWJsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0VGhpc1JlZ2lzdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZlUmVnaXN0ZXJz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29k
ZS9HbG9iYWxDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6R2xvYmFsQ29kZUJsb2NrOjpHbG9i
YWxDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtw
b2ludCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSUQgY29uc3QpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSURGb3JDYWxsRnJhbWUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjps
b2NhdGlvbiBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6ZXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjppc1N1
cHBvcnRlZEZvcklubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVFdmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAgKEpT
Qzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6
Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpj
YW5Vc2VPU1JFeGl0RnV6emluZyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OmV4ZWN1dGFibGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6
OnNhdmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6c2F2ZU9yQ29weUNhbGxl
ZVNhdmVzRm9yKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVT
dHViKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWdpbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6VW53
aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAg
ICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VJRCk6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uIGNvbnN0KToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zv
cik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlDYWxsZWVT
YXZlc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVy
cyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdp
dGhvdXRMaW5raW5nKToKKyAgICAgICAgKiBqaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogaml0L0pJVFdvcmts
aXN0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVOb3cpOgorICAgICAgICAqIGppdC9SZWdp
c3RlckF0T2Zmc2V0TGlzdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1JlZ2lz
dGVyQXRPZmZzZXRMaXN0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojph
dCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6YXBwZW5kU291cmNlVG9FcnJvcik6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2Nr
Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja0ZyYW1lOjpzb3VyY2VJRCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OnNv
dXJjZVVSTCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5k
Q29sdW1uIGNvbnN0KToKKwogMjAxOS0wMi0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IG1vcmUgZG9lc0dDKCkgZm9yIENoZWNrVHJhcHMsIEdldE1hcEJ1
Y2tldCwgYW5kIFN3aXRjaCBub2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOGU0Mjg4NDk5NWFkNmI4MTEw
M2EyYjQ0MmM4Njg0Y2RiNWQwMTFhLi4xMGI1ZTg4OTZiM2Y1Yzc5Y2MzMmYwYTNhNmU3NGJlNDg5
NjFmZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMDcgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgc2l6ZW9m
KENvZGVCbG9jaykgbW9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0NDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKToK
KwogMjAxOS0wMi0wNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAg
ICAgICAgT3ZlcmZsb3cgZWxlbWVudCBzY3JvbGxiYXIgaXMgbGlnaHQgZm9yIGRhcmsgbW9kZSBj
b250ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCBiNGYyMjhjY2E4Y2M1OWYxNzk4ZDExNTY2MTY5ZjA3OTgxZTg1ZDliLi41NDVlOTJiMDY0
NGYwYzkxMjdjNjYyMjQ1MTZjNmE4Y2I1ZmNiMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIENvZGVCbG9ja0hh
c2ggQ29kZUJsb2NrOjpoYXNoKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzaCkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpc1NhZmVUb0NvbXB1dGVIYXNoKCkpOwotICAgICAgICBtX2hhc2gg
PSBDb2RlQmxvY2tIYXNoKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lh
bGl6YXRpb25LaW5kKCkpOworICAgICAgICBtX2hhc2ggPSBDb2RlQmxvY2tIYXNoKG93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9oYXNoOwogfQpAQCAtMTU1LDkgKzE1NSw5IEBAIENvZGVCbG9ja0hhc2ggQ29kZUJs
b2NrOjpoYXNoKCkgY29uc3QKIENTdHJpbmcgQ29kZUJsb2NrOjpzb3VyY2VDb2RlRm9yVG9vbHMo
KSBjb25zdAogewogICAgIGlmIChjb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAg
cmV0dXJuIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2UoKS50b1VURjgoKTsKKyAgICAg
ICAgcmV0dXJuIG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKS50b1VURjgoKTsKICAgICAKLSAg
ICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSBzb3VyY2UoKTsKKyAgICBTb3VyY2VQcm92aWRl
ciogcHJvdmlkZXIgPSBzb3VyY2UoKS5wcm92aWRlcigpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFi
bGUoKSk7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkID0gZXhlY3V0
YWJsZS0+dW5saW5rZWRFeGVjdXRhYmxlKCk7CiAgICAgdW5zaWduZWQgdW5saW5rZWRTdGFydE9m
ZnNldCA9IHVubGlua2VkLT5zdGFydE9mZnNldCgpOwpAQCAtMTk1LDE1ICsxOTUsMTUgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRTdHJlYW0mIG91dCwgSklUQ29k
ZTo6SklUVHlwZSBqaXRUeXBlKQogICAgIG91dC5wcmludCgiLCAiLCBpbnN0cnVjdGlvbkNvdW50
KCkpOwogICAgIGlmICh0aGlzLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgJiYg
bV9zaG91bGRBbHdheXNCZUlubGluZWQpCiAgICAgICAgIG91dC5wcmludCgiIChTaG91bGRBbHdh
eXNCZUlubGluZWQpIik7Ci0gICAgaWYgKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5uZXZlcklu
bGluZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+bmV2ZXJJbmxpbmUoKSkKICAgICAg
ICAgb3V0LnByaW50KCIgKE5ldmVySW5saW5lKSIpOwotICAgIGlmIChvd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+bmV2ZXJPcHRpbWl6ZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+bmV2
ZXJPcHRpbWl6ZSgpKQogICAgICAgICBvdXQucHJpbnQoIiAoTmV2ZXJPcHRpbWl6ZSkiKTsKLSAg
ICBlbHNlIGlmIChvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+bmV2ZXJGVExPcHRpbWl6ZSgpKQor
ICAgIGVsc2UgaWYgKG93bmVyRXhlY3V0YWJsZSgpLT5uZXZlckZUTE9wdGltaXplKCkpCiAgICAg
ICAgIG91dC5wcmludCgiIChOZXZlckZUTE9wdGltaXplKSIpOwotICAgIGlmIChvd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQorICAgIGlmIChvd25lckV4ZWN1
dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQogICAgICAgICBvdXQucHJpbnQoIiAoRGlk
VHJ5VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlz
U3RyaWN0TW9kZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAgIGlmIChtX2RpZEZhaWxK
SVRDb21waWxhdGlvbikKICAgICAgICAgb3V0LnByaW50KCIgKEpJVEZhaWwpIik7CkBAIC0yMjYs
NyArMjI2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBTb3VyY2UoKQogCiB2b2lkIENvZGVCbG9j
azo6ZHVtcFNvdXJjZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFNjcmlwdEV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBvd25lclNjcmlwdEV4ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gb3duZXJFeGVjdXRhYmxlKCk7CiAgICAgaWYgKGV4ZWN1dGFibGUt
PmlzRnVuY3Rpb25FeGVjdXRhYmxlKCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOwogICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCkBAIC0yOTQsMjcgKzI5NCwxOSBA
QCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb3B5
UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jawogICAgICwgbV9kaWRGYWlsSklUQ29tcGlsYXRpb24o
ZmFsc2UpCiAgICAgLCBtX2RpZEZhaWxGVExDb21waWxhdGlvbihmYWxzZSkKICAgICAsIG1faGFz
QmVlbkNvbXBpbGVkV2l0aEZUTChmYWxzZSkKLSAgICAsIG1faXNDb25zdHJ1Y3RvcihvdGhlci5t
X2lzQ29uc3RydWN0b3IpCi0gICAgLCBtX2lzU3RyaWN0TW9kZShvdGhlci5tX2lzU3RyaWN0TW9k
ZSkKLSAgICAsIG1fY29kZVR5cGUob3RoZXIubV9jb2RlVHlwZSkKICAgICAsIG1fbnVtQ2FsbGVl
TG9jYWxzKG90aGVyLm1fbnVtQ2FsbGVlTG9jYWxzKQogICAgICwgbV9udW1WYXJzKG90aGVyLm1f
bnVtVmFycykKICAgICAsIG1fbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAob3RoZXIubV9udW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCkKICAgICAsIG1faGFzRGVidWdnZXJTdGF0ZW1lbnQoZmFsc2UpCiAg
ICAgLCBtX3N0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVEaXNhYmxlZCkKICAgICAsIG1fbnVtQnJl
YWtwb2ludHMoMCkKKyAgICAsIG1faW5zdHJ1Y3Rpb25Db3VudChvdGhlci5tX2luc3RydWN0aW9u
Q291bnQpCisgICAgLCBtX3Njb3BlUmVnaXN0ZXIob3RoZXIubV9zY29wZVJlZ2lzdGVyKQorICAg
ICwgbV9oYXNoKG90aGVyLm1faGFzaCkKICAgICAsIG1fdW5saW5rZWRDb2RlKCpvdGhlci52bSgp
LCB0aGlzLCBvdGhlci5tX3VubGlua2VkQ29kZS5nZXQoKSkKICAgICAsIG1fb3duZXJFeGVjdXRh
YmxlKCpvdGhlci52bSgpLCB0aGlzLCBvdGhlci5tX293bmVyRXhlY3V0YWJsZS5nZXQoKSkKICAg
ICAsIG1fdm0ob3RoZXIubV92bSkKLSAgICAsIG1faW5zdHJ1Y3Rpb25zKG90aGVyLm1faW5zdHJ1
Y3Rpb25zKQogICAgICwgbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyKG90aGVyLm1faW5zdHJ1Y3Rp
b25zUmF3UG9pbnRlcikKLSAgICAsIG1faW5zdHJ1Y3Rpb25Db3VudChvdGhlci5tX2luc3RydWN0
aW9uQ291bnQpCi0gICAgLCBtX3RoaXNSZWdpc3RlcihvdGhlci5tX3RoaXNSZWdpc3RlcikKLSAg
ICAsIG1fc2NvcGVSZWdpc3RlcihvdGhlci5tX3Njb3BlUmVnaXN0ZXIpCi0gICAgLCBtX2hhc2go
b3RoZXIubV9oYXNoKQotICAgICwgbV9zb3VyY2Uob3RoZXIubV9zb3VyY2UpCi0gICAgLCBtX3Nv
dXJjZU9mZnNldChvdGhlci5tX3NvdXJjZU9mZnNldCkKLSAgICAsIG1fZmlyc3RMaW5lQ29sdW1u
T2Zmc2V0KG90aGVyLm1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgICwgbV9jb25zdGFudFJl
Z2lzdGVycyhvdGhlci5tX2NvbnN0YW50UmVnaXN0ZXJzKQogICAgICwgbV9jb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24ob3RoZXIubV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24pCiAgICAgLCBtX2Z1bmN0aW9uRGVjbHMob3RoZXIubV9mdW5jdGlvbkRlY2xzKQpAQCAt
MzI4LDYgKzMyMCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrCiAgICAgQVNTRVJUKGhlYXAo
KS0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQobV9zY29wZVJlZ2lzdGVyLmlzTG9jYWwoKSk7
CiAKKyAgICBBU1NFUlQoc291cmNlKCkucHJvdmlkZXIoKSk7CiAgICAgc2V0TnVtUGFyYW1ldGVy
cyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIAogICAgIHZtLT5oZWFwLmNvZGVCbG9ja1Nl
dCgpLmFkZCh0aGlzKTsKQEAgLTM1MCw4ICszNDMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAg
ICAgfQogfQogCi1Db2RlQmxvY2s6OkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVk
IGZpcnN0TGluZUNvbHVtbk9mZnNldCkKK0NvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkKICAgICA6
IEpTQ2VsbCgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KCp2bSwgdGhpcywg
c2NvcGUtPmdsb2JhbE9iamVjdCgqdm0pKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQo
dHJ1ZSkKQEAgLTM2MSwyNCArMzUzLDE2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAg
LCBtX2RpZEZhaWxKSVRDb21waWxhdGlvbihmYWxzZSkKICAgICAsIG1fZGlkRmFpbEZUTENvbXBp
bGF0aW9uKGZhbHNlKQogICAgICwgbV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMKGZhbHNlKQotICAg
ICwgbV9pc0NvbnN0cnVjdG9yKHVubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0g
ICAgLCBtX2lzU3RyaWN0TW9kZSh1bmxpbmtlZENvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0g
ICAgLCBtX2NvZGVUeXBlKHVubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpKQogICAgICwgbV9u
dW1DYWxsZWVMb2NhbHModW5saW5rZWRDb2RlQmxvY2stPm51bUNhbGxlZUxvY2FscygpKQogICAg
ICwgbV9udW1WYXJzKHVubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCkpCiAgICAgLCBtX2hhc0Rl
YnVnZ2VyU3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9zdGVwcGluZ01vZGUoU3RlcHBpbmdNb2Rl
RGlzYWJsZWQpCiAgICAgLCBtX251bUJyZWFrcG9pbnRzKDApCisgICAgLCBtX3Njb3BlUmVnaXN0
ZXIodW5saW5rZWRDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkKICAgICAsIG1fdW5saW5rZWRD
b2RlKCp2bSwgdGhpcywgdW5saW5rZWRDb2RlQmxvY2spCiAgICAgLCBtX293bmVyRXhlY3V0YWJs
ZSgqdm0sIHRoaXMsIG93bmVyRXhlY3V0YWJsZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX2lu
c3RydWN0aW9ucygmdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpKQotICAgICwgbV9p
bnN0cnVjdGlvbnNSYXdQb2ludGVyKG1faW5zdHJ1Y3Rpb25zLT5yYXdQb2ludGVyKCkpCi0gICAg
LCBtX3RoaXNSZWdpc3Rlcih1bmxpbmtlZENvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpCi0gICAg
LCBtX3Njb3BlUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkKLSAg
ICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlUHJvdmlkZXIpKQotICAgICwgbV9zb3VyY2VPZmZz
ZXQoc291cmNlT2Zmc2V0KQotICAgICwgbV9maXJzdExpbmVDb2x1bW5PZmZzZXQoZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQorICAgICwgbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyKHVubGlua2VkQ29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5yYXdQb2ludGVyKCkpCiAgICAgLCBtX29zckV4aXRDb3Vu
dGVyKDApCiAgICAgLCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigwKQpAQCAtMzg4LDcgKzM3Miw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0CiAgICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NF
UlQobV9zY29wZVJlZ2lzdGVyLmlzTG9jYWwoKSk7CiAKLSAgICBBU1NFUlQobV9zb3VyY2UpOwor
ICAgIEFTU0VSVChzb3VyY2UoKS5wcm92aWRlcigpKTsKICAgICBzZXROdW1QYXJhbWV0ZXJzKHVu
bGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogICAgIAogICAgIHZtLT5oZWFwLmNv
ZGVCbG9ja1NldCgpLmFkZCh0aGlzKTsKQEAgLTQ2Miw3ICs0NDYsNyBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8mIHVu
bGlua2VkSGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRpb25IYW5kbGVyKGkpOwog
ICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gbV9yYXJlRGF0YS0+bV9leGNl
cHRpb25IYW5kbGVyc1tpXTsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxCeXRlY29kZVB0clRhZz4gY29kZVB0ciA9IG1faW5zdHJ1Y3Rpb25z
LT5hdCh1bmxpbmtlZEhhbmRsZXIudGFyZ2V0KS0+aXNXaWRlKCkKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+IGNvZGVQdHIgPSBpbnN0cnVjdGlv
bnMoKS5hdCh1bmxpbmtlZEhhbmRsZXIudGFyZ2V0KS0+aXNXaWRlKCkKICAgICAgICAgICAgICAg
ICAgICAgPyBMTEludDo6Z2V0V2lkZUNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+KG9wX2NhdGNoKQog
ICAgICAgICAgICAgICAgICAgICA6IExMSW50OjpnZXRDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPihv
cF9jYXRjaCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFu
ZGxlciwgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oY29kZVB0ci5y
ZXRhZ2dlZDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPigpKSk7CkBAIC00OTYsMTAgKzQ4MCw2IEBA
IGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiAhRU5BQkxF
KENfTE9PUCkKLSAgICBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKLSNlbmRpZgotCiAgICAgLy8gQm9va2tlZXAg
dGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0
PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVu
dHM7CiAKQEAgLTU0Myw3ICs1MjMsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICBicmVhazsgXAogICAgIH0KIAotICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiAq
bV9pbnN0cnVjdGlvbnMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5z
dHJ1Y3Rpb25zKCkpIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+
b3Bjb2RlSUQoKTsKICAgICAgICAgbV9pbnN0cnVjdGlvbkNvdW50ICs9IG9wY29kZUxlbmd0aHNb
b3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CkBAIC04MDUsNyArNzg1LDcg
QEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxl
cigpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJv
ZmlsZXIoKTsKIAotICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVy
IG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQorICAgIC8vIFNldCBv
cHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIGluc3RydWN0aW9ucyBpcyBpbml0aWFs
aXplZCwgc2luY2UgdGhlc2UKICAgICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAo
YW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBp
bnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9yZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGll
ci11cCkuCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwpAQCAtMTA5MSw3ICsxMDcxLDcgQEAg
dm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICBpZiAoaml0VHlwZSgpID09IEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspIHsKICAgICAgICAgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQ+JiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucyA9IG1fdW5saW5rZWRDb2RlLT5w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KHByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zW2ldKTsKKyAgICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlv
bnMoKS5hdChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CiAgICAgICAgICAgICBpZiAo
aW5zdHJ1Y3Rpb24tPmlzPE9wUHV0QnlJZD4oKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKTsKICAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xk
U3RydWN0dXJlSUQ7CkBAIC0xMjIxLDcgKzEyMDEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcygpCiAgICAgfTsKIAogICAgIGZvciAoc2l6ZV90IHNpemUgPSBw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIGNvbnN0IGF1dG8gY3VySW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy0+YXQo
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworICAgICAgICBjb25zdCBhdXRvIGN1cklu
c3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV0pOwogICAgICAgICBzd2l0Y2ggKGN1ckluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1
ckluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEodGhpcyk7CkBAIC0xNTI4LDYg
KzE1MDgsMTggQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5
dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKICAgICByZXR1cm4gMDsKIH0KIAor
dm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVl
U2F2ZVJlZ2lzdGVycykKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwor
fQorCit2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9w
dHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQoreworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBlbnN1cmVKSVREYXRhKGxvY2tl
cikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShyZWdpc3RlckF0T2Zmc2V0TGlzdCk7
Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKTsKQEAgLTE3MTYsMTQgKzE3MDgsMTYgQEAg
Q2FsbFNpdGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRl
eChDYWxsU2l0ZUluZGV4IG9yaWdpbmEKIAogdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2
ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNl
dCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlv
bnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rp
b25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIE9wQ2F0Y2ggb3AgPSBpbnN0cnVjdGlvbi0+
YXM8T3BDYXRjaD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wLm1ldGFkYXRhKHRoaXMpOwog
ICAgIGlmICghIW1ldGFkYXRhLm1fYnVmZmVyKSB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlIDogbV9jYXRjaFByb2ZpbGVz
KSB7CisgICAgICAgIGF1dG8qIHJhcmVEYXRhID0gbV9yYXJlRGF0YS5nZXQoKTsKKyAgICAgICAg
QVNTRVJUKHJhcmVEYXRhKTsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlIDogcmFyZURhdGEt
Pm1fY2F0Y2hQcm9maWxlcykgewogICAgICAgICAgICAgaWYgKHByb2ZpbGUuZ2V0KCkgPT0gbWV0
YWRhdGEubV9idWZmZXIpIHsKICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNzQ2LDcgKzE3NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZW5z
dXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29uc3QgT3BD
YXRjaAogICAgIC8vIHdlIGNhbiBhdm9pZCBwcm9maWxpbmcgdGhlbSBhbmQgZXh0cmFjdGluZyB0
aGVtIHdoZW4gZG9pbmcgT1NSIGVudHJ5CiAgICAgLy8gaW50byB0aGUgREZHLgogCi0gICAgYXV0
byBuZXh0T2Zmc2V0ID0gbV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KS5uZXh0KCku
b2Zmc2V0KCk7CisgICAgYXV0byBuZXh0T2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNv
ZGVPZmZzZXQpLm5leHQoKS5vZmZzZXQoKTsKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMg
PSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodGhpcywg
bmV4dE9mZnNldCk7CiAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOwog
ICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291
bnQoKSk7CkBAIC0xNzYyLDE2ICsxNzU2LDE3IEBAIHZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRj
aExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhjb25zdCBPcENhdGNoCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKICAgICAg
ICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tp
XS5vZmZzZXQoKTsKIAorICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKKwogICAgIC8v
IFRoZSBjb21waWxlciB0aHJlYWQgd2lsbCByZWFkIHRoaXMgcG9pbnRlciB2YWx1ZSBhbmQgdGhl
biBwcm9jZWVkIHRvIGRlcmVmZXJlbmNlIGl0CiAgICAgLy8gaWYgaXQgaXMgbm90IG51bGwuIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIGFsbCBhYm92ZSBzdG9yZXMgaGFwcGVuIGJlZm9yZSB0aGlzIHN0
b3JlIHNvCiAgICAgLy8gdGhlIGNvbXBpbGVyIHRocmVhZCByZWFkcyBmdWxseSBpbml0aWFsaXpl
ZCBkYXRhLgogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IAogCiAgICAgb3AubWV0YWRhdGEo
dGhpcykubV9idWZmZXIgPSBwcm9maWxlcy5nZXQoKTsKLQogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICBtX2NhdGNoUHJvZmlsZXMuYXBw
ZW5kKFdURk1vdmUocHJvZmlsZXMpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9jYXRjaFByb2Zp
bGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CiAgICAgfQogfQogCkBAIC0xNzk0LDcgKzE3
ODksNyBAQCB2b2lkIENvZGVCbG9jazo6cmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRl
KENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCkKIHVuc2lnbmVkIENvZGVCbG9jazo6bGluZU51
bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAg
ICByZXR1cm4gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmZpcnN0TGluZSgpICsgbV91bmxpbmtl
ZENvZGUtPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAg
cmV0dXJuIG93bmVyRXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKSArIG1fdW5saW5rZWRDb2RlLT5s
aW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCiB1bnNpZ25l
ZCBDb2RlQmxvY2s6OmNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQpAQCAtMTgxMSwxNCArMTgwNiwxNCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmNv
bHVtbk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogdm9p
ZCBDb2RlQmxvY2s6OmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNl
dCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0CiB7CiAgICAgbV91bmxp
bmtlZENvZGUtPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKLSAgICBkaXZv
dCArPSBtX3NvdXJjZU9mZnNldDsKKyAgICBkaXZvdCArPSBzb3VyY2VPZmZzZXQoKTsKICAgICBj
b2x1bW4gKz0gbGluZSA/IDEgOiBmaXJzdExpbmVDb2x1bW5PZmZzZXQoKTsKLSAgICBsaW5lICs9
IG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKTsKKyAgICBsaW5lICs9IG93bmVy
RXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKTsKIH0KIAogYm9vbCBDb2RlQmxvY2s6Omhhc09wRGVi
dWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbikKIHsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogKm1faW5zdHJ1Y3Rpb25zKSB7CisgICAgZm9yIChjb25z
dCBhdXRvJiBpdCA6IGluc3RydWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChpdC0+aXM8T3BEZWJ1
Zz4oKSkgewogICAgICAgICAgICAgaW50IHVudXNlZDsKICAgICAgICAgICAgIHVuc2lnbmVkIG9w
RGVidWdMaW5lOwpAQCAtMTg5Niw3ICsxODkxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmxpbmtJbmNv
bWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwgTExJbnRDYWxsTGlua0luZm8qIGluY28K
IAogQ29kZUJsb2NrKiBDb2RlQmxvY2s6Om5ld1JlcGxhY2VtZW50KCkKIHsKLSAgICByZXR1cm4g
b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPm5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKHNwZWNp
YWxpemF0aW9uS2luZCgpKTsKKyAgICByZXR1cm4gb3duZXJFeGVjdXRhYmxlKCktPm5ld1JlcGxh
Y2VtZW50Q29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKTsKIH0KIAogI2lmIEVOQUJM
RShKSVQpCkBAIC0xOTA1LDcgKzE5MDAsNyBAQCBDb2RlQmxvY2sqIENvZGVCbG9jazo6cmVwbGFj
ZW1lbnQoKQogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gdGhpcy0+Y2xhc3NJbmZv
KCp2bSgpKTsKIAogICAgIGlmIChjbGFzc0luZm8gPT0gRnVuY3Rpb25Db2RlQmxvY2s6OmluZm8o
KSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmNvZGVCbG9ja0ZvcihtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0
IDogQ29kZUZvckNhbGwpOworICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrRm9yKGlzQ29uc3RydWN0b3IoKSA/IENv
ZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiAKICAgICBpZiAoY2xhc3NJbmZvID09IEV2
YWxDb2RlQmxvY2s6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0xOTI1LDcgKzE5MjAsNyBA
QCBERkc6OkNhcGFiaWxpdHlMZXZlbCBDb2RlQmxvY2s6OmNvbXB1dGVDYXBhYmlsaXR5TGV2ZWwo
KQogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gdGhpcy0+Y2xhc3NJbmZvKCp2bSgp
KTsKIAogICAgIGlmIChjbGFzc0luZm8gPT0gRnVuY3Rpb25Db2RlQmxvY2s6OmluZm8oKSkgewot
ICAgICAgICBpZiAobV9pc0NvbnN0cnVjdG9yKQorICAgICAgICBpZiAoaXNDb25zdHJ1Y3Rvcigp
KQogICAgICAgICAgICAgcmV0dXJuIERGRzo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDYXBhYmlsaXR5
TGV2ZWwodGhpcyk7CiAgICAgICAgIHJldHVybiBERkc6OmZ1bmN0aW9uRm9yQ2FsbENhcGFiaWxp
dHlMZXZlbCh0aGlzKTsKICAgICB9CkBAIC0yMDA2LDcgKzIwMDEsNyBAQCB2b2lkIENvZGVCbG9j
azo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVvcHRpbWl6YXRp
b25Nb2RlIG1vZAogICAgICAgICAvLyBUaGlzIGFjY29tcGxpc2hlcyAoMSksIGFuZCBkb2VzIGl0
cyBvd24gYm9vay1rZWVwaW5nIGFib3V0IHdoZXRoZXIgaXQgaGFzIGFscmVhZHkgaGFwcGVuZWQu
CiAgICAgICAgIGlmICghaml0Q29kZSgpLT5kZmdDb21tb24oKS0+aW52YWxpZGF0ZSgpKSB7CiAg
ICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQuCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2VtZW50KCkgfHwgKHZtLmhlYXAuaXNDdXJy
ZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtlZChvd25lclNjcmlwdEV4ZWN1dGFibGUo
KSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8
fCAodm0uaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVy
RXhlY3V0YWJsZSgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjAzOCwxMSArMjAzMywxMSBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6
OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlIG1vZAogCiAgICAgLy8g
SmV0dGlzb24gY2FuIGhhcHBlbiBkdXJpbmcgR0MuIFdlIGRvbid0IHdhbnQgdG8gaW5zdGFsbCBj
b2RlIHRvIGEgZGVhZCBleGVjdXRhYmxlCiAgICAgLy8gYmVjYXVzZSB0aGF0IHdvdWxkIGFkZCBh
IGRlYWQgb2JqZWN0IHRvIHRoZSByZW1lbWJlcmVkIHNldC4KLSAgICBpZiAodm0uaGVhcC5pc0N1
cnJlbnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJs
ZSgpKSkKKyAgICBpZiAodm0uaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6Omlz
TWFya2VkKG93bmVyRXhlY3V0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhp
cyBhY2NvbXBsaXNoZXMgKDIpLgotICAgIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxs
Q29kZSh2bSwgYWx0ZXJuYXRpdmUoKSwgY29kZVR5cGUoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkp
OworICAgIG93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSh2bSwgYWx0ZXJuYXRpdmUoKSwg
Y29kZVR5cGUoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkpOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgaWYgKERGRzo6c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCkBAIC0yMTk2LDE1ICsyMTkx
LDE3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSBj
b25zdAogfQogCiAjaWYgIUVOQUJMRShDX0xPT1ApCi12b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVl
U2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQorY29uc3QgUmVn
aXN0ZXJBdE9mZnNldExpc3QqIENvZGVCbG9jazo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0
CiB7Ci0gICAgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3Rl
ckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisjaWYgRU5BQkxFKEpJVCkKKyAg
ICBpZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgeworICAgICAgICBpZiAoY29u
c3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVycyA9IGppdERhdGEtPm1fY2FsbGVlU2F2
ZVJlZ2lzdGVycy5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiByZWdpc3RlcnM7CisgICAgfQor
I2VuZGlmCisgICAgcmV0dXJuICZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVS
ZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0
T2Zmc2V0TGlzdCkKLXsKLSAgICBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBXVEZNb3ZlKHJlZ2lz
dGVyQXRPZmZzZXRMaXN0KTsKLX0KICAgICAKIHN0YXRpYyBzaXplX3Qgcm91bmRDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoc2l6ZV90IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CkBA
IC0yMjIwLDcgKzIyMTcsNyBAQCBzaXplX3QgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkKIAogc2l6ZV90IENvZGVCbG9jazo6Y2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkKIHsKLSAgICByZXR1cm4gcm91bmRDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMobV9jYWxsZWVTYXZlUmVnaXN0ZXJzLT5zaXplKCkp
OworICAgIHJldHVybiByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhjYWxs
ZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSk7CiB9CiAjZW5kaWYKIApAQCAtMjM5OCw3ICsyMzk1
LDcgQEAgYXV0byBDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRU
b1Jlb3B0aW1pemUoREZHOjpPU1JFeGl0U3RhdGUKIAogICAgIGJvb2wgZGlkVHJ5VG9FbnRlcklu
TG9vcCA9IGZhbHNlOwogICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5s
aW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZy
YW1lKSB7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5v
d25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CiAgICAgICAgICAgICBkaWRUcnlUb0VudGVySW5M
b29wID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNTU1LDcgKzI1
NTIsNyBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkKIAog
QXJyYXlQcm9maWxlKiBDb2RlQmxvY2s6OmdldEFycmF5UHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBhdXRvIGluc3RydWN0
aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIHN3aXRjaCAo
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKICNkZWZpbmUgQ0FTRShPcCkgXAogICAgIGNhc2Ug
T3A6Om9wY29kZUlEOiBcCkBAIC0yNjI5LDEwICsyNjI2LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1
cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2
ZU5vbkFyCiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7
CiAgICAgfSk7CiAKLSAgICBmb3IgKGF1dG8mIHByb2ZpbGVCdWNrZXQgOiBtX2NhdGNoUHJvZmls
ZXMpIHsKLSAgICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAgICB9KTsKKyAgICBpZiAoYXV0byog
cmFyZURhdGEgPSBtX3JhcmVEYXRhLmdldCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvZmls
ZUJ1Y2tldCA6IHJhcmVEYXRhLT5tX2NhdGNoUHJvZmlsZXMpIHsKKyAgICAgICAgICAgIHByb2Zp
bGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7
CisgICAgICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKQEAgLTI3NTMsNyArMjc1Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjpu
b3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiAgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZS0+
Y29udGFpbnMobG9ja2VyLCB1aWQpOwogICAgIH07CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGlu
c3RydWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25zKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0
cnVjdGlvbiA6IGluc3RydWN0aW9ucygpKSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAg
ICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CkBAIC0yODg4LDcgKzI4ODcsNyBAQCBTdHJp
bmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlcikKIAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBhdXRvIGluc3RydWN0aW9u
ID0gbV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGluc3RydWN0
aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIHN3aXRjaCAoaW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKIAogI2RlZmluZSBDQVNFKE9wKSBcCkBAIC0yOTQyLDcg
KzI5NDEsNyBAQCB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQogICAgICAgICB9CiAgICAgfQog
ICAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25z
KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9ucygpKSB7
CiAgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAg
ICAgICBpZiAoISFiYXNlbGluZUFsdGVybmF0aXZlKCktPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNl
dChpbnN0cnVjdGlvbi5vZmZzZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3Bf
Y2F0Y2ggfHwgb3Bjb2RlID09IG9wX2VudGVyKSB7CkBAIC0yOTk5LDEyICsyOTk4LDEyIEBAIGNv
bnN0IEluc3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjKQogewogICAgIGludCBvZmZzZXQgPSBieXRlY29kZU9mZnNldChwYyk7CiAg
ICAgaW50IHRhcmdldCA9IG1fdW5saW5rZWRDb2RlLT5vdXRPZkxpbmVKdW1wT2Zmc2V0KG9mZnNl
dCk7Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLT5hdChvZmZzZXQgKyB0YXJnZXQpLnB0cigp
OworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0cigpOwog
fQogCiBBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKLSAgICByZXR1
cm4gYXJpdGhQcm9maWxlRm9yUEMobV9pbnN0cnVjdGlvbnMtPmF0KGJ5dGVjb2RlT2Zmc2V0KS5w
dHIoKSk7CisgICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5
dGVjb2RlT2Zmc2V0KS5wdHIoKSk7CiB9CiAKIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0
aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCkBAIC0zMDU1LDcgKzMwNTQsNyBA
QCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxv
d1Byb2ZpbGVyKCkKICAgICAgICAgLy8gQmVjYXVzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyBp
cyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgYmFzaWMgYmxvY2ssIGZpbmRpbmcg
CiAgICAgICAgIC8vIHRoZSBuZXh0IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93IHdpbGwgZ2l2ZSB1
cyB0aGUgdGV4dCByYW5nZSBvZiBhIHNpbmdsZSBiYXNpYyBibG9jay4KICAgICAgICAgc2l6ZV90
IHN0YXJ0SWR4ID0gYnl0ZWNvZGVPZmZzZXRzW2ldOwotICAgICAgICBhdXRvIGluc3RydWN0aW9u
ID0gbV9pbnN0cnVjdGlvbnMtPmF0KHN0YXJ0SWR4KTsKKyAgICAgICAgYXV0byBpbnN0cnVjdGlv
biA9IGluc3RydWN0aW9ucygpLmF0KHN0YXJ0SWR4KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cpOwogICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wUHJvZmlsZUNvbnRyb2xGbG93
PigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwpA
QCAtMzA2MywxMSArMzA2MiwxMSBAQCB2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0Jv
dW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKICAgICAgICAgaW50IGJhc2ljQmxvY2tF
bmRPZmZzZXQ7CiAgICAgICAgIGlmIChpICsgMSA8IG9mZnNldHNMZW5ndGgpIHsKICAgICAgICAg
ICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOwotICAgICAgICAgICAg
YXV0byBlbmRJbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChlbmRJZHgpOworICAgICAg
ICAgICAgYXV0byBlbmRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGVuZElkeCk7CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBv
cF9wcm9maWxlX2NvbnRyb2xfZmxvdyk7CiAgICAgICAgICAgICBiYXNpY0Jsb2NrRW5kT2Zmc2V0
ID0gZW5kSW5zdHJ1Y3Rpb24tPmFzPE9wUHJvZmlsZUNvbnRyb2xGbG93PigpLm1fdGV4dE9mZnNl
dCAtIDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBiYXNpY0Jsb2NrRW5kT2Zmc2V0
ID0gbV9zb3VyY2VPZmZzZXQgKyBvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlKCkubGVu
Z3RoKCkgLSAxOyAvLyBPZmZzZXQgYmVmb3JlIHRoZSBjbG9zaW5nIGJyYWNlLgorICAgICAgICAg
ICAgYmFzaWNCbG9ja0VuZE9mZnNldCA9IHNvdXJjZU9mZnNldCgpICsgb3duZXJFeGVjdXRhYmxl
KCktPnNvdXJjZSgpLmxlbmd0aCgpIC0gMTsgLy8gT2Zmc2V0IGJlZm9yZSB0aGUgY2xvc2luZyBi
cmFjZS4KICAgICAgICAgICAgIGJhc2ljQmxvY2tTdGFydE9mZnNldCA9IHN0ZDo6bWluKGJhc2lj
QmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldCk7IC8vIFNvbWUgc3RhcnQgb2Zm
c2V0cyBtYXkgYmUgYXQgdGhlIGNsb3NpbmcgYnJhY2UsIGVuc3VyZSBpdCBpcyB0aGUgb2Zmc2V0
IGJlZm9yZS4KICAgICAgICAgfQogCkBAIC0zMDk1LDcgKzMwOTQsNyBAQCB2b2lkIENvZGVCbG9j
azo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgQmFzaWNCbG9ja0xvY2F0
aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdl
dEJhc2ljQmxvY2tMb2NhdGlvbihvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwg
YmFzaWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2NrRW5kT2Zmc2V0KTsKKyAgICAgICAgQmFz
aWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2bSgpLT5jb250cm9sRmxvd1By
b2ZpbGVyKCktPmdldEJhc2ljQmxvY2tMb2NhdGlvbihvd25lckV4ZWN1dGFibGUoKS0+c291cmNl
SUQoKSwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2NrRW5kT2Zmc2V0KTsKIAogICAg
ICAgICAvLyBGaW5kIGFsbCBmdW5jdGlvbnMgdGhhdCBhcmUgZW5jbG9zZWQgd2l0aGluIHRoZSBy
YW5nZTogW2Jhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldF0KICAgICAg
ICAgLy8gYW5kIGluc2VydCB0aGVzZSBmdW5jdGlvbnMnIHN0YXJ0L2VuZCBvZmZzZXRzIGFzIGdh
cHMgaW4gdGhlIGN1cnJlbnQgQmFzaWNCbG9ja0xvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDJiMzgwZGIyYmFiYmY1Yjk4NDhmM2QzMTU3
ZTQ1ODQ3ZmM4ZGJiMDguLmRiMmNkOTJjZjU1ZmY3YmNiNDNjZjJkYzU2NmUzNDU5NGE4ODgzMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEyMSw3
ICsxMjEsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJvdGVjdGVk
OgogICAgIENvZGVCbG9jayhWTSosIFN0cnVjdHVyZSosIENvcHlQYXJzZWRCbG9ja1RhZywgQ29k
ZUJsb2NrJiBvdGhlcik7Ci0gICAgQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqLCBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+JiYsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQg
Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKyAgICBDb2RlQmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwgSlNT
Y29wZSopOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIENvcHlQYXJzZWRCbG9ja1Rh
ZywgQ29kZUJsb2NrJiBvdGhlcik7CiAgICAgYm9vbCBmaW5pc2hDcmVhdGlvbihWTSYsIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU1Njb3Bl
Kik7CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemF0aW9uRnJvbUlzQ29uc3RydWN0
KG1faXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbkZyb21Jc0Nv
bnN0cnVjdChpc0NvbnN0cnVjdG9yKCkpOwogICAgIH0KIAogICAgIENvZGVCbG9jayogYWx0ZXJu
YXRpdmVGb3JKZXR0aXNvbigpOyAgICAKQEAgLTIxMSw4ICsyMTEsMTAgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lkIGR1bXBNYXRoSUNTdGF0cygpOwogCi0g
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQor
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmlz
U3RyaWN0TW9kZSgpOyB9CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZENvZGUtPmlzQ29uc3RydWN0b3IoKTsgfQogICAgIEVDTUFNb2RlIGVjbWFNb2Rl
KCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0
TW9kZTsgfQorICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZENvZGUtPmNvZGVUeXBlKCk7IH0KIAogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnNjcmlwdE1vZGUoKTsgfQogCkBAIC0y
MjEsNyArMjIzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBp
bmxpbmUgYm9vbCBpc0tub3duTm90SW1tZWRpYXRlKGludCBpbmRleCkKICAgICB7Ci0gICAgICAg
IGlmIChpbmRleCA9PSBtX3RoaXNSZWdpc3Rlci5vZmZzZXQoKSAmJiAhbV9pc1N0cmljdE1vZGUp
CisgICAgICAgIGlmIChpbmRleCA9PSB0aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSAmJiAhaXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAoaXNDb25z
dGFudFJlZ2lzdGVySW5kZXgoaW5kZXgpKQpAQCAtMjYzLDYgKzI2NSw3IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1v
cnBoaWNDYWxsTm9kZSwgQmFzaWNSYXdTZW50aW5lbE5vZGU8UG9seW1vcnBoaWNDYWxsTm9kZT4+
IG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmFy
ZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4gbV9wY1RvQ29kZU9yaWdpbk1hcDsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7
CiAgICAgICAgIEpJVENvZGVNYXAgbV9qaXRDb2RlTWFwOwogICAgIH07CiAKQEAgLTMyMCw2ICsz
MjMsOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNldFBD
VG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJik7CiAg
ICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKTsKIAorICAgIHZvaWQgc2V0
Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CisgICAgdm9pZCBzZXRDYWxsZWVTYXZl
UmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOworCiAgICAg
UmFyZUNhc2VQcm9maWxlKiBhZGRSYXJlQ2FzZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTsK
ICAgICBSYXJlQ2FzZVByb2ZpbGUqIHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGludCBieXRlY29kZU9mZnNldCk7CiAgICAgdW5zaWdu
ZWQgcmFyZUNhc2VQcm9maWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBpbnQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtMzc0LDcgKzM4MCw3IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gcmV0dXJuQWRkcmVz
cyAtIGluc3RydWN0aW9uc0JlZ2luOwogICAgIH0KIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3Ry
ZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiAqbV9pbnN0cnVjdGlvbnM7IH0KKyAg
ICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9CiAKICAgICBzaXplX3QgcHJlZGljdGVk
TWFjaGluZUNvZGVTaXplKCk7CiAKQEAgLTQyMCwxNSArNDI2LDEzIEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgdm9pZCBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlz
b25SZWFzb24sIFJlb3B0aW1pemF0aW9uTW9kZSA9IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBj
b25zdCBGaXJlRGV0YWlsKiA9IG51bGxwdHIpOwogICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBv
d25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5nZXQoKTsg
fQotICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGpzQ2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4obV9vd25lckV4ZWN1dGFibGUuZ2V0KCkp
OyB9CisgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9vd25lckV4ZWN1dGFibGUuZ2V0KCk7IH0KICAgICAKICAgICBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlKiBvd25lckVkZ2UoKSBjb25zdCB7IHJldHVybiBtX293bmVyRWRnZS5nZXQoKTsg
fQogCiAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQogCi0gICAgdm9pZCBzZXRU
aGlzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlcikgeyBtX3RoaXNSZWdpc3Rl
ciA9IHRoaXNSZWdpc3RlcjsgfQotICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3RoaXNSZWdpc3RlcjsgfQorICAgIFZpcnR1YWxSZWdpc3RlciB0aGlz
UmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVyKCk7
IH0KIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
dXNlc0V2YWwoKTsgfQogCkBAIC00NDMsMTEgKzQ0Nyw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gbV9zY29wZVJlZ2lzdGVyOwogICAgIH0KICAg
ICAKLSAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29kZVR5cGU+KG1fY29kZVR5cGUpOwotICAgIH0KLQogICAgIFB1dFByb3Bl
cnR5U2xvdDo6Q29udGV4dCBwdXRCeUlkQ29udGV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoY29kZVR5cGUoKSA9PSBFdmFsQ29kZSkKQEAgLTQ1NSw5ICs0NTQsOSBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIFB1dFByb3BlcnR5U2xvdDo6
UHV0QnlJZDsKICAgICB9CiAKLSAgICBTb3VyY2VQcm92aWRlciogc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICB1bnNpZ25lZCBzb3VyY2VPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZU9mZnNldDsgfQotICAgIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVt
bk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0OyB9CisgICAg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFi
bGUtPnNvdXJjZSgpOyB9CisgICAgdW5zaWduZWQgc291cmNlT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7IH0KKyAgICB1bnNp
Z25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0
YWJsZS0+c3RhcnRDb2x1bW4oKTsgfQogCiAgICAgc2l6ZV90IG51bWJlck9mSnVtcFRhcmdldHMo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpOyB9
CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRDb2RlLT5qdW1wVGFyZ2V0KGluZGV4KTsgfQpAQCAtNjYyLDEwICs2NjEsNyBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNvdW50UmVvcHRpbWl6YXRp
b24oKTsKIAogI2lmICFFTkFCTEUoQ19MT09QKQotICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lz
dGVycyhSZWdpc3RlclNldCk7Ci0gICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6
dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOwotCi0gICAgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVNhdmVS
ZWdpc3RlcnMuZ2V0KCk7IH0KKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVl
U2F2ZVJlZ2lzdGVycygpIGNvbnN0OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJ
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB7IHJldHVybiBSZWdpc3RlclNldDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKS5udW1iZXJPZlNldFJlZ2lzdGVycygpOyB9
CiAgICAgc3RhdGljIHNpemVfdCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzKCk7CkBAIC04MzQsOSArODMwLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgYm9vbCBtX2RpZEZhaWxKSVRDb21waWxhdGlvbiA6IDE7CiAgICAgYm9v
bCBtX2RpZEZhaWxGVExDb21waWxhdGlvbiA6IDE7CiAgICAgYm9vbCBtX2hhc0JlZW5Db21waWxl
ZFdpdGhGVEwgOiAxOwotICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKLSAgICBib29sIG1f
aXNTdHJpY3RNb2RlIDogMTsKLSAgICB1bnNpZ25lZCBtX2NvZGVUeXBlIDogMjsgLy8gQ29kZVR5
cGUKIAogICAgIC8vIEludGVybmFsIG1ldGhvZHMgZm9yIHVzZSBieSB2YWxpZGF0aW9uIGNvZGUu
IEl0IHdvdWxkIGJlIHByaXZhdGUgaWYgaXQgd2Fzbid0CiAgICAgLy8gZm9yIHRoZSBmYWN0IHRo
YXQgd2UgdXNlIGl0IGZyb20gYW5vbnltb3VzIG5hbWVzcGFjZXMuCkBAIC04NTIsNiArODQ1LDgg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1w
bGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1
bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxl
czsKKwogICAgICAgICBEaXJlY3RFdmFsQ29kZUNhY2hlIG1fZGlyZWN0RXZhbENvZGVDYWNoZTsK
ICAgICB9OwogCkBAIC05NDIsOCArOTM3LDExIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogCiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7Ci0g
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKKyAgICAg
ICAgICAgIGF1dG8gcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAg
ICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBi
ZSB0b3VjaGVkIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIG1fcmFyZURhdGEg
PSBXVEZNb3ZlKHJhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgaW5zZXJ0
QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKCk7CkBAIC05NjIsMjgg
Kzk2MCwxOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIG1fbnVtQnJlYWtwb2ludHMgOiAzMDsKICAgICAgICAgfTsKICAgICB9OwotICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGU7Ci0gICAgV3Jp
dGVCYXJyaWVyPEV4ZWN1dGFibGVCYXNlPiBtX293bmVyRXhlY3V0YWJsZTsKLSAgICBXcml0ZUJh
cnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9vd25lckVkZ2U7Ci0gICAgVk0qIG1f
dm07Ci0KLSAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSogbV9pbnN0cnVjdGlvbnM7Ci0gICAg
Y29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIHVu
c2lnbmVkIG1faW5zdHJ1Y3Rpb25Db3VudCB7IDAgfTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90
aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKICAgICBt
dXRhYmxlIENvZGVCbG9ja0hhc2ggbV9oYXNoOwogCi0gICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiBtX3NvdXJjZTsKLSAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKLSAgICB1bnNpZ25lZCBt
X2ZpcnN0TGluZUNvbHVtbk9mZnNldDsKKyAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRDb2RlQmxv
Y2s+IG1fdW5saW5rZWRDb2RlOworICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBt
X293bmVyRXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4gbV9vd25lckVkZ2U7CisgICAgVk0qIG1fdm07CiAKKyAgICBjb25zdCB2b2lkKiBtX2lu
c3RydWN0aW9uc1Jhd1BvaW50ZXIgeyBudWxscHRyIH07CiAgICAgU2VudGluZWxMaW5rZWRMaXN0
PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5m
bz4+IG1faW5jb21pbmdMTEludENhbGxzOwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9s
bGludEdldEJ5SWRXYXRjaHBvaW50TWFwOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7
Ci0jaWYgIUVOQUJMRShDX0xPT1ApCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0PiBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklUKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVREYXRhPiBtX2ppdERhdGE7CiAjZW5kaWYKQEAgLTk5Myw3
ICs5ODIsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb21wcmVz
c2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIgbV9sYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZXM7CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50
VmFsdWVQcm9maWxlczsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29s
CiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVy
X1Vua25vd24pOwpAQCAtMTAxMCw2ICs5OTgsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKIAogICAgIEJhc2VsaW5lRXhlY3V0aW9uQ291bnRlciBtX2ppdEV4ZWN1dGVDb3Vu
dGVyOwogICAgIHVpbnQzMl90IG1fb3NyRXhpdENvdW50ZXI7CisKICAgICB1aW50MTZfdCBtX29w
dGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICB1aW50MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXZhbENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2Rl
QmxvY2suaAppbmRleCBlNTY4YThkZWYwMzQxYTE4ZTg0OTA1YjI3N2ZhMWU3ODkzMTE3Zjg1Li5i
OWYyOGQwMmM3MTQyOTQ3ZDk4MWNiMDdhOWM1NTIyYTA4MWZhNzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKQEAgLTUyLDExICs1MiwxMCBA
QCBjbGFzcyBFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAKLSAgICBzdGF0aWMgRXZhbENvZGVCbG9j
ayogY3JlYXRlKFZNKiB2bSwgRXZhbEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2Nv
cGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlcikKKyAgICBzdGF0aWMg
RXZhbENvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRXZhbEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSog
c2NvcGUpCiAgICAgewogICAgICAgICBFdmFsQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxDb2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAgICAg
IEV2YWxDb2RlQmxvY2sodm0sIHZtLT5ldmFsQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25l
ckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92
aWRlcikpOworICAgICAgICAgICAgRXZhbENvZGVCbG9jayh2bSwgdm0tPmV2YWxDb2RlQmxvY2tT
dHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3Bl
KTsKICAgICAgICAgaWYgKCFpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtLCBvd25lckV4ZWN1
dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwpAQCAtNzUsOSArNzQsOCBAQCBjbGFzcyBF
dmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgewogICAg
IH0KICAgICAgICAgCi0gICAgRXZhbENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBFdmFsRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyKQotICAgICAgICA6IEdsb2JhbENvZGVCbG9j
ayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29w
ZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIDAsIDEpCisgICAgRXZhbENvZGVCbG9jayhWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFdmFsRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29w
ZSkKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCmluZGV4
IGNjY2I1YzU1M2QzN2E3ZWM4NzlkY2IxZWQ1NDJlOWUyNzdkODgxODIuLjg1M2ZhZTk1ZGUzYWEy
ODQyY2QwYzc2NThhNTZkMTNhOTk1MGVlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCkBAIC01MywxMSArNTMsMTAgQEAgY2xh
c3MgRnVuY3Rpb25Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgQ29kZUJsb2NrIHsKICAgICAgICAg
cmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVCbG9jayog
Y3JlYXRlKFZNKiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwK
LSAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25l
ZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBzdGF0
aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewogICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvZGVCbG9jaz4o
dm0tPmhlYXApKQotICAgICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLT5mdW5jdGlv
bkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVC
bG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0
TGluZUNvbHVtbk9mZnNldCk7CisgICAgICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0t
PmZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlu
a2VkQ29kZUJsb2NrLCBzY29wZSk7CiAgICAgICAgIGlmICghaW5zdGFuY2UtPmZpbmlzaENyZWF0
aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKQEAgLTc0
LDkgKzczLDggQEAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgQ29kZUJs
b2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Db2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29w
ZSwKLSAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAg
ICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VPZmZzZXQsIGZp
cnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBGdW5jdGlvbkNvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBGdW5jdGlvbkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3Bl
KQorICAgICAgICA6IENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaAppbmRleCBhN2EzMDY3Yjg2
N2M3NzM5NGM2ZGE1ZjdkN2MyYzQwN2JkODhmMDE4Li5lMTFiNzkwNTIwYzgzZGI3MWVmYzMyMjkw
MTEzMTIxY2MyYmJmYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2xvYmFsQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dsb2JhbENvZGVCbG9jay5oCkBAIC00NSw4ICs0NSw4IEBAIGNsYXNzIEdsb2JhbENvZGVCbG9j
ayA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAgIHsKICAgICB9CiAKLSAgICBHbG9iYWxDb2RlQmxv
Y2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUq
IHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVk
IHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQotICAgICAgICA6
IENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJs
b2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIHNvdXJjZU9mZnNldCwgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KQorICAgIEdsb2JhbENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCisgICAgICAgIDogQ29k
ZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ss
IHNjb3BlKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKaW5kZXggNDY3YjNkNTZkMDM4
MWY0OTIwOTY3ODMyOGRhMmI5Njc3ODYxNGIwNC4uMjM1NTZjZDFjNWI5ODAwZGFmZmM2MjA5NmFj
ZmM3ZTM2MmNiNDVkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCkBAIC01MywxMSArNTMsMTAgQEAgY2xhc3Mg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgc3RhdGljIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssCi0gICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYg
c291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBzdGF0
aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewogICAgICAgICBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sodm0sIHZtLT5tb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdl
dCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShz
b3VyY2VQcm92aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CisgICAgICAgICAgICBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+bW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVy
ZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAg
ICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CkBAIC03NCw5ICs3Myw4IEBAIGNsYXNzIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB7CiAg
ICAgfQogCi0gICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Nj
b3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZt
LCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBX
VEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCisgICAgICAgIDog
R2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRD
b2RlQmxvY2ssIHNjb3BlKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKaW5kZXggZThiYTMwZmU1YmNjZjIy
OWM1YzdiN2M3YzE0Yjc3ZmRhN2I3Nzc3Ni4uZWI3OTVmZDM4ZTcwODBlNTI5MGNjYjQwMTljZjFm
YTcxNjkxZjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b2dyYW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJv
Z3JhbUNvZGVCbG9jay5oCkBAIC01MywxMSArNTMsMTAgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
ayBmaW5hbCA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7CiAgICAgfQogCi0gICAgc3RhdGljIFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0s
IFByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVt
bk9mZnNldCkKKyAgICBzdGF0aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgUHJv
Z3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCiAgICAgewogICAgICAgICBQcm9n
cmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb2dy
YW1Db2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sodm0s
IHZtLT5wcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIGZpcnN0TGlu
ZUNvbHVtbk9mZnNldCk7CisgICAgICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+cHJv
Z3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigq
dm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CkBAIC03NCw5ICs3
Myw4IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgR2xvYmFsQ29kZUJs
b2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3Bl
KiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25l
ZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBz
dHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZN
b3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIFByb2dy
YW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvZ3JhbUV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgSlNTY29wZSogc2NvcGUpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBz
dHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKQogICAg
IHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAKaW5kZXggNDBjMTM3MjhlYWVmOWQ5ZDk2ZWQwZmUwYmVjNmFiM2EwODA1ZTk3OS4uMDlhNmRl
ZDk2ZTA3N2UzNGM0NGQwN2FkOTNlZmExNmE3MGM4NjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBEZWJ1
Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYg
YnJlYWtwb2ludCwgQnIKIHsKICAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CiAKLSAg
ICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKTsKIAogICAgIFNvdXJjZUlEIHNvdXJjZUlEID0gc3RhdGljX2Nh
c3Q8U291cmNlSUQ+KGV4ZWN1dGFibGUtPnNvdXJjZUlEKCkpOwogICAgIGlmIChicmVha3BvaW50
LnNvdXJjZUlEICE9IHNvdXJjZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggYjMwYTg2MjVkMjNlZTA2OWM2NzQ3
MDcyNTczYzcyN2Y1ZWIyZDIyYS4uZTlkZmJjMmMwODg3MjVkMWQ3MDY1NDhhNGMxMWI1NzdmOGI0
NWRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU291cmNlSUQgRGVidWdnZXJDYWxs
RnJhbWU6OnNvdXJjZUlEKCkgY29uc3QKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG5vU291cmNlSUQ7CiAgICAgaWYgKGlzVGFpbERlbGV0ZWQoKSkKLSAgICAgICAgcmV0dXJu
IG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCk7CisgICAgICAgIHJldHVybiBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwogICAgIHJldHVybiBzb3VyY2VJREZv
ckNhbGxGcmFtZShtX3ZhbGlkTWFjaGluZUZyYW1lKTsKIH0KIApAQCAtMzE2LDcgKzMxNiw3IEBA
IFNvdXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJREZvckNhbGxGcmFtZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBub1NvdXJjZUlE
OwotICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VJ
RCgpOworICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCBiMWU3YWVjNTRkMmQwNzY0ZDE0Zjk2ZGYx
MmYwNGM3OTYwYTVkZTM5Li4yZjM0NDExYjQ3YTE4N2QyMGVmMmM0ZjExZThhOWIzMmU3MGFmZWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
Y3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgRGVidWdnZXJMb2NhdGlvbiBEZWJ1Z2dlclNjb3BlOjps
b2NhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBEZWJ1
Z2dlckxvY2F0aW9uKCk7CiAKLSAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29k
ZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKICAgICByZXR1cm4gRGVi
dWdnZXJMb2NhdGlvbihleGVjdXRhYmxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBjMjM3ODU1NGExZmNhN2U5NTcyMTUw
MmRjODEyNWFlMWJkNGZmM2ViLi5kNDY4MzRmYzBlN2IxZDJhNzc2MThlMTliM2IyNTg3YWViMDZh
ZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAg
ICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBt
X2lubGluZUNhbGxGcmFtZTsKICAgICAgICAgCi0gICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUoKSB7IHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7
IH0KKyAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSgpIHsgcmV0dXJuIG1fY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsgfQogICAgICAgICAKICAgICAgICAgUXVlcnlhYmxl
RXhpdFByb2ZpbGUgbV9leGl0UHJvZmlsZTsKICAgICAgICAgCkBAIC0xNTA0LDcgKzE1MDQsNyBA
QCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxl
ZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAgIFZFUkJPU0VfTE9HKCIgICAgTWlnaHQgaW5s
aW5lIGZ1bmN0aW9uOiAiLCBtaWdodElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywgc3BlY2lh
bGl6YXRpb25LaW5kKSwgIlxuIik7CiAgICAgVkVSQk9TRV9MT0coIiAgICBNaWdodCBjb21waWxl
IGZ1bmN0aW9uOiAiLCBtaWdodENvbXBpbGVGdW5jdGlvbkZvcihjb2RlQmxvY2ssIHNwZWNpYWxp
emF0aW9uS2luZCksICJcbiIpOwogICAgIFZFUkJPU0VfTE9HKCIgICAgSXMgc3VwcG9ydGVkIGZv
ciBpbmxpbmluZzogIiwgaXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhjb2RlQmxvY2spLCAiXG4iKTsK
LSAgICBWRVJCT1NFX0xPRygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2Nr
LT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsK
KyAgICBWRVJCT1NFX0xPRygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICBp
ZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIFZFUkJPU0VfTE9HKCIg
ICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CkBAIC03MDk0LDcgKzcwOTQsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgIiAiLCBpbmxpbmVD
YWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAgICAgfQogICAgICAgICBkYXRhTG9nKAot
ICAgICAgICAgICAgIiwgaXNTdHJpY3RNb2RlID0gIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCksICJcbiIpOworICAgICAgICAgICAgIiwgaXNTdHJp
Y3RNb2RlID0gIiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCks
ICJcbiIpOwogICAgICAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNv
ZGUoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKaW5kZXggNDA1MzM2Mzg0MjY2Y2ZjNjZlZTQzN2VkM2M1MTgwYzk3ZGFhNWUw
MC4uNzg1MjEwMzA3MGY5MDYzNjBhYmM0NDg0N2I4Yzg1NzU2YjM0YjdiMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDQsMzIgKzQ0LDMy
IEBAIGJvb2wgaXNTdXBwb3J0ZWQoKQogCiBib29sIGlzU3VwcG9ydGVkRm9ySW5saW5pbmcoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJTY3JpcHRF
eGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKTsKKyAgICByZXR1cm4gY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpOwogfQogCiBib29sIG1p
Z2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgcmV0dXJuIGlzU3Vw
cG9ydGVkKCkKICAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0
aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQotICAg
ICAgICAmJiBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6
ZSgpOworICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRp
bWl6ZSgpOwogfQogYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewogICAgIHJldHVybiBpc1N1cHBvcnRlZCgpCiAgICAgICAgICYmIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50KCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1
dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKKyAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsKIH0KIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rp
b25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHJldHVybiBpc1N1cHBvcnRl
ZCgpCiAgICAgICAgICYmIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6
Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkKLSAgICAgICAg
JiYgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUoKTsK
KyAgICAgICAgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNPa1RvT3B0aW1pemUo
KTsKIH0KIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiB7CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkKCkKICAgICAgICAgJiYgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQotICAgICAgICAmJiBjb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOworICAgICAgICAmJiBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOwogfQogCiBib29sIG1pZ2h0SW5s
aW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtODksNyArODksNyBA
QCBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB9CiBib29sIGNhblVzZU9TUkV4aXRGdXp6aW5nKENvZGVCbG9jayogY29kZUJsb2NrKQog
ewotICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5jYW5Vc2VP
U1JFeGl0RnV6emluZygpOworICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5jYW5Vc2VPU1JFeGl0RnV6emluZygpOwogfQogCiBzdGF0aWMgYm9vbCB2ZXJib3NlQ2FwYWJp
bGl0aWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAxNTFmNTczNmM3
YWM3MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViLi5iMTRlOTExODc1YjUyNDkzZTY5NGEyNzAy
OTE0NzAzOTM3YjE3YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00
MTcsOSArNDE3LDkgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewog
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAg
ICAgICAgIHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7CisgICAg
ICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogICAgICAgICAK
LSAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2stPm93bmVy
U2NyaXB0RXhlY3V0YWJsZSgpOworICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5iYXNl
bGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiAgICAgfQogICAgIAogICAgIFNjcmlw
dEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZmNi
ZDUzYjgyYjViYmM0MmI1OTFhZjcxZWJmZDk5ZTg1Zjg1Mzc1Yi4uMjM0NDRmNDNjN2JkODc2YWMy
Njk1NDUzYzIzZjI2NTViYjk0MmYwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oKQogICAgICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4o
MCkpOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1f
c3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlv
bihtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
IG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2Vw
dGlvbihtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJp
dHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
ICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggMWZmZmI3MDE2MDRmNTFjMDkyZDkzNjc1MmY2
NDI2YmVhNzE2NTk4OC4uZDFmNjlhYjRkZGJhMDZjMzkwZDBhYTU4NWRlN2M1YWVmYmE3OWRkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbgogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2
bSk7CiAgICAgCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXgpCi0gICAgICAgIGNvZGVCbG9jay0+b3du
ZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNldERpZFRyeVRvRW50ZXJJbkxvb3AodHJ1ZSk7CisgICAg
ICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNldERpZFRyeVRvRW50ZXJJbkxvb3Ao
dHJ1ZSk7CiAgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRG
R0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRDb2RlOjpGVExKSVQpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRy
eShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluCiAKICAgICAvLyA2KSBDb3B5IG91ciBjYWxsZWUgc2F2ZXMgdG8gYnVmZmVyLgogI2lmIE5V
TUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgIFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiByZWdpc3RlclNhdmVMb2NhdGlvbnMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogcmVnaXN0ZXJTYXZlTG9jYXRp
b25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpOwogICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJz
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAxYWVk
ZWY2ODcwNGIyMzI2ZTQ0YzFmZjBjZWQ2MmJkMDAyZTRjMTU2Li4wZDZlNjkzMGFiMTMxN2Y1YmU2
NTlkZDZiOWNhYjI4YWQxYjA5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVz
Rm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEFTU0VS
VChjb2RlQmxvY2spOwogCi0gICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0g
Y29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CiAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdp
c3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CiAgICAg
dW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CiAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNr
KCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
Y2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25z
dCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBS
cygpKTsKICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsK
IApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0Zv
cihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlyCiAgICAgRnJhbWUg
ZnJhbWUoY29udGV4dC5mcCgpLCBjb250ZXh0LnN0YWNrKCkpOwogICAgIEFTU0VSVChjb2RlQmxv
Y2spOwogCi0gICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2Nr
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgUmVn
aXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3Rh
Y2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CiAgICAgdW5zaWduZWQgcmVn
aXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCBjMWFi
ODQ2OGE1MGNiYzUzMWUyYmY5M2JiNzRiMTE1NmRhMmU5NDIyLi5mZDZmZGI1M2UzNmFjNTRjN2Q4
NDJhNDFiNTRhNzgwYjkzNDkzYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZv
aWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2Um
IGV4aXQpCiAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpOb25aZXJvLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKAotICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmJh
c2VsaW5lQ29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+YWRkcmVzc09mRGlkVHJ5
VG9FbnRlckluTG9vcCgpKSkpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUt
PmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+YWRkcmVzc09mRGlkVHJ5VG9F
bnRlckluTG9vcCgpKSkpOwogICAgIH0KICAgICAKICAgICBqaXQubW92ZSgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDIyNzUwYjc5OTdhZjljOWE2
YjBlZWEzYTVhY2ZjZWQxNDU4YzdmMmUuLjk4NGZjMGI5NjFlNTAwOTU0ZDZkZjBjNGE5ZDNhNjc3
NzQ5ZWFhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cApAQCAtMzAyMyw3ICszMDIzLDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJp
Z2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2QKICAgICAKICAg
ICBib29sIGRpZFRyeVRvRW50ZXJJbnRvSW5saW5lZExvb3BzID0gZmFsc2U7CiAgICAgZm9yIChJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGV4aXQtPm1fY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2Fs
bEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+
ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJh
c2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgp
KSB7CiAgICAgICAgICAgICBkaWRUcnlUb0VudGVySW50b0lubGluZWRMb29wcyA9IHRydWU7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcAppbmRleCAxM2I5NzM5MGRiYWNiMDAzYzI3ZDdlNjU2MTAwMWZmNTZjNDNiNjdlLi5jNjdl
N2EwMDA4YzdlMDM5NGM4YjhlN2U5MjliYzhiMjhkZmZiYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFRvRlRMRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENvbXBsZXRlKAogICAgIH0KICAgICAKICAg
ICBpZiAocmVzdWx0ID09IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkKLSAgICAgICAgY29kZUJsb2Nr
LT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29kZUJsb2NrKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29kZUJsb2NrKTsK
ICAgICAKICAgICBwcm9maWxlZERGR0NvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+c2V0T3B0
aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KAogICAgICAgICBwcm9m
aWxlZERGR0NvZGVCbG9jaywgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxZmYwYzMzN2RhOGM5NWNlOTRjNTZmOGViZTNhOWI2
YTRlNGRhYjE1Li41MzU3MjEyOTY5MjVhOTAwOTA0MmYxMTEwNDhhOTk4NmY4YjdkMjIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC00MDUs
NyArNDA1LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAg
ICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAgICAgCi0gICAgaWYgKFVOTElLRUxZ
KGdyYXBoLm1fY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+bmV2ZXJGVExPcHRp
bWl6ZSgpKSkgeworICAgIGlmIChVTkxJS0VMWShncmFwaC5tX2NvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPm5ldmVyRlRMT3B0aW1pemUoKSkpIHsKICAgICAgICAgaWYgKHZlcmJvc2VDYXBh
YmlsaXRpZXMoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZUTCByZWplY3RpbmcgIiwgKmdyYXBo
Lm1fY29kZUJsb2NrLCAiIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFzIG5ldmVyIEZUTCBjb21waWxl
LlxuIik7CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKaW5kZXggM2ZjYTExZTIzOWY0ZmNmZTI5YzI1ZTlmNGFmYTI5ZDAwNTA5
ZjY1Yy4uMzYxYzZhZTk0ZmViNjEyM2E1YTZiMDliMjlhNGRhYzQwODhkMzk5MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJp
dHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKSk7CisgICAgICAgICAgICBsaW5rQnVm
ZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNv
ZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6
IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKSk7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5r
KGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKTsK
ICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRy
PEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUo
KSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0ZS5n
ZW5lcmF0ZWRGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHAKaW5kZXggOGFkZmZhMGFmMzg2ZjlmNTZmODk3MGJhOTRhNGMzYmJk
ZjY2ZWI0MC4uMjE4ZWNjNzlmYTJkYjFkOTNjNTA5Y2IyNmFkOGM5MmFmYzNiZTNjMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAt
NDE5LDcgKzQxOSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgIGppdC5jaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudCgpOwogCiAgICAgUmVnaXN0ZXJTZXQgYWxsRlRMQ2FsbGVlU2F2
ZXMgPSBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBiYXNlbGluZUNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFz
ZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCk7CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNl
dDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVnaXN0ZXJTZXQgdm1DYWxs
ZWVTYXZlc1RvU2tpcCA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgIGlmIChl
eGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CkBAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
LT5pbmRleE9mKHJlZyk7Ci0gICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0
ZXJPZmZzZXQgPSBiYXNlbGluZUNhbGxlZVNhdmVzLT5maW5kKHJlZyk7CisgICAgICAgIGNvbnN0
IFJlZ2lzdGVyQXRPZmZzZXQqIGJhc2VsaW5lUmVnaXN0ZXJPZmZzZXQgPSBiYXNlbGluZUNhbGxl
ZVNhdmVzLT5maW5kKHJlZyk7CiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQqIHZtQ2FsbGVlU2F2
ZSA9IG51bGxwdHI7IAogICAgICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKICAg
ICAgICAgICAgIHZtQ2FsbGVlU2F2ZSA9IHZtQ2FsbGVlU2F2ZXMtPmZpbmQocmVnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKaW5kZXggNDU0
MjM5NjY4MDQ1Njk3NGM4MDVhMjI4Njg0NmM2M2Y5NDdhZTFmNS4uMjU2YTMzYjVkNjEzYmY0MmU4
MmMzYjY5M2NjYzZhMzFlMTNjYjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTI1MywxNCArMjUzLDE0IEBAIFNvdXJjZU9yaWdp
biBDYWxsRnJhbWU6OmNhbGxlclNvdXJjZU9yaWdpbigpCiAgICAgICAgICAgICAvLyBJbiB0aGUg
YWJvdmUgY2FzZSwgdGhlIGV2YWwgZnVuY3Rpb24gd2lsbCBiZSBpbnRlcnByZXRlZCBhcyB0aGUg
aW5kaXJlY3QgY2FsbCB0byBldmFsIGluc2lkZSBmb3JFYWNoIGZ1bmN0aW9uLgogICAgICAgICAg
ICAgLy8gQXQgdGhhdCB0aW1lLCB0aGUgZ2VuZXJhdGVkIGV2YWwgY29kZSBzaG91bGQgaGF2ZSB0
aGUgc291cmNlIG9yaWdpbiB0byB0aGUgb3JpZ2luYWwgY2FsbGVyIG9mIHRoZSBmb3JFYWNoIGZ1
bmN0aW9uCiAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBzb3VyY2Ugb3JpZ2luIG9mIHRo
ZSBmb3JFYWNoIGZ1bmN0aW9uLgotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KHZpc2l0b3ItPmNvZGVCbG9jaygpLT5vd25lclNjcmlwdEV4ZWN1dGFibGUo
KSktPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4odmlzaXRvci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
KS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpTdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAKICAgICAg
ICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6RXZhbDoKICAgICAgICAgY2Fz
ZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6TW9kdWxlOgogICAgICAgICBjYXNlIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpHbG9iYWw6Ci0gICAgICAgICAgICBzb3VyY2VP
cmlnaW4gPSB2aXNpdG9yLT5jb2RlQmxvY2soKS0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNv
dXJjZU9yaWdpbigpOworICAgICAgICAgICAgc291cmNlT3JpZ2luID0gdmlzaXRvci0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VPcmlnaW4oKTsKICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKIAogICAgICAgICBjYXNlIFN0YWNrVmlz
aXRvcjo6RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAwNjIyMWZkNjlkYmQ2YjYwZDQz
YjliODBjMTQyNmU3Njk0ZDczYzRkLi4xYTY2MmVhZWY2NjUyM2RhODhlNDhlM2FjODdiMjdiYjRk
NzI3ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxl
c1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVy
VERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9
IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHByb2dy
YW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCktPnNvdXJjZU9yaWdpbigpKSwgY2Fs
bGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFr
ZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVy
KCktPnNvdXJjZU9yaWdpbigpKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUs
ICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIGNsYXNzIFVud2luZEZ1bmN0
b3IgewogICAgIHZvaWQgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogICAgIHsKICNpZiAhRU5BQkxFKENfTE9P
UCkgJiYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSB2aXNpdG9yLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50
Q2FsbGVlU2F2ZXMgPSB2aXNpdG9yLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKICAgICAgICAg
aWYgKCFjdXJyZW50Q2FsbGVlU2F2ZXMpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDJh
YTNmMzAwMGFlYWQ4MzBjMjIwMmUzODBmMzg3ODVjZGQ4NTI5MTEuLjRkMWM3OTI4YmY0MmZjZmY5
MzhhZmRlMjJlYTY0ZTU0ZmJjYjlhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBj
b25zdAogICAgIHJldHVybiBDb2RlVHlwZTo6R2xvYmFsOwogfQogCi1SZWdpc3RlckF0T2Zmc2V0
TGlzdCogU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCitjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpCiB7CiAgICAgaWYgKGlzSW5saW5lZEZyYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMzE3LDcgKzMxNyw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3Vy
Y2VVUkwoKSBjb25zdAogICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBjYXNlIENvZGVU
eXBlOjpGdW5jdGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKLSAgICAgICAgU3Ry
aW5nIHNvdXJjZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291
cmNlVVJMKCk7CisgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBjb2RlQmxvY2soKS0+b3duZXJF
eGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwogICAgICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICB0cmFjZUxpbmUgPSBzb3VyY2VVUkwuaW1wbCgpOwogICAgICAgICBi
cmVhazsKQEAgLTM1OCw3ICszNTgsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6dG9T
dHJpbmcoKSBjb25zdAogaW50cHRyX3QgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlSUQoKQog
ewogICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpKQotICAg
ICAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KTsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCk7CiAgICAgcmV0dXJuIG5vU291cmNlSUQ7CiB9CiAKQEAgLTQwMywxMCArNDAzLDEwIEBAIHZv
aWQgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxp
bmUsIHVuc2lnbmVkJiBjb2x1bW4pCiAgICAgdW5zaWduZWQgZGl2b3RDb2x1bW4gPSAwOwogICAg
IHJldHJpZXZlRXhwcmVzc2lvbkluZm8oZGl2b3QsIHVudXNlZFN0YXJ0T2Zmc2V0LCB1bnVzZWRF
bmRPZmZzZXQsIGRpdm90TGluZSwgZGl2b3RDb2x1bW4pOwogCi0gICAgbGluZSA9IGRpdm90TGlu
ZSArIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmZpcnN0TGluZSgpOworICAg
IGxpbmUgPSBkaXZvdExpbmUgKyBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5maXJzdExp
bmUoKTsKICAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiArIChkaXZvdExpbmUgPyAxIDogY29kZUJs
b2NrLT5maXJzdExpbmVDb2x1bW5PZmZzZXQoKSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8aW50PiBv
dmVycmlkZUxpbmVOdW1iZXIgPSBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5v
dmVycmlkZUxpbmVOdW1iZXIoKmNvZGVCbG9jay0+dm0oKSkpCisgICAgaWYgKE9wdGlvbmFsPGlu
dD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+b3Zl
cnJpZGVMaW5lTnVtYmVyKCpjb2RlQmxvY2stPnZtKCkpKQogICAgICAgICBsaW5lID0gb3ZlcnJp
ZGVMaW5lTnVtYmVyLnZhbHVlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCBmYTQ1YTM5MzkyNzBhNDU5NmM2YWRkZjNi
OWI3ZDkzNTI3ZDM4NmM4Li43YjAwMzE0MTAyMzdlYzkwZWM5MmRkZmQ4NjNhYWY1ODgyNzgwNDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIFN0YWNrVmlzaXRvciB7CiAgICAgICAgIGJvb2wg
aGFzTGluZUFuZENvbHVtbkluZm8oKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjb21wdXRlTGluZUFuZENvbHVtbih1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVt
bikgY29uc3Q7CiAKLSAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdp
c3RlcnMoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsKIAogICAgICAgICBDbG9uZWRBcmd1bWVudHMqIGNyZWF0ZUFyZ3VtZW50cygp
OwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZy
YW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRl
eCA0YjkwZjNhYWNiZDIyMTk4Y2YzM2JkNjRkN2U4YWM4MjMyMmU1NDIzLi4xNmUzNjIwNGI5Y2Uy
Mjc4MDc4MGQ4NTliODBkZGU1NWEyM2Y1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTI2MSw3ICsyNjEsNyBAQCBjbGFzcyBBc3NlbWJseUhl
bHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
ZGVCbG9jayk7CiAKLSAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0g
Y29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOwogICAgICAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsK
ICAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CiAK
QEAgLTI3OSw3ICsyNzksNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXIgewogICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAgICAgICAgIAot
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgICAg
IFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwogICAgICAgICB1bnNp
Z25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKIApAQCAtMzEzLDcgKzMx
Myw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgewogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKIAotICAgICAgICBSZWdpc3RlckF0T2Zm
c2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsK
KyAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJs
b2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0
b3JlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCks
IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwogICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50
ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKICAgICAgICAgCkBAIC00MDksNyArNDA5LDcgQEAgY2xh
c3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihFbnRyeUZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyT2Zm
c2V0KCkpLCB0ZW1wMSk7CiAKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxl
ZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwotICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gY29kZUJsb2Nr
KCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CiAgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBh
bGxDYWxsZWVTYXZlcy0+c2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCmluZGV4IDU2NzIwMmMxNTM2OWQ4MjAyNGI3MTAx
Y2FiYjBlY2JhMDI1NDdhM2EuLjY4ZTljOWM5YjU5MGJkZTJmNmQ1OWEyM2IzMjg5OWJjNWEyYWZh
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mgewogdm9pZCBDYWxsRnJh
bWVTaHVmZmxlRGF0YTo6c2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKENvZGVCbG9jayogY29kZUJs
b2NrKQogewogICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMgeyBSZWdpc3RlclNl
dDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkgfTsKLSAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
cmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucyA9
IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZWdpc3RlclNhdmVMb2NhdGlvbnMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgeyByZWdpc3RlclNhdmVMb2NhdGlvbnMtPmF0KGkpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNWQ2ZTA3NzczZGNiZWY1MjcyZDU3MTUxMTE1
YTNkNGRjZmQxNjhhMi4uZGEyYzJiMTUyYTc1YWYzODEwMzZjNmFkNzE4N2Q3NDUwZDM0NWQ1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjg3LDcgKzY4Nyw3IEBAIHZvaWQgSklU
Ojpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAg
ICAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGlz
IGlzIGEgY29uc3RydWN0b3IsIHRoZW4gd2Ugd2FudCB0byBwdXQgaW4gYSBkdW1teSBwcm9maWxp
bmcgc2l0ZSAodG8KICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoaW5ncyBjb25zaXN0ZW50KSBi
dXQgd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byByZWNvcmQgdGhlIGR1bW15IHZhbHVlLgotICAg
ICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yICYmICFhcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSAmJiAh
YXJndW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IGludCBvZmZzZXQgPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhhcmd1
bWVudCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCkBAIC03NDgsNyArNzQ4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2lu
ZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAKICAgICAgICAgaWYgKG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpKSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNv
bnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CisgICAgICAgIGNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+
aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlv
bkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgYnJhbmNoVGVzdDMy
KFplcm8sIHJldHVyblZhbHVlR1BSKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDQ3MWFmOWIyODdlMzcwNTQzODIzYzlhMDlk
M2U1NmNlZGY0ZWUxYjUuLmQ5ZmI3NmFmMTlkNTAxNTQ3MjIxZDkyN2ViZjMyYmVhYThhZGM5MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZv
aWQgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29t
cGxldGUoCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNv
ZGVCbG9jaywgIiByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgCiAgICAgaWYgKHJlc3Vs
dCA9PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCi0gICAgICAgIGNvZGVCbG9jay0+b3duZXJTY3Jp
cHRFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNvZGVCbG9jayk7CisgICAgICAgIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNvZGVCbG9jayk7CiAgICAgCiAgICAg
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLT5zZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRCYXNlZE9u
Q29tcGlsYXRpb25SZXN1bHQocmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFdvcmtsaXN0LmNwcAppbmRleCBiYjIxMTRjOGUwMzg5NGMwN2Y1OWEwNzEyNGZkNWZmOGVkN2I2
OTlmLi40YzZlZjRmYjU3ODBhNWEwNzM4YTE4MjA4ODM5YTVjYmEwOTEzNjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcApAQCAtNjUsNyArNjUsNyBAQCBjbGFz
cyBKSVRXb3JrbGlzdDo6UGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRXb3Jr
bGlzdDo6UGxhbj4gewogICAgICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxv
Z0YoIiAgICBKSVQgY29tcGlsYXRpb24gc3VjY2Vzc2Z1bC5cbiIpOwotICAgICAgICAgICAgbV9j
b2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShtX2NvZGVCbG9j
ayk7CisgICAgICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxD
b2RlKG1fY29kZUJsb2NrKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5qaXRTb29uKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDksNyArMzA5LDcgQEAg
dm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZU5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWdu
ZWQgbG9vcE9TUkVudHJ5Qnl0ZWNvZGUKICAgICAKICAgICAvLyBPSywganVzdCBjb21waWxlIGl0
LgogICAgIEpJVDo6Y29tcGlsZSh2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNj
ZWVkLCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCk7Ci0gICAgY29kZUJsb2NrLT5vd25lclNj
cmlwdEV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29kZUJsb2NrKTsKKyAgICBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShjb2RlQmxvY2spOwogfQogCiB2b2lkIEpJ
VFdvcmtsaXN0OjpmaW5hbGl6ZVBsYW5zKFBsYW5zJiBteVBsYW5zKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAppbmRleCA0OTI1MmZj
MjMwMGI3ZjJiM2Q4NmY1M2I4ZWU4YzQ3ZWE3MDc1MjM4Li5lYjFmMjgzNzhjM2NlNTQzNmM1Yzk3
ZWQ4ZGEyNGMwNjZhNTc1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcApAQCAtNjYsNiArNjYsMTYgQEAgdW5zaWduZWQgUmVn
aXN0ZXJBdE9mZnNldExpc3Q6OmluZGV4T2YoUmVnIHJlZykgY29uc3QKICAgICByZXR1cm4gVUlO
VF9NQVg7CiB9CiAKK2NvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+IHJlc3VsdDsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
XSB7CisgICAgICAgIHJlc3VsdC5jb25zdHJ1Y3QoUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVD
YWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExp
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaApp
bmRleCA1ZTNhM2NiMmNlMDI5MzQxMTk1N2Y2ODk5MzM5ZDY3N2Y0YTlmNDU1Li4xNzNjZjk0OTg2
NmNjMDk2MWM0MDU3NGYyYzJmOTk5ZDRlNGRkNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCkBAIC01Miw2ICs1MiwxMSBAQCBjbGFz
cyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CiAgICAgICAgIHJldHVybiBtX3JlZ2lzdGVycy5zaXpl
KCk7CiAgICAgfQogCisgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgYXQoc2l6ZV90IGluZGV4
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVnaXN0ZXJzLmF0KGluZGV4KTsKKyAg
ICB9CisKICAgICBSZWdpc3RlckF0T2Zmc2V0JiBhdChzaXplX3QgaW5kZXgpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9yZWdpc3RlcnMuYXQoaW5kZXgpOwpAQCAtNjMsNiArNjgsOCBAQCBjbGFz
cyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CiAgICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+Ojpj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzLmJlZ2luKCk7
IH0KICAgICBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNldD46OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJzLmVuZCgpOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJBdE9mZnNldExpc3QmIGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8v
IFJlZ2lzdGVycyBhbmQgT2Zmc2V0cyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCisKIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+IG1fcmVnaXN0ZXJzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXgg
NzZmYWFlOGEzZDAwYzRhNDQ3NGE3MjRiZTFlN2Y4MzdmMmNjNTIxMC4uNTBjYTk5N2IyMzIyM2Vl
NDYxOTU4YjlkZDg2ODIwYmI1YWI5NDZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSog
ZXhjZXB0aW9uLAogICAgIGludCBleHByZXNzaW9uU3RhcnQgPSBkaXZvdFBvaW50IC0gc3RhcnRP
ZmZzZXQ7CiAgICAgaW50IGV4cHJlc3Npb25TdG9wID0gZGl2b3RQb2ludCArIGVuZE9mZnNldDsK
IAotICAgIFN0cmluZ1ZpZXcgc291cmNlU3RyaW5nID0gY29kZUJsb2NrLT5zb3VyY2UoKS0+c291
cmNlKCk7CisgICAgU3RyaW5nVmlldyBzb3VyY2VTdHJpbmcgPSBjb2RlQmxvY2stPnNvdXJjZSgp
LnByb3ZpZGVyKCktPnNvdXJjZSgpOwogICAgIGlmICghZXhwcmVzc2lvblN0b3AgfHwgZXhwcmVz
c2lvblN0YXJ0ID4gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VTdHJpbmcubGVuZ3RoKCkpKQogICAg
ICAgICByZXR1cm47CiAgICAgCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNv
dXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlv
biwKICAgICAKICAgICBTdHJpbmcgbWVzc2FnZSA9IGFzU3RyaW5nKGpzTWVzc2FnZSktPnZhbHVl
KGNhbGxGcmFtZSk7CiAgICAgaWYgKGV4cHJlc3Npb25TdGFydCA8IGV4cHJlc3Npb25TdG9wKQot
ICAgICAgICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+
Z2V0UmFuZ2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCkudG9TdHJpbmcoKSwgdHlw
ZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CisgICAgICAgIG1lc3NhZ2UgPSBh
cHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdl
KGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvblN0b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9y
SW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwogICAgIGVsc2UgewogICAgICAgICAvLyBObyBy
YW5nZSBpbmZvcm1hdGlvbiwgc28gZ2l2ZSBhIGZldyBjaGFyYWN0ZXJzIG9mIGNvbnRleHQuCiAg
ICAgICAgIGludCBkYXRhTGVuZ3RoID0gc291cmNlU3RyaW5nLmxlbmd0aCgpOwpAQCAtMTAzLDcg
KzEwMyw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgICAgIHN0b3ArKzsKICAg
ICAgICAgd2hpbGUgKHN0b3AgPiBleHByZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKHNv
dXJjZVN0cmluZ1tzdG9wIC0gMV0pKQogICAgICAgICAgICAgc3RvcC0tOwotICAgICAgICBtZXNz
YWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2Uoc3Rh
cnQsIHN0b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1h
dGVTb3VyY2UpOworICAgICAgICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2Nr
LT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZShzdGFydCwgc3RvcCkudG9TdHJpbmcoKSwg
dHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSk7CiAgICAgfQogICAg
IGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp2bSwgdm0tPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpz
U3RyaW5nKHZtLCBtZXNzYWdlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggYjg4MmI5OGFmYjA1NDhkN2JjMjllNGJl
YjU5NjRmYTAxYTgwODRlYS4uMTE1YjE3OGNlMmJjZjNmZjU5MzgyMDdhMGZhZjNjNTdkNTE3Yjhi
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKQEAgLTI2OSw4ICsyNjksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6
Om5ld0NvZGVCbG9ja0ZvcigKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFibGUtPm1f
ZXZhbENvZGVCbG9jayk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmdW5jdGlvbik7CiAgICAg
ICAgIGF1dG8gY29kZUJsb2NrID0gRXZhbENvZGVCbG9jazo6Y3JlYXRlKHZtLAotICAgICAgICAg
ICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suZ2V0KCks
IHNjb3BlLAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSk7Cisg
ICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVCbG9j
ay5nZXQoKSwgc2NvcGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkgfHwgY29kZUJsb2NrKTsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spIHsKICAgICAg
ICAgICAgIGV4Y2VwdGlvbiA9IHRocm93RXhjZXB0aW9uKApAQCAtMjg3LDggKzI4Niw3IEBAIENv
ZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICBSRUxF
QVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKICAgICAgICAgYXV0byBjb2RlQmxvY2sgPSBQcm9ncmFt
Q29kZUJsb2NrOjpjcmVhdGUodm0sCi0gICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxl
LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCi0gICAgICAgICAgICBl
eGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBzdGFydENvbHVtbigpKTsKKyAgICAgICAg
ICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmdl
dCgpLCBzY29wZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRp
b24oKSB8fCBjb2RlQmxvY2spOwogICAgICAgICBpZiAoIWNvZGVCbG9jaykgewogICAgICAgICAg
ICAgZXhjZXB0aW9uID0gdGhyb3dFeGNlcHRpb24oCkBAIC0zMDUsOCArMzAzLDcgQEAgQ29kZUJs
b2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwogICAgICAgICBhdXRvIGNvZGVCbG9jayA9IE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwKLSAgICAgICAgICAgIGV4ZWN1dGFibGUsIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSwK
LSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIHN0YXJ0Q29sdW1u
KCkpOworICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IGNvZGVCbG9jayk7CiAgICAgICAgIGlmICghY29k
ZUJsb2NrKSB7CiAgICAgICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigKQEAgLTMz
OCw4ICszMzUsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zv
cigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUs
IHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgCi0gICAgICAgIHNvdXJjZSgpLnByb3ZpZGVyKCks
IHNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCksIHN0YXJ0Q29sdW1uKCkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSk7CiB9CiAKIENvZGVCbG9jayogU2NyaXB0
RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3IoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IGRkMjlmMmE5OGY2MTMzOTYyZGEx
ZTZlMDZkNDlmMTgyMmZkY2VkNWQuLjk0YjdkYzQ4Zjg5NTU3ZTU0N2I3ZTE0NDU2ZGE3ZmI2MmNj
ZjRmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIGludHB0cl90IFN0YWNrRnJhbWU6OnNvdXJjZUlEKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fY29kZUJsb2NrKQogICAgICAgICByZXR1cm4gbm9Tb3VyY2VJRDsKLSAg
ICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgp
OworICAgIHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7
CiB9CiAKIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdApAQCAtNjcsNyArNjcs
NyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6c291cmNlVVJMKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICJbbmF0aXZlIGNvZGVdIl9zOwogICAgIH0KIAotICAgIFN0cmluZyBzb3VyY2VVUkwgPSBtX2Nv
ZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworICAgIFN0cmlu
ZyBzb3VyY2VVUkwgPSBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgp
OwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc291cmNlVVJM
OwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU3Rh
Y2tGcmFtZTo6Y29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBj
b2x1bW4pIGNvbnN0CiAgICAgaW50IHVudXNlZEVuZE9mZnNldCA9IDA7CiAgICAgbV9jb2RlQmxv
Y2stPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KG1fYnl0ZWNvZGVPZmZzZXQsIGRp
dm90LCB1bnVzZWRTdGFydE9mZnNldCwgdW51c2VkRW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwog
Ci0gICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5vd25lclNj
cmlwdEV4ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9j
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogICAgIGlmIChPcHRpb25hbDxpbnQ+IG92ZXJy
aWRlTGluZU51bWJlciA9IGV4ZWN1dGFibGUtPm92ZXJyaWRlTGluZU51bWJlcigqbV9jb2RlQmxv
Y2stPnZtKCkpKQogICAgICAgICBsaW5lID0gb3ZlcnJpZGVMaW5lTnVtYmVyLnZhbHVlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZmYzNWM1NjI0MzZmMzNiNzdk
OTYxNjk3YzA0MTBjMzVlMTJjN2E3Yy4uZTYwMGRkZTU0YzQ3ZjZlNTk4ZTYzODZlNTc0MjdhYWY1
ZjIyZTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjEyMCw3ICsy
MTIwLDcgQEAgU3RyaW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKU1ZhbHVlIGNv
ZGUpCiAgICAgICAgIEdldENhbGxlckNvZGVCbG9ja0Z1bmN0b3IgaXRlcjsKICAgICAgICAgZXhl
Yy0+aXRlcmF0ZShpdGVyKTsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBpdGVyLmNv
ZGVCbG9jaygpOwotICAgICAgICBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKTsKKyAgICAgICAgZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCk7CiAgICAgfSBlbHNlIGlmIChjb2RlLmlzRnVuY3Rpb24odm0pKSB7CiAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmNPYmogPSBKU0M6OmpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29kZS50b09iamVj
dChleGVjKSk7CiAgICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jT2JqLT5qc0V4ZWN1dGFibGUoKTsK
</data>
<flag name="review"
          id="378164"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>