<?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>168320</bug_id>
          
          <creation_ts>2017-02-14 08:01:18 -0800</creation_ts>
          <short_desc>[JSC] Drop PassRefPtr</short_desc>
          <delta_ts>2017-02-16 11:52:22 -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></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>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1276743</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-14 08:01:18 -0800</bug_when>
    <thetext>[JSC] Drop PassRefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276744</commentid>
    <comment_count>1</comment_count>
      <attachid>301502</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-14 08:01:51 -0800</bug_when>
    <thetext>Created attachment 301502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276746</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-14 08:06:52 -0800</bug_when>
    <thetext>Attachment 301502 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1915:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/FunctionCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/EvalCodeBlock.h:74:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Structure.h:594:  &apos;toStructureShape&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedJSValue&apos;.  [readability/naming/protected] [4]
Total errors found: 7 in 68 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>1276766</commentid>
    <comment_count>3</comment_count>
      <attachid>301506</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-14 08:44:04 -0800</bug_when>
    <thetext>Created attachment 301506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276795</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-14 09:37:22 -0800</bug_when>
    <thetext>Attachment 301506 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1915:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/FunctionCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/EvalCodeBlock.h:74:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Structure.h:594:  &apos;toStructureShape&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedJSValue&apos;.  [readability/naming/protected] [4]
Total errors found: 7 in 69 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>1276820</commentid>
    <comment_count>5</comment_count>
      <attachid>301522</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-14 10:57:36 -0800</bug_when>
    <thetext>Created attachment 301522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276824</commentid>
    <comment_count>6</comment_count>
      <attachid>301522</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-14 10:59:48 -0800</bug_when>
    <thetext>Comment on attachment 301522
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +

This is the subset of the series of the patches.
We do not touch inspector/, bytecode/, and ArrayBuffer related things for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276826</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-14 11:01:13 -0800</bug_when>
    <thetext>Attachment 301522 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1915:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/FunctionCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/EvalCodeBlock.h:74:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Structure.h:594:  &apos;toStructureShape&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedJSValue&apos;.  [readability/naming/protected] [4]
Total errors found: 7 in 67 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>1276854</commentid>
    <comment_count>8</comment_count>
      <attachid>301522</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-14 11:54:08 -0800</bug_when>
    <thetext>Comment on attachment 301522
Patch

r=me with it building and passing tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277164</commentid>
    <comment_count>9</comment_count>
      <attachid>301609</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-15 06:31:26 -0800</bug_when>
    <thetext>Created attachment 301609
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277165</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-15 06:34:52 -0800</bug_when>
    <thetext>Attachment 301609 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1915:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/FunctionCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/EvalCodeBlock.h:74:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Structure.h:594:  &apos;toStructureShape&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedJSValue&apos;.  [readability/naming/protected] [4]
Total errors found: 7 in 67 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>1277166</commentid>
    <comment_count>11</comment_count>
      <attachid>301610</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-15 06:34:57 -0800</bug_when>
    <thetext>Created attachment 301610
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277169</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-15 06:38:06 -0800</bug_when>
    <thetext>Attachment 301610 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1915:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/FunctionCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/EvalCodeBlock.h:74:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h:72:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/Structure.h:594:  &apos;toStructureShape&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedJSValue&apos;.  [readability/naming/protected] [4]
Total errors found: 7 in 67 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>1277215</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-15 09:11:07 -0800</bug_when>
    <thetext>Committed r212365: &lt;http://trac.webkit.org/changeset/212365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277750</commentid>
    <comment_count>14</comment_count>
      <attachid>301522</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-16 10:57:08 -0800</bug_when>
    <thetext>Comment on attachment 301522
Patch

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

&gt; Source/JavaScriptCore/API/tests/JSONParseTest.cpp:42
&gt; -    RefPtr&lt;VM&gt; vm = VM::create();
&gt; +    {
&gt; +        Ref&lt;VM&gt; vm = VM::create();

This change is wrong.  It&apos;s not correct to use Ref&lt;&gt; for VM.

I think that Ref&lt;&gt; in general is very dangerous for JSC code, because in JSC we rely on pointers being allowed to be null and we rely on the assignability of pointers.

&gt; Source/JavaScriptCore/API/tests/JSONParseTest.cpp:-61
&gt; -    vm = nullptr;

This is incorrect.  We were deliberately nulling the VM, so that our reference to it would be gone before JSLockHolder destructs.

This manifests as RELEASE_ASSERTs because the VM gets destructed without the lock held.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277767</commentid>
    <comment_count>15</comment_count>
      <attachid>301522</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 11:30:10 -0800</bug_when>
    <thetext>Comment on attachment 301522
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/API/tests/JSONParseTest.cpp:42
&gt;&gt; +        Ref&lt;VM&gt; vm = VM::create();
&gt; 
&gt; This change is wrong.  It&apos;s not correct to use Ref&lt;&gt; for VM.
&gt; 
&gt; I think that Ref&lt;&gt; in general is very dangerous for JSC code, because in JSC we rely on pointers being allowed to be null and we rely on the assignability of pointers.

OK, for VM, we should use RefPtr&lt;&gt;.

I think that we already made factory functions `::create()` return `Ref&lt;&gt;`. So using Ref&lt;&gt; after that creation just propagates this non-null ability.
This patch just propagates the Ref&lt;&gt; from the factory function to the caller side.
And if the given factory function can fail, we should make this function return `RefPtr&lt;&gt;`. And in that case, we named these functions `tryCreate` (e.g. ArrayBuffer::tryCreate()).
This returns RefPtr&lt;&gt;. And of course, receiving it as Ref&lt;&gt; causes compile error!

And I think that using Ref&lt;&gt; if we can makes it explicit whether the given code relies on the assignability of pointers.
So actually, in this change, we still keep RefPtr&lt;&gt; if it requires assignability.
And if we use Ref&lt;&gt; for the code that uses assignability, it just becomes compile error.

&gt;&gt; Source/JavaScriptCore/API/tests/JSONParseTest.cpp:-61
&gt;&gt; -    vm = nullptr;
&gt; 
&gt; This is incorrect.  We were deliberately nulling the VM, so that our reference to it would be gone before JSLockHolder destructs.
&gt; 
&gt; This manifests as RELEASE_ASSERTs because the VM gets destructed without the lock held.

I see. I&apos;ll apply the patch to revert this VM part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277779</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 11:49:35 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277780</commentid>
    <comment_count>17</comment_count>
      <attachid>301792</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 11:49:39 -0800</bug_when>
    <thetext>Created attachment 301792
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277783</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 11:52:22 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/212452 fixed it.
Thanks Fil!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301502</attachid>
            <date>2017-02-14 08:01:51 -0800</date>
            <delta_ts>2017-02-14 08:44:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168320-20170215005917.patch</filename>
            <type>text/plain</type>
            <size>113522</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi5iZDU4ZjVhN2IyOGUzOWJm
NGNjMGM0ZjAwYjQ1YjE4ZDQzYmFiNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjkgQEAKKzIwMTctMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCk6CisgICAgICAgICogQVBJL0pT
U2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUpOgorICAgICAg
ICAqIEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RKU09OUGFyc2Up
OgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGlu
a0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmKToKKyAgICAgICAgKiBieXRlY29kZS9D
YWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTbG93U3R1Yik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRKSVRDb2RlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9F
dmFsQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OkV2YWxDb2RlQmxvY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJs
b2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6RnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpHbG9iYWxDb2RlQmxvY2s6Okdsb2JhbENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OlByb2dyYW1Db2RlQmxvY2spOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmspOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Z2F0aGVyRGVidWdnZXJQYXJz
ZURhdGFGb3JTb3VyY2UpOgorICAgICAgICAqIGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCk6CisgICAgICAg
ICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGVJbXBs
KToKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVy
Lmg6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmFwcGVuZEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGls
ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6aml0Q29kZSk6CisgICAgICAg
ICogZGZnL0RGR0pJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklURmluYWxp
emVyOjpKSVRGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6Zmlu
YWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkRGRzo6SklURmluYWxpemVyOjpmaW5hbGl6ZUNvbW1vbik6Cisg
ICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlz
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmVucXVldWUpOgorICAgICAgICAq
IGRmZy9ERkdXb3JrbGlzdC5oOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAg
ICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0
ZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6
CisgICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJv
dXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFzQ29kZVB0cik6CisgICAg
ICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1Yik6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpzZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFt
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZTo6U291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnN1YkV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRTb3VyY2VDb2RlOjpVbmxpbmtlZFNvdXJjZUNvZGUpOgorICAgICAgICAq
IHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6
RGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAo
SlNDOjpFdmFsRXhlY3V0YWJsZTo6Z2VuZXJhdGVkSklUQ29kZSk6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlQmFzZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJh
dGVkSklUQ29kZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJh
dGVkSklUQ29kZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpn
ZW5lcmF0ZWRKSVRDb2RlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVy
OjphZGQ4KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllcjo6YWRkKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjppbnB1dEN1cnNvcik6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OnByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OkpTU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGVIYXNPdGhl
ck93bmVyKToKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlOYW1lQXJyYXk6OnJlbGVhc2VEYXRhKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlO
YW1lQXJyYXk6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwS2V5
Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cEtleTo6UmVnRXhwS2V5KToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxl
OjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoK
KyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzU3RvcmFnZTo6cmVwKToKKyAgICAgICAgKEpTQzo6
U21hbGxTdHJpbmdzOjpjcmVhdGVFbXB0eVN0cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3Ry
aW5nczo6Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U21hbGxT
dHJpbmdzOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXApOgorICAgICAgICAoSlNDOjpTbWFsbFN0
cmluZ3M6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvU3RydWN0dXJlU2hhcGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgICogcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlR5cGVM
b2NhdGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZUxv
Y2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6Cisg
ICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmFkZFR5cGVJ
bmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmFsbFN0cnVjdHVyZVJlcHJlc2Vu
dGF0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpsZWFzdENvbW1vbkFuY2Vz
dG9yKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6Omhhc1NhbWVQcm90b3R5cGVDaGFp
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjptZXJnZSk6CisgICAgICAgICogcnVu
dGltZS9UeXBlU2V0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzZXRQcm90byk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpnZXRIb3N0RnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6UXVldWVkVGFzazo6UXVldWVkVGFzayk6CisKIDIw
MTctMDItMTMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
YXN5bmNEaXNhc3NlbWJseSBjcmFzaGVzIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3ZGY0ZGU3ZmYx
ZTljNjg0Mzc5OTVhMWVhMDZhYzg0ZDg5ZmMzMTUuLmI4ZThkMTQ0OWY0ZDcyZWQyMzNlOGZlZWUx
MTUwOGQ0OGI1YjEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wMi0xNCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBE
cm9wIFBhc3NSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODMyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVOYXZpZ2F0ZWQpOgorCiAyMDE3LTAyLTEzICBBbnRvaW5l
IFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVXBkYXRl
IHZvbHVtZSBhbmQgc2NydWJiaW5nIHNsaWRlciB0byBtYXRjaCBISSBkZXNpZ25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggMTM3NjlkZjNjYmNkZDlh
YzA0NzQ2M2Y5MTJlNGUyOTkxMTY2NmY3MC4uZTdkYWQxOWIwMGNjN2VjOTkwMjYzNGVhZGQ1NzI4
MGM3OTViZmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNw
cApAQCAtMTMzLDEyICsxMzMsMTIgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4
dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3MKIHsKICAgICBp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBSZWZQdHI8Vk0+IHZtID0gZ3JvdXAgPyBQYXNz
UmVmUHRyPFZNPih0b0pTKGdyb3VwKSkgOiBWTTo6Y3JlYXRlQ29udGV4dEdyb3VwKCk7CisgICAg
UmVmPFZNPiB2bSA9IGdyb3VwID8gUmVmPFZNPigqdG9KUyhncm91cCkpIDogVk06OmNyZWF0ZUNv
bnRleHRHcm91cCgpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bS5nZXQoKSk7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2tlcih2bS5wdHIoKSk7CiAKICAgICBpZiAoIWdsb2JhbE9iamVjdENs
YXNzKSB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9i
amVjdDo6Y3JlYXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpz
TnVsbCgpKSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlKHZtLmdldCgpLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLmdldCgpLCBqc051bGwoKSkpOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
ICAgICBpZiAoSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCgp
KQogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKHRy
dWUpOwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29u
dGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3MKICAgICAg
ICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dFJldGFpbih0b0dsb2JhbFJlZihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSkpOwogICAgIH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKCp2bSwgZ2xvYmFs
T2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1
Y3R1cmUoKnZtLCAwLCBqc051bGwoKSkpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKHZtLmdldCgpLCBn
bG9iYWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0
ZVN0cnVjdHVyZSh2bS5nZXQoKSwgMCwganNOdWxsKCkpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGds
b2JhbE9iamVjdENsYXNzLT5wcm90b3R5cGUoZXhlYyk7CiAgICAgaWYgKCFwcm90b3R5cGUpCiAg
ICAgICAgIHByb3RvdHlwZSA9IGpzTnVsbCgpOwotICAgIGdsb2JhbE9iamVjdC0+cmVzZXRQcm90
b3R5cGUoKnZtLCBwcm90b3R5cGUpOworICAgIGdsb2JhbE9iamVjdC0+cmVzZXRQcm90b3R5cGUo
dm0uZ2V0KCksIHByb3RvdHlwZSk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAg
aWYgKEpTUmVtb3RlSW5zcGVjdG9yR2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQoKSkKICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKHRydWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCBmMmFkOTQ5ZDkwYTA2
NjQ2OTcyOTdmMGU4ODcxYjI0YWU3OTg5ZjRkLi43OTE3MzhiOTVlMDU3MjIxODk2NjZjZjEwZjU4
N2VkZTMyNGMyNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2Ny
aXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNw
cApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdHJ1Y3QgT3BhcXVl
SlNTY3JpcHQgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBX
VEY6OlJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlT3Jp
Z2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKKyAgICBzdGF0aWMgV1RGOjpSZWY8T3BhcXVlSlNT
Y3JpcHQ+IGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gV1RGOjphZG9wdFJlZigqbmV3IE9wYXF1ZUpT
U2NyaXB0KHZtLCBzb3VyY2VPcmlnaW4sIHVybCwgc3RhcnRpbmdMaW5lTnVtYmVyLCBzb3VyY2Up
KTsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVm
ZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAg
YXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZtLCBTb3VyY2VPcmlnaW4geyBz
b3VyY2VVUkxTdHJpbmcgfSwgc291cmNlVVJMU3RyaW5nLCBzdGFydGluZ0xpbmVOdW1iZXIsIFN0
cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzb3VyY2UsIGxlbmd0aCkpKTsKIAog
ICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNv
ZGUocmVzdWx0KSwgZXJyb3IpKSB7CisgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29k
ZShyZXN1bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2Up
CiAgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJv
ci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKQEAgLTEwNSw3
ICsxMDUsNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxB
U0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gJnJl
c3VsdC5sZWFrUmVmKCk7CiB9CiAKIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmlu
ZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmIHVybCwgaW50IHN0
YXJ0aW5nTGluZU51bWJlciwgSlNTdHJpbmdSZWYgc291cmNlLCBKU1N0cmluZ1JlZiogZXJyb3JN
ZXNzYWdlLCBpbnQqIGVycm9yTGluZSkKQEAgLTExOSw3ICsxMTksNyBAQCBKU1NjcmlwdFJlZiBK
U1NjcmlwdENyZWF0ZUZyb21TdHJpbmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwLCBK
U1N0cmluZ1JlZgogICAgIGF1dG8gcmVzdWx0ID0gT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSh2bSwg
U291cmNlT3JpZ2luIHsgc291cmNlVVJMU3RyaW5nIH0sIHNvdXJjZVVSTFN0cmluZywgc3RhcnRp
bmdMaW5lTnVtYmVyLCBzb3VyY2UtPnN0cmluZygpKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9y
OwotICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0KSwgZXJyb3IpKSB7
CisgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQuY29weVJlZigpKSwg
ZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCiAgICAgICAgICAgICAqZXJyb3JN
ZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYo
KTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBKU1NjcmlwdFJl
ZiBKU1NjcmlwdENyZWF0ZUZyb21TdHJpbmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3Vw
LCBKU1N0cmluZ1JlZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gcmVzdWx0LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gJnJlc3VsdC5sZWFrUmVmKCk7CiB9CiAK
IHZvaWQgSlNTY3JpcHRSZXRhaW4oSlNTY3JpcHRSZWYgc2NyaXB0KQpAQCAtMTUyLDcgKzE1Miw3
IEBAIEpTVmFsdWVSZWYgSlNTY3JpcHRFdmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNT
Y3JpcHRSZWYgc2NyaXB0LCBKU1ZhbHVlUmVmCiAgICAgfQogICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gaW50ZXJuYWxFeGNlcHRpb247CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSB0aGlzVmFsdWVS
ZWYgPyB0b0pTKGV4ZWMsIHRoaXNWYWx1ZVJlZikgOiBqc1VuZGVmaW5lZCgpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0gZXZhbHVhdGUoZXhlYywgU291cmNlQ29kZShzY3JpcHQpLCB0aGlzVmFsdWUs
IGludGVybmFsRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGV4ZWMs
IFNvdXJjZUNvZGUoKnNjcmlwdCksIHRoaXNWYWx1ZSwgaW50ZXJuYWxFeGNlcHRpb24pOwogICAg
IGlmIChpbnRlcm5hbEV4Y2VwdGlvbikgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAg
ICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGludGVybmFsRXhjZXB0aW9uLT52YWx1ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNl
VGVzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3Qu
Y3BwCmluZGV4IDI3OTdjM2M4ZWE1ZDE1YzE4M2JlYTFlMmQ0ZDI1OTAxMzI3NjA2N2EuLjIyMGQ3
ZjA3ODVlNWEwYjY2ZTA2OTBiMTc0MGFkZDM0ZTM1NmE0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcApAQCAtMzgsMjcgKzM4LDI3
IEBAIGludCB0ZXN0SlNPTlBhcnNlKCkKIHsKICAgICBib29sIGZhaWxlZCA9IGZhbHNlOwogCi0g
ICAgUmVmUHRyPFZNPiB2bSA9IFZNOjpjcmVhdGUoKTsKKyAgICB7CisgICAgICAgIFJlZjxWTT4g
dm0gPSBWTTo6Y3JlYXRlKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZSgqdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOwor
ICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwganNOdWxsKCkpKTsKIAotICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTVmFsdWUgdjAgPSBK
U09OUGFyc2UoZXhlYywgIiIpOwotICAgIEpTVmFsdWUgdjEgPSBKU09OUGFyc2UoZXhlYywgIiMk
JV4iKTsKLSAgICBKU1ZhbHVlIHYyID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmluZygpKTsKLSAgICBV
Q2hhciBlbXB0eVVDaGFyQXJyYXlbMV0gPSB7ICdcMCcgfTsKLSAgICBKU1ZhbHVlIHYzID0gSlNP
TlBhcnNlKGV4ZWMsIFN0cmluZyhlbXB0eVVDaGFyQXJyYXksIDApKTsKLSAgICBKU1ZhbHVlIHY0
OwotICAgIEpTVmFsdWUgdjUgPSBKU09OUGFyc2UoZXhlYywgIjEyMyIpOworICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNWYWx1
ZSB2MCA9IEpTT05QYXJzZShleGVjLCAiIik7CisgICAgICAgIEpTVmFsdWUgdjEgPSBKU09OUGFy
c2UoZXhlYywgIiMkJV4iKTsKKyAgICAgICAgSlNWYWx1ZSB2MiA9IEpTT05QYXJzZShleGVjLCBT
dHJpbmcoKSk7CisgICAgICAgIFVDaGFyIGVtcHR5VUNoYXJBcnJheVsxXSA9IHsgJ1wwJyB9Owor
ICAgICAgICBKU1ZhbHVlIHYzID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmluZyhlbXB0eVVDaGFyQXJy
YXksIDApKTsKKyAgICAgICAgSlNWYWx1ZSB2NDsKKyAgICAgICAgSlNWYWx1ZSB2NSA9IEpTT05Q
YXJzZShleGVjLCAiMTIzIik7CiAKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYwICE9IHYxKTsK
LSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYxICE9IHYyKTsKLSAgICBmYWlsZWQgPSBmYWlsZWQg
fHwgKHYyICE9IHYzKTsKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYzICE9IHY0KTsKLSAgICBm
YWlsZWQgPSBmYWlsZWQgfHwgKHY0ID09IHY1KTsKLQotICAgIHZtID0gbnVsbHB0cjsKKyAgICAg
ICAgZmFpbGVkID0gZmFpbGVkIHx8ICh2MCAhPSB2MSk7CisgICAgICAgIGZhaWxlZCA9IGZhaWxl
ZCB8fCAodjEgIT0gdjIpOworICAgICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYyICE9IHYzKTsK
KyAgICAgICAgZmFpbGVkID0gZmFpbGVkIHx8ICh2MyAhPSB2NCk7CisgICAgICAgIGZhaWxlZCA9
IGZhaWxlZCB8fCAodjQgPT0gdjUpOworICAgIH0KIAogICAgIGlmIChmYWlsZWQpCiAgICAgICAg
IHByaW50ZigiRkFJTDogSlNPTlBhcnNlIFN0cmluZyB0ZXN0LlxuIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCA5MDEwOTY3Yjk5ODM3
OGI1YjI2MGJlNTRlYmJlZGFhY2U3ZjBkMWE3Li41OTE4Y2Y5OWQ0YTgxZjg0YjllMjcwNmYzY2Q3
YjU1ZjE2YTZlNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZiBMaW5rQnVm
ZmVyOjpmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKQogICAgIAogICAgIEFTU0VSVCht
X2RpZEFsbG9jYXRlKTsKICAgICBpZiAobV9leGVjdXRhYmxlTWVtb3J5KQotICAgICAgICByZXR1
cm4gQ29kZVJlZihtX2V4ZWN1dGFibGVNZW1vcnkpOworICAgICAgICByZXR1cm4gQ29kZVJlZigq
bV9leGVjdXRhYmxlTWVtb3J5KTsKICAgICAKICAgICByZXR1cm4gQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihtX2NvZGUpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCmluZGV4IGE3MWE0ODZhMDJjMmNmZTI1ZTk2ZGE0NDk4Mjc5MDRkOGRmYjc5N2YuLmMz
MWNmODUyNjAwY2IwYzg5NmQ5NTBmMWM0ZmM5MzdhMGVlOTAxZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaApA
QCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMzU0LDkgKzM1Myw5IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB7CiAgICAgewogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZihQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1dGFibGVNZW1vcnkpCisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKFJlZjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiYmIGV4
ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgIDogbV9jb2RlUHRyKGV4ZWN1dGFibGVNZW1vcnktPnN0
YXJ0KCkpCi0gICAgICAgICwgbV9leGVjdXRhYmxlTWVtb3J5KGV4ZWN1dGFibGVNZW1vcnkpCisg
ICAgICAgICwgbV9leGVjdXRhYmxlTWVtb3J5KFdURk1vdmUoZXhlY3V0YWJsZU1lbW9yeSkpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9leGVjdXRhYmxlTWVtb3J5LT5pc01hbmFnZWQoKSk7CiAg
ICAgICAgIEFTU0VSVChtX2V4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IDBhOTEwMjAxMzgyMDYw
YmFiMWUyMmZkMTA1ZWY2ZjcyM2IxZDc5ZTAuLjkxZDNkZDhmNzViMTIyODNlMGFhZGQ3ODhlMGY5
Njc1OTBmNmRlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKQEAgLTIwNywxMCArMjA3LDEwIEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKICAgICB2b2lkIHNldEV4ZWN1
dGFibGVEdXJpbmdDb21waWxhdGlvbihFeGVjdXRhYmxlQmFzZSopOwogICAgIEV4ZWN1dGFibGVC
YXNlKiBleGVjdXRhYmxlKCk7CiAgICAgCi0gICAgdm9pZCBzZXRTdHViKFBhc3NSZWZQdHI8UG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IG5ld1N0dWIpCisgICAgdm9pZCBzZXRTdHViKFJlZjxQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHViKQogICAgIHsKICAgICAgICAgY2xl
YXJTdHViKCk7Ci0gICAgICAgIG1fc3R1YiA9IG5ld1N0dWI7CisgICAgICAgIG1fc3R1YiA9IFdU
Rk1vdmUobmV3U3R1Yik7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclN0dWIoKTsKQEAgLTIyMCw5
ICsyMjAsOSBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIHJldHVybiBtX3N0dWIuZ2V0KCk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXRTbG93U3R1YihQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBuZXdTbG93
U3R1YikKKyAgICB2b2lkIHNldFNsb3dTdHViKFJlZjxKSVRTdHViUm91dGluZT4mJiBuZXdTbG93
U3R1YikKICAgICB7Ci0gICAgICAgIG1fc2xvd1N0dWIgPSBuZXdTbG93U3R1YjsKKyAgICAgICAg
bV9zbG93U3R1YiA9IFdURk1vdmUobmV3U2xvd1N0dWIpOwogICAgIH0KIAogICAgIHZvaWQgY2xl
YXJTbG93U3R1YigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IGViMjZhNmQ2NGJkY2ZkNzBjOGU0MzZlZTliZjlhNThlNzFiNWRiNGQuLjdjMDY2
ZTRiY2NjNTE2YTIwZmMxZTdkOTAwNWQ4MDg1NTEzYTgwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENv
ZGVCbG9jayYgb3RoZXIpCiB9CiAKIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgIEpTU2NvcGUqIHNjb3BlLCBQYXNz
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zm
c2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgSlNTY29wZSogc2NvcGUs
IFJlZjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zm
c2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCiAgICAgOiBKU0NlbGwoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChzY29wZS0+Z2xvYmFsT2JqZWN0KCktPnZt
KCksIHRoaXMsIHNjb3BlLT5nbG9iYWxPYmplY3QoKSkKICAgICAsIG1fbnVtQ2FsbGVlTG9jYWxz
KHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKQEAgLTE5MTIsNyArMTkxMiw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgLCBtX3ZtKHVubGlua2VkQ29kZUJsb2Nr
LT52bSgpKQogICAgICwgbV90aGlzUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnRoaXNSZWdp
c3RlcigpKQogICAgICwgbV9zY29wZVJlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5zY29wZVJl
Z2lzdGVyKCkpCi0gICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fc291cmNl
KFdURk1vdmUoc291cmNlUHJvdmlkZXIpKQogICAgICwgbV9zb3VyY2VPZmZzZXQoc291cmNlT2Zm
c2V0KQogICAgICwgbV9maXJzdExpbmVDb2x1bW5PZmZzZXQoZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQpAQCAtMjMwNCw3ICsyMzA0LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc3RkOjpwYWly
PFR5cGVMb2NhdGlvbiosIGJvb2w+IGxvY2F0aW9uUGFpciA9IHZtLnR5cGVQcm9maWxlcigpLT50
eXBlTG9jYXRpb25DYWNoZSgpLT5nZXRUeXBlTG9jYXRpb24oZ2xvYmFsVmFyaWFibGVJRCwKLSAg
ICAgICAgICAgICAgICBvd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIGRpdm90U3RhcnQsIGRp
dm90RW5kLCBnbG9iYWxUeXBlU2V0LCAmdm0pOworICAgICAgICAgICAgICAgIG93bmVyRXhlY3V0
YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIFdURk1vdmUoZ2xvYmFsVHlw
ZVNldCksICZ2bSk7CiAgICAgICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gbG9jYXRp
b25QYWlyLmZpcnN0OwogICAgICAgICAgICAgYm9vbCBpc05ld0xvY2F0aW9uID0gbG9jYXRpb25Q
YWlyLnNlY29uZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IDExNTliYjM5OGJhYTNhYzJmMjA4YTdlZjY2Yjk1YjkxZDIxMjA1OWEuLmEzMjQxYzll
NDExMDAyZTFjNGQ5ODJmMDFjMDgwYmE2ZTBhN2NkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayhWTSosIFN0
cnVjdHVyZSosIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcik7Ci0gICAgQ29k
ZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQp
OworICAgIENvZGVCbG9jayhWTSosIFN0cnVjdHVyZSosIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU1Njb3BlKiwgUmVmPFNvdXJjZVByb3Zp
ZGVyPiYmLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCk7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUq
KTsKQEAgLTMxMiwxNSArMzEyLDE1IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIC8vIEV4YWN0bHkgZXF1aXZhbGVudCB0byBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5uZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zvcihjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9u
S2luZCgpKQogICAgIENvZGVCbG9jayogbmV3UmVwbGFjZW1lbnQoKTsKICAgICAKLSAgICB2b2lk
IHNldEpJVENvZGUoUGFzc1JlZlB0cjxKSVRDb2RlPiBjb2RlKQorICAgIHZvaWQgc2V0SklUQ29k
ZShSZWY8SklUQ29kZT4mJiBjb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhlYXAoKS0+aXNE
ZWZlcnJlZCgpKTsKICAgICAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChj
b2RlLT5zaXplKCkpOwogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIFRoaXMgaXMgcHJvYmFibHkgbm90
IG5lZWRlZCBiZWNhdXNlIHRoZSBsb2NrIHdpbGwgYWxzbyBkbyBzb21ldGhpbmcgc2ltaWxhciwg
YnV0IGl0J3MgZ29vZCB0byBiZSBwYXJhbm9pZC4KLSAgICAgICAgbV9qaXRDb2RlID0gY29kZTsK
KyAgICAgICAgbV9qaXRDb2RlID0gV1RGTW92ZShjb2RlKTsKICAgICB9Ci0gICAgUGFzc1JlZlB0
cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CisgICAgUmVmUHRyPEpJ
VENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICBzdGF0aWMgcHRyZGlm
Zl90IGppdENvZGVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBt
X2ppdENvZGUpOyB9CiAgICAgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKCkgY29uc3QKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAppbmRl
eCBlOWU2MWJhNjRjMThmYTMyNGQ4ZDQ2ZTlkNDlmYjNjMzE5OGI3MTc1Li41N2U2MzI4ZWFlYjAz
NzM3ZTc3MDIzNTQ0ZDczYTBiZjY2ZDFhODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKQEAgLTQ3LDEwICs0NywxMCBAQCBjbGFzcyBFdmFs
Q29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgfQogCiAgICAgc3RhdGlj
IEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAg
IEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRl
cikKKyAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQ
cm92aWRlcikKICAgICB7CiAgICAgICAgIEV2YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0tPmhlYXApKQotICAgICAgICAg
ICAgRXZhbENvZGVCbG9jayh2bSwgdm0tPmV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93
bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlcik7
CisgICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS0+ZXZhbENvZGVCbG9ja1N0cnVjdHVy
ZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1v
dmUoc291cmNlUHJvdmlkZXIpKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtNzAsOCArNzAsOCBAQCBjbGFzcyBFdmFsQ29kZUJs
b2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgfQogICAgICAgICAKICAgICBFdmFs
Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEV2YWxFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ss
Ci0gICAgICAgIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3Vy
Y2VQcm92aWRlcikKLSAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAw
LCAxKQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJj
ZVByb3ZpZGVyKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25l
ckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92
aWRlciksIDAsIDEpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgKaW5kZXggNWI0MThiMTRjZTgxY2U0
MDhlOTU5NjdlODAyNzFiNzBlN2JiOGZmOC4uYTM3MDJlNDc2YjVhNDU4NDE5OTgyOWI5YzBmNmI4
MTdmYWUzMmMzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBjbGFzcyBGdW5jdGlvbkNvZGVC
bG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAgIH0KIAogICAgIHN0YXRpYyBGdW5jdGlvbkNv
ZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3Bl
KiBzY29wZSwKLSAgICAgICAgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlk
ZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KQorICAgICAgICBSZWY8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVk
IHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAg
ICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25Db2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKHZtLCB2bS0+ZnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVy
RXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgc291
cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgRnVuY3Rpb25D
b2RlQmxvY2sodm0sIHZtLT5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJF
eGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlk
ZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAgICAgICAgIGluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTY4LDggKzY4
LDggQEAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgOiBwdWJsaWMgQ29kZUJsb2NrIHsKICAgICB9
CiAKICAgICBGdW5jdGlvbkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLAotICAgICAgICBQYXNzUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0
LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogQ29kZUJsb2NrKHZt
LCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBz
b3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAg
ICAgIFJlZjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNl
T2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIDogQ29kZUJs
b2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNj
b3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaAppbmRleCA5YWIyMjI2YjA1NjVkNmIxYmI1Zjcw
MTRlYjNlOWNiNDkzZDFjMDJmLi4wNTg0ZWFlZTEyYzg1YTJlZjZmOThjNzgyMDM4MGVkMGExM2Yz
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVC
bG9jay5oCkBAIC00NSw4ICs0NSw4IEBAIGNsYXNzIEdsb2JhbENvZGVCbG9jayA6IHB1YmxpYyBD
b2RlQmxvY2sgewogICAgIHsKICAgICB9CiAKLSAgICBHbG9iYWxDb2RlQmxvY2soVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNz
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zm
c2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogQ29kZUJsb2Nr
KHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3Bl
LCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisg
ICAgR2xvYmFsQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwgUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3Zp
ZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNl
dCkKKyAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VP
ZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5oCmluZGV4IGIzYzNiMTFlM2E0MWQxYTU0MTM3MDRmNWFkZmQwYjkxY2RiMjJmMzcuLjE1NmYz
NWUyMGQwMTMwYzBmZjMyNTUwNzhhYmU2OWQ5NWJiZTEyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAt
NDgsMTAgKzQ4LDEwIEBAIGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xv
YmFsQ29kZUJsb2NrIHsKICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogY3JlYXRlKFZNKiB2bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAg
ICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVBy
b3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIEpTU2NvcGUq
IHNjb3BlLCBSZWY8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZp
cnN0TGluZUNvbHVtbk9mZnNldCkKICAgICB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaz4odm0tPmhlYXApKQotICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2
bSwgdm0tPm1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KTsKKyAgICAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZt
LT5tb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUs
IHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIGZpcnN0
TGluZUNvbHVtbk9mZnNldCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0s
IG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTY4LDggKzY4LDggQEAgY2xhc3MgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQpCi0gICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93
bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwg
MCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhl
Y3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVy
KSwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IDk0Yzdh
N2EzZGU5YWQ1YWEwNmZiMDRhYzhkZmI3YjMzMTQ1ZTQ3NmMuLjZkNjdjYjlkZjgzNDUxNGE3NWY0
MTI1YmM2MDA0ZGJjODZhMDMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAKICAgICBzdGF0
aWMgUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNv
dXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIEpT
U2NvcGUqIHNjb3BlLCBSZWY8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2ln
bmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICB7CiAgICAgICAgIFByb2dyYW1Db2RlQmxv
Y2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVCbG9j
az4odm0tPmhlYXApKQotICAgICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnByb2dy
YW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2Rl
QmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKyAg
ICAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT5wcm9ncmFtQ29kZUJsb2NrU3RydWN0
dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RG
TW92ZShzb3VyY2VQcm92aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAgICAgICAgIGlu
c3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2Rl
QmxvY2ssIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTY4LDgg
KzY4LDggQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sg
ewogICAgIH0KIAogICAgIFByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBh
c3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUs
IG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRl
ciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVm
PFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVy
RXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3Zp
ZGVyKSwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCmluZGV4IDA2NmJjNjdjOGMwY2YyOTY2OTAyZDg0NzRhNDE0OTdkMWE3
NzllN2UuLmQ0NjY1OWZhMjA0NTUwOGNmYTc0OGMzM2Y4YmJiYWFkOGI5OGU0ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTQxLDcgKzE0MSw4IEBAIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBwCiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBsaW5rZWRTdGFydENvbHVtbihwYXJl
bnRTb3VyY2Uuc3RhcnRDb2x1bW4oKS5vbmVCYXNlZEludCgpKTsKICAgICB1bnNpZ25lZCBlbmRD
b2x1bW4gPSBsaW5rZWRFbmRDb2x1bW4oc3RhcnRDb2x1bW4pOwogCi0gICAgU291cmNlQ29kZSBz
b3VyY2UocGFyZW50U291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCAr
IG1fc291cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKKyAgICBBU1NFUlQocGFy
ZW50U291cmNlLnByb3ZpZGVyKCkpOworICAgIFNvdXJjZUNvZGUgc291cmNlKCpwYXJlbnRTb3Vy
Y2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgs
IGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzOjpPdmVycmlk
ZUluZm8gb3ZlcnJpZGVJbmZvOwogICAgIGJvb2wgaGFzRnVuY3Rpb25PdmVycmlkZSA9IGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQ
YXJzZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFy
c2VEYXRhLmNwcAppbmRleCAzYjA1OGJhYmZiMTM3MTM3ZjQwNTNlMDg5ODViOTQxZjYxMWRiMjAz
Li40OGY5MzlmMTBmZGFjYTFjNzc1NzRiMWJkODg2MGI4ZTcxZjA3YTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKQEAg
LTE2Nyw5ICsxNjcsMTAgQEAgYm9vbCBnYXRoZXJEZWJ1Z2dlclBhcnNlRGF0YShWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVidWdnZXJQYXJzZURhdGEKIAogYm9vbCBnYXRoZXJE
ZWJ1Z2dlclBhcnNlRGF0YUZvclNvdXJjZShWTSYgdm0sIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRl
ciwgRGVidWdnZXJQYXJzZURhdGEmIGRlYnVnZ2VyUGFyc2VEYXRhKQogeworICAgIEFTU0VSVChw
cm92aWRlcik7CiAgICAgaW50IHN0YXJ0TGluZSA9IHByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCku
bV9saW5lLm9uZUJhc2VkSW50KCk7CiAgICAgaW50IHN0YXJ0Q29sdW1uID0gcHJvdmlkZXItPnN0
YXJ0UG9zaXRpb24oKS5tX2NvbHVtbi5vbmVCYXNlZEludCgpOwotICAgIFNvdXJjZUNvZGUgY29t
cGxldGVTb3VyY2UocHJvdmlkZXIsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pOworICAgIFNvdXJj
ZUNvZGUgY29tcGxldGVTb3VyY2UoKnByb3ZpZGVyLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uKTsK
IAogICAgIHN3aXRjaCAocHJvdmlkZXItPnNvdXJjZVR5cGUoKSkgewogICAgIGNhc2UgU291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAppbmRleCBkNTdjMDFjNzAxNTIzYWVmNmZi
MWVlNTQyOWUwY2FiNGRmZTQ1Y2MxLi40YzkzOTc1YzUxNmMyNTdhYmE1ZjQ5NTFjZWQxNTdjYTA1
Y2QzNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcApAQCAtNDQsMjEgKzQ0LDIyIEBAIHZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6
Omluc2VydChjb25zdCBCbG9ja0luc2VydGlvbiYgaW5zZXJ0aW9uKQogICAgIG1faW5zZXJ0aW9u
cy5hcHBlbmQoaW5zZXJ0aW9uKTsKIH0KIAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0
KHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxCYXNpY0Jsb2NrPiBibG9jaykKK3ZvaWQgQmxvY2tJ
bnNlcnRpb25TZXQ6Omluc2VydChzaXplX3QgaW5kZXgsIFJlZjxCYXNpY0Jsb2NrPiYmIGJsb2Nr
KQogewotICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgYmxvY2spKTsKKyAgICBpbnNl
cnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7CiB9CiAKIEJhc2ljQmxv
Y2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoc2l6ZV90IGluZGV4LCBmbG9hdCBleGVjdXRp
b25Db3VudCkKIHsKLSAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcg
QmFzaWNCbG9jaygKKyAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJh
c2ljQmxvY2soCiAgICAgICAgIFVJTlRfTUFYLAogICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSwKICAgICAgICAgbV9ncmFwaC5ibG9j
aygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCksCiAgICAgICAgIGV4ZWN1dGlv
bkNvdW50KSk7CiAgICAgYmxvY2stPmlzUmVhY2hhYmxlID0gdHJ1ZTsKLSAgICBpbnNlcnQoaW5k
ZXgsIGJsb2NrKTsKLSAgICByZXR1cm4gYmxvY2suZ2V0KCk7CisgICAgYXV0byogcmVzdWx0ID0g
YmxvY2sucHRyKCk7CisgICAgaW5zZXJ0KGluZGV4LCBXVEZNb3ZlKGJsb2NrKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJl
Zm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGZsb2F0IGV4ZWN1dGlvbkNvdW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5oCmluZGV4IGVlY2M0
NDc5OWIyZGE5YzkwN2E5ZTAwY2QzNWViOTBiNDc2ZWU2OWMuLmI1YjZhMDA1Y2M4ZTY4MGE0Njc0
N2NlY2VmOTZlZGM2ZWIwYzVkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQmxvY2tJbnNl
cnRpb25TZXQgewogICAgIH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAogICAgIHZvaWQgaW5z
ZXJ0KGNvbnN0IEJsb2NrSW5zZXJ0aW9uJik7Ci0gICAgdm9pZCBpbnNlcnQoc2l6ZV90IGluZGV4
LCBQYXNzUmVmUHRyPEJhc2ljQmxvY2s+KTsKKyAgICB2b2lkIGluc2VydChzaXplX3QgaW5kZXgs
IFJlZjxCYXNpY0Jsb2NrPiYmKTsKICAgICBCYXNpY0Jsb2NrKiBpbnNlcnQoc2l6ZV90IGluZGV4
LCBmbG9hdCBleGVjdXRpb25Db3VudCk7CiAgICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJh
c2ljQmxvY2sqIGJlZm9yZSwgZmxvYXQgZXhlY3V0aW9uQ291bnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU1NjUxZjJiNWNk
ZmVjZjYyODA1M2ZiZjJhMDFkZGFiMjFmMDA2MDUuLjJhZjA4NThkYzA4NmEwYmYwNWQwMTc0ZmJm
ZGMwNzcwNjM2YzgxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNjI5LDcgKzE2MjksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2Fs
bFZhcgogICAgIEFTU0VSVChsYXN0QmxvY2stPnRlcm1pbmFsKCkpOwogCiAgICAgLy8gTmVlZCB0
byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24gYXQgdGhlIGNh
bGxlci4KLSAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNC
bG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBS
ZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2sobmV4dE9mZnNl
dCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CiAKICAgICAvLyBMaW5rIHRoZSBl
YXJseSByZXR1cm5zIHRvIHRoZSBiYXNpYyBibG9jayB3ZSdyZSBhYm91dCB0byBjcmVhdGUuCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9j
a3Muc2l6ZSgpOyArK2kpIHsKQEAgLTE2NDAsMjIgKzE2NDAsMjIgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQs
IENhbGxWYXIKICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrVG9MaW5rLT50ZXJtaW5hbCgpOwog
ICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBKdW1wKTsKICAgICAgICAgQVNTRVJUKCFub2Rl
LT50YXJnZXRCbG9jaygpKTsKLSAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdl
dCgpOworICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2sucHRyKCk7CiAgICAgICAg
IGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5M
aW5raW5nID0gZmFsc2U7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJsb2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBz
IHRvIHJldHVybilcbiIpOwogICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0K
ICAgICAKLSAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOworICAgIG1fY3VycmVudEJs
b2NrID0gYmxvY2sucHRyKCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVy
LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
Y2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4
dE9mZnNldCk7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxp
bmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLmdldCgpKSwgIiAobWFueSByZXR1cm5zKVxu
Iik7CisgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVy
KGJsb2NrLnB0cigpKSwgIiAobWFueSByZXR1cm5zKVxuIik7CiAgICAgaWYgKGNhbGxlckxpbmth
YmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJs
b2NrLmdldCgpKSk7Ci0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2Nr
TGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxv
Y2sucHRyKCkpKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgIH0KLSAgICBtX2dyYXBoLmFw
cGVuZEJsb2NrKGJsb2NrKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2sp
KTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiB9CiAKQEAgLTIwMDIsOSArMjAwMiw5IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgewogICAgICAgICBt
X2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKLSAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBt
X251bUxvY2FscywgMSkpOwotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwot
ICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgUmVmPEJhc2ljQmxv
Y2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3Vt
ZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5w
dHIoKTsKKyAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jay5jb3B5UmVmKCkpOwogICAg
ICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgIAogICAgICAgICBOb2RlKiBteUNh
bGxUYXJnZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CkBAIC0yMDE3LDkgKzIwMTcsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgaWYgKCFpbmxp
bmluZ1Jlc3VsdCkgewogICAgICAgICAgICAgLy8gVGhhdCBmYWlsZWQgc28gd2UgbGV0IHRoZSBi
bG9jayBkaWUuIE5vdGhpbmcgaW50ZXJlc3Rpbmcgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0bwog
ICAgICAgICAgICAgLy8gdGhlIGJsb2NrLiBXZSBhbHNvIGdpdmUgdXAgb24gaW5saW5pbmcgYW55
IG9mIHRoZSAobGVzcyBmcmVxdWVudCkgY2FsbGVlcy4KLSAgICAgICAgICAgIEFTU0VSVChtX2N1
cnJlbnRCbG9jayA9PSBibG9jay5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50
QmxvY2sgPT0gYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9j
a3MubGFzdCgpID09IGJsb2NrKTsKLSAgICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRz
Q29udGVudHMoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJ
dHNDb250ZW50cyhibG9jay5wdHIoKSk7CiAgICAgICAgICAgICBtX2dyYXBoLm1fYmxvY2tzLnJl
bW92ZUxhc3QoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBp
bmxpbmluZyBmYWlsZWQgbWVhbnMgd2UgbmVlZCBhIHNsb3cgcGF0aC4KQEAgLTIwMzQsNyArMjAz
NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAgICAg
QVNTRVJUKGFsbEFyZUNsb3N1cmVDYWxscyk7CiAgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0g
Y2FsbExpbmtTdGF0dXNbaV0uZXhlY3V0YWJsZSgpOwogICAgICAgICB9Ci0gICAgICAgIGRhdGEu
Y2FzZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJs
b2NrLmdldCgpKSk7CisgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFw
aC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJsb2NrLnB0cigpKSk7CiAgICAgICAgIG1fY3VycmVu
dEluZGV4ID0gbmV4dE9mZnNldDsKICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBw
cm9jZXNzU2V0TG9jYWxRdWV1ZSgpOyAvLyBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IGZvciBp
bnRyaW5zaWNzLCBzaW5jZSBub3JtYWwgaW5saW5lZCBjb2RlIHdpbGwgbGVhdmUgYW4gZW1wdHkg
cXVldWUuCkBAIC0yMDUyLDE3ICsyMDUyLDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKAogICAgICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2Fs
bExpbmtTdGF0dXNbaV0sICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAg
IH0KICAgICAKLSAgICBSZWZQdHI8QmFzaWNCbG9jaz4gc2xvd1BhdGhCbG9jayA9IGFkb3B0UmVm
KAotICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVt
TG9jYWxzLCAxKSk7CisgICAgUmVmPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJl
ZigKKyAgICAgICAgKm5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9u
dW1Mb2NhbHMsIDEpKTsKICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4
aXRPSyA9IHRydWU7Ci0gICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRhcmdldChzbG93UGF0
aEJsb2NrLmdldCgpKTsKLSAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQYXRoQmxvY2spOwor
ICAgIGRhdGEuZmFsbFRocm91Z2ggPSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5wdHIoKSk7
CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhzbG93UGF0aEJsb2NrLmNvcHlSZWYoKSk7CiAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihzbG93
UGF0aEJsb2NrLmdldCgpKSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylcbiIpOworICAg
ICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSks
ICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKICAgICBzbG93UGF0aEJsb2NrLT5k
aWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwotICAgIG1fY3VycmVudEJsb2Nr
ID0gc2xvd1BhdGhCbG9jay5nZXQoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxv
Y2sucHRyKCk7CiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVS
ZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKApAQCAt
MjA4NiwxNyArMjA4NiwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygK
ICAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOwogICAgIH0KICAg
ICAKLSAgICBSZWZQdHI8QmFzaWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigK
LSAgICAgICAgbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxv
Y2FscywgMSkpOwotICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxvY2spOwor
ICAgIFJlZjxCYXNpY0Jsb2NrPiBjb250aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAorICAgICAg
ICAqbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscywg
MSkpOworICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxvY2suY29weVJlZigp
KTsKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJs
b2NrICIsIFJhd1BvaW50ZXIoY29udGludWF0aW9uQmxvY2suZ2V0KCkpLCAiIChjb250aW51YXRp
b24pXG4iKTsKLSAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChV
bmxpbmtlZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpKSk7CisgICAgICAgIGRhdGFMb2co
IkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGNvbnRpbnVhdGlvbkJsb2NrLnB0
cigpKSwgIiAoY29udGludWF0aW9uKVxuIik7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxp
bmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhjb250aW51YXRpb25CbG9jay5wdHIoKSkp
OwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRp
bnVhdGlvbkJsb2NrLmdldCgpOworICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uQmxv
Y2sucHRyKCk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFuZGluZ0Jsb2Nrcy5zaXpl
KCk7IGktLTspCi0gICAgICAgIGxhbmRpbmdCbG9ja3NbaV0tPnRlcm1pbmFsKCktPnRhcmdldEJs
b2NrKCkgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrc1tp
XS0+dGVybWluYWwoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpOwog
ICAgIAogICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OwogICAgIG1fZXhpdE9LID0gdHJ1
ZTsKQEAgLTU4MTcsOCArNTgxNyw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJs
b2NrKCkKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RC
bG9jaygpOwogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdp
biA9IG1fY3VycmVudEluZGV4OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Js
b2NrKG1fY3VycmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Js
b2NrKG1fY3VycmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tzIHR3byB0aGluZ3M6CiAgICAgICAg
ICAgICAgICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJlZ2luIGlzIGdyZWF0ZXIgdGhhbiBj
dXJyZW50SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCiAgICAgICAgICAgICAgICAgICAg
IC8vICAgIGhvcnJpYmx5IHdyb25nLiBTbywgd2UncmUgcHJvYmFibHkgZ2VuZXJhdGluZyBpbmNv
cnJlY3QgY29kZS4KQEAgLTU4MzEsMTIgKzU4MzEsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QmVnaW4sIGxhc3RCZWdpbiA9PSBVSU5U
X01BWCB8fCBsYXN0QmVnaW4gPCBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nr
cy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwotICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJs
b2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOworICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2Nr
LnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmlu
aXRlbHkgYW4gT1NSIHRhcmdldC4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51
bUJsb2NrcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwog
ICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3Bw
CmluZGV4IDE0Y2QwZDAxNDJkYjJiOGIzYTgyNGJmYzQ2ZjhjZDkwYmUxNTU2MDkuLjc5Mzc3ZTdm
OWZhYTg0Y2IxN2YzM2VkNTgyMzk3MDY4MDk1Mjg5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVs
aXN0JiBlbnN1cmVHbG9iYWxERkdXaGl0ZWxpc3QoKQogc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0
IGNvbXBpbGVJbXBsKAogICAgIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9j
ayogcHJvZmlsZWRERkdDb2RlQmxvY2ssIENvbXBpbGF0aW9uTW9kZSBtb2RlLAogICAgIHVuc2ln
bmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RI
YW5kbGVWYWx1ZXMsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+
IGNhbGxiYWNrKQorICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJ
blJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKQogICAgICAgICB8fCAhZW5zdXJl
R2xvYmFsREZHV2hpdGVsaXN0KCkuY29udGFpbnMoY29kZUJsb2NrKSkKQEAgLTk2LDE1ICs5Niwx
NSBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgaWYgKHZtLnR5
cGVQcm9maWxlcigpKQogICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0Vu
dHJpZXMoQVNDSUlMaXRlcmFsKCJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7CiAg
ICAgCi0gICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFBsYW4o
Y29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUlu
ZGV4LCBtdXN0SGFuZGxlVmFsdWVzKSk7CisgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigK
KyAgICAgICAgKm5ldyBQbGFuKGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUs
IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIAotICAgIHBs
YW4tPmNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgcGxhbi0+Y2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEpJVCgpKSB7CiAgICAgICAg
IFdvcmtsaXN0JiB3b3JrbGlzdCA9IGVuc3VyZUdsb2JhbFdvcmtsaXN0Rm9yKG1vZGUpOwogICAg
ICAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFuZ2VzKG1vZGUpKQogICAgICAgICAgICAgZGF0YUxv
ZygiRGVmZXJyaW5nIERGRyBjb21waWxhdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAiIHdpdGggcXVl
dWUgbGVuZ3RoICIsIHdvcmtsaXN0LnF1ZXVlTGVuZ3RoKCksICIuXG4iKTsKLSAgICAgICAgd29y
a2xpc3QuZW5xdWV1ZShwbGFuKTsKKyAgICAgICAgd29ya2xpc3QuZW5xdWV1ZShXVEZNb3ZlKHBs
YW4pKTsKICAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRGVmZXJyZWQ7CiAgICAgfQogICAgIApA
QCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgK
ICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQogc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBp
bGVJbXBsKAogICAgIFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwgQ29tcGlsYXRpb25Nb2Rl
LCB1bnNpZ25lZCwgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mLAotICAgIFBhc3NSZWZQdHI8RGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPikKKyAgICBSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrPiYmKQogewogICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKIH0KQEAgLTEyMywx
MiArMTIzLDExIEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKIENvbXBp
bGF0aW9uUmVzdWx0IGNvbXBpbGUoCiAgICAgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgQ29tcGlsYXRpb25Nb2RlIG1vZGUsCiAg
ICAgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVl
PiYgbXVzdEhhbmRsZVZhbHVlcywKLSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjaz4gcGFzc2VkQ2FsbGJhY2spCisgICAgUmVmPERlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrPiBjYWxsYmFjayA9IHBhc3NlZENhbGxiYWNrOwogICAgIENvbXBpbGF0aW9uUmVzdWx0IHJl
c3VsdCA9IGNvbXBpbGVJbXBsKAogICAgICAgICB2bSwgY29kZUJsb2NrLCBwcm9maWxlZERGR0Nv
ZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzLAot
ICAgICAgICBjYWxsYmFjayk7CisgICAgICAgIGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgaWYg
KHJlc3VsdCAhPSBDb21waWxhdGlvbkRlZmVycmVkKQogICAgICAgICBjYWxsYmFjay0+Y29tcGls
YXRpb25EaWRDb21wbGV0ZShjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCByZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaApp
bmRleCAxZDU4ZDFhOGEwOWQ4NWMzZDMzMWY0ZjQxNzlhMWQwMzVkZjYzMzk0Li4xYTJkMThjZTll
OWFjNDdjM2I0Y2FlMDFmOWQyMmQyN2NhYTYxN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRHJpdmVyLmgKQEAgLTQ1LDYgKzQ1LDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
Z2V0TnVtQ29tcGlsYXRpb25zKCk7CiBDb21waWxhdGlvblJlc3VsdCBjb21waWxlKAogICAgIFZN
JiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgQ29tcGlsYXRp
b25Nb2RlLAogICAgIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFu
ZHM8SlNWYWx1ZT4mIG11c3RIYW5kbGVWYWx1ZXMsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2s+KTsKKyAgICBSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
PiYmKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCmluZGV4IDZkNTI0Njk0ZGI4MmM5N2EwYzM2MGE3MmE1ZGUzZjlmMGIwZjMyOGIu
LjNiMzI5MjA4NzQyOGMxNzRhYjUzOTYxYjE2N2IxMjhkMTMxZTI2OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTQ0MiwxMCArNDQyLDEwIEBAIGNsYXNzIEdyYXBoIDog
cHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYXNpY0Jsb2NrKiBibG9jayhCbG9ja0lu
ZGV4IGJsb2NrSW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgp
OyB9CiAgICAgQmFzaWNCbG9jayogbGFzdEJsb2NrKCkgY29uc3QgeyByZXR1cm4gYmxvY2sobnVt
QmxvY2tzKCkgLSAxKTsgfQogCi0gICAgdm9pZCBhcHBlbmRCbG9jayhQYXNzUmVmUHRyPEJhc2lj
QmxvY2s+IGJhc2ljQmxvY2spCisgICAgdm9pZCBhcHBlbmRCbG9jayhSZWY8QmFzaWNCbG9jaz4m
JiBiYXNpY0Jsb2NrKQogICAgIHsKICAgICAgICAgYmFzaWNCbG9jay0+aW5kZXggPSBtX2Jsb2Nr
cy5zaXplKCk7Ci0gICAgICAgIG1fYmxvY2tzLmFwcGVuZChiYXNpY0Jsb2NrKTsKKyAgICAgICAg
bV9ibG9ja3MuYXBwZW5kKFdURk1vdmUoYmFzaWNCbG9jaykpOwogICAgIH0KICAgICAKICAgICB2
b2lkIGtpbGxCbG9jayhCbG9ja0luZGV4IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDM1MTNiNWI5NTIyNzczMGM5M2MyMTAz
ZWM0ZjlmZGM0NmJlODgxNTcuLmRiNWU1MjVmZmRhYTk1N2NkYWUwYzc3ZGQ5OTI4YzMxM2M2NWE3
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBA
IC00MDcsNyArNDA3LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgZGlzYXNz
ZW1ibGUoKmxpbmtCdWZmZXIpOwogICAgIAogICAgIG1fZ3JhcGgubV9wbGFuLmZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fZ3Jh
cGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVy
KSk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC01MDQsNyAr
NTA0LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1f
YXJpdHlDaGVjayk7CiAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1f
aml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtC
dWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2Vt
YmxlKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKaW5kZXggZDg2ODAxMmY4ZGYzMDBmYzYwYzBiNTM1MzA1MDg2NDcxZTQ0
MWQ3NS4uMjBkMjlmZmE4ZGM4ZWZlYjMwOWM1YmVmYWI0NGUxZmQ1NGM2M2IzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMjU1LDcgKzI1NSw3IEBA
IGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAKICAgICB2b2lkIG5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBM
aW5rQnVmZmVyJik7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVy
biBtX2ppdENvZGU7IH0KKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1f
aml0Q29kZS5jb3B5UmVmKCk7IH0KICAgICAKICAgICBWZWN0b3I8TGFiZWw+JiBibG9ja0hlYWRz
KCkgeyByZXR1cm4gbV9ibG9ja0hlYWRzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklURmluYWxpemVyLmNwcAppbmRleCA1MzkxMTU4YzVlYjViMDU1ODIzMzMyN2Y3NTY3
NTk1Nzc2N2Y3ZDk0Li42YjY1ZWNjNzcyNDllY2E5ZWFkOWIxOTZiZjczNjRiOTU2NThlYzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC0z
Nyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotSklURmlu
YWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRD
b2RlLCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxh
biYgcGxhbiwgUmVmPEpJVENvZGU+JiYgaml0Q29kZSwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZm
ZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjaykKICAg
ICA6IEZpbmFsaXplcihwbGFuKQotICAgICwgbV9qaXRDb2RlKGppdENvZGUpCisgICAgLCBtX2pp
dENvZGUoV1RGTW92ZShqaXRDb2RlKSkKICAgICAsIG1fbGlua0J1ZmZlcihXVEZNb3ZlKGxpbmtC
dWZmZXIpKQogICAgICwgbV93aXRoQXJpdHlDaGVjayh3aXRoQXJpdHlDaGVjaykKIHsKQEAgLTYw
LDcgKzYwLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKICAgICAgICAgRklOQUxJ
WkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3Ry
aW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJ
VCkpLmRhdGEoKSkpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCi0g
ICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOworICAgIG1fcGxhbi5j
b2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNvcHlSZWYoKSk7CiAgICAgCiAgICAgZmlu
YWxpemVDb21tb24oKTsKICAgICAKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6
OmZpbmFsaXplRnVuY3Rpb24oKQogICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCiAg
ICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZv
ciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBK
SVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKICAgICAgICAgbV93aXRoQXJpdHlDaGVjayk7Ci0g
ICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOworICAgIG1fcGxhbi5j
b2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNvcHlSZWYoKSk7CiAgICAgCiAgICAgZmlu
YWxpemVDb21tb24oKTsKICAgICAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKSVRGaW5hbGl6ZXI6
OmZpbmFsaXplQ29tbW9uKCkKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAKICAgICBp
ZiAobV9wbGFuLmNvbXBpbGF0aW9uKQotICAgICAgICBtX3BsYW4udm0tPm1fcGVyQnl0ZWNvZGVQ
cm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9wbGFuLmNvZGVCbG9jaywgbV9wbGFuLmNvbXBpbGF0
aW9uKTsKKyAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBp
bGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssICptX3BsYW4uY29tcGlsYXRpb24pOwogICAgIAogICAg
IGlmICghbV9wbGFuLndpbGxUcnlUb1RpZXJVcCkKICAgICAgICAgbV9wbGFuLmNvZGVCbG9jay0+
YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCmluZGV4IDFiMjFmOGM4NWMw
OWJjYTg5MjBiY2E0MGY5NTkwOWJhODIzYjc5ZWIuLmIxYTJiYzAzNGViYTlmZmZlMTRiMDcxZTBi
NzJjNmQ1NjI3NjFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5h
bGl6ZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIGNsYXNzIEpJVEZpbmFsaXplciA6IHB1YmxpYyBGaW5hbGl6ZXIgewogcHVibGljOgotICAg
IEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRy
PExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpFbXB0eVZhbHVlKSk7Cisg
ICAgSklURmluYWxpemVyKFBsYW4mLCBSZWY8SklUQ29kZT4mJiwgc3RkOjp1bmlxdWVfcHRyPExp
bmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpFbXB0eVZhbHVlKSk7CiAgICAg
dmlydHVhbCB+SklURmluYWxpemVyKCk7CiAgICAgCiAgICAgc2l6ZV90IGNvZGVTaXplKCkgb3Zl
cnJpZGU7CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEpJVEZpbmFsaXplciA6IHB1YmxpYyBGaW5h
bGl6ZXIgewogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFsaXplQ29tbW9uKCk7CiAgICAgCi0gICAg
UmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsKKyAgICBSZWY8SklUQ29kZT4gbV9qaXRDb2RlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7CiAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCAxMTRjYTk1NzE0NGRiNTI4MDhjZTg1M2QzMWY3
NjViZDIyZmNhYmViLi5hZjNiNjNlMDgyZGU4YjY5Mjk2Nzc0NzNiMzZkZWViYzM5M2FmYWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMjIzLDE3ICsy
MjMsMTYgQEAgYm9vbCBXb3JrbGlzdDo6aXNBY3RpdmVGb3JWTShWTSYgdm0pIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFBhc3NSZWZQdHI8UGxh
bj4gcGFzc2VkUGxhbikKK3ZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+JiYgcGxhbikK
IHsKLSAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IHBhc3NlZFBsYW47CiAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fbG9jayk7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVl
KCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRh
dGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRvIG9wdGltaXplICIsIHBsYW4tPmtleSgpLCAiXG4i
KTsKICAgICB9CiAgICAgQVNTRVJUKG1fcGxhbnMuZmluZChwbGFuLT5rZXkoKSkgPT0gbV9wbGFu
cy5lbmQoKSk7Ci0gICAgbV9wbGFucy5hZGQocGxhbi0+a2V5KCksIHBsYW4pOwotICAgIG1fcXVl
dWUuYXBwZW5kKHBsYW4pOworICAgIG1fcGxhbnMuYWRkKHBsYW4tPmtleSgpLCBwbGFuLmNvcHlS
ZWYoKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShwbGFuKSk7CiAgICAgbV9wbGFuRW5x
dWV1ZWQtPm5vdGlmeU9uZShsb2NrZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dvcmtsaXN0LmgKaW5kZXggMzY2MWU2ZWU4M2QzNTQ3N2Y3YmFmODc0OGE3MjQ0NTg2YTAzOTBh
NS4uMjhkOWFiZjRhMzhhMDNhZGZhYTMxZWZhYzJkMzQ2MWU0YjcwMjA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXb3Jr
bGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsaXN0PiB7CiAgICAgCiAgICAgc3RhdGljIFJl
ZjxXb3JrbGlzdD4gY3JlYXRlKENTdHJpbmcgd29ya2xpc3ROYW1lLCB1bnNpZ25lZCBudW1iZXJP
ZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5ID0gMCk7CiAgICAgCi0gICAgdm9pZCBlbnF1
ZXVlKFBhc3NSZWZQdHI8UGxhbj4pOworICAgIHZvaWQgZW5xdWV1ZShSZWY8UGxhbj4mJik7CiAg
ICAgCiAgICAgLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvOgogICAgIC8vIHdvcmtsaXN0LT53YWl0
VW50aWxBbGxQbGFuc0ZvclZNQXJlUmVhZHkodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCmluZGV4IGRjZjNkYWQxZDAyN2Q3MGNmNTE0ZDJkODcz
ZjhlYzVkMDY0NTA1ZDMuLjAwZWE2NTFlMWUyYmRjZGNmNjg1M2ZjZTkyMzFmNTcyNDBmNWQ3MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKQEAg
LTgxLDEwICs4MSwxMCBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAg
ICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRyeXBvaW50TGlua0J1ZmZlciwKICAgICAg
ICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggQjMgZ2VuZXJhdGVkIGNv
ZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9j
aywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5jdGlvbikpKTsKICAgICAKLSAgICBtX3Bs
YW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUpOworICAgIG1fcGxhbi5jb2RlQmxvY2st
PnNldEpJVENvZGUoKmppdENvZGUpOwogCiAgICAgaWYgKG1fcGxhbi5jb21waWxhdGlvbikKLSAg
ICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1f
cGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlvbik7CisgICAgICAgIG1fcGxhbi52bS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJsb2NrLCAq
bV9wbGFuLmNvbXBpbGF0aW9uKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRl
eCAzMWEyYWUxNWMxNzA4Y2E4ZDU1OTMyZjY4OTA5MzVkMDYwZTY0MDJmLi5iYWI2ZGUxM2IyOGE3
MzlkYTA2ZmU1YmY5NDJiMDA3ZDlmZTA5MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVpl
cm9SZWZDb3VudCgpCiB9CiAKIAotUGFzc1JlZlB0cjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklU
U3R1YlJvdXRpbmUoCitSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAog
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZSwKICAgICBWTSYgdm0sCiAgICAg
Y29uc3QgSlNDZWxsKiBvd25lciwKQEAgLTE0MiwxNyArMTQyLDE3IEBAIFBhc3NSZWZQdHI8SklU
U3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIENhbGxTaXRlSW5kZXggZXhj
ZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCiB7CiAgICAgaWYgKCFtYWtlc0NhbGxzKQotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOwogICAgIAogICAgIGlm
IChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMt
PmppdFR5cGUoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdDQXdhcmVKSVRTdHVi
Um91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBjb2RlQmxvY2tGb3JFeGNl
cHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKICAgICB9CiAK
ICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pKTsKICAgICAKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVy
LCBjZWxscykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oCmluZGV4IGEyNTNkYTM1YTY5YTc5YjYzZDI1M2M4ZWExNDg4ZWYwMjFmYWM1NTkuLjVlZTM2
Y2E0NjBkMTA3YTQzZTRhODg2ODgxOWUzMDhlM2E0NThlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMTExLDcgKzExMSw3
IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIDogcHVi
bGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvCiAvLyBhcHByb3ByaWF0ZS4gR2VuZXJhbGx5IHlv
dSBvbmx5IG5lZWQgdG8gcGFzcyBwb2ludGVycyB0aGF0IHdpbGwgYmUgdXNlZAogLy8gYWZ0ZXIg
dGhlIGZpcnN0IGNhbGwgdG8gQysrIG9yIEpTLgogLy8gCi0vLyBQYXNzUmVmUHRyPEpJVFN0dWJS
b3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKKy8vIFJlZjxKSVRTdHViUm91dGluZT4gY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNv
ZGUsCiAvLyAgICBWTSYgdm0sCiAvLyAgICBjb25zdCBKU0NlbGwqIG93bmVyLApAQCAtMTI0LDcg
KzEyNCw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVy
IDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5n
IHZhcmFyZ3MsIEkgZW5kZWQgdXAgd2l0aCBtb3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8g
d2F5LgogCi1QYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgK
K1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2Vz
Q2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiA9IHsgfSwgCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycyA9IG51bGxwdHIsIENhbGxTaXRlSW5kZXgg
ZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4ID0gQ2FsbFNpdGVJbmRleChzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCA2MmMwNDM2OTg5YzkwNjI3NGYwZGMzOWQzM2ZhZjMwNWVmNmZlODdkLi5jZjYxNDZiMjA0
MWQ3MjI1NTIwMWVmZjcwMDU0ZDVlMGExNWIxNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC04MjksNyArODI5LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAg
ICBpZiAobV9jb21waWxhdGlvbikgewogICAgICAgICBpZiAoT3B0aW9uczo6ZGlzYXNzZW1ibGVC
YXNlbGluZUZvclByb2ZpbGVyKCkpCiAgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0
VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLmdldCgpLCBwYXRjaEJ1ZmZlcik7Ci0gICAgICAgIG1f
dm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9jb2RlQmxvY2ssIG1f
Y29tcGlsYXRpb24pOworICAgICAgICBtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENv
bXBpbGF0aW9uKG1fY29kZUJsb2NrLCAqbV9jb21waWxhdGlvbik7CiAgICAgfQogCiAgICAgaWYg
KG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQpAQCAtODQ0LDgg
Kzg0NCw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgIHN0YXRpY19j
YXN0PGRvdWJsZT4obV9pbnN0cnVjdGlvbnMuc2l6ZSgpKSk7CiAKICAgICBtX2NvZGVCbG9jay0+
c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKLSAgICBtX2NvZGVCbG9jay0+c2V0
SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRo
QXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CisgICAgbV9jb2RlQmxvY2stPnNl
dEpJVENvZGUoYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0aEFyaXR5Q2hl
Y2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSkpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFKQog
ICAgIGRhdGFMb2dGKCJKSVQgZ2VuZXJhdGVkIGNvZGUgZm9yICVwIGF0IFslcCwgJXApLlxuIiwg
bV9jb2RlQmxvY2ssIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCktPnN0YXJ0KCksIHJlc3VsdC5l
eGVjdXRhYmxlTWVtb3J5KCktPmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YlJvdXRpbmUuaAppbmRleCAzMDQ3MjEyZDRlYzRlMThhYzMxZjhhOGExNDQzOTExNDI5OTAw
YTI3Li5lYmZlMmVmMjQxOGVjMmQ4NjQ2ZmI1YzQ3MmViNzhhYWY2ZjU2ODJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC03MCwxMSArNzAsOCBAQCBj
bGFzcyBKSVRTdHViUm91dGluZSB7CiAgICAgLy8gdGhlIGNodXJuLgogICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiYgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgIAot
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgYXNDb2RlUHRyKFBhc3NSZWZQdHI8SklU
U3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lKQorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgYXNDb2RlUHRyKFJlZjxKSVRTdHViUm91dGluZT4mJiBzdHViUm91dGluZSkKICAgICB7Ci0g
ICAgICAgIGlmICghc3R1YlJvdXRpbmUpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCk7Ci0gICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVz
dWx0ID0gc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCk7CiAgICAgICAgIEFTU0VSVCghIXJlc3Vs
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRo
dW5rcy5jcHAKaW5kZXggNjBjM2NjN2E3ZTFhZDg5MzNjMzJhYTIwYjFhMmFlZTA0MTMwYjM3MS4u
ZGU0OGU2MmRkYWI4ZWZhZjhiZTMxODI4NzFiZThkNzA5OWIxN2M3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMTA4LDkgKzEwOCw5IEBAIE5hdGl2ZUV4ZWN1
dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uLCBOCiAgICAgfSBlbHNlCiAgICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcg
TmF0aXZlSklUQ29kZShKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKHZtLCBmdW5jdGlvbiksIEpJ
VENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29u
c3RydWN0ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENv
ZGU6Okhvc3RDYWxsVGh1bmspKTsKKyAgICBSZWY8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRv
cHRSZWYoKm5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2RlOjpIb3N0Q2Fs
bFRodW5rKSk7CiAgICAgCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9
IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25z
dHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CisgICAgTmF0
aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdm0sIGZvckNhbGwucmVsZWFzZU5vbk51bGwoKSwgZnVuY3Rpb24sIFdURk1vdmUoZm9yQ29u
c3RydWN0KSwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB3
ZWFrQWRkKCptX2hvc3RGdW5jdGlvblN0dWJNYXAsIHN0ZDo6bWFrZV90dXBsZShmdW5jdGlvbiwg
Y29uc3RydWN0b3IsIG5hbWUpLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KG5hdGl2ZUV4ZWN1dGFi
bGUsIHRoaXMpKTsKICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggZjU5MThiNzIx
NzBhYzVkZTQ3YzJiZWQzNjM3OTY1MzBlMDE5NTQwMS4uZjdkNzYxZGMxZGFjMDNmZjEzYTI4OTkz
ZGYzNGMzNTljZTRiMDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5j
dGlvbkVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBpZiAodm0u
Y2FuVXNlSklUKCkpIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAg
ICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgICAgICBhZG9wdFJlZihu
ZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAg
ICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9u
Rm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
Ci0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIHZtLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0
SklUQ29kZSh2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvciksIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtNTksMTIgKzU5LDEyIEBA
IHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNh
bGwpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRS
ZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENv
ZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjayksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJl
ZigqbmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENv
ZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjayksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQ
dHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTElu
dENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBv
aW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC03MiwxNCArNzIsMTQgQEAgc3Rh
dGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZSh2bS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9w
dFJlZigqbmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVy
YXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAg
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVM
TEludENvZGVSZWYobGxpbnRfZXZhbF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERp
cmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxp
bnRfZXZhbF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChW
TSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtODcsMTQgKzg3LDE0IEBAIHN0YXRpYyB2
b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAj
aWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
dm0uZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRv
cHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYo
Km5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJv
Z3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTEwMiwxNCAr
MTAyLDE0IEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNl
SklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHZt
LmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklU
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1
bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSkpOwogfQogCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
LmgKaW5kZXggOGY0ZmQzOGJhYWI4MDViMmYyMDhiM2Q4ZWI4NjNmM2Y1YzQzODVmOC4uOTg1NTcx
ZmY1YTQwNWUxZWNjMzQyOWNiYjNhN2ZmYjNlMzk3MDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKQEAgLTQxLDIwICs0MSwyMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlcikKLSAgICAgICAgICAgIDogVW5saW5rZWRTb3VyY2VD
b2RlKHByb3ZpZGVyKQorICAgICAgICBTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBw
cm92aWRlcikKKyAgICAgICAgICAgIDogVW5saW5rZWRTb3VyY2VDb2RlKFdURk1vdmUocHJvdmlk
ZXIpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1
bW4pCi0gICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShwcm92aWRlcikKKyAgICAgICAg
U291cmNlQ29kZShSZWY8U291cmNlUHJvdmlkZXI+JiYgcHJvdmlkZXIsIGludCBmaXJzdExpbmUs
IGludCBzdGFydENvbHVtbikKKyAgICAgICAgICAgIDogVW5saW5rZWRTb3VyY2VDb2RlKFdURk1v
dmUocHJvdmlkZXIpKQogICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShPcmRpbmFsTnVtYmVyOjpm
cm9tT25lQmFzZWRJbnQoc3RkOjptYXgoZmlyc3RMaW5lLCAxKSkpCiAgICAgICAgICAgICAsIG1f
c3RhcnRDb2x1bW4oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KHN0YXJ0
Q29sdW1uLCAxKSkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUo
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBzdGFydE9mZnNldCwgaW50
IGVuZE9mZnNldCwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQotICAgICAgICAgICAg
OiBVbmxpbmtlZFNvdXJjZUNvZGUocHJvdmlkZXIsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisg
ICAgICAgIFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgc3Rh
cnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikK
KyAgICAgICAgICAgIDogVW5saW5rZWRTb3VyY2VDb2RlKFdURk1vdmUocHJvdmlkZXIpLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShPcmRpbmFsTnVt
YmVyOjpmcm9tT25lQmFzZWRJbnQoc3RkOjptYXgoZmlyc3RMaW5lLCAxKSkpCiAgICAgICAgICAg
ICAsIG1fc3RhcnRDb2x1bW4oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4
KHN0YXJ0Q29sdW1uLCAxKSkpCiAgICAgICAgIHsKQEAgLTg3LDcgKzg3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbih1
bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGlu
dCBzdGFydENvbHVtbikKICAgICB7CiAgICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZl
cnQgdG8gYmFzZSAxLgotICAgICAgICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVu
QnJhY2UsIGNsb3NlQnJhY2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKKyAgICAgICAg
QVNTRVJUKHByb3ZpZGVyKCkpOworICAgICAgICByZXR1cm4gU291cmNlQ29kZSgqcHJvdmlkZXIo
KSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CiAg
ICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCmluZGV4IDI5ZWNmNWIxZTIyZjU3ZjIxNjY4Mjdh
NWRhNjVhZjY1NDliNWZmMzUuLjJkNWZiOGEyNDNlNjE5N2E0MTE3ZmUxY2E0MmYxZWVjODk3MTdj
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3Vy
Y2VDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJj
ZUNvZGUuaApAQCAtNDcsMTUgKzQ3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBVbmxpbmtlZFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQ
cm92aWRlcj4gcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1fcHJvdmlkZXIocHJvdmlkZXIpCisg
ICAgICAgIFVubGlua2VkU291cmNlQ29kZShSZWY8U291cmNlUHJvdmlkZXI+JiYgcHJvdmlkZXIp
CisgICAgICAgICAgICA6IG1fcHJvdmlkZXIoV1RGTW92ZShwcm92aWRlcikpCiAgICAgICAgICAg
ICAsIG1fc3RhcnRPZmZzZXQoMCkKICAgICAgICAgICAgICwgbV9lbmRPZmZzZXQobV9wcm92aWRl
ci0+c291cmNlKCkubGVuZ3RoKCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFVu
bGlua2VkU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50
IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQotICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHBy
b3ZpZGVyKQorICAgICAgICBVbmxpbmtlZFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYm
IHByb3ZpZGVyLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCisgICAgICAgICAgICA6
IG1fcHJvdmlkZXIoV1RGTW92ZShwcm92aWRlcikpCiAgICAgICAgICAgICAsIG1fc3RhcnRPZmZz
ZXQoc3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyRGF0YWJhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
RGF0YWJhc2UuY3BwCmluZGV4IDhlZDlmMTg0NWYzZTZhNTk3ZjY5M2ViZjVlOGYyZDY3NDBmMDgz
MjMuLjAxY2VmYzQ0MzgxODJjNWMwZTUzODYwYmY4MjUxM2U2ZmU1OGUzZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKQEAg
LTg2LDE1ICs4NiwxMyBAQCB2b2lkIERhdGFiYXNlOjpub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICBtX2NvbXBpbGF0aW9uTWFwLnJlbW92ZShjb2RlQmxvY2spOwog
fQogCi12b2lkIERhdGFiYXNlOjphZGRDb21waWxhdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
UGFzc1JlZlB0cjxDb21waWxhdGlvbj4gcGFzc2VkQ29tcGlsYXRpb24pCit2b2lkIERhdGFiYXNl
OjphZGRDb21waWxhdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVmPENvbXBpbGF0aW9uPiYm
IGNvbXBpbGF0aW9uKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogCi0gICAgUmVmUHRyPENvbXBpbGF0aW9uPiBj
b21waWxhdGlvbiA9IHBhc3NlZENvbXBpbGF0aW9uOwotICAgIAotICAgIG1fY29tcGlsYXRpb25z
LmFwcGVuZChjb21waWxhdGlvbik7Ci0gICAgbV9jb21waWxhdGlvbk1hcC5zZXQoY29kZUJsb2Nr
LCBjb21waWxhdGlvbik7CisgICAgbV9jb21waWxhdGlvbnMuYXBwZW5kKGNvbXBpbGF0aW9uLmNv
cHlSZWYoKSk7CisgICAgbV9jb21waWxhdGlvbk1hcC5zZXQoY29kZUJsb2NrLCBXVEZNb3ZlKGNv
bXBpbGF0aW9uKSk7CiB9CiAKIEpTVmFsdWUgRGF0YWJhc2U6OnRvSlMoRXhlY1N0YXRlKiBleGVj
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyRGF0YWJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmgKaW5kZXggMjA2YWEzYWIzYjUzNDFkNWYwNGFkNTEwOGU2YmI2ZjA2NGQ5MjliNy4u
YjllZjM2YzAzOWZiNDIxZTlkZmRlZGUxNmNkZTUwMjQyMDU5YTM3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01Miw3
ICs1MSw3IEBAIGNsYXNzIERhdGFiYXNlIHsKICAgICBCeXRlY29kZXMqIGVuc3VyZUJ5dGVjb2Rl
c0ZvcihDb2RlQmxvY2sqKTsKICAgICB2b2lkIG5vdGlmeURlc3RydWN0aW9uKENvZGVCbG9jayop
OwogICAgIAotICAgIHZvaWQgYWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiwgUGFzc1JlZlB0cjxD
b21waWxhdGlvbj4pOworICAgIHZvaWQgYWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiwgUmVmPENv
bXBpbGF0aW9uPiYmKTsKICAgICAKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YWJhc2UgdG8gYSBK
YXZhU2NyaXB0IG9iamVjdCB0aGF0IGlzIHN1aXRhYmxlIGZvciBKU09OIHN0cmluZ2lmaWNhdGlv
bi4KICAgICAvLyBOb3RlIHRoYXQgaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byB1c2UgYW4g
RXhlY1N0YXRlKiBhc3NvY2lhdGVkIHdpdGggYSBnbG9iYWwKQEAgLTg1LDggKzg0LDggQEAgY2xh
c3MgRGF0YWJhc2UgewogICAgIFZNJiBtX3ZtOwogICAgIFNlZ21lbnRlZFZlY3RvcjxCeXRlY29k
ZXM+IG1fYnl0ZWNvZGVzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj4gbV9i
eXRlY29kZXNNYXA7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRp
b25zOwotICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgUmVmUHRyPENvbXBpbGF0aW9uPj4gbV9jb21w
aWxhdGlvbk1hcDsKKyAgICBWZWN0b3I8UmVmPENvbXBpbGF0aW9uPj4gbV9jb21waWxhdGlvbnM7
CisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBSZWY8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0aW9u
TWFwOwogICAgIFZlY3RvcjxFdmVudD4gbV9ldmVudHM7CiAgICAgYm9vbCBtX3Nob3VsZFNhdmVB
dEV4aXQ7CiAgICAgQ1N0cmluZyBtX2F0RXhpdFNhdmVGaWxlbmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IGE2YmFiNjc3NDdmNGU5
MjgzMjNjZTc1NWUwZDU3MmU3NjIzZTQxM2UuLmM4NzFlNWYzNmJjNzMwYjBkZmQyZWEzOTBlYjVk
Mjk5YzA5ODQzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgcmV0dXJuIG1fZXZhbENvZGVCbG9jay5nZXQo
KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQor
ICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCmluZGV4IDVkMWUwYjRiNjQ0ZmM2MTE4ZjJl
NzZiYzM5ODhiMTM0ODZjMDg3NjAuLjYyODE2YTU5NGNkMzI1NTQ5NDJlZjI5Mjc4YmIyM2FiZTkw
MWFlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGVCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJh
c2UuaApAQCAtMTI1LDE5ICsxMjUsMTkgQEAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0OwogCiBwdWJsaWM6
Ci0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpCisgICAg
UmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2ppdENvZGVGb3JDYWxsKTsKLSAgICAgICAgcmV0dXJuIG1faml0Q29kZUZvckNhbGw7
CisgICAgICAgIHJldHVybiAqbV9qaXRDb2RlRm9yQ2FsbDsKICAgICB9CiAKLSAgICBQYXNzUmVm
UHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKQorICAgIFJlZjxKSVRD
b2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2ppdENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICByZXR1cm4gbV9qaXRDb2RlRm9yQ29u
c3RydWN0OworICAgICAgICByZXR1cm4gKm1faml0Q29kZUZvckNvbnN0cnVjdDsKICAgICB9CiAg
ICAgICAgIAotICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZUZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENv
ZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgIHsKICAgICAgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpCiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZv
ckNhbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAK
aW5kZXggYjBjNWMzZTY3MmQwYTMyOTdlMmRhMzY5ODg0MzBjN2E2NTBiN2RmZi4uOTkyNTZkNjU4
OTM0OTA2YjIyMDFjYjViZGVlZGU1NzcyMmUyMGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFN0cmluZ0lt
cGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IGNoYXIqIGMpCiAgICAgQVNTRVJUKGMp
OwogICAgIEFTU0VSVChjWzBdKTsKICAgICBpZiAoIWNbMV0pCi0gICAgICAgIHJldHVybiAqdm0t
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoY1swXSk7CisgICAgICAgIHJl
dHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChjWzBdKTsKIAog
ICAgIHJldHVybiAqQXRvbWljU3RyaW5nSW1wbDo6YWRkKGMpOwogfQpAQCAtNTgsNyArNTgsNyBA
QCBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChWTSogdm0sIGNvbnN0IFVDaGFyKiBz
LCBpbnQgbGVuZ3RoKQogICAgICAgICBVQ2hhciBjID0gc1swXTsKICAgICAgICAgQVNTRVJUKGMg
PD0gMHhmZik7CiAgICAgICAgIGlmIChjYW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYykpCi0g
ICAgICAgICAgICByZXR1cm4gKnZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
UmVwKGMpOworICAgICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nUmVwKGMpOwogICAgIH0KICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJu
ICpTdHJpbmdJbXBsOjplbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oCmluZGV4IDI1ZTE2YWUzNDE3ZDZkMDI2OWZmNGY3MzYxZGQ4YTI2ZjI0M2M4NjYu
LmE5NjNiNDMzMDYxN2NhNTMyZjIxYzQ4MzJlZGY2ODA4NGE0MWJlODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTIxOCw3ICsyMTgsNyBAQCBSZWY8
U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgVCogcywgaW50IGxlbmd0
aCkKICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgVCBjID0gc1swXTsKICAgICAgICAg
aWYgKGNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhjKSkKLSAgICAgICAgICAgIHJldHVybiAq
dm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoYyk7CisgICAgICAgICAg
ICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoYyk7CiAg
ICAgfQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggZGQ3NDYzYzczYTdiMTJjZWM1N2Q2OWI5MmE1YjAyNjFjNmY0NGJjNy4uMDkwOGY1
YTVlYjBmODVhN2JmNDZkYTc0NjdlNTFiNmI0ODM0MWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTM2MiwxMSArMTM2Miw5
IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdAog
fQogCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi12b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRJbnB1
dEN1cnNvcihQYXNzUmVmUHRyPElucHV0Q3Vyc29yPiBwcnBDdXJzb3IpCit2b2lkIEpTR2xvYmFs
T2JqZWN0OjpzZXRJbnB1dEN1cnNvcihSZWY8SW5wdXRDdXJzb3I+JiYgY3Vyc29yKQogewotICAg
IG1faW5wdXRDdXJzb3IgPSBwcnBDdXJzb3I7Ci0gICAgQVNTRVJUKG1faW5wdXRDdXJzb3IpOwot
CisgICAgbV9pbnB1dEN1cnNvciA9IFdURk1vdmUoY3Vyc29yKTsKICAgICBJbnB1dEN1cnNvciYg
Y3Vyc29yID0gaW5wdXRDdXJzb3IoKTsKICAgICAvLyBTYXZlIG9yIHNldCB0aGUgcmFuZG9tIHNl
ZWQuIFRoaXMgcGVyZm9ybWVkIGhlcmUgcmF0aGVyIHRoYW4gdGhlIGNvbnN0cnVjdG9yCiAgICAg
Ly8gdG8gYXZvaWQgdGhyZWFkaW5nIHRoZSBpbnB1dCBjdXJzb3IgdGhyb3VnaCBhbGwgdGhlIGFi
c3RyYWN0aW9uIGxheWVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IGY5ZGU2NDFiNjNmYTgwMDhmOGJkZmMzY2M1NDY2NGQxNzc1M2Rk
ZjAuLmE5MDk2Nzk2OTBlYTllNDExZTRhN2Q3ZmRkN2FkMjA2NWEwMTIxMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDQsNyArNDQs
NiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPGFycmF5
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAogc3RydWN0IE9wYXF1ZUpTQ2xhc3M7CiBzdHJ1Y3QgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
OwpAQCAtMzc5LDcgKzM3OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFZNJiBtX3ZtOwogCiAjaWYgRU5BQkxFKFdFQl9S
RVBMQVkpCi0gICAgUmVmUHRyPElucHV0Q3Vyc29yPiBtX2lucHV0Q3Vyc29yOworICAgIFJlZjxJ
bnB1dEN1cnNvcj4gbV9pbnB1dEN1cnNvcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCkBAIC02MTcsOCArNjE2LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoV0VCX1JFUExB
WSkKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldElucHV0Q3Vyc29yKFBhc3NSZWZQdHI8
SW5wdXRDdXJzb3I+KTsKLSAgICBJbnB1dEN1cnNvciYgaW5wdXRDdXJzb3IoKSBjb25zdCB7IHJl
dHVybiAqbV9pbnB1dEN1cnNvcjsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0SW5w
dXRDdXJzb3IoUmVmPElucHV0Q3Vyc29yPiYmKTsKKyAgICBJbnB1dEN1cnNvciYgaW5wdXRDdXJz
b3IoKSBjb25zdCB7IHJldHVybiBtX2lucHV0Q3Vyc29yLmdldCgpOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKaW5kZXggZGZkOTY1
MTQ0N2Q3MWI0MTQ4OTI4ZWYzMTg0MmJiMjdmNTA0YTBiMS4uZDVmNzA5MTBkMjJiMGQ3ZWY2Yzgw
MjQ0OWM5YTE1NGZmMWYwZWRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCkBAIC0zOCwxOCArMzgs
MTggQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0
b3IuZ2V0KCkpIHsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcygmdm0s
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwotICAgICAgICB2bS5lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3IgPSBTdHJvbmc8SlNDZWxsPih2bSwgY3JlYXRlKHZtLCAwLCAwLCAwLCBwcm9w
ZXJ0eU5hbWVzKSk7CisgICAgICAgIHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvciA9IFN0
cm9uZzxKU0NlbGw+KHZtLCBjcmVhdGUodm0sIDAsIDAsIDAsIFdURk1vdmUocHJvcGVydHlOYW1l
cykpKTsKICAgICB9CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
Pih2bS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpOwogfQogCi1KU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgsIHVpbnQzMl90IG51
bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
KQorSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBpbmRleGVkTGVuZ3Ro
LCB1aW50MzJfdCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBQcm9wZXJ0eU5hbWVBcnJheSYm
IHByb3BlcnR5TmFtZXMpCiB7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBzdHJ1Y3R1
cmUgPyBzdHJ1Y3R1cmUtPmlkKCkgOiAwOwogICAgIHVpbnQzMl90IGlubGluZUNhcGFjaXR5ID0g
c3RydWN0dXJlID8gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpIDogMDsKICAgICBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBuZXcgKE5vdE51bGwsIAogICAgICAgICBh
bGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPih2bS5oZWFwKSkgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmVJRCwgaW5saW5lQ2FwYWNpdHkpOwotICAgIGVu
dW1lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBpbmRleGVkTGVuZ3RoLCBudW1iZXJTdHJ1Y3R1
cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSk7CisgICAgZW51bWVyYXRvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIGluZGV4ZWRMZW5ndGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMs
IHByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKSk7CiAgICAgcmV0dXJuIGVudW1lcmF0b3I7CiB9
CiAKQEAgLTYwLDExICs2MCwxMCBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZUlEIHN0cnVjdHVyZQogewogfQogCi12
b2lkIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCB1aW50
MzJfdCBpbmRleGVkTGVuZ3RoLCB1aW50MzJfdCBlbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4LCBQ
YXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gaWRlbnRzKQordm9pZCBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgdWludDMyX3QgaW5kZXhlZExl
bmd0aCwgdWludDMyX3QgZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCwgUmVmUHRyPFByb3BlcnR5
TmFtZUFycmF5RGF0YT4mJiBpZGVudGlmaWVycykKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAKLSAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBpZGVudGlmaWVycyA9
IGlkZW50czsKICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYg
dmVjdG9yID0gaWRlbnRpZmllcnMtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogCiAgICAgbV9pbmRl
eGVkTGVuZ3RoID0gaW5kZXhlZExlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggMzM1NjE0M2Yz
MTJjZWFjNjQwMDc3MTNiMTZjMjg0NzYzMjI0YjRlNC4uNWUxMjM1OTg1YTI4OWM0NmJlZmRjODBj
Y2JkNzRlN2M5MDU0NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogY3JlYXRlKFZNJik7Ci0gICAgc3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5h
bWVBcnJheSYpOworICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVydHlOYW1lQXJyYXkmJik7
CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwpAQCAtODUsNyArODUsNyBAQCBjbGFzcyBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToK
ICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBTdHJ1Y3R1cmVJRCwgdWludDMyX3Qp
OwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCB1aW50MzJfdCwgdWludDMyX3QsIFBhc3NS
ZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIHVpbnQzMl90LCB1aW50MzJfdCwgUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4mJik7
CiAKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPj4gbV9wcm9wZXJ0eU5hbWVzOwog
ICAgIFN0cnVjdHVyZUlEIG1fY2FjaGVkU3RydWN0dXJlSUQ7CkBAIC0xMzUsNyArMTM1LDcgQEAg
aW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMKIAogICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4
ZWMsIHN0cnVjdHVyZSk7CiAKLSAgICBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgaW5kZXhlZExlbmd0aCwgbnVtYmVyU3RydWN0dXJl
UHJvcGVydGllcywgcHJvcGVydHlOYW1lcyk7CisgICAgZW51bWVyYXRvciA9IEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRMZW5ndGgsIG51bWJl
clN0cnVjdHVyZVByb3BlcnRpZXMsIFdURk1vdmUocHJvcGVydHlOYW1lcykpOwogICAgIGVudW1l
cmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNo
YWluKGV4ZWMpKTsKICAgICBpZiAoIWluZGV4ZWRMZW5ndGggJiYgc3RydWN0dXJlLT5jYW5DYWNo
ZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSkKICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBlbnVtZXJhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGJjYjU0MDVmZjU3MDUwZmQ2YzQzYmQzNmVlMGI1
NzY0ZmMxZjM0NDQuLjNmYzY3N2RhNzYzZmQ1NmMwNDhmZWVkMTA0NTJjZTQ2Nzk1NGU5NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtOTcsMTAgKzk3LDEw
IEBAIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIE1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOwog
ICAgIAogcHJpdmF0ZToKLSAgICBKU1N0cmluZyhWTSYgdm0sIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gdmFsdWUpCisgICAgSlNTdHJpbmcoVk0mIHZtLCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkK
ICAgICAgICAgOiBKU0NlbGwodm0sIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAg
LCBtX2ZsYWdzKDApCi0gICAgICAgICwgbV92YWx1ZShSZWZQdHI8U3RyaW5nSW1wbD4odmFsdWUp
KQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgewogICAgIH0KIApAQCAt
MTM2LDIwICsxMzYsMTggQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9
CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoVk0mIHZt
LCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZSk7
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKICAgICAgICAgc2l6
ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmluZyh2
bSwgdmFsdWUpOworICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmluZyh2bSwgV1RGTW92ZSh2YWx1
ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBsZW5ndGgsIGNvc3Qp
OwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KLSAgICBzdGF0aWMgSlNTdHJpbmcq
IGNyZWF0ZUhhc090aGVyT3duZXIoVk0mIHZtLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVl
KQorICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihWTSYgdm0sIFJlZjxT
dHJpbmdJbXBsPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgSlNTdHJpbmcqIG5l
d1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkg
SlNTdHJpbmcodm0sIHZhbHVlKTsKKyAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkgSlNTdHJpbmcodm0sIFdU
Rk1vdmUodmFsdWUpKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSwgbGVu
Z3RoKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CkBAIC01MDYsMTkgKzUwNCwx
OSBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhWTSog
dm0sIFVDaGFyIGMpCiB7CiAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQog
ICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7
Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBTdHJpbmcoJmMsIDEpLmltcGwoKSk7
CisgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBTdHJpbmdJbXBsOjpjcmVhdGUoJmMs
IDEpKTsKIH0KIAogaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0qIHZtLCBj
b25zdCBTdHJpbmcmIHMpCiB7CiAgICAgQVNTRVJUKHMubGVuZ3RoKCkgPiAxKTsKLSAgICByZXR1
cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMuaW1wbCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6
OmNyZWF0ZSgqdm0sICpzLmltcGwoKSk7CiB9CiAKIGlubGluZSBKU1N0cmluZyoganNOb250cml2
aWFsU3RyaW5nKFZNKiB2bSwgU3RyaW5nJiYgcykKIHsKICAgICBBU1NFUlQocy5sZW5ndGgoKSA+
IDEpOwotICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgcy5yZWxlYXNlSW1wbCgpKTsK
KyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMucmVsZWFzZUltcGwoKS5yZWxlYXNl
Tm9uTnVsbCgpKTsKIH0KIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lk
ZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtNTcyLDcgKzU3MCw3IEBAIGlubGlu
ZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIGlm
IChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgIHJldHVybiB2bS0+
c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAgICB9Ci0gICAgcmV0dXJu
IEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nOjpj
cmVhdGUoKnZtLCAqcy5pbXBsKCkpOwogfQogCiBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5n
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCkBAIC02MzQsNyArNjMyLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc093
bmVkU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQogICAgICAgICBpZiAoYyA8PSBtYXhT
aW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CiAgICAgfQotICAgIHJldHVybiBKU1N0cmluZzo6
Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIHMuaW1wbCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6
OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCAqcy5pbXBsKCkpOwogfQogCiBpbmxpbmUgSlNSb3Bl
U3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggMGM4MzRl
MDVmMjc0Y2M2ZDRmN2NlZDY2ZjI4ZWJmMDU3MGJmYzU2Ny4uZjQyNGJhZGFlNTIwZjQzYWIyNGU2
NGZiOWY3MzVjMWE3ZGQ5MDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFi
bGUgewogICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOwogICAg
IH0KIAotICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCisgICAgUmVm
PEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAppbmRleCBiN2RhZDJhNDYyZGRkZmMyMjc2
MmZkNWNkN2NmNmE0NjFjZGQxOGY2Li4wZjhkMDg0NDQ5ZTQ1Nzk3NjJhYmY4NzE1YTQ5MDk3NGZl
YTYxYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcApAQCAtNDAsMTEgKzQwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25z
dCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTmF0aXZlRXhlY3V0YWJs
ZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE5hdGl2
ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZShWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUq
IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0sIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVu
aywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFJlZjxKSVRDb2RlPiYmIGNvbnN0cnVjdFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVj
dXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJlKTsK
LSAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbFRodW5rLCBjb25zdHJ1Y3RU
aHVuaywgbmFtZSk7CisgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIFdURk1vdmUo
Y2FsbFRodW5rKSwgV1RGTW92ZShjb25zdHJ1Y3RUaHVuayksIG5hbWUpOwogICAgIHJldHVybiBl
eGVjdXRhYmxlOwogfQogCkBAIC01OCwxMSArNTgsMTEgQEAgU3RydWN0dXJlKiBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8s
IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQg
TmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgY29uc3Qg
U3RyaW5nJiBuYW1lKQordm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJVENvZGU+JiYgY29uc3RydWN0VGh1
bmssIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGNhbGxUaHVuazsKLSAgICBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QgPSBjb25zdHJ1Y3RUaHVuazsKKyAgICBtX2ppdENvZGVGb3JDYWxsID0gV1RGTW92ZShj
YWxsVGh1bmspOworICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IFdURk1vdmUoY29uc3RydWN0
VGh1bmspOwogICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IG1faml0Q29kZUZv
ckNhbGwtPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KTsKICAgICBtX2ppdENvZGVGb3JD
b25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IG1faml0Q29kZUZvckNvbnN0cnVjdC0+YWRkcmVzc0Zv
ckNhbGwoTXVzdENoZWNrQXJpdHkpOwogICAgIG1fbmFtZSA9IG5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggZTRkM2UwNDk0
NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYS4uYWE1NmNmNGRjZmQxNGViMmFhYmFjMzRh
YzNlNTAyZWIwMjA3YWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICB0eXBlZGVmIEV4ZWN1dGFi
bGVCYXNlIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGlj
IE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRo
dW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1
Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyBOYXRpdmVF
eGVjdXRhYmxlKiBjcmVhdGUoVk0mLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEV4ZWN1dGFibGVCYXNlIHsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhc3NSZWZQdHI8SklU
Q29kZT4gY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJVENvZGU+JiYg
Y29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggODVlYzRiNWNhNGIxYjdmNThlNjNhYWE5
NTIzZmVjNjU3NzZjYWJkOC4uYjY3ZmU4MmI1MGEyNjUwM2ZhZWRlZWFmNGZhYTkxZThkODNlNjU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgSlNPYmplY3QqIGNoZWNrU3ludGF4KEV4
ZWNTdGF0ZSopOwogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkK
KyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCA4ZDFmMjg2MDhmZDQw
MzRkZmU2ZmE1YzcwMjQ2MmNkMzRhYTQ1MzdhLi5hN2FmZTc4ZjZkZmMxNjU3ZjQ3MDNhZmViNGI3
MjA0NDE0MjZiMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmgKQEAgLTczLDkgKzczLDggQEAgY2xhc3MgUHJvcGVydHlOYW1lQXJy
YXkgewogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gbV9k
YXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVW
ZWN0b3IoKVtpXTsgfQogCi0gICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJvcGVydHlOYW1l
QXJyYXlEYXRhPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0eU5hbWVBcnJh
eURhdGEqIGRhdGEoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFBy
b3BlcnR5TmFtZUFycmF5RGF0YT4gcmVsZWFzZURhdGEoKSB7IHJldHVybiBXVEZNb3ZlKG1fZGF0
YSk7IH0KKyAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiByZWxlYXNlRGF0YSgpIHsg
cmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBm
dW5jdGlvbnMuCiAgICAgYm9vbCBjYW5BZGRLbm93blVuaXF1ZUZvclN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuaXNFbXB0eSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5oCmluZGV4IGZkNWYzMGVkMWRmMDQ5
ZjI0OTljOWEyZTNiYjJhNzdjMDM2YzczMjIuLjU3YTNmMzU5YmFhOTc1ZjIzZDNiYjU3MTM0NTdj
ZWJhNTZjNGI4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cEtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5o
CkBAIC02Myw5ICs2Myw5IEBAIHN0cnVjdCBSZWdFeHBLZXkgewogICAgIHsKICAgICB9CiAKLSAg
ICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxhZ3MsIGNvbnN0IFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcGF0dGVybikKKyAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxhZ3MsIFJlZlB0cjxTdHJp
bmdJbXBsPiYmIHBhdHRlcm4pCiAgICAgICAgIDogZmxhZ3NWYWx1ZShmbGFncykKLSAgICAgICAg
LCBwYXR0ZXJuKHBhdHRlcm4pCisgICAgICAgICwgcGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKQog
ICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggN2I1ZDYzNmFmZGQ3MDU3NDU1NmJmMDQxYzI1NGVkYjdm
MWY4MjM1ZC4uYzFmYjI3YTZkMTlmNGI0MGI2ZTczZjY0NTRiZjM4MDU5ZGM4OThiNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAK
QEAgLTE4Myw3ICsxODMsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVC
bG9ja0ZvcigKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKICAgICAgICAgcmV0
dXJuIEV2YWxDb2RlQmxvY2s6OmNyZWF0ZSh2bSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUsIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLmdldCgpLCBzY29wZSwKLSAgICAgICAg
ICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCkpOworICAgICAgICAgICAgKmV4ZWN1
dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCkpOwogICAgIH0KICAgICAKICAgICBpZiAoY2xhc3NJ
bmZvKCp2bSkgPT0gUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewpAQCAtMTkzLDcgKzE5Myw3
IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gUHJvZ3JhbUNvZGVC
bG9jazo6Y3JlYXRlKHZtLAogICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAotICAgICAgICAgICAgZXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgc3RhcnRDb2x1bW4oKSk7CisgICAgICAgICAgICAq
ZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgc3RhcnRDb2x1bW4oKSk7CiAgICAgfQog
CiAgICAgaWYgKGNsYXNzSW5mbygqdm0pID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZv
KCkpIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5l
d0NvZGVCbG9ja0ZvcigKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKICAgICAg
ICAgcmV0dXJuIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwKICAgICAgICAgICAg
IGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
LmdldCgpLCBzY29wZSwKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVy
KCksIHN0YXJ0Q29sdW1uKCkpOworICAgICAgICAgICAgKmV4ZWN1dGFibGUtPnNvdXJjZSgpLnBy
b3ZpZGVyKCksIHN0YXJ0Q29sdW1uKCkpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKGNs
YXNzSW5mbygqdm0pID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKQEAgLTIyOSw3ICsy
MjksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAg
ICB9CiAKICAgICByZXR1cm4gRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCAKLSAgICAgICAgc291cmNlKCkucHJvdmlkZXIo
KSwgc291cmNlKCkuc3RhcnRPZmZzZXQoKSwgc3RhcnRDb2x1bW4oKSk7CisgICAgICAgICpzb3Vy
Y2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydE9mZnNldCgpLCBzdGFydENvbHVtbigpKTsK
IH0KIAogQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9j
a0ZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3Ry
aW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3Bw
CmluZGV4IGNhYzVkNjllY2UyNTU0NjE2NWViNDMzZmU5ZWZlN2U2YTcyODM1NTkuLjYwZTIxYjZj
ZjQ2ZTEzZTQ2MjM1ODQ0OGZmMjhiN2RhOTE0MjJmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApAQCAtMzksOSArMzksOSBAQCBjbGFzcyBT
bWFsbFN0cmluZ3NTdG9yYWdlIHsKIHB1YmxpYzoKICAgICBTbWFsbFN0cmluZ3NTdG9yYWdlKCk7
CiAKLSAgICBTdHJpbmdJbXBsKiByZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCisgICAgU3Ry
aW5nSW1wbCYgcmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fcmVwc1tjaGFyYWN0ZXJdLmdldCgpOworICAgICAgICByZXR1cm4gKm1fcmVwc1tjaGFy
YWN0ZXJdLmdldCgpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBTbWFs
bFN0cmluZ3M6On5TbWFsbFN0cmluZ3MoKQogdm9pZCBTbWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5
U3RyaW5nKFZNKiB2bSkKIHsKICAgICBBU1NFUlQoIW1fZW1wdHlTdHJpbmcpOwotICAgIG1fZW1w
dHlTdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIFN0cmluZ0ltcGw6
OmVtcHR5KCkpOworICAgIG1fZW1wdHlTdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJP
d25lcigqdm0sICpTdHJpbmdJbXBsOjplbXB0eSgpKTsKICAgICBBU1NFUlQobV9uZWVkc1RvQmVW
aXNpdGVkKTsKIH0KIApAQCAtMTE5LDExICsxMTksMTEgQEAgdm9pZCBTbWFsbFN0cmluZ3M6OmNy
ZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhWTSogdm0sIHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVy
KQogICAgIGlmICghbV9zdG9yYWdlKQogICAgICAgICBtX3N0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNtYWxsU3RyaW5nc1N0b3JhZ2U+KCk7CiAgICAgQVNTRVJUKCFtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3NbY2hhcmFjdGVyXSk7Ci0gICAgbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJh
Y3Rlcl0gPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4obV9zdG9yYWdlLT5yZXAoY2hhcmFjdGVyKSkpOworICAgIG1fc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nc1tjaGFyYWN0ZXJdID0gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZt
LCBtX3N0b3JhZ2UtPnJlcChjaGFyYWN0ZXIpKTsKICAgICBBU1NFUlQobV9uZWVkc1RvQmVWaXNp
dGVkKTsKIH0KIAotU3RyaW5nSW1wbCogU21hbGxTdHJpbmdzOjpzaW5nbGVDaGFyYWN0ZXJTdHJp
bmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCitTdHJpbmdJbXBsJiBTbWFsbFN0cmluZ3M6
OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikKIHsKICAg
ICBpZiAoIW1fc3RvcmFnZSkKICAgICAgICAgbV9zdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxT
bWFsbFN0cmluZ3NTdG9yYWdlPigpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIFN0cmluZ0ltcGwqIFNt
YWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFj
dGVyKQogCiB2b2lkIFNtYWxsU3RyaW5nczo6aW5pdGlhbGl6ZShWTSogdm0sIEpTU3RyaW5nKiYg
c3RyaW5nLCBjb25zdCBjaGFyKiB2YWx1ZSkKIHsKLSAgICBzdHJpbmcgPSBKU1N0cmluZzo6Y3Jl
YXRlKCp2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgdmFsdWUpLmltcGwoKSk7CisgICAg
c3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIEF0b21pY1N0cmluZ0ltcGw6OmFkZCh2YWx1
ZSkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgQVNTRVJUKG1fbmVlZHNUb0JlVmlzaXRlZCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXgg
MjYzYjQyN2EwN2I4NjgyZDIyMTNjMWU2MDAzNDIxMjUzMTE1MDA4ZC4uZjMxYjVjZDY2ZmMyNmVj
ZDMwNGVlZjA5ZTIxMWZlZWI1MTk4OWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgU21hbGxTdHJpbmdz
IHsKICAgICAgICAgcmV0dXJuIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdOwog
ICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nSW1wbCogc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBXVEY6OlN0cmluZ0ltcGwmIHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25l
ZCBjaGFyIGNoYXJhY3Rlcik7CiAKICAgICBKU1N0cmluZyoqIHNpbmdsZUNoYXJhY3RlclN0cmlu
Z3MoKSB7IHJldHVybiAmbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA3MmMzYmJlYWZjYmVl
OWQ2MTRkMGM3ZDQ2NzNlOTk4ZDZlYzRjZmUuLjQ0NDg2ZGIzYzUyNTE1NWM3NTA0YmJjYjBmMGNl
ZDczYzYwY2MwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtMTE0MywxMCArMTE0MywxMCBAQCBib29sIFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hh
aW5NYXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVy
ZVNoYXBlKEpTVmFsdWUgdmFsdWUpCitSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9T
dHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFw
ZT4gYmFzZVNoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gY3VyU2hhcGUgPSBiYXNlU2hhcGU7CisgICAgUmVmPFN0cnVjdHVyZVNoYXBl
PiBiYXNlU2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFN0cnVj
dHVyZVNoYXBlPiBjdXJTaGFwZSA9IGJhc2VTaGFwZS5wdHIoKTsKICAgICBTdHJ1Y3R1cmUqIGN1
clN0cnVjdHVyZSA9IHRoaXM7CiAgICAgSlNWYWx1ZSBjdXJWYWx1ZSA9IHZhbHVlOwogICAgIHdo
aWxlIChjdXJTdHJ1Y3R1cmUpIHsKQEAgLTExNjgsNyArMTE2OCw3IEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQog
CiAgICAgICAgIGlmIChjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpKSB7
CiAgICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwot
ICAgICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0cigpKTsKKyAgICAgICAg
ICAgIGN1clNoYXBlLT5zZXRQcm90byhuZXdTaGFwZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAg
Y3VyU2hhcGUgPSBXVEZNb3ZlKG5ld1NoYXBlKTsKICAgICAgICAgICAgIGN1clZhbHVlID0gY3Vy
U3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKICAgICAgICAgfQpAQCAtMTE3Niw3ICsxMTc2
LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNo
YXBlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGN1clN0cnVjdHVyZSA9IGN1clN0cnVjdHVyZS0+
c3RvcmVkUHJvdG90eXBlU3RydWN0dXJlKCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBXVEZN
b3ZlKGJhc2VTaGFwZSk7CisgICAgcmV0dXJuIGJhc2VTaGFwZTsKIH0KIAogYm9vbCBTdHJ1Y3R1
cmU6OmNhblVzZUZvckFsbG9jYXRpb25zT2YoU3RydWN0dXJlKiBvdGhlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggYzE3YTM0MzZhYTFkN2M1YmEwMTg0
Mjk2ZDE5OWFkMGViNDg3ZjJlNi4uYjBmNDNiNzAwMjgyMjkwYzNhMjdjNGI3ZmViMWRjMWRhOGRl
MDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTQ2
LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVySW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxhdGlvblRocmVhZC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewpAQCAtNTkyLDcgKzU5MSw3IEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICB3aWxsU3RvcmVWYWx1ZVNsb3codm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZE9wdGltaXplLCBJbmZlcnJlZFR5cGVUYWJsZTo6T2xkUHJvcGVydHkpOwog
ICAgIH0KIAotICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHRvU3RydWN0dXJlU2hhcGUo
SlNWYWx1ZSk7CisgICAgUmVmPFN0cnVjdHVyZVNoYXBlPiB0b1N0cnVjdHVyZVNoYXBlKEpTVmFs
dWUpOwogICAgIAogICAgIC8vIERldGVybWluZXMgaWYgdGhlIHR3byBzdHJ1Y3R1cmVzIG1hdGNo
IGVub3VnaCB0aGF0IHRoaXMgb25lIGNvdWxkIGJlIHVzZWQgZm9yIGFsbG9jYXRpb25zCiAgICAg
Ly8gb2YgdGhlIG90aGVyIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAppbmRleCA0YzgwNjlhOGMwZjE4M2M4Mzk1YjE0MGY5
NTAwMTY3ZDUwOTU0MWQwLi5iMjViNDY2ZjY0MTZjYjA4ZGRmNWY1YmNiYTBmMTgxZTNmZDk0YTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25D
YWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9u
Q2FjaGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGQ6OnBh
aXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gVHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlv
bihHbG9iYWxWYXJpYWJsZUlEIGdsb2JhbFZhcmlhYmxlSUQsIGludHB0cl90IHNvdXJjZUlELCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBQYXNzUmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5
cGVTZXQsIFZNKiB2bSkKK3N0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBUeXBlTG9jYXRp
b25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlSUQgZ2xvYmFsVmFyaWFibGVJ
RCwgaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIFJlZlB0
cjxUeXBlU2V0PiYmIGdsb2JhbFR5cGVTZXQsIFZNKiB2bSkKIHsKICAgICBMb2NhdGlvbktleSBr
ZXk7CiAgICAga2V5Lm1fZ2xvYmFsVmFyaWFibGVJRCA9IGdsb2JhbFZhcmlhYmxlSUQ7CkBAIC00
OCw3ICs0OCw3IEBAIHN0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBUeXBlTG9jYXRpb25D
YWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlCiAgICAgICAgIGxvY2F0aW9uLT5t
X3NvdXJjZUlEID0gc291cmNlSUQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPSBz
dGFydDsKICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RFbmQgPSBlbmQ7Ci0gICAgICAgIGxvY2F0
aW9uLT5tX2dsb2JhbFR5cGVTZXQgPSBnbG9iYWxUeXBlU2V0OworICAgICAgICBsb2NhdGlvbi0+
bV9nbG9iYWxUeXBlU2V0ID0gV1RGTW92ZShnbG9iYWxUeXBlU2V0KTsKIAogICAgICAgICBtX2xv
Y2F0aW9uTWFwW2tleV0gPSBsb2NhdGlvbjsKICAgICAgICAgaXNOZXdMb2NhdGlvbiA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25D
YWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUu
aAppbmRleCA4ZTY1NDVkODIzNjY0ODU1NGM4NzBkMjkwMzI5NjQ4YzhjOWFkMGFhLi4wMDhlZjcz
MjFkNWI0ZGY0Zjc1ZDRlMDg0N2E3M2ViZGYwMjgwM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmgKQEAgLTU2LDcgKzU2LDcgQEAg
Y2xhc3MgVHlwZUxvY2F0aW9uQ2FjaGUgewogICAgICAgICB1bnNpZ25lZCBtX2VuZDsKICAgICB9
OwogCi0gICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IGdldFR5cGVMb2NhdGlvbihH
bG9iYWxWYXJpYWJsZUlELCBpbnRwdHJfdCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwg
UGFzc1JlZlB0cjxUeXBlU2V0PiwgVk0qKTsKKyAgICBzdGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwg
Ym9vbD4gZ2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlSUQsIGludHB0cl90LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZWZQdHI8VHlwZVNldD4mJiwgVk0qKTsKIHByaXZhdGU6
ICAgICAKICAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxMb2NhdGlvbktleSwgVHlwZUxv
Y2F0aW9uKiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+IExvY2F0aW9uTWFwOwogICAgIExvY2F0
aW9uTWFwIG1fbG9jYXRpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA2ZDk4MzM1OGMyZDFlMjQ2MzI4Yzg2ZjNmN2Zk
NDA5NjVkYjE3NWRjLi44NWM0OWQwNDZiYWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRlZmNkMTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5j
cHAKQEAgLTgyLDggKzgyLDggQEAgdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRy
aWVzKGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9u
ID0gZW50cnktPmxvY2F0aW9uOwogICAgICAgICBsb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPSB0
eXBlOwogICAgICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAgICAgICAgICAg
IGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBlLCBzaGFw
ZSwgc3RydWN0dXJlKTsKLSAgICAgICAgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5h
ZGRUeXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBs
b2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hZGRUeXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUu
Y29weVJlZigpLCBzdHJ1Y3R1cmUpOworICAgICAgICBsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5
cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBlLCBXVEZNb3ZlKHNoYXBlKSwgc3RydWN0dXJl
KTsKIAogICAgICAgICBlbnRyeSsrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKaW5kZXggMzFlYTdkZjM0ZmM0MDRmOThlNWI2NGRhOWVmNDIzZTY2MzQ5
NWMxNy4uOWI2OWM1NzgxMzc3MWNlZWQ4M2Y1OGRlOTI0NjU4MWFkNDI1OTQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCBU
eXBlU2V0OjpUeXBlU2V0KCkKIHsKIH0KIAotdm9pZCBUeXBlU2V0OjphZGRUeXBlSW5mb3JtYXRp
b24oUnVudGltZVR5cGUgdHlwZSwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gcHJwTmV3U2hh
cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKSAKK3ZvaWQgVHlwZVNldDo6YWRkVHlwZUluZm9ybWF0
aW9uKFJ1bnRpbWVUeXBlIHR5cGUsIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4mJiBwYXNzZWROZXdT
aGFwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBl
PiBuZXdTaGFwZSA9IHBycE5ld1NoYXBlOwogICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMg
fCB0eXBlOwogCi0gICAgaWYgKHN0cnVjdHVyZSAmJiBuZXdTaGFwZSAmJiAhcnVudGltZVR5cGVJ
c1ByaW1pdGl2ZSh0eXBlKSkgeworICAgIGlmIChzdHJ1Y3R1cmUgJiYgcGFzc2VkTmV3U2hhcGUg
JiYgIXJ1bnRpbWVUeXBlSXNQcmltaXRpdmUodHlwZSkpIHsKKyAgICAgICAgUmVmPFN0cnVjdHVy
ZVNoYXBlPiBuZXdTaGFwZSA9IHBhc3NlZE5ld1NoYXBlLnJlbGVhc2VOb25OdWxsKCk7CiAgICAg
ICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuY29udGFpbnMoc3RydWN0dXJlKSkgewogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsK
QEAgLTU2LDI2ICs1NiwyMiBAQCB2b2lkIFR5cGVTZXQ6OmFkZFR5cGVJbmZvcm1hdGlvbihSdW50
aW1lVHlwZSB0eXBlLCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBwcgogICAgICAgICAgICAg
Ly8gLSBXZSBkb24ndCBoYXZlIHR3byBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgc2hhcGUuIChTYW1l
IHNoYXBlcyBtYXkgaGF2ZSBkaWZmZXJlbnQgU3RydWN0dXJlcykuCiAgICAgICAgICAgICAvLyAt
IFdlIGRvbid0IGhhdmUgdHdvIHNoYXBlcyB0aGF0IHNoYXJlIHRoZSBzYW1lIHByb3RvdHlwZSBj
aGFpbi4gSWYgdGhlc2Ugc2hhcGVzIHNoYXJlIHRoZSBzYW1lIAogICAgICAgICAgICAgLy8gICBw
cm90b3R5cGUgY2hhaW4sIHRoZXkgd2lsbCBiZSBtZXJnZWQgaW50byBvbmUgc2hhcGUuCi0gICAg
ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICBTdHJpbmcgaGFzaCA9IG5l
d1NoYXBlLT5wcm9wZXJ0eUhhc2goKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VlblNoYXBl
IDogbV9zdHJ1Y3R1cmVIaXN0b3J5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlZW5TaGFwZS0+
cHJvcGVydHlIYXNoKCkgPT0gaGFzaCkgewotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0gCi0gICAg
ICAgICAgICAgICAgaWYgKHNlZW5TaGFwZS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKG5ld1NoYXBl
KSkgewotICAgICAgICAgICAgICAgICAgICBzZWVuU2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6bWVy
Z2Uoc2VlblNoYXBlLCBuZXdTaGFwZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHNlZW5T
aGFwZS0+cHJvcGVydHlIYXNoKCkgPT0gaGFzaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIGlmIChzZWVuU2hhcGUtPmhhc1NhbWVQcm90b3R5cGVDaGFpbihu
ZXdTaGFwZS5jb3B5UmVmKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHNlZW5TaGFwZSA9IFN0
cnVjdHVyZVNoYXBlOjptZXJnZShzZWVuU2hhcGUuY29weVJlZigpLCBXVEZNb3ZlKG5ld1NoYXBl
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghZm91bmQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKSA8IDEwMCkKLSAgICAgICAgICAgICAgICAgICAg
bV9zdHJ1Y3R1cmVIaXN0b3J5LmFwcGVuZChuZXdTaGFwZSk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIW1faXNPdmVyZmxvd24pCi0gICAgICAgICAgICAgICAgICAgIG1faXNPdmVyZmxvd24g
PSB0cnVlOworICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkgPCAxMDAp
IHsKKyAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZUhpc3RvcnkuYXBwZW5kKFdURk1vdmUobmV3
U2hhcGUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIW1faXNPdmVyZmxvd24pCisgICAgICAgICAgICAgICAgbV9pc092ZXJmbG93biA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yMjIsOCArMjE4LDggQEAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW8KIHsKICAgICBhdXRvIGRlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3Jp
cHRpb24+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1
cmVIaXN0b3J5LnNpemUoKTsgaSsrKQotICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShtX3N0
cnVjdHVyZUhpc3RvcnkuYXQoaSktPmluc3BlY3RvclJlcHJlc2VudGF0aW9uKCkpOworICAgIGZv
ciAoYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpCisgICAgICAgIGRlc2NyaXB0aW9u
LT5hZGRJdGVtKHNoYXBlLT5pbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpKTsKIAogICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KQEAgLTM2NywzMCArMzYzLDMwIEBAIFN0cmluZyBTdHJ1Y3R1cmVT
aGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOwogfQogCi1T
dHJpbmcgU3RydWN0dXJlU2hhcGU6OmxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+IHNoYXBlcykKK1N0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6bGVh
c3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0b3I8UmVmPFN0cnVjdHVyZVNoYXBlPj4mIHNoYXBl
cykKIHsKLSAgICBpZiAoIXNoYXBlcy5zaXplKCkpCisgICAgaWYgKHNoYXBlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZVNo
YXBlPiBvcmlnaW4gPSBzaGFwZXMuYXQoMCk7CisgICAgU3RydWN0dXJlU2hhcGUqIG9yaWdpbiA9
IHNoYXBlc1swXS5wdHIoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNoYXBlcy5zaXpl
KCk7IGkrKykgewogICAgICAgICBib29sIGZvdW5kTFVCID0gZmFsc2U7CiAgICAgICAgIHdoaWxl
ICghZm91bmRMVUIpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gY2hlY2sg
PSBzaGFwZXMuYXQoaSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmVTaGFwZSogY2hlY2sgPSBzaGFw
ZXNbaV0ucHRyKCk7CiAgICAgICAgICAgICBTdHJpbmcgY3VyQ3Rvck5hbWUgPSBvcmlnaW4tPm1f
Y29uc3RydWN0b3JOYW1lOwogICAgICAgICAgICAgd2hpbGUgKGNoZWNrKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoZWNrLT5tX2NvbnN0cnVjdG9yTmFtZSA9PSBjdXJDdG9yTmFtZSkgewogICAg
ICAgICAgICAgICAgICAgICBmb3VuZExVQiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjaGVjayA9IGNoZWNrLT5t
X3Byb3RvOworICAgICAgICAgICAgICAgIGNoZWNrID0gY2hlY2stPm1fcHJvdG8uZ2V0KCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWZvdW5kTFVCKSB7Ci0gICAgICAgICAgICAg
ICAgb3JpZ2luID0gb3JpZ2luLT5tX3Byb3RvOwogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
dW5saWtlbHkgdG8gaGFwcGVuLCBiZWNhdXNlIHdlIHVzdWFsbHkgYm90dG9tIG91dCBhdCAiT2Jq
ZWN0IiwgYnV0IHRoZXJlIGFyZSBzb21lIHNldHMgb2YgT2JqZWN0cwogICAgICAgICAgICAgICAg
IC8vIHRoYXQgbWF5IGNhdXNlIHRoaXMgYmVoYXZpb3IuIFdlIGZhbGwgYmFjayB0byAiT2JqZWN0
IiBiZWNhdXNlIGl0J3Mgb3VyIHZlcnNpb24gb2YgVG9wLgotICAgICAgICAgICAgICAgIGlmICgh
b3JpZ2luKQorICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLT5tX3Byb3RvKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJPYmplY3QiKTsKKyAgICAgICAgICAgICAg
ICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG8uZ2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtNTI5LDEwICs1MjUsMTAgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICBy
ZXR1cm4gYmFzZTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6aGFzU2FtZVByb3RvdHlwZUNo
YWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHBycE90aGVyKQorYm9vbCBTdHJ1Y3R1cmVT
aGFwZTo6aGFzU2FtZVByb3RvdHlwZUNoYWluKFJlZjxTdHJ1Y3R1cmVTaGFwZT4mJiBwYXNzZWRP
dGhlcikKIHsKICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNlbGYgPSB0aGlzOwotICAgIFJl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gb3RoZXIgPSBwcnBPdGhlcjsKKyAgICBSZWZQdHI8U3RydWN0
dXJlU2hhcGU+IG90aGVyID0gV1RGTW92ZShwYXNzZWRPdGhlcik7CiAgICAgd2hpbGUgKHNlbGYg
JiYgb3RoZXIpIHsKICAgICAgICAgaWYgKHNlbGYtPm1fY29uc3RydWN0b3JOYW1lICE9IG90aGVy
LT5tX2NvbnN0cnVjdG9yTmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU0Mywx
MSArNTM5LDkgQEAgYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6aGFzU2FtZVByb3RvdHlwZUNoYWluKFBh
c3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHBycE90aGVyKQogICAgIHJldHVybiAhc2VsZiAmJiAh
b3RoZXI7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjpt
ZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBwcnBBLCBjb25zdCBQYXNzUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPiBwcnBCKQorUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmVT
aGFwZTo6bWVyZ2UoUmVmPFN0cnVjdHVyZVNoYXBlPiYmIGEsIFJlZjxTdHJ1Y3R1cmVTaGFwZT4m
JiBiKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gYSA9IHBycEE7Ci0gICAgUmVmUHRy
PFN0cnVjdHVyZVNoYXBlPiBiID0gcHJwQjsKLSAgICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlw
ZUNoYWluKGIpKTsKKyAgICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIuY29weVJl
ZigpKSk7CiAKICAgICBhdXRvIG1lcmdlZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKICAg
ICBmb3IgKGF1dG8gZmllbGQgOiBhLT5tX2ZpZWxkcykgewpAQCAtNTc0LDEyICs1NjgsMTIgQEAg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNvbnN0IFBh
c3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIGlmIChhLT5tX3Byb3RvKSB7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGItPm1fcHJvdG8pOwotICAgICAgICBtZXJnZWQtPnNldFByb3RvKFN0
cnVjdHVyZVNoYXBlOjptZXJnZShhLT5tX3Byb3RvLCBiLT5tX3Byb3RvKSk7CisgICAgICAgIG1l
cmdlZC0+c2V0UHJvdG8oU3RydWN0dXJlU2hhcGU6Om1lcmdlKCphLT5tX3Byb3RvLCAqYi0+bV9w
cm90bykpOwogICAgIH0KIAogICAgIG1lcmdlZC0+bWFya0FzRmluYWwoKTsKIAotICAgIHJldHVy
biBXVEZNb3ZlKG1lcmdlZCk7CisgICAgcmV0dXJuIG1lcmdlZDsKIH0KIAogdm9pZCBTdHJ1Y3R1
cmVTaGFwZTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmgKaW5kZXggMjJmMTc4ZDNlZWY2ZjM2NDI5MWU4Mzc3YjI4YjFkYTA3MmVmNmFm
ZC4uZmI0MDY0MGViNDRkMTUwYzRjNjdjZWFkZTg1Y2Y1ZTFkNjJhYjJkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaApAQCAtNjMsMTMgKzYzLDEzIEBAIGNsYXNzIFN0
cnVjdHVyZVNoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlU2hhcGU+IHsKICAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IGlu
c3BlY3RvclJlcHJlc2VudGF0aW9uKCk7CiAgICAgdm9pZCBzZXRDb25zdHJ1Y3Rvck5hbWUoU3Ry
aW5nIG5hbWUpIHsgbV9jb25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxp
dGVyYWwoIk9iamVjdCIpIDogbmFtZSk7IH0KICAgICBTdHJpbmcgY29uc3RydWN0b3JOYW1lKCkg
eyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5hbWU7IH0KLSAgICB2b2lkIHNldFByb3RvKFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlKSB7IG1fcHJvdG8gPSBzaGFwZTsgfQorICAgIHZvaWQg
c2V0UHJvdG8oUmVmPFN0cnVjdHVyZVNoYXBlPiYmIHNoYXBlKSB7IG1fcHJvdG8gPSBXVEZNb3Zl
KHNoYXBlKTsgfQogICAgIHZvaWQgZW50ZXJEaWN0aW9uYXJ5TW9kZSgpOwogCiBwcml2YXRlOgot
ICAgIHN0YXRpYyBTdHJpbmcgbGVhc3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0b3I8UmVmUHRy
PFN0cnVjdHVyZVNoYXBlPj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBl
PiBtZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiwgY29uc3QgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmVTaGFwZT4pOwotICAgIGJvb2wgaGFzU2FtZVByb3RvdHlwZUNoYWluKFBhc3NS
ZWZQdHI8U3RydWN0dXJlU2hhcGU+KTsKKyAgICBzdGF0aWMgU3RyaW5nIGxlYXN0Q29tbW9uQW5j
ZXN0b3IoY29uc3QgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+Jik7CisgICAgc3RhdGljIFJl
ZjxTdHJ1Y3R1cmVTaGFwZT4gbWVyZ2UoUmVmPFN0cnVjdHVyZVNoYXBlPiYmLCBSZWY8U3RydWN0
dXJlU2hhcGU+JiYpOworICAgIGJvb2wgaGFzU2FtZVByb3RvdHlwZUNoYWluKFJlZjxTdHJ1Y3R1
cmVTaGFwZT4mJik7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElk
ZW50aWZpZXJSZXBIYXNoPiBtX2ZpZWxkczsKICAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX29wdGlvbmFsRmllbGRzOwpAQCAtODUsNyAr
ODUsNyBAQCBjbGFzcyBUeXBlU2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVT
ZXQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFR5cGVTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVHlwZVNldCk7IH0KICAgICBUeXBlU2V0KCk7Ci0gICAgdm9pZCBhZGRU
eXBlSW5mb3JtYXRpb24oUnVudGltZVR5cGUsIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+LCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlwZSwgUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPiYmLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGludmFsaWRhdGVD
YWNoZSgpOwogICAgIFN0cmluZyBkdW1wVHlwZXMoKSBjb25zdDsKICAgICBTdHJpbmcgZGlzcGxh
eU5hbWUoKSBjb25zdDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBUeXBlU2V0IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVTZXQ+IHsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
T3ZlcmZsb3duOwogICAgIFJ1bnRpbWVUeXBlTWFzayBtX3NlZW5UeXBlczsKLSAgICBWZWN0b3I8
UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4gbV9zdHJ1Y3R1cmVIaXN0b3J5OworICAgIFZlY3RvcjxS
ZWY8U3RydWN0dXJlU2hhcGU+PiBtX3N0cnVjdHVyZUhpc3Rvcnk7CiAgICAgU3RydWN0dXJlU2V0
IG1fc3RydWN0dXJlU2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IDk3NGMzMTAyYWEzMDc1NzE5ZGVmNDAyMjBiNjVhMzM0NjRkMGJhNTIuLmMyMjM5ZmRiZWQ3
NWQzZTljNjVjZGJjYjk2NmU2ZmEyODMzZGQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTU0OSw4ICs1NDksOCBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlucwogICAg
IFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgcmV0
dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywKLSAgICAgICAgYWRvcHRSZWYobmV3
IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwg
ZnVuY3Rpb24sCi0gICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJh
bXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29uc3RydWN0b3IsCisgICAgICAg
IGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKSwgSklUQ29kZTo6SG9z
dENhbGxUaHVuaykpLCBmdW5jdGlvbiwKKyAgICAgICAgYWRvcHRSZWYoKm5ldyBOYXRpdmVKSVRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2
ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29uc3Ry
dWN0b3IsCiAgICAgICAgIE5vSW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogfQogCkBAIC04
NjgsOSArODY4LDkgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogICAgIHR5cGVQ
cm9maWxlcigpLT5kdW1wVHlwZVByb2ZpbGVyRGF0YSgqdGhpcyk7CiB9CiAKLXZvaWQgVk06OnF1
ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWlj
cm90YXNrPiB0YXNrKQordm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVl
dWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsIGdsb2JhbE9iamVj
dCwgdGFzaykpOworICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
UXVldWVkVGFzaz4oKnRoaXMsIGdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2
b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMDg4MDA4YTliY2JiN2ZmNjI0MTMzZGVlOWFmNWRkNjM5YjVmNjhhNS4uNTI3YjhmODYzZmRk
YTBiYWUwYTI5ZTVhM2JjNDg4MzcwYWJlMWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0xOTIsMTUgKzE5MiwxNSBAQCBjbGFzcyBRdWV1ZWRUYXNrIHsKIHB1YmxpYzoKICAg
ICB2b2lkIHJ1bigpOwogCi0gICAgUXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiBtaWNyb3Rhc2spCisgICAgUXVldWVk
VGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+
JiYgbWljcm90YXNrKQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KHZtLCBnbG9iYWxPYmplY3Qp
Ci0gICAgICAgICwgbV9taWNyb3Rhc2sobWljcm90YXNrKQorICAgICAgICAsIG1fbWljcm90YXNr
KFdURk1vdmUobWljcm90YXNrKSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFN0cm9u
ZzxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAgUmVmUHRyPE1pY3JvdGFzaz4g
bV9taWNyb3Rhc2s7CisgICAgUmVmPE1pY3JvdGFzaz4gbV9taWNyb3Rhc2s7CiB9OwogCiBjbGFz
cyBDb25zZXJ2YXRpdmVSb290czsKQEAgLTY1OSw3ICs2NTksNyBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIGJvb2wgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwogICAgIGJvb2wgZGlz
YWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4pOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3Qq
LCBSZWY8TWljcm90YXNrPiYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRyYWluTWlj
cm90YXNrcygpOwogICAgIHZvaWQgc2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhy
b3coYm9vbCBnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25UaHJvdykgeyBtX2dsb2JhbENvbnN0UmVk
ZWNsYXJhdGlvblNob3VsZFRocm93ID0gZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uVGhyb3c7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhy
b3coKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggNWVi
ZTU4MzY3MDFmYzJmYzk0YzIxNTA0ODZiNTk5MTZlZDk4YjhjOC4uYmYzNThkYzZhYjQ4NTA5ODY0
NTAxYTA1YjZmNzNkOGIwYWM5OTI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6
ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUmIGZyYW1lKQogICAgIC8vIFdlIHN0b3JlIHRoZSBpbnB1dCBj
dXJzb3IgaW4gYm90aCBEb2N1bWVudCBhbmQgSlNET01XaW5kb3csIHNvIHRoYXQKICAgICAvLyBy
ZXBsYXkgc3RhdGUgaXMgYWNjZXNzaWJsZSBmcm9tIEphdmFTY3JpcHRDb3JlIGFuZCBzY3JpcHQt
ZnJlZSBsYXlvdXQgY29kZS4KICAgICBmcmFtZS5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcigq
bV9hY3RpdmVDdXJzb3IpOwotICAgIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSktPnNldElucHV0Q3Vyc29yKG1fYWN0aXZlQ3Vyc29yLmdldCgpKTsK
KyAgICBmcmFtZS5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
LT5zZXRJbnB1dEN1cnNvcigqbV9hY3RpdmVDdXJzb3IpOwogfQogCiB2b2lkIFJlcGxheUNvbnRy
b2xsZXI6OmZyYW1lRGV0YWNoZWQoRnJhbWUmIGZyYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301506</attachid>
            <date>2017-02-14 08:44:04 -0800</date>
            <delta_ts>2017-02-14 10:57:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168320-20170215014130.patch</filename>
            <type>text/plain</type>
            <size>116437</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi5iZDU4ZjVhN2IyOGUzOWJm
NGNjMGM0ZjAwYjQ1YjE4ZDQzYmFiNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjkgQEAKKzIwMTctMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCk6CisgICAgICAgICogQVBJL0pT
U2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUpOgorICAgICAg
ICAqIEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcDoKKyAgICAgICAgKHRlc3RKU09OUGFyc2Up
OgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGlu
a0J1ZmZlcjo6ZmluYWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmKToKKyAgICAgICAgKiBieXRlY29kZS9D
YWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTdHViKToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRTbG93U3R1Yik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRKSVRDb2RlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9F
dmFsQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OkV2YWxDb2RlQmxvY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJs
b2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6RnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpHbG9iYWxDb2RlQmxvY2s6Okdsb2JhbENvZGVCbG9jayk6CisgICAgICAgICogYnl0
ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OlByb2dyYW1Db2RlQmxvY2spOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmspOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Z2F0aGVyRGVidWdnZXJQYXJz
ZURhdGFGb3JTb3VyY2UpOgorICAgICAgICAqIGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCk6CisgICAgICAg
ICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGVJbXBs
KToKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVy
Lmg6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmFwcGVuZEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGls
ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6aml0Q29kZSk6CisgICAgICAg
ICogZGZnL0RGR0pJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklURmluYWxp
emVyOjpKSVRGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6Zmlu
YWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkRGRzo6SklURmluYWxpemVyOjpmaW5hbGl6ZUNvbW1vbik6Cisg
ICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlz
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmVucXVldWUpOgorICAgICAgICAq
IGRmZy9ERkdXb3JrbGlzdC5oOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAg
ICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0
ZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6
CisgICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJv
dXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFzQ29kZVB0cik6CisgICAg
ICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1Yik6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpzZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFt
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZTo6U291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnN1YkV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRTb3VyY2VDb2RlOjpVbmxpbmtlZFNvdXJjZUNvZGUpOgorICAgICAgICAq
IHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6
RGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAo
SlNDOjpFdmFsRXhlY3V0YWJsZTo6Z2VuZXJhdGVkSklUQ29kZSk6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlQmFzZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJh
dGVkSklUQ29kZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJh
dGVkSklUQ29kZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpn
ZW5lcmF0ZWRKSVRDb2RlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVy
OjphZGQ4KToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllcjo6YWRkKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjppbnB1dEN1cnNvcik6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OnByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OkpTU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGVIYXNPdGhl
ck93bmVyKToKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAoSlNDOjpqc1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OmpzT3duZWRTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlOYW1lQXJyYXk6OnJlbGVhc2VEYXRhKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlO
YW1lQXJyYXk6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwS2V5
Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cEtleTo6UmVnRXhwS2V5KToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxl
OjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoK
KyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzU3RvcmFnZTo6cmVwKToKKyAgICAgICAgKEpTQzo6
U21hbGxTdHJpbmdzOjpjcmVhdGVFbXB0eVN0cmluZyk6CisgICAgICAgIChKU0M6OlNtYWxsU3Ry
aW5nczo6Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U21hbGxT
dHJpbmdzOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXApOgorICAgICAgICAoSlNDOjpTbWFsbFN0
cmluZ3M6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvU3RydWN0dXJlU2hhcGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgICogcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlR5cGVM
b2NhdGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZUxv
Y2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6Cisg
ICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmFkZFR5cGVJ
bmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmFsbFN0cnVjdHVyZVJlcHJlc2Vu
dGF0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpsZWFzdENvbW1vbkFuY2Vz
dG9yKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6Omhhc1NhbWVQcm90b3R5cGVDaGFp
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjptZXJnZSk6CisgICAgICAgICogcnVu
dGltZS9UeXBlU2V0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzZXRQcm90byk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpnZXRIb3N0RnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6UXVldWVkVGFzazo6UXVldWVkVGFzayk6CisKIDIw
MTctMDItMTMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
YXN5bmNEaXNhc3NlbWJseSBjcmFzaGVzIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3ZGY0ZGU3ZmYx
ZTljNjg0Mzc5OTVhMWVhMDZhYzg0ZDg5ZmMzMTUuLjQ0MTBkZDczZmZiMDgxNDQwNGYzZDBjNTcz
MGY2ZmVmODE2ZDRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wMi0xNCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBE
cm9wIFBhc3NSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODMyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0U291cmNlQ29kZTo6U2NyaXB0U291cmNlQ29kZSk6CisgICAgICAgICogcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxl
cjo6ZnJhbWVOYXZpZ2F0ZWQpOgorCiAyMDE3LTAyLTEzICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVXBkYXRlIHZvbHVtZSBhbmQgc2Ny
dWJiaW5nIHNsaWRlciB0byBtYXRjaCBISSBkZXNpZ25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggMTM3NjlkZjNjYmNkZDlhYzA0NzQ2M2Y5MTJlNGUy
OTkxMTY2NmY3MC4uZTdkYWQxOWIwMGNjN2VjOTkwMjYzNGVhZGQ1NzI4MGM3OTViZmQ2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMTMzLDEyICsx
MzMsMTIgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAo
SlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3MKIHsKICAgICBpbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAKLSAgICBSZWZQdHI8Vk0+IHZtID0gZ3JvdXAgPyBQYXNzUmVmUHRyPFZNPih0b0pT
KGdyb3VwKSkgOiBWTTo6Y3JlYXRlQ29udGV4dEdyb3VwKCk7CisgICAgUmVmPFZNPiB2bSA9IGdy
b3VwID8gUmVmPFZNPigqdG9KUyhncm91cCkpIDogVk06OmNyZWF0ZUNvbnRleHRHcm91cCgpOwog
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bS5nZXQoKSk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcih2bS5wdHIoKSk7CiAKICAgICBpZiAoIWdsb2JhbE9iamVjdENsYXNzKSB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKCp2
bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRl
KHZtLmdldCgpLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLmdldCgpLCBqc051
bGwoKSkpOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICAgICBpZiAoSlNSZW1v
dGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCgpKQogICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKHRydWUpOwpAQCAtMTQ2LDEy
ICsxNDYsMTIgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3Jv
dXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3MKICAgICAgICAgcmV0dXJuIEpTR2xv
YmFsQ29udGV4dFJldGFpbih0b0dsb2JhbFJlZihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkp
OwogICAgIH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKCp2bSwgZ2xvYmFsT2JqZWN0Q2xhc3MsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCAwLCBq
c051bGwoKSkpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlKHZtLmdldCgpLCBnbG9iYWxPYmplY3RDbGFz
cywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZSh2bS5n
ZXQoKSwgMCwganNOdWxsKCkpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGdsb2JhbE9iamVjdENsYXNz
LT5wcm90b3R5cGUoZXhlYyk7CiAgICAgaWYgKCFwcm90b3R5cGUpCiAgICAgICAgIHByb3RvdHlw
ZSA9IGpzTnVsbCgpOwotICAgIGdsb2JhbE9iamVjdC0+cmVzZXRQcm90b3R5cGUoKnZtLCBwcm90
b3R5cGUpOworICAgIGdsb2JhbE9iamVjdC0+cmVzZXRQcm90b3R5cGUodm0uZ2V0KCksIHByb3Rv
dHlwZSk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgaWYgKEpTUmVtb3RlSW5z
cGVjdG9yR2V0SW5zcGVjdGlvbkVuYWJsZWRCeURlZmF1bHQoKSkKICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCBmMmFkOTQ5ZDkwYTA2NjQ2OTcyOTdmMGU4ODcx
YjI0YWU3OTg5ZjRkLi43OTE3MzhiOTVlMDU3MjIxODk2NjZjZjEwZjU4N2VkZTMyNGMyNWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNDEsNyArNDEs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdHJ1Y3QgT3BhcXVlSlNTY3JpcHQgOiBwdWJs
aWMgU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBXVEY6OlJlZlB0cjxPcGFx
dWVKU1NjcmlwdD4gY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSkKKyAgICBzdGF0aWMgV1RGOjpSZWY8T3BhcXVlSlNTY3JpcHQ+IGNyZWF0ZShW
TSYgdm0sIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHVy
bCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCiAgICAgewog
ICAgICAgICByZXR1cm4gV1RGOjphZG9wdFJlZigqbmV3IE9wYXF1ZUpTU2NyaXB0KHZtLCBzb3Vy
Y2VPcmlnaW4sIHVybCwgc3RhcnRpbmdMaW5lTnVtYmVyLCBzb3VyY2UpKTsKICAgICB9CkBAIC05
Nyw3ICs5Nyw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRh
bEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAgYXV0byByZXN1bHQgPSBP
cGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZtLCBTb3VyY2VPcmlnaW4geyBzb3VyY2VVUkxTdHJpbmcg
fSwgc291cmNlVVJMU3RyaW5nLCBzdGFydGluZ0xpbmVOdW1iZXIsIFN0cmluZyhTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbChzb3VyY2UsIGxlbmd0aCkpKTsKIAogICAgIFBhcnNlckVycm9y
IGVycm9yOwotICAgIGlmICghcGFyc2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0KSwgZXJy
b3IpKSB7CisgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQuY29weVJl
ZigpKSwgZXJyb3IpKSB7CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCiAgICAgICAgICAgICAq
ZXJyb3JNZXNzYWdlID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNzYWdlKCkpLmxl
YWtSZWYoKTsKICAgICAgICAgaWYgKGVycm9yTGluZSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBKU1Nj
cmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250
ZXh0R3JvdXBSZWYgY29udGV4dAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gJnJlc3VsdC5sZWFrUmVmKCk7
CiB9CiAKIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91
cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmIHVybCwgaW50IHN0YXJ0aW5nTGluZU51bWJl
ciwgSlNTdHJpbmdSZWYgc291cmNlLCBKU1N0cmluZ1JlZiogZXJyb3JNZXNzYWdlLCBpbnQqIGVy
cm9yTGluZSkKQEAgLTExOSw3ICsxMTksNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZUZy
b21TdHJpbmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwLCBKU1N0cmluZ1JlZgogICAg
IGF1dG8gcmVzdWx0ID0gT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSh2bSwgU291cmNlT3JpZ2luIHsg
c291cmNlVVJMU3RyaW5nIH0sIHNvdXJjZVVSTFN0cmluZywgc3RhcnRpbmdMaW5lTnVtYmVyLCBz
b3VyY2UtPnN0cmluZygpKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGlmICghcGFy
c2VTY3JpcHQodm0sIFNvdXJjZUNvZGUocmVzdWx0KSwgZXJyb3IpKSB7CisgICAgaWYgKCFwYXJz
ZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQuY29weVJlZigpKSwgZXJyb3IpKSB7CiAgICAg
ICAgIGlmIChlcnJvck1lc3NhZ2UpCiAgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShlcnJvci5tZXNzYWdlKCkpLmxlYWtSZWYoKTsKICAgICAgICAgaWYg
KGVycm9yTGluZSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0
ZUZyb21TdHJpbmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwLCBKU1N0cmluZ1JlZgog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmxlYWtS
ZWYoKTsKKyAgICByZXR1cm4gJnJlc3VsdC5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgSlNTY3JpcHRS
ZXRhaW4oSlNTY3JpcHRSZWYgc2NyaXB0KQpAQCAtMTUyLDcgKzE1Miw3IEBAIEpTVmFsdWVSZWYg
SlNTY3JpcHRFdmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTY3JpcHRSZWYgc2NyaXB0
LCBKU1ZhbHVlUmVmCiAgICAgfQogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gaW50ZXJuYWxFeGNl
cHRpb247CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSB0aGlzVmFsdWVSZWYgPyB0b0pTKGV4ZWMs
IHRoaXNWYWx1ZVJlZikgOiBqc1VuZGVmaW5lZCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZh
bHVhdGUoZXhlYywgU291cmNlQ29kZShzY3JpcHQpLCB0aGlzVmFsdWUsIGludGVybmFsRXhjZXB0
aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGV4ZWMsIFNvdXJjZUNvZGUoKnNj
cmlwdCksIHRoaXNWYWx1ZSwgaW50ZXJuYWxFeGNlcHRpb24pOwogICAgIGlmIChpbnRlcm5hbEV4
Y2VwdGlvbikgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IHRvUmVmKGV4ZWMsIGludGVybmFsRXhjZXB0aW9uLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwCmluZGV4IDI3OTdj
M2M4ZWE1ZDE1YzE4M2JlYTFlMmQ0ZDI1OTAxMzI3NjA2N2EuLjIyMGQ3ZjA3ODVlNWEwYjY2ZTA2
OTBiMTc0MGFkZDM0ZTM1NmE0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcApAQCAtMzgsMjcgKzM4LDI3IEBAIGludCB0ZXN0SlNP
TlBhcnNlKCkKIHsKICAgICBib29sIGZhaWxlZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFZNPiB2
bSA9IFZNOjpjcmVhdGUoKTsKKyAgICB7CisgICAgICAgIFJlZjxWTT4gdm0gPSBWTTo6Y3JlYXRl
KCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOworICAgICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKCp2bSwganNOdWxsKCkpKTsKIAotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTVmFsdWUgdjAgPSBKU09OUGFyc2UoZXhlYywg
IiIpOwotICAgIEpTVmFsdWUgdjEgPSBKU09OUGFyc2UoZXhlYywgIiMkJV4iKTsKLSAgICBKU1Zh
bHVlIHYyID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmluZygpKTsKLSAgICBVQ2hhciBlbXB0eVVDaGFy
QXJyYXlbMV0gPSB7ICdcMCcgfTsKLSAgICBKU1ZhbHVlIHYzID0gSlNPTlBhcnNlKGV4ZWMsIFN0
cmluZyhlbXB0eVVDaGFyQXJyYXksIDApKTsKLSAgICBKU1ZhbHVlIHY0OwotICAgIEpTVmFsdWUg
djUgPSBKU09OUGFyc2UoZXhlYywgIjEyMyIpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNWYWx1ZSB2MCA9IEpTT05QYXJz
ZShleGVjLCAiIik7CisgICAgICAgIEpTVmFsdWUgdjEgPSBKU09OUGFyc2UoZXhlYywgIiMkJV4i
KTsKKyAgICAgICAgSlNWYWx1ZSB2MiA9IEpTT05QYXJzZShleGVjLCBTdHJpbmcoKSk7CisgICAg
ICAgIFVDaGFyIGVtcHR5VUNoYXJBcnJheVsxXSA9IHsgJ1wwJyB9OworICAgICAgICBKU1ZhbHVl
IHYzID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmluZyhlbXB0eVVDaGFyQXJyYXksIDApKTsKKyAgICAg
ICAgSlNWYWx1ZSB2NDsKKyAgICAgICAgSlNWYWx1ZSB2NSA9IEpTT05QYXJzZShleGVjLCAiMTIz
Iik7CiAKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYwICE9IHYxKTsKLSAgICBmYWlsZWQgPSBm
YWlsZWQgfHwgKHYxICE9IHYyKTsKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYyICE9IHYzKTsK
LSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYzICE9IHY0KTsKLSAgICBmYWlsZWQgPSBmYWlsZWQg
fHwgKHY0ID09IHY1KTsKLQotICAgIHZtID0gbnVsbHB0cjsKKyAgICAgICAgZmFpbGVkID0gZmFp
bGVkIHx8ICh2MCAhPSB2MSk7CisgICAgICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjEgIT0gdjIp
OworICAgICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYyICE9IHYzKTsKKyAgICAgICAgZmFpbGVk
ID0gZmFpbGVkIHx8ICh2MyAhPSB2NCk7CisgICAgICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjQg
PT0gdjUpOworICAgIH0KIAogICAgIGlmIChmYWlsZWQpCiAgICAgICAgIHByaW50ZigiRkFJTDog
SlNPTlBhcnNlIFN0cmluZyB0ZXN0LlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCA5MDEwOTY3Yjk5ODM3OGI1YjI2MGJlNTRlYmJl
ZGFhY2U3ZjBkMWE3Li41OTE4Y2Y5OWQ0YTgxZjg0YjllMjcwNmYzY2Q3YjU1ZjE2YTZlNDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZiBMaW5rQnVmZmVyOjpmaW5hbGl6ZUNv
ZGVXaXRob3V0RGlzYXNzZW1ibHkoKQogICAgIAogICAgIEFTU0VSVChtX2RpZEFsbG9jYXRlKTsK
ICAgICBpZiAobV9leGVjdXRhYmxlTWVtb3J5KQotICAgICAgICByZXR1cm4gQ29kZVJlZihtX2V4
ZWN1dGFibGVNZW1vcnkpOworICAgICAgICByZXR1cm4gQ29kZVJlZigqbV9leGVjdXRhYmxlTWVt
b3J5KTsKICAgICAKICAgICByZXR1cm4gQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihtX2NvZGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCmluZGV4IGE3
MWE0ODZhMDJjMmNmZTI1ZTk2ZGE0NDk4Mjc5MDRkOGRmYjc5N2YuLmMzMWNmODUyNjAwY2IwYzg5
NmQ5NTBmMWM0ZmM5MzdhMGVlOTAxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaApAQCAtMjcsNyArMjcsNiBA
QAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMzU0LDkgKzM1Myw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB7
CiAgICAgewogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZihQYXNzUmVmUHRyPEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1dGFibGVNZW1vcnkpCisgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmKFJlZjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiYmIGV4ZWN1dGFibGVNZW1vcnkp
CiAgICAgICAgIDogbV9jb2RlUHRyKGV4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCkpCi0gICAgICAg
ICwgbV9leGVjdXRhYmxlTWVtb3J5KGV4ZWN1dGFibGVNZW1vcnkpCisgICAgICAgICwgbV9leGVj
dXRhYmxlTWVtb3J5KFdURk1vdmUoZXhlY3V0YWJsZU1lbW9yeSkpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9leGVjdXRhYmxlTWVtb3J5LT5pc01hbmFnZWQoKSk7CiAgICAgICAgIEFTU0VSVCht
X2V4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IDBhOTEwMjAxMzgyMDYwYmFiMWUyMmZkMTA1ZWY2
ZjcyM2IxZDc5ZTAuLjkxZDNkZDhmNzViMTIyODNlMGFhZGQ3ODhlMGY5Njc1OTBmNmRlODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTIw
NywxMCArMjA3LDEwIEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxDYWxsTGlua0luZm8+IHsKICAgICB2b2lkIHNldEV4ZWN1dGFibGVEdXJpbmdDb21w
aWxhdGlvbihFeGVjdXRhYmxlQmFzZSopOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
KCk7CiAgICAgCi0gICAgdm9pZCBzZXRTdHViKFBhc3NSZWZQdHI8UG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmU+IG5ld1N0dWIpCisgICAgdm9pZCBzZXRTdHViKFJlZjxQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZT4mJiBuZXdTdHViKQogICAgIHsKICAgICAgICAgY2xlYXJTdHViKCk7Ci0gICAg
ICAgIG1fc3R1YiA9IG5ld1N0dWI7CisgICAgICAgIG1fc3R1YiA9IFdURk1vdmUobmV3U3R1Yik7
CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclN0dWIoKTsKQEAgLTIyMCw5ICsyMjAsOSBAQCBjbGFz
cyBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZv
PiB7CiAgICAgICAgIHJldHVybiBtX3N0dWIuZ2V0KCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRT
bG93U3R1YihQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBuZXdTbG93U3R1YikKKyAgICB2b2lk
IHNldFNsb3dTdHViKFJlZjxKSVRTdHViUm91dGluZT4mJiBuZXdTbG93U3R1YikKICAgICB7Ci0g
ICAgICAgIG1fc2xvd1N0dWIgPSBuZXdTbG93U3R1YjsKKyAgICAgICAgbV9zbG93U3R1YiA9IFdU
Rk1vdmUobmV3U2xvd1N0dWIpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXJTbG93U3R1YigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGViMjZh
NmQ2NGJkY2ZkNzBjOGU0MzZlZTliZjlhNThlNzFiNWRiNGQuLjdjMDY2ZTRiY2NjNTE2YTIwZmMx
ZTdkOTAwNWQ4MDg1NTEzYTgwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIp
CiB9CiAKIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrLAotICAgIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBm
aXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgSlNTY29wZSogc2NvcGUsIFJlZjxTb3VyY2VQcm92
aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBm
aXJzdExpbmVDb2x1bW5PZmZzZXQpCiAgICAgOiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAg
LCBtX2dsb2JhbE9iamVjdChzY29wZS0+Z2xvYmFsT2JqZWN0KCktPnZtKCksIHRoaXMsIHNjb3Bl
LT5nbG9iYWxPYmplY3QoKSkKICAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKHVubGlua2VkQ29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscykKQEAgLTE5MTIsNyArMTkxMiw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0CiAgICAgLCBtX3ZtKHVubGlua2VkQ29kZUJsb2NrLT52bSgpKQogICAgICwg
bV90aGlzUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKQogICAgICwg
bV9zY29wZVJlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpCi0gICAg
LCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNl
UHJvdmlkZXIpKQogICAgICwgbV9zb3VyY2VPZmZzZXQoc291cmNlT2Zmc2V0KQogICAgICwgbV9m
aXJzdExpbmVDb2x1bW5PZmZzZXQoZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgICwgbV9vc3JF
eGl0Q291bnRlcigwKQpAQCAtMjMwNCw3ICsyMzA0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbios
IGJvb2w+IGxvY2F0aW9uUGFpciA9IHZtLnR5cGVQcm9maWxlcigpLT50eXBlTG9jYXRpb25DYWNo
ZSgpLT5nZXRUeXBlTG9jYXRpb24oZ2xvYmFsVmFyaWFibGVJRCwKLSAgICAgICAgICAgICAgICBv
d25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIGRpdm90U3RhcnQsIGRpdm90RW5kLCBnbG9iYWxU
eXBlU2V0LCAmdm0pOworICAgICAgICAgICAgICAgIG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIFdURk1vdmUoZ2xvYmFsVHlwZVNldCksICZ2bSk7CiAg
ICAgICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gbG9jYXRpb25QYWlyLmZpcnN0Owog
ICAgICAgICAgICAgYm9vbCBpc05ld0xvY2F0aW9uID0gbG9jYXRpb25QYWlyLnNlY29uZDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDExNTliYjM5
OGJhYTNhYzJmMjA4YTdlZjY2Yjk1YjkxZDIxMjA1OWEuLmEzMjQxYzllNDExMDAyZTFjNGQ5ODJm
MDFjMDgwYmE2ZTBhN2NkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKIAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayhWTSosIFN0cnVjdHVyZSosIENvcHlQ
YXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcik7Ci0gICAgQ29kZUJsb2NrKFZNKiwgU3Ry
dWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVC
bG9jayosIEpTU2NvcGUqLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291
cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgIENvZGVCbG9j
ayhWTSosIFN0cnVjdHVyZSosIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqLCBKU1Njb3BlKiwgUmVmPFNvdXJjZVByb3ZpZGVyPiYmLCB1bnNpZ25l
ZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqKTsKQEAgLTMxMiwxNSAr
MzEyLDE1IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIEV4YWN0
bHkgZXF1aXZhbGVudCB0byBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZXdSZXBsYWNl
bWVudENvZGVCbG9ja0Zvcihjb2RlQmxvY2stPnNwZWNpYWxpemF0aW9uS2luZCgpKQogICAgIENv
ZGVCbG9jayogbmV3UmVwbGFjZW1lbnQoKTsKICAgICAKLSAgICB2b2lkIHNldEpJVENvZGUoUGFz
c1JlZlB0cjxKSVRDb2RlPiBjb2RlKQorICAgIHZvaWQgc2V0SklUQ29kZShSZWY8SklUQ29kZT4m
JiBjb2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAg
ICAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChjb2RlLT5zaXplKCkpOwog
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7IC8vIFRoaXMgaXMgcHJvYmFibHkgbm90IG5lZWRlZCBiZWNhdXNl
IHRoZSBsb2NrIHdpbGwgYWxzbyBkbyBzb21ldGhpbmcgc2ltaWxhciwgYnV0IGl0J3MgZ29vZCB0
byBiZSBwYXJhbm9pZC4KLSAgICAgICAgbV9qaXRDb2RlID0gY29kZTsKKyAgICAgICAgbV9qaXRD
b2RlID0gV1RGTW92ZShjb2RlKTsKICAgICB9Ci0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRD
b2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUo
KSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGppdENvZGVPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ppdENvZGUpOyB9CiAg
ICAgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAppbmRleCBlOWU2MWJhNjRjMThm
YTMyNGQ4ZDQ2ZTlkNDlmYjNjMzE5OGI3MTc1Li41N2U2MzI4ZWFlYjAzNzM3ZTc3MDIzNTQ0ZDcz
YTBiZjY2ZDFhODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXZhbENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUJsb2NrLmgKQEAgLTQ3LDEwICs0NywxMCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVi
bGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgfQogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sq
IGNyZWF0ZShWTSogdm0sIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2Vk
RXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAgIEpTU2NvcGUqIHNjb3Bl
LCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlcikKKyAgICAgICAgSlNT
Y29wZSogc2NvcGUsIFJlZjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlcikKICAgICB7
CiAgICAgICAgIEV2YWxDb2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXZhbENvZGVCbG9jaz4odm0tPmhlYXApKQotICAgICAgICAgICAgRXZhbENvZGVCbG9j
ayh2bSwgdm0tPmV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlcik7CisgICAgICAgICAgICBF
dmFsQ29kZUJsb2NrKHZtLCB2bS0+ZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJF
eGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlk
ZXIpKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRh
YmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7
CiAgICAgfQpAQCAtNzAsOCArNzAsOCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEds
b2JhbENvZGVCbG9jayB7CiAgICAgfQogICAgICAgICAKICAgICBFdmFsQ29kZUJsb2NrKFZNKiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAgIEpTU2Nv
cGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlcikKLSAg
ICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCAxKQorICAgICAgICBK
U1Njb3BlKiBzY29wZSwgUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyKQorICAg
ICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIDAsIDEpCiAg
ICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GdW5jdGlvbkNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0Z1bmN0aW9uQ29kZUJsb2NrLmgKaW5kZXggNWI0MThiMTRjZTgxY2U0MDhlOTU5NjdlODAyNzFi
NzBlN2JiOGZmOC4uYTM3MDJlNDc2YjVhNDU4NDE5OTgyOWI5YzBmNmI4MTdmYWUzMmMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2Nr
LmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBD
b2RlQmxvY2sgewogICAgIH0KIAogICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRl
KFZNKiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwKLSAgICAg
ICAgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNv
dXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICAgICBSZWY8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwg
dW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAgICAgICAgRnVuY3Rpb25D
b2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25D
b2RlQmxvY2s+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB2
bS0+ZnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5s
aW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBmaXJz
dExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZt
LT5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxp
bmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VPZmZz
ZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTY4LDggKzY4LDggQEAgY2xhc3MgRnVu
Y3Rpb25Db2RlQmxvY2sgOiBwdWJsaWMgQ29kZUJsb2NrIHsKICAgICB9CiAKICAgICBGdW5jdGlv
bkNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLAotICAgICAgICBQYXNzUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJz
dExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93
bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwg
c291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIFJlZjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25l
ZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1
cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNv
dXJjZVByb3ZpZGVyKSwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCiAgICAg
ewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HbG9iYWxDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9i
YWxDb2RlQmxvY2suaAppbmRleCA5YWIyMjI2YjA1NjVkNmIxYmI1ZjcwMTRlYjNlOWNiNDkzZDFj
MDJmLi4wNTg0ZWFlZTEyYzg1YTJlZjZmOThjNzgyMDM4MGVkMGExM2YzMWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oCkBAIC00NSw4
ICs0NSw4IEBAIGNsYXNzIEdsb2JhbENvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAg
IHsKICAgICB9CiAKLSAgICBHbG9iYWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBm
aXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUs
IG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRl
ciwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgR2xvYmFsQ29kZUJs
b2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3Bl
KiBzY29wZSwgUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBz
b3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBD
b2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGlu
ZUNvbHVtbk9mZnNldCkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGIzYzNi
MTFlM2E0MWQxYTU0MTM3MDRmNWFkZmQwYjkxY2RiMjJmMzcuLjE1NmYzNWUyMGQwMTMwYzBmZjMy
NTUwNzhhYmU2OWQ5NWJiZTEyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBA
IGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsK
ICAgICB9CiAKICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2
bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSog
c2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25l
ZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWY8U291
cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKICAgICB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhl
YXApKQotICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPm1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRD
b2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsK
KyAgICAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT5tb2R1bGVQcm9ncmFt
Q29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJs
b2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNl
dCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwog
ICAgIH0KQEAgLTY4LDggKzY4LDggQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1
YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0g
ICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29s
dW1uT2Zmc2V0KQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmPFNvdXJjZVByb3ZpZGVyPiYm
IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAg
IDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IDk0YzdhN2EzZGU5YWQ1YWEwNmZi
MDRhYzhkZmI3YjMzMTQ1ZTQ3NmMuLjZkNjdjYjlkZjgzNDUxNGE3NWY0MTI1YmM2MDA0ZGJjODZh
MDMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFt
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1D
b2RlQmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2sgOiBw
dWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvZ3JhbUNvZGVC
bG9jayogY3JlYXRlKFZNKiB2bSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNT
Y29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1
bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBS
ZWY8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNv
bHVtbk9mZnNldCkKICAgICB7CiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhlYXApKQot
ICAgICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnByb2dyYW1Db2RlQmxvY2tTdHJ1
Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBz
b3VyY2VQcm92aWRlciwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKyAgICAgICAgICAgIFByb2dy
YW1Db2RlQmxvY2sodm0sIHZtLT5wcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25l
ckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92
aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hD
cmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTY4LDggKzY4LDggQEAgY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAg
IFByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvZ3JhbUV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNl
UHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQp
Ci0gICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAg
ICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5s
aW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CmluZGV4IDA2NmJjNjdjOGMwY2YyOTY2OTAyZDg0NzRhNDE0OTdkMWE3NzllN2UuLmQ0NjY1OWZh
MjA0NTUwOGNmYTc0OGMzM2Y4YmJiYWFkOGI5OGU0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcApAQCAtMTQxLDcgKzE0MSw4IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBwCiAgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSBsaW5rZWRTdGFydENvbHVtbihwYXJlbnRTb3VyY2Uuc3RhcnRD
b2x1bW4oKS5vbmVCYXNlZEludCgpKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBsaW5rZWRF
bmRDb2x1bW4oc3RhcnRDb2x1bW4pOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2UocGFyZW50U291
cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIG1fc291cmNlTGVuZ3Ro
LCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKKyAgICBBU1NFUlQocGFyZW50U291cmNlLnByb3Zp
ZGVyKCkpOworICAgIFNvdXJjZUNvZGUgc291cmNlKCpwYXJlbnRTb3VyY2UucHJvdmlkZXIoKSwg
c3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsgbV9zb3VyY2VMZW5ndGgsIGZpcnN0TGluZSwgc3Rh
cnRDb2x1bW4pOwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzOjpPdmVycmlkZUluZm8gb3ZlcnJpZGVJ
bmZvOwogICAgIGJvb2wgaGFzRnVuY3Rpb25PdmVycmlkZSA9IGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcAppbmRl
eCAzYjA1OGJhYmZiMTM3MTM3ZjQwNTNlMDg5ODViOTQxZjYxMWRiMjAzLi40OGY5MzlmMTBmZGFj
YTFjNzc1NzRiMWJkODg2MGI4ZTcxZjA3YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKQEAgLTE2Nyw5ICsxNjcsMTAg
QEAgYm9vbCBnYXRoZXJEZWJ1Z2dlclBhcnNlRGF0YShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRGVidWdnZXJQYXJzZURhdGEKIAogYm9vbCBnYXRoZXJEZWJ1Z2dlclBhcnNlRGF0
YUZvclNvdXJjZShWTSYgdm0sIFNvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgRGVidWdnZXJQYXJz
ZURhdGEmIGRlYnVnZ2VyUGFyc2VEYXRhKQogeworICAgIEFTU0VSVChwcm92aWRlcik7CiAgICAg
aW50IHN0YXJ0TGluZSA9IHByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2Vk
SW50KCk7CiAgICAgaW50IHN0YXJ0Q29sdW1uID0gcHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5t
X2NvbHVtbi5vbmVCYXNlZEludCgpOwotICAgIFNvdXJjZUNvZGUgY29tcGxldGVTb3VyY2UocHJv
dmlkZXIsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pOworICAgIFNvdXJjZUNvZGUgY29tcGxldGVT
b3VyY2UoKnByb3ZpZGVyLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uKTsKIAogICAgIHN3aXRjaCAo
cHJvdmlkZXItPnNvdXJjZVR5cGUoKSkgewogICAgIGNhc2UgU291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlOjpQcm9ncmFtOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
bG9ja0luc2VydGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2Nr
SW5zZXJ0aW9uU2V0LmNwcAppbmRleCBkNTdjMDFjNzAxNTIzYWVmNmZiMWVlNTQyOWUwY2FiNGRm
ZTQ1Y2MxLi40YzkzOTc1YzUxNmMyNTdhYmE1ZjQ5NTFjZWQxNTdjYTA1Y2QzNmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcApA
QCAtNDQsMjEgKzQ0LDIyIEBAIHZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChjb25zdCBC
bG9ja0luc2VydGlvbiYgaW5zZXJ0aW9uKQogICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoaW5zZXJ0
aW9uKTsKIH0KIAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHNpemVfdCBpbmRleCwg
UGFzc1JlZlB0cjxCYXNpY0Jsb2NrPiBibG9jaykKK3ZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omlu
c2VydChzaXplX3QgaW5kZXgsIFJlZjxCYXNpY0Jsb2NrPiYmIGJsb2NrKQogewotICAgIGluc2Vy
dChCbG9ja0luc2VydGlvbihpbmRleCwgYmxvY2spKTsKKyAgICBpbnNlcnQoQmxvY2tJbnNlcnRp
b24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7CiB9CiAKIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0
aW9uU2V0OjppbnNlcnQoc2l6ZV90IGluZGV4LCBmbG9hdCBleGVjdXRpb25Db3VudCkKIHsKLSAg
ICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jaygKKyAg
ICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soCiAgICAg
ICAgIFVJTlRfTUFYLAogICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZBcmd1bWVudHMoKSwKICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVz
QXRIZWFkLm51bWJlck9mTG9jYWxzKCksCiAgICAgICAgIGV4ZWN1dGlvbkNvdW50KSk7CiAgICAg
YmxvY2stPmlzUmVhY2hhYmxlID0gdHJ1ZTsKLSAgICBpbnNlcnQoaW5kZXgsIGJsb2NrKTsKLSAg
ICByZXR1cm4gYmxvY2suZ2V0KCk7CisgICAgYXV0byogcmVzdWx0ID0gYmxvY2sucHRyKCk7Cisg
ICAgaW5zZXJ0KGluZGV4LCBXVEZNb3ZlKGJsb2NrKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2Nr
KiBiZWZvcmUsIGZsb2F0IGV4ZWN1dGlvbkNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5oCmluZGV4IGVlY2M0NDc5OWIyZGE5YzkwN2E5
ZTAwY2QzNWViOTBiNDc2ZWU2OWMuLmI1YjZhMDA1Y2M4ZTY4MGE0Njc0N2NlY2VmOTZlZGM2ZWIw
YzVkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNl
cnRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgewogICAg
IH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAogICAgIHZvaWQgaW5zZXJ0KGNvbnN0IEJsb2Nr
SW5zZXJ0aW9uJik7Ci0gICAgdm9pZCBpbnNlcnQoc2l6ZV90IGluZGV4LCBQYXNzUmVmUHRyPEJh
c2ljQmxvY2s+KTsKKyAgICB2b2lkIGluc2VydChzaXplX3QgaW5kZXgsIFJlZjxCYXNpY0Jsb2Nr
PiYmKTsKICAgICBCYXNpY0Jsb2NrKiBpbnNlcnQoc2l6ZV90IGluZGV4LCBmbG9hdCBleGVjdXRp
b25Db3VudCk7CiAgICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9y
ZSwgZmxvYXQgZXhlY3V0aW9uQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU1NjUxZjJiNWNkZmVjZjYyODA1M2ZiZjJh
MDFkZGFiMjFmMDA2MDUuLjc2NWMzYjQ4OGRjMjI3NDEyYjUzMTJhMDUzNWZlYjZjMTI3ZDZhMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC0xNjI5LDcgKzE2MjksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5v
ZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIEFTU0VS
VChsYXN0QmxvY2stPnRlcm1pbmFsKCkpOwogCiAgICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcg
YmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24gYXQgdGhlIGNhbGxlci4KLSAgICBSZWZQ
dHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0
LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBSZWY8QmFzaWNCbG9jaz4g
YmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVu
dHMsIG1fbnVtTG9jYWxzLCAxKSk7CiAKICAgICAvLyBMaW5rIHRoZSBlYXJseSByZXR1cm5zIHRv
IHRoZSBiYXNpYyBibG9jayB3ZSdyZSBhYm91dCB0byBjcmVhdGUuCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3Muc2l6ZSgpOyArK2kp
IHsKQEAgLTE2NDAsMjIgKzE2NDAsMjIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrVG9MaW5rLT50ZXJtaW5hbCgpOwogICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBKdW1wKTsKICAgICAgICAgQVNTRVJUKCFub2RlLT50YXJnZXRCbG9jaygp
KTsKLSAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdldCgpOworICAgICAgICBu
b2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2sucHRyKCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50
cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7
CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBS
YXdQb2ludGVyKGJsb2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRvIHJldHVybilcbiIp
OwogICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAgICAKLSAgICBtX2N1
cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOworICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2sucHRy
KCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2Nr
TGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7CiAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBS
YXdQb2ludGVyKGJsb2NrLmdldCgpKSwgIiAobWFueSByZXR1cm5zKVxuIik7CisgICAgICAgIGRh
dGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLnB0cigpKSwg
IiAobWFueSByZXR1cm5zKVxuIik7CiAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVy
LT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdldCgpKSk7Ci0g
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMu
YXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXIt
Pm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKKyAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5h
cHBlbmQoYmxvY2sucHRyKCkpOwogICAgIH0KLSAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGJsb2Nr
KTsKKyAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICBwcmVwYXJl
VG9QYXJzZUJsb2NrKCk7CiB9CiAKQEAgLTIwMDIsOSArMjAwMiw5IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgewogICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IG9sZE9mZnNldDsKLSAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYo
bmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkp
OwotICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwotICAgICAgICBtX2dyYXBo
LmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRv
cHRSZWYoKm5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2Nh
bHMsIDEpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKKyAgICAgICAg
bV9ncmFwaC5hcHBlbmRCbG9jayhibG9jay5jb3B5UmVmKCkpOwogICAgICAgICBwcmVwYXJlVG9Q
YXJzZUJsb2NrKCk7CiAgICAgICAgIAogICAgICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2RlID0g
Z2V0RGlyZWN0KGNhbGxlZVJlZyk7CkBAIC0yMDE3LDkgKzIwMTcsOSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgaWYgKCFpbmxpbmluZ1Jlc3VsdCkgewog
ICAgICAgICAgICAgLy8gVGhhdCBmYWlsZWQgc28gd2UgbGV0IHRoZSBibG9jayBkaWUuIE5vdGhp
bmcgaW50ZXJlc3Rpbmcgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0bwogICAgICAgICAgICAgLy8g
dGhlIGJsb2NrLiBXZSBhbHNvIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSAobGVzcyBm
cmVxdWVudCkgY2FsbGVlcy4KLSAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBi
bG9jay5nZXQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkg
PT0gYmxvY2spOwotICAgICAgICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhi
bG9jay5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gYmxvY2su
cHRyKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpID09IGJs
b2NrLnB0cigpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29udGVudHMo
YmxvY2sucHRyKCkpOwogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5yZW1vdmVMYXN0KCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgaW5saW5pbmcgZmFp
bGVkIG1lYW5zIHdlIG5lZWQgYSBzbG93IHBhdGguCkBAIC0yMDM0LDcgKzIwMzQsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgIEFTU0VSVChhbGxB
cmVDbG9zdXJlQ2FsbHMpOwogICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3Rh
dHVzW2ldLmV4ZWN1dGFibGUoKTsKICAgICAgICAgfQotICAgICAgICBkYXRhLmNhc2VzLmFwcGVu
ZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRoaW5nVG9DYXNlT24pLCBibG9jay5nZXQoKSkp
OworICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKG1fZ3JhcGguZnJlZXplKHRo
aW5nVG9DYXNlT24pLCBibG9jay5wdHIoKSkpOwogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG5l
eHRPZmZzZXQ7CiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgcHJvY2Vzc1NldExv
Y2FsUXVldWUoKTsgLy8gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSBmb3IgaW50cmluc2ljcywg
c2luY2Ugbm9ybWFsIGlubGluZWQgY29kZSB3aWxsIGxlYXZlIGFuIGVtcHR5IHF1ZXVlLgpAQCAt
MjA1MiwxNyArMjA1MiwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygK
ICAgICAgICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVz
W2ldLCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKICAgICB9CiAgICAgCi0g
ICAgUmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKLSAgICAgICAg
bmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkp
OworICAgIFJlZjxCYXNpY0Jsb2NrPiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCisgICAgICAg
ICpuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAx
KSk7CiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7CiAgICAgbV9leGl0T0sgPSB0cnVl
OwotICAgIGRhdGEuZmFsbFRocm91Z2ggPSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5nZXQo
KSk7Ci0gICAgbV9ncmFwaC5hcHBlbmRCbG9jayhzbG93UGF0aEJsb2NrKTsKKyAgICBkYXRhLmZh
bGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2sucHRyKCkpOworICAgIG1fZ3Jh
cGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jay5jb3B5UmVmKCkpOwogICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5n
ZXQoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKKyAgICAgICAgZGF0YUxv
ZygiTWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2sucHRyKCkpLCAiIGFzIGxpbmtl
ZCAoc2xvdyBwYXRoIGJsb2NrKVxuIik7CiAgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOwog
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRo
QmxvY2suZ2V0KCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLnB0cigpOwog
ICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKICAgICBp
ZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKICAgICAgICAgYWRkQ2FsbCgKQEAgLTIwODYsMTcgKzIw
ODYsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIGxh
bmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKICAgICB9CiAgICAgCi0gICAgUmVm
UHRyPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCi0gICAgICAgIG5l
dyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsK
LSAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrKTsKKyAgICBSZWY8QmFz
aWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgKm5ldyBCYXNp
Y0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBt
X2dyYXBoLmFwcGVuZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLmNvcHlSZWYoKSk7CiAgICAgaWYg
KHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQ
b2ludGVyKGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpKSwgIiAoY29udGludWF0aW9uKVxuIik7Ci0g
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9j
ayhjb250aW51YXRpb25CbG9jay5nZXQoKSkpOworICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5s
aW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5wdHIoKSksICIgKGNv
bnRpbnVhdGlvbilcbiIpOworICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3Mu
YXBwZW5kKFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxvY2sucHRyKCkpKTsKICAgICBwcmVw
YXJlVG9QYXJzZUJsb2NrKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9j
ay5nZXQoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpOwog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQot
ICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT50ZXJtaW5hbCgpLT50YXJnZXRCbG9jaygpID0gY29u
dGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgICAgIGxhbmRpbmdCbG9ja3NbaV0tPnRlcm1pbmFs
KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRpb25CbG9jay5wdHIoKTsKICAgICAKICAgICBt
X2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9IHRydWU7CkBAIC01ODE3
LDggKzU4MTcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5sYXN0QmxvY2soKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJl
bnRJbmRleDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jayhtX2N1cnJl
bnRJbmRleCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7CisgICAgICAgICAgICAgICAgICAg
IFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jayhtX2N1cnJl
bnRJbmRleCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2sucHRyKCk7CiAgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgYXNzZXJ0aW9uIGNoZWNrcyB0d28gdGhpbmdzOgogICAgICAgICAgICAgICAgICAg
ICAvLyAxKSBJZiB0aGUgYnl0ZWNvZGVCZWdpbiBpcyBncmVhdGVyIHRoYW4gY3VycmVudEluZGV4
LCB0aGVuIHNvbWV0aGluZyBoYXMgZ29uZQogICAgICAgICAgICAgICAgICAgICAvLyAgICBob3Jy
aWJseSB3cm9uZy4gU28sIHdlJ3JlIHByb2JhYmx5IGdlbmVyYXRpbmcgaW5jb3JyZWN0IGNvZGUu
CkBAIC01ODMxLDEyICs1ODMxLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJs
b2NrKCkKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdEJlZ2luLCBsYXN0QmVnaW4gPT0gVUlOVF9NQVggfHwgbGFz
dEJlZ2luIDwgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5k
KFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9T
UiB0YXJnZXQuCiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOworICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICAgICAgICAg
ICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCAxNGNk
MGQwMTQyZGIyYjhiM2E4MjRiZmM0NmY4Y2Q5MGJlMTU1NjA5Li43OTM3N2U3ZjlmYWE4NGNiMTdm
MzNlZDU4MjM5NzA2ODA5NTI4OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2
ZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJl
R2xvYmFsREZHV2hpdGVsaXN0KCkKIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1w
bCgKICAgICBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVk
REZHQ29kZUJsb2NrLCBDb21waWxhdGlvbk1vZGUgbW9kZSwKICAgICB1bnNpZ25lZCBvc3JFbnRy
eUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxlVmFsdWVz
LAotICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjaykK
KyAgICBSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAg
IGlmICghT3B0aW9uczo6Ynl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZSgpLmlzSW5SYW5nZShjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSkKICAgICAgICAgfHwgIWVuc3VyZUdsb2JhbERGR1do
aXRlbGlzdCgpLmNvbnRhaW5zKGNvZGVCbG9jaykpCkBAIC05NiwxNSArOTYsMTUgQEAgc3RhdGlj
IENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIGlmICh2bS50eXBlUHJvZmlsZXIo
KSkKICAgICAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJ
TGl0ZXJhbCgiUHJlcGFyaW5nIGZvciBERkcgY29tcGlsYXRpb24uIikpOwogICAgIAotICAgIFJl
ZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCi0gICAgICAgIG5ldyBQbGFuKGNvZGVCbG9jaywg
cHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhh
bmRsZVZhbHVlcykpOworICAgIFJlZjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCisgICAgICAgICpu
ZXcgUGxhbihjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5
dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsKICAgICAKLSAgICBwbGFuLT5jYWxsYmFj
ayA9IGNhbGxiYWNrOworICAgIHBsYW4tPmNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAg
ICAgaWYgKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRKSVQoKSkgewogICAgICAgICBXb3JrbGlzdCYg
d29ya2xpc3QgPSBlbnN1cmVHbG9iYWxXb3JrbGlzdEZvcihtb2RlKTsKICAgICAgICAgaWYgKGxv
Z0NvbXBpbGF0aW9uQ2hhbmdlcyhtb2RlKSkKICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmlu
ZyBERkcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiB3aXRoIHF1ZXVlIGxlbmd0aCAi
LCB3b3JrbGlzdC5xdWV1ZUxlbmd0aCgpLCAiLlxuIik7Ci0gICAgICAgIHdvcmtsaXN0LmVucXVl
dWUocGxhbik7CisgICAgICAgIHdvcmtsaXN0LmVucXVldWUoV1RGTW92ZShwbGFuKSk7CiAgICAg
ICAgIHJldHVybiBDb21waWxhdGlvbkRlZmVycmVkOwogICAgIH0KICAgICAKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAjZWxzZSAvLyBF
TkFCTEUoREZHX0pJVCkKIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAg
ICBWTSYsIENvZGVCbG9jayosIENvZGVCbG9jayosIENvbXBpbGF0aW9uTW9kZSwgdW5zaWduZWQs
IGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiwKLSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjaz4pCisgICAgUmVmPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4mJikK
IHsKICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CiB9CkBAIC0xMjMsMTIgKzEyMywxMSBA
QCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiBDb21waWxhdGlvblJlc3Vs
dCBjb21waWxlKAogICAgIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayog
cHJvZmlsZWRERkdDb2RlQmxvY2ssIENvbXBpbGF0aW9uTW9kZSBtb2RlLAogICAgIHVuc2lnbmVk
IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RIYW5k
bGVWYWx1ZXMsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IHBh
c3NlZENhbGxiYWNrKQorICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2Fs
bGJhY2spCiB7Ci0gICAgUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJh
Y2sgPSBwYXNzZWRDYWxsYmFjazsKICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBjb21w
aWxlSW1wbCgKICAgICAgICAgdm0sIGNvZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1v
ZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVlcywKLSAgICAgICAgY2Fs
bGJhY2spOworICAgICAgICBjYWxsYmFjay5jb3B5UmVmKCkpOwogICAgIGlmIChyZXN1bHQgIT0g
Q29tcGlsYXRpb25EZWZlcnJlZCkKICAgICAgICAgY2FsbGJhY2stPmNvbXBpbGF0aW9uRGlkQ29t
cGxldGUoY29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgcmVzdWx0KTsKICAgICByZXR1
cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKaW5kZXggMWQ1OGQx
YThhMDlkODVjM2QzMzFmNGY0MTc5YTFkMDM1ZGY2MzM5NC4uMWEyZDE4Y2U5ZTlhYzQ3YzNiNGNh
ZTAxZjlkMjJkMjdjYWE2MTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5o
CkBAIC00NSw2ICs0NSw2IEBAIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGdldE51bUNvbXBp
bGF0aW9ucygpOwogQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZSgKICAgICBWTSYsIENvZGVCbG9j
ayosIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2ssIENvbXBpbGF0aW9uTW9kZSwKICAg
ICB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+
JiBtdXN0SGFuZGxlVmFsdWVzLAotICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrPik7CisgICAgUmVmPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4mJik7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApp
bmRleCA2ZDUyNDY5NGRiODJjOTdhMGMzNjBhNzJhNWRlM2Y5ZjBiMGYzMjhiLi4zYjMyOTIwODc0
MjhjMTc0YWI1Mzk2MWIxNjdiMTI4ZDEzMWUyNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCkBAIC00NDIsMTAgKzQ0MiwxMCBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0
dWFsIFNjYW5uYWJsZSB7CiAgICAgQmFzaWNCbG9jayogYmxvY2soQmxvY2tJbmRleCBibG9ja0lu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsgfQogICAgIEJh
c2ljQmxvY2sqIGxhc3RCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGJsb2NrKG51bUJsb2NrcygpIC0g
MSk7IH0KIAotICAgIHZvaWQgYXBwZW5kQmxvY2soUGFzc1JlZlB0cjxCYXNpY0Jsb2NrPiBiYXNp
Y0Jsb2NrKQorICAgIHZvaWQgYXBwZW5kQmxvY2soUmVmPEJhc2ljQmxvY2s+JiYgYmFzaWNCbG9j
aykKICAgICB7CiAgICAgICAgIGJhc2ljQmxvY2stPmluZGV4ID0gbV9ibG9ja3Muc2l6ZSgpOwot
ICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoYmFzaWNCbG9jayk7CisgICAgICAgIG1fYmxvY2tzLmFw
cGVuZChXVEZNb3ZlKGJhc2ljQmxvY2spKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBraWxsQmxv
Y2soQmxvY2tJbmRleCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAppbmRleCAzNTEzYjViOTUyMjc3MzBjOTNjMjEwM2VjNGY5ZmRjNDZi
ZTg4MTU3Li5kYjVlNTI1ZmZkYWE5NTdjZGFlMGM3N2RkOTkyOGMzMTNjNjVhN2U3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGRpc2Fzc2VtYmxlKCpsaW5r
QnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1f
aml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlcikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwg
bV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlcikpOwogfQogCiB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2sp
OwogCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRG
aW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBX
VEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9w
bGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0
aEFyaXR5Q2hlY2spOwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpkaXNhc3NlbWJsZShMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCmluZGV4IGQ4NjgwMTJmOGRmMzAwZmM2MGMwYjUzNTMwNTA4NjQ3MWU0NDFkNzUuLjIwZDI5
ZmZhOGRjOGVmZWIzMDljNWJlZmFiNDRlMWZkNTRjNjNiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTI1NSw3ICsyNTUsNyBAQCBjbGFzcyBKSVRD
b21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRy
eShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYp
OwogICAgIAotICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2Rl
OyB9CisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGUuY29w
eVJlZigpOyB9CiAgICAgCiAgICAgVmVjdG9yPExhYmVsPiYgYmxvY2tIZWFkcygpIHsgcmV0dXJu
IG1fYmxvY2tIZWFkczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZp
bmFsaXplci5jcHAKaW5kZXggNTM5MTE1OGM1ZWI1YjA1NTgyMzMzMjdmNzU2NzU5NTc3NjdmN2Q5
NC4uNmI2NWVjYzc3MjQ5ZWNhOWVhZDliMTk2YmY3MzY0Yjk1NjU4ZWMxYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUpJVEZpbmFsaXplcjo6SklU
RmluYWxpemVyKFBsYW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwgc3RkOjp1
bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3
aXRoQXJpdHlDaGVjaykKK0pJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFJl
ZjxKSVRDb2RlPiYmIGppdENvZGUsIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVm
ZmVyLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCiAgICAgOiBGaW5hbGl6
ZXIocGxhbikKLSAgICAsIG1faml0Q29kZShqaXRDb2RlKQorICAgICwgbV9qaXRDb2RlKFdURk1v
dmUoaml0Q29kZSkpCiAgICAgLCBtX2xpbmtCdWZmZXIoV1RGTW92ZShsaW5rQnVmZmVyKSkKICAg
ICAsIG1fd2l0aEFyaXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCiB7CkBAIC02MCw3ICs2MCw3IEBA
IGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZSgpCiAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RF
KCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxv
Y2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkp
KSwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAotICAgIG1fcGxhbi5j
b2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKKyAgICBtX3BsYW4uY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKG1faml0Q29kZS5jb3B5UmVmKCkpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9u
KCk7CiAgICAgCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1
bmN0aW9uKCkKICAgICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmKAogICAgICAgICBGSU5B
TElaRV9ERkdfQ09ERSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NT
dHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZH
SklUKSkuZGF0YSgpKSksCiAgICAgICAgIG1fd2l0aEFyaXR5Q2hlY2spOwotICAgIG1fcGxhbi5j
b2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlKTsKKyAgICBtX3BsYW4uY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKG1faml0Q29kZS5jb3B5UmVmKCkpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9u
KCk7CiAgICAgCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSklURmluYWxpemVyOjpmaW5hbGl6ZUNv
bW1vbigpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgCiAgICAgaWYgKG1fcGxhbi5j
b21waWxhdGlvbikKLSAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFk
ZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlvbik7CisgICAg
ICAgIG1fcGxhbi52bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3Bs
YW4uY29kZUJsb2NrLCAqbV9wbGFuLmNvbXBpbGF0aW9uKTsKICAgICAKICAgICBpZiAoIW1fcGxh
bi53aWxsVHJ5VG9UaWVyVXApCiAgICAgICAgIG1fcGxhbi5jb2RlQmxvY2stPmJhc2VsaW5lVmVy
c2lvbigpLT5tX2RpZEZhaWxGVExDb21waWxhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAppbmRleCAxYjIxZjhjODVjMDliY2E4OTIwYmNh
NDBmOTU5MDliYTgyM2I3OWViLi5iMWEyYmMwMzRlYmE5ZmZmZTE0YjA3MWUwYjcyYzZkNTYyNzYx
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBK
SVRGaW5hbGl6ZXIgOiBwdWJsaWMgRmluYWxpemVyIHsKIHB1YmxpYzoKLSAgICBKSVRGaW5hbGl6
ZXIoUGxhbiYsIFBhc3NSZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVy
PiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOworICAgIEpJVEZpbmFs
aXplcihQbGFuJiwgUmVmPEpJVENvZGU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOwogICAgIHZpcnR1YWwgfkpJ
VEZpbmFsaXplcigpOwogICAgIAogICAgIHNpemVfdCBjb2RlU2l6ZSgpIG92ZXJyaWRlOwpAQCAt
NDYsNyArNDYsNyBAQCBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBwdWJsaWMgRmluYWxpemVyIHsKIHBy
aXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZUNvbW1vbigpOwogICAgIAotICAgIFJlZlB0cjxKSVRD
b2RlPiBtX2ppdENvZGU7CisgICAgUmVmPEpJVENvZGU+IG1faml0Q29kZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtX3dpdGhBcml0eUNoZWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdX
b3JrbGlzdC5jcHAKaW5kZXggMTE0Y2E5NTcxNDRkYjUyODA4Y2U4NTNkMzFmNzY1YmQyMmZjYWJl
Yi4uYWYzYjYzZTA4MmRlOGI2OTI5Njc3NDczYjM2ZGVlYmMzOTNhZmFmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTIyMywxNyArMjIzLDE2IEBAIGJv
b2wgV29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShQYXNzUmVmUHRyPFBsYW4+IHBhc3NlZFBs
YW4pCit2b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiB7Ci0gICAgUmVm
UHRyPFBsYW4+IHBsYW4gPSBwYXNzZWRQbGFuOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xv
Y2spOwogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKSB7CiAgICAg
ICAgIGR1bXAobG9ja2VyLCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICBkYXRhTG9nKCI6IEVu
cXVldWVpbmcgcGxhbiB0byBvcHRpbWl6ZSAiLCBwbGFuLT5rZXkoKSwgIlxuIik7CiAgICAgfQog
ICAgIEFTU0VSVChtX3BsYW5zLmZpbmQocGxhbi0+a2V5KCkpID09IG1fcGxhbnMuZW5kKCkpOwot
ICAgIG1fcGxhbnMuYWRkKHBsYW4tPmtleSgpLCBwbGFuKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChw
bGFuKTsKKyAgICBtX3BsYW5zLmFkZChwbGFuLT5rZXkoKSwgcGxhbi5jb3B5UmVmKCkpOworICAg
IG1fcXVldWUuYXBwZW5kKFdURk1vdmUocGxhbikpOwogICAgIG1fcGxhbkVucXVldWVkLT5ub3Rp
ZnlPbmUobG9ja2VyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXb3JrbGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5o
CmluZGV4IDM2NjFlNmVlODNkMzU0NzdmN2JhZjg3NDhhNzI0NDU4NmEwMzkwYTUuLjI4ZDlhYmY0
YTM4YTAzYWRmYWEzMWVmYWMyZDM0NjFlNGI3MDIwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV29ya2xpc3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxXb3JrbGlzdD4gewogICAgIAogICAgIHN0YXRpYyBSZWY8V29ya2xpc3Q+
IGNyZWF0ZShDU3RyaW5nIHdvcmtsaXN0TmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBp
bnQgcmVsYXRpdmVQcmlvcml0eSA9IDApOwogICAgIAotICAgIHZvaWQgZW5xdWV1ZShQYXNzUmVm
UHRyPFBsYW4+KTsKKyAgICB2b2lkIGVucXVldWUoUmVmPFBsYW4+JiYpOwogICAgIAogICAgIC8v
IFRoaXMgaXMgZXF1aXZhbGVudCB0bzoKICAgICAvLyB3b3JrbGlzdC0+d2FpdFVudGlsQWxsUGxh
bnNGb3JWTUFyZVJlYWR5KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
RmluYWxpemVyLmNwcAppbmRleCBkY2YzZGFkMWQwMjdkNzBjZjUxNGQyZDg3M2Y4ZWM1ZDA2NDUw
NWQzLi4wMGVhNjUxZTFlMmJkY2RjZjY4NTNmY2U5MjMxZjU3MjQwZjVkNzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCkBAIC04MSwxMCArODEs
MTAgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAg
ZHVtcERpc2Fzc2VtYmx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAoIkZU
TCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwg
dG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6
OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pKSk7CiAgICAgCi0gICAgbV9wbGFuLmNvZGVCbG9j
ay0+c2V0SklUQ29kZShqaXRDb2RlKTsKKyAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KCpqaXRDb2RlKTsKIAogICAgIGlmIChtX3BsYW4uY29tcGlsYXRpb24pCi0gICAgICAgIG1fcGxh
bi52bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJs
b2NrLCBtX3BsYW4uY29tcGlsYXRpb24pOworICAgICAgICBtX3BsYW4udm0tPm1fcGVyQnl0ZWNv
ZGVQcm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9wbGFuLmNvZGVCbG9jaywgKm1fcGxhbi5jb21w
aWxhdGlvbik7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKaW5kZXggMzFhMmFlMTVj
MTcwOGNhOGQ1NTkzMmY2ODkwOTM1ZDA2MGU2NDAyZi4uYmFiNmRlMTNiMjhhNzM5ZGEwNmZlNWJm
OTQyYjAwN2Q5ZmUwOTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQo
KQogfQogCiAKLVBhc3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5l
KAorUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2Vs
bCogb3duZXIsCkBAIC0xNDIsMTcgKzE0MiwxNyBAQCBQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRs
ZXJDYWxsU2l0ZUluZGV4KQogewogICAgIGlmICghbWFrZXNDYWxscykKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKICAgICAKICAgICBpZiAoY29kZUJsb2Nr
Rm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkp
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBjb2RlQmxvY2tGb3JFeGNl
cHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxl
cnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CiAgICAgfQogCiAgICAgaWYgKGNl
bGxzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKSk7CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtLCBvd25lciwgY2VsbHMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRleCBh
MjUzZGEzNWE2OWE3OWI2M2QyNTNjOGVhMTQ4OGVmMDIxZmFjNTU5Li41ZWUzNmNhNDYwZDEwN2E0
M2U0YTg4Njg4MTllMzA4ZTNhNDU4ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciA6IHB1YmxpYyBNYXJraW5n
R0NBd2FyZUpJVFN0dWJSbwogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25seSBuZWVk
IHRvIHBhc3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBmaXJzdCBj
YWxsIHRvIEMrKyBvciBKUy4KIC8vIAotLy8gUGFzc1JlZlB0cjxKSVRTdHViUm91dGluZT4gY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCisvLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKAogLy8gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLAogLy8gICAg
Vk0mIHZtLAogLy8gICAgY29uc3QgSlNDZWxsKiBvd25lciwKQEAgLTEyNCw3ICsxMjQsNyBAQCBj
bGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciA6IHB1YmxpYyBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSbwogLy8gdGhpcyBmdW5jdGlvbiB1c2luZyB2YXJhcmdzLCBJ
IGVuZGVkIHVwIHdpdGggbW9yZSBjb2RlIHRoYW4gdGhpcyBzaW1wbGUKIC8vIHdheS4KIAotUGFz
c1JlZlB0cjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCitSZWY8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAogICAg
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgPSB7IH0sIAogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
Rm9yRXhjZXB0aW9uSGFuZGxlcnMgPSBudWxscHRyLCBDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhh
bmRsaW5nQ2FsbFNpdGVJbmRleCA9IENhbGxTaXRlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNjJjMDQz
Njk4OWM5MDYyNzRmMGRjMzlkMzNmYWYzMDVlZjZmZTg3ZC4uY2Y2MTQ2YjIwNDFkNzIyNTUyMDFl
ZmY3MDA1NGQ1ZTBhMTViMTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtODI5
LDcgKzgyOSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgaWYgKG1fY29t
cGlsYXRpb24pIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQ
cm9maWxlcigpKQogICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmlsZXIo
bV9jb21waWxhdGlvbi5nZXQoKSwgcGF0Y2hCdWZmZXIpOwotICAgICAgICBtX3ZtLT5tX3BlckJ5
dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCBtX2NvbXBpbGF0aW9u
KTsKKyAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbiht
X2NvZGVCbG9jaywgKm1fY29tcGlsYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKQEAgLTg0NCw4ICs4NDQsNyBAQCBD
b21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+
KG1faW5zdHJ1Y3Rpb25zLnNpemUoKSkpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0
KENvZGVCbG9jazo6TGF0ZVNocmluayk7Ci0gICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0aEFyaXR5Q2hlY2ss
IEpJVENvZGU6OkJhc2VsaW5lSklUKSkpOworICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlKGFk
b3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShyZXN1bHQsIHdpdGhBcml0eUNoZWNrLCBKSVRDb2Rl
OjpCYXNlbGluZUpJVCkpKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRSkKICAgICBkYXRhTG9n
RigiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVwKS5cbiIsIG1fY29kZUJsb2Nr
LCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCByZXN1bHQuZXhlY3V0YWJsZU1l
bW9yeSgpLT5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5l
LmgKaW5kZXggMzA0NzIxMmQ0ZWM0ZTE4YWMzMWY4YThhMTQ0MzkxMTQyOTkwMGEyNy4uZWJmZTJl
ZjI0MThlYzJkODY0NmZiNWM0NzJlYjc4YWFmNmY1NjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtNzAsMTEgKzcwLDggQEAgY2xhc3MgSklUU3R1
YlJvdXRpbmUgewogICAgIC8vIHRoZSBjaHVybi4KICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYmIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KICAgICAKLSAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzQ29kZVB0cihQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5l
PiBzdHViUm91dGluZSkKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzQ29kZVB0
cihSZWY8SklUU3R1YlJvdXRpbmU+JiYgc3R1YlJvdXRpbmUpCiAgICAgewotICAgICAgICBpZiAo
IXN0dWJSb3V0aW5lKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OwotICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IHN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpOwogICAgICAgICBBU1NFUlQoISFyZXN1bHQpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmlu
ZGV4IDYwYzNjYzdhN2UxYWQ4OTMzYzMyYWEyMGIxYTJhZWUwNDEzMGIzNzEuLmRlNDhlNjJkZGFi
OGVmYWY4YmUzMTgyODcxYmU4ZDcwOTliMTdjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5jcHAKQEAgLTEwOCw5ICsxMDgsOSBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
TgogICAgIH0gZWxzZQogICAgICAgICBmb3JDYWxsID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENv
ZGUoSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbCh2bSwgZnVuY3Rpb24pLCBKSVRDb2RlOjpIb3N0
Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFk
b3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkpLCBKSVRDb2RlOjpIb3N0Q2Fs
bFRodW5rKSk7CisgICAgUmVmPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKCpuZXcg
TmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qodm0pKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwog
ICAgIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25z
dHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JD
YWxsLnJlbGVhc2VOb25OdWxsKCksIGZ1bmN0aW9uLCBXVEZNb3ZlKGZvckNvbnN0cnVjdCksIGNv
bnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9o
b3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9y
LCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7
CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IGY1OTE4YjcyMTcwYWM1ZGU0N2My
YmVkMzYzNzk2NTMwZTAxOTU0MDEuLmY3ZDc2MWRjMWRhYzAzZmYxM2EyODk5M2RmMzRjMzU5Y2U0
YjA2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnQuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBv
aW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKHZtLmNhblVzZUpJVCgp
KSB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwg
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgICAgICBhZG9w
dFJlZigqbmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUodm0u
Z2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5n
ZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5j
b2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTU5LDEyICs1OSwxMiBAQCBzdGF0aWMgdm9p
ZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYoKm5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9s
b2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtNzIsMTQgKzcyLDE0IEBAIHN0YXRpYyB2b2lkIHNl
dEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJ
U3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRvcHRSZWYoKm5ldyBE
aXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5l
dyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVm
KGxsaW50X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2Rl
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJv
bG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
aykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKQEAgLTg3LDE0ICs4NywxNCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9n
cmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogI2lmIEVOQUJMRShK
SVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklU
Q29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0
dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcg
RGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJl
ZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29k
ZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0
SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9w
cm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBv
aW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0xMDIsMTQgKzEwMiwxNCBAQCBz
dGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayog
Y29kZUJsb2NrKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAg
ICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBE
aXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykp
KTsKKyAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHVi
KG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJv
Z3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1f
cHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKIH0KIAogdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNv
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCmluZGV4IDhm
NGZkMzhiYWFiODA1YjJmMjA4YjNkOGViODYzZjNmNWM0Mzg1ZjguLjk4NTU3MWZmNWE0MDVlMWVj
YzM0MjljYmIzYTdmZmIzZTM5NzAzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZS5oCkBAIC00MSwyMCArNDEsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92
aWRlcj4gcHJvdmlkZXIpCi0gICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShwcm92aWRl
cikKKyAgICAgICAgU291cmNlQ29kZShSZWY8U291cmNlUHJvdmlkZXI+JiYgcHJvdmlkZXIpCisg
ICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVyKSkKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiBwcm92aWRlciwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQotICAgICAg
ICAgICAgOiBVbmxpbmtlZFNvdXJjZUNvZGUocHJvdmlkZXIpCisgICAgICAgIFNvdXJjZUNvZGUo
UmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRD
b2x1bW4pCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVy
KSkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2Vk
SW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQogICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1u
KE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChzdGFydENvbHVtbiwgMSkp
KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3VyY2VDb2RlKFBhc3NSZWZQdHI8
U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQs
IGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikKLSAgICAgICAgICAgIDogVW5saW5rZWRT
b3VyY2VDb2RlKHByb3ZpZGVyLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgICAgICBTb3Vy
Y2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwgaW50IHN0YXJ0T2Zmc2V0LCBp
bnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCisgICAgICAgICAg
ICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVyKSwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3JkaW5hbE51bWJlcjo6ZnJvbU9u
ZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQogICAgICAgICAgICAgLCBtX3N0YXJ0
Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChzdGFydENvbHVt
biwgMSkpKQogICAgICAgICB7CkBAIC04Nyw3ICs4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3Bl
bkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1
bW4pCiAgICAgewogICAgICAgICBzdGFydENvbHVtbiArPSAxOyAvLyBDb252ZXJ0IHRvIGJhc2Ug
MS4KLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUocHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9z
ZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgICAgIEFTU0VSVChwcm92
aWRlcigpKTsKKyAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoKnByb3ZpZGVyKCksIG9wZW5CcmFj
ZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1VubGlua2VkU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Vbmxp
bmtlZFNvdXJjZUNvZGUuaAppbmRleCAyOWVjZjViMWUyMmY1N2YyMTY2ODI3YTVkYTY1YWY2NTQ5
YjVmZjM1Li4yZDVmYjhhMjQzZTYxOTdhNDExN2ZlMWNhNDJmMWVlYzg5NzE3Yzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2RlLmgKQEAg
LTQ3LDE1ICs0NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHBy
b3ZpZGVyKQotICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICAgICBVbmxp
bmtlZFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyKQorICAgICAgICAg
ICAgOiBtX3Byb3ZpZGVyKFdURk1vdmUocHJvdmlkZXIpKQogICAgICAgICAgICAgLCBtX3N0YXJ0
T2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KG1fcHJvdmlkZXItPnNvdXJjZSgp
Lmxlbmd0aCgpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBVbmxpbmtlZFNvdXJj
ZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBzdGFydE9mZnNl
dCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKKyAg
ICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3Byb3ZpZGVy
KFdURk1vdmUocHJvdmlkZXIpKQogICAgICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zm
c2V0KQogICAgICAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNw
cAppbmRleCA4ZWQ5ZjE4NDVmM2U2YTU5N2Y2OTNlYmY1ZThmMmQ2NzQwZjA4MzIzLi4wMWNlZmM0
NDM4MTgyYzVjMGU1Mzg2MGJmODI1MTNlNmZlNThlM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC04NiwxNSArODYs
MTMgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiAgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBE
YXRhYmFzZTo6YWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFBhc3NSZWZQdHI8
Q29tcGlsYXRpb24+IHBhc3NlZENvbXBpbGF0aW9uKQordm9pZCBEYXRhYmFzZTo6YWRkQ29tcGls
YXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlZjxDb21waWxhdGlvbj4mJiBjb21waWxhdGlv
bikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIEFTU0VSVCghaXNDb21w
aWxhdGlvblRocmVhZCgpKTsKIAotICAgIFJlZlB0cjxDb21waWxhdGlvbj4gY29tcGlsYXRpb24g
PSBwYXNzZWRDb21waWxhdGlvbjsKLSAgICAKLSAgICBtX2NvbXBpbGF0aW9ucy5hcHBlbmQoY29t
cGlsYXRpb24pOwotICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNvZGVCbG9jaywgY29tcGlsYXRp
b24pOworICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChjb21waWxhdGlvbi5jb3B5UmVmKCkpOwor
ICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNvZGVCbG9jaywgV1RGTW92ZShjb21waWxhdGlvbikp
OwogfQogCiBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCmlu
ZGV4IDIwNmFhM2FiM2I1MzQxZDVmMDRhZDUxMDhlNmJiNmYwNjRkOTI5YjcuLmI5ZWYzNmMwMzlm
YjQyMWU5ZGZkZWRlMTZjZGU1MDI0MjA1OWEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTIsNyArNTEsNyBAQCBj
bGFzcyBEYXRhYmFzZSB7CiAgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJs
b2NrKik7CiAgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqKTsKICAgICAKLSAg
ICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFBhc3NSZWZQdHI8Q29tcGlsYXRpb24+
KTsKKyAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFJlZjxDb21waWxhdGlvbj4m
Jik7CiAgICAgCiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNjcmlwdCBv
YmplY3QgdGhhdCBpcyBzdWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb24uCiAgICAgLy8g
Tm90ZSB0aGF0IGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFuIEV4ZWNTdGF0ZSog
YXNzb2NpYXRlZCB3aXRoIGEgZ2xvYmFsCkBAIC04NSw4ICs4NCw4IEBAIGNsYXNzIERhdGFiYXNl
IHsKICAgICBWTSYgbV92bTsKICAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVj
b2RlczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFw
OwotICAgIFZlY3RvcjxSZWZQdHI8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0aW9uczsKLSAgICBI
YXNoTWFwPENvZGVCbG9jayosIFJlZlB0cjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25NYXA7
CisgICAgVmVjdG9yPFJlZjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25zOworICAgIEhhc2hN
YXA8Q29kZUJsb2NrKiwgUmVmPENvbXBpbGF0aW9uPj4gbV9jb21waWxhdGlvbk1hcDsKICAgICBW
ZWN0b3I8RXZlbnQ+IG1fZXZlbnRzOwogICAgIGJvb2wgbV9zaG91bGRTYXZlQXRFeGl0OwogICAg
IENTdHJpbmcgbV9hdEV4aXRTYXZlRmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCBhNmJhYjY3NzQ3ZjRlOTI4MzIzY2U3NTVl
MGQ1NzJlNzYyM2U0MTNlLi5jODcxZTVmMzZiYzczMGIwZGZkMmVhMzkwZWI1ZDI5OWMwOTg0MzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgK
QEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0YWJsZSB7CiAgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICBSZWY8SklU
Q29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZUJhc2UuaAppbmRleCA1ZDFlMGI0YjY0NGZjNjExOGYyZTc2YmMzOTg4YjEz
NDg2YzA4NzYwLi42MjgxNmE1OTRjZDMyNTU0OTQyZWYyOTI3OGJiMjNhYmU5MDFhZTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKQEAgLTEy
NSwxOSArMTI1LDE5IEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdDsKIAogcHVibGljOgotICAgIFBhc3NS
ZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKQorICAgIFJlZjxKSVRDb2Rl
PiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXRD
b2RlRm9yQ2FsbCk7Ci0gICAgICAgIHJldHVybiBtX2ppdENvZGVGb3JDYWxsOworICAgICAgICBy
ZXR1cm4gKm1faml0Q29kZUZvckNhbGw7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkKKyAgICBSZWY8SklUQ29kZT4gZ2VuZXJh
dGVkSklUQ29kZUZvckNvbnN0cnVjdCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXRDb2Rl
Rm9yQ29uc3RydWN0KTsKLSAgICAgICAgcmV0dXJuIG1faml0Q29kZUZvckNvbnN0cnVjdDsKKyAg
ICAgICAgcmV0dXJuICptX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgfQogICAgICAgICAKLSAg
ICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQorICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yKENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKICAgICB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKQogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IGIwYzVj
M2U2NzJkMGEzMjk3ZTJkYTM2OTg4NDMwYzdhNjUwYjdkZmYuLjk5MjU2ZDY1ODkzNDkwNmIyMjAx
Y2I1YmRlZWRlNTc3MjJlMjBlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTdHJpbmdJbXBsPiBJZGVudGlm
aWVyOjphZGQoVk0qIHZtLCBjb25zdCBjaGFyKiBjKQogICAgIEFTU0VSVChjKTsKICAgICBBU1NF
UlQoY1swXSk7CiAgICAgaWYgKCFjWzFdKQotICAgICAgICByZXR1cm4gKnZtLT5zbWFsbFN0cmlu
Z3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGNbMF0pOworICAgICAgICByZXR1cm4gdm0tPnNt
YWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoY1swXSk7CiAKICAgICByZXR1cm4g
KkF0b21pY1N0cmluZ0ltcGw6OmFkZChjKTsKIH0KQEAgLTU4LDcgKzU4LDcgQEAgUmVmPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZDgoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0
aCkKICAgICAgICAgVUNoYXIgYyA9IHNbMF07CiAgICAgICAgIEFTU0VSVChjIDw9IDB4ZmYpOwog
ICAgICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpKQotICAgICAgICAgICAg
cmV0dXJuICp2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChjKTsKKyAg
ICAgICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1Jl
cChjKTsKICAgICB9CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1w
bDo6ZW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApp
bmRleCAyNWUxNmFlMzQxN2Q2ZDAyNjlmZjRmNzM2MWRkOGEyNmYyNDNjODY2Li5hOTYzYjQzMzA2
MTdjYTUzMmYyMWM0ODMyZWRmNjgwODRhNDFiZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yMTgsNyArMjE4LDcgQEAgUmVmPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQqIHMsIGludCBsZW5ndGgpCiAgICAgaWYg
KGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIFQgYyA9IHNbMF07CiAgICAgICAgIGlmIChjYW5Vc2VT
aW5nbGVDaGFyYWN0ZXJTdHJpbmcoYykpCi0gICAgICAgICAgICByZXR1cm4gKnZtLT5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOworICAgICAgICAgICAgcmV0dXJuIHZt
LT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOwogICAgIH0KICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGRk
NzQ2M2M3M2E3YjEyY2VjNTdkNjliOTJhNWIwMjYxYzZmNDRiYzcuLjQxODg0MDZlOTM5YjA4ODVk
NDQ5ZGMzZjdkNmZlYTZjYTc3OWFhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNjIsMTggKzEzNjIsMTUgQEAgYm9vbCBK
U0dsb2JhbE9iamVjdDo6cmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoV0VCX1JFUExBWSkKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vyc29yKFBh
c3NSZWZQdHI8SW5wdXRDdXJzb3I+IHBycEN1cnNvcikKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNl
dElucHV0Q3Vyc29yKFJlZjxJbnB1dEN1cnNvcj4mJiBjdXJzb3IpCiB7Ci0gICAgbV9pbnB1dEN1
cnNvciA9IHBycEN1cnNvcjsKLSAgICBBU1NFUlQobV9pbnB1dEN1cnNvcik7Ci0KLSAgICBJbnB1
dEN1cnNvciYgY3Vyc29yID0gaW5wdXRDdXJzb3IoKTsKKyAgICBtX2lucHV0Q3Vyc29yID0gV1RG
TW92ZShjdXJzb3IpOwogICAgIC8vIFNhdmUgb3Igc2V0IHRoZSByYW5kb20gc2VlZC4gVGhpcyBw
ZXJmb3JtZWQgaGVyZSByYXRoZXIgdGhhbiB0aGUgY29uc3RydWN0b3IKICAgICAvLyB0byBhdm9p
ZCB0aHJlYWRpbmcgdGhlIGlucHV0IGN1cnNvciB0aHJvdWdoIGFsbCB0aGUgYWJzdHJhY3Rpb24g
bGF5ZXJzLgotICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkKLSAgICAgICAgY3Vyc29yLmFw
cGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVkKCkpOwotICAgIGVsc2Ug
aWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7Ci0gICAgICAgIGlmIChTZXRSYW5kb21TZWVkKiBp
bnB1dCA9IGN1cnNvci5mZXRjaElucHV0PFNldFJhbmRvbVNlZWQ+KCkpCisgICAgaWYgKG1faW5w
dXRDdXJzb3ItPmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIG1faW5wdXRDdXJzb3ItPmFwcGVuZElu
cHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVkKCkpOworICAgIGVsc2UgaWYgKG1f
aW5wdXRDdXJzb3IuaXNSZXBsYXlpbmcoKSkgeworICAgICAgICBpZiAoU2V0UmFuZG9tU2VlZCog
aW5wdXQgPSBtX2lucHV0Q3Vyc29yLT5mZXRjaElucHV0PFNldFJhbmRvbVNlZWQ+KCkpCiAgICAg
ICAgICAgICBtX3dlYWtSYW5kb20uc2V0U2VlZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5wdXQt
PnJhbmRvbVNlZWQoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGY5ZGU2NDFiNjNmYTgwMDhmOGJkZmMzY2M1NDY2
NGQxNzc1M2RkZjAuLmE5MDk2Nzk2OTBlYTllNDExZTRhN2Q3ZmRkN2FkMjA2NWEwMTIxMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
NDQsNyArNDQsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1
ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogc3RydWN0IE9wYXF1ZUpTQ2xhc3M7CiBzdHJ1Y3QgT3BhcXVlSlNDbGFzc0Nv
bnRleHREYXRhOwpAQCAtMzc5LDcgKzM3OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFZNJiBtX3ZtOwogCiAjaWYgRU5B
QkxFKFdFQl9SRVBMQVkpCi0gICAgUmVmUHRyPElucHV0Q3Vyc29yPiBtX2lucHV0Q3Vyc29yOwor
ICAgIFJlZjxJbnB1dEN1cnNvcj4gbV9pbnB1dEN1cnNvcjsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCkBAIC02MTcsOCArNjE2LDggQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUo
V0VCX1JFUExBWSkKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldElucHV0Q3Vyc29yKFBh
c3NSZWZQdHI8SW5wdXRDdXJzb3I+KTsKLSAgICBJbnB1dEN1cnNvciYgaW5wdXRDdXJzb3IoKSBj
b25zdCB7IHJldHVybiAqbV9pbnB1dEN1cnNvcjsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0SW5wdXRDdXJzb3IoUmVmPElucHV0Q3Vyc29yPiYmKTsKKyAgICBJbnB1dEN1cnNvciYg
aW5wdXRDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX2lucHV0Q3Vyc29yLmdldCgpOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKaW5k
ZXggZGZkOTY1MTQ0N2Q3MWI0MTQ4OTI4ZWYzMTg0MmJiMjdmNTA0YTBiMS4uZDVmNzA5MTBkMjJi
MGQ3ZWY2YzgwMjQ0OWM5YTE1NGZmMWYwZWRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCkBAIC0z
OCwxOCArMzgsMTggQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3IuZ2V0KCkpIHsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwotICAgICAgICB2bS5lbXB0eVBy
b3BlcnR5TmFtZUVudW1lcmF0b3IgPSBTdHJvbmc8SlNDZWxsPih2bSwgY3JlYXRlKHZtLCAwLCAw
LCAwLCBwcm9wZXJ0eU5hbWVzKSk7CisgICAgICAgIHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVy
YXRvciA9IFN0cm9uZzxKU0NlbGw+KHZtLCBjcmVhdGUodm0sIDAsIDAsIDAsIFdURk1vdmUocHJv
cGVydHlOYW1lcykpKTsKICAgICB9CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqPih2bS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpOwogfQogCi1K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgsIHVp
bnQzMl90IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzKQorSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBpbmRl
eGVkTGVuZ3RoLCB1aW50MzJfdCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBQcm9wZXJ0eU5h
bWVBcnJheSYmIHByb3BlcnR5TmFtZXMpCiB7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQg
PSBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmlkKCkgOiAwOwogICAgIHVpbnQzMl90IGlubGluZUNh
cGFjaXR5ID0gc3RydWN0dXJlID8gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpIDogMDsKICAg
ICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBuZXcgKE5vdE51bGwsIAog
ICAgICAgICBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPih2bS5oZWFwKSkg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmVJRCwgaW5saW5lQ2FwYWNpdHkp
OwotICAgIGVudW1lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBpbmRleGVkTGVuZ3RoLCBudW1i
ZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSk7CisgICAgZW51bWVy
YXRvci0+ZmluaXNoQ3JlYXRpb24odm0sIGluZGV4ZWRMZW5ndGgsIG51bWJlclN0cnVjdHVyZVBy
b3BlcnRpZXMsIHByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKSk7CiAgICAgcmV0dXJuIGVudW1l
cmF0b3I7CiB9CiAKQEAgLTYwLDExICs2MCwxMCBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZUlEIHN0cnVjdHVyZQog
ewogfQogCi12b2lkIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCB1aW50MzJfdCBpbmRleGVkTGVuZ3RoLCB1aW50MzJfdCBlbmRTdHJ1Y3R1cmVQcm9wZXJ0
eUluZGV4LCBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gaWRlbnRzKQordm9pZCBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgdWludDMyX3Qg
aW5kZXhlZExlbmd0aCwgdWludDMyX3QgZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCwgUmVmUHRy
PFByb3BlcnR5TmFtZUFycmF5RGF0YT4mJiBpZGVudGlmaWVycykKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAKLSAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBpZGVu
dGlmaWVycyA9IGlkZW50czsKICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFt
ZVZlY3RvciYgdmVjdG9yID0gaWRlbnRpZmllcnMtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogCiAg
ICAgbV9pbmRleGVkTGVuZ3RoID0gaW5kZXhlZExlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXgg
MzM1NjE0M2YzMTJjZWFjNjQwMDc3MTNiMTZjMjg0NzYzMjI0YjRlNC4uNWUxMjM1OTg1YTI4OWM0
NmJlZmRjODBjY2JkNzRlN2M5MDU0NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJik7Ci0gICAgc3RhdGljIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBQ
cm9wZXJ0eU5hbWVBcnJheSYpOworICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVydHlOYW1l
QXJyYXkmJik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwpAQCAtODUsNyArODUsNyBAQCBj
bGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAog
cHJpdmF0ZToKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBTdHJ1Y3R1cmVJRCwg
dWludDMyX3QpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCB1aW50MzJfdCwgdWludDMy
X3QsIFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIHVpbnQzMl90LCB1aW50MzJfdCwgUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5
RGF0YT4mJik7CiAKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPj4gbV9wcm9wZXJ0
eU5hbWVzOwogICAgIFN0cnVjdHVyZUlEIG1fY2FjaGVkU3RydWN0dXJlSUQ7CkBAIC0xMzUsNyAr
MTM1LDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogcHJvcGVydHlOYW1lRW51
bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMKIAogICAgIG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluKGV4ZWMsIHN0cnVjdHVyZSk7CiAKLSAgICBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgaW5kZXhlZExlbmd0aCwgbnVtYmVy
U3RydWN0dXJlUHJvcGVydGllcywgcHJvcGVydHlOYW1lcyk7CisgICAgZW51bWVyYXRvciA9IEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRMZW5n
dGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIFdURk1vdmUocHJvcGVydHlOYW1lcykpOwog
ICAgIGVudW1lcmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpKTsKICAgICBpZiAoIWluZGV4ZWRMZW5ndGggJiYgc3RydWN0dXJl
LT5jYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSkKICAgICAgICAgc3RydWN0dXJlLT5z
ZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBlbnVtZXJhdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGJjYjU0MDVmZjU3MDUwZmQ2YzQz
YmQzNmVlMGI1NzY0ZmMxZjM0NDQuLjNmYzY3N2RhNzYzZmQ1NmMwNDhmZWVkMTA0NTJjZTQ2Nzk1
NGU5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtOTcs
MTAgKzk3LDEwIEBAIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpOwogICAgIAogcHJpdmF0ZToKLSAgICBKU1N0cmluZyhWTSYgdm0sIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgSlNTdHJpbmcoVk0mIHZtLCBSZWY8U3RyaW5nSW1wbD4m
JiB2YWx1ZSkKICAgICAgICAgOiBKU0NlbGwodm0sIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkK
ICAgICAgICAgLCBtX2ZsYWdzKDApCi0gICAgICAgICwgbV92YWx1ZShSZWZQdHI8U3RyaW5nSW1w
bD4odmFsdWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAgewogICAg
IH0KIApAQCAtMTM2LDIwICsxMzYsMTggQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB9CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0s
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVh
dGUoVk0mIHZtLCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh2YWx1ZSk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKICAg
ICAgICAgc2l6ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAgICBKU1N0cmluZyogbmV3
U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBK
U1N0cmluZyh2bSwgdmFsdWUpOworICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmluZyh2bSwgV1RG
TW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBsZW5n
dGgsIGNvc3QpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KLSAgICBzdGF0aWMg
SlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3duZXIoVk0mIHZtLCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHZhbHVlKQorICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihWTSYg
dm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgSlNT
dHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2
bS5oZWFwKSkgSlNTdHJpbmcodm0sIHZhbHVlKTsKKyAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmlu
ZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkgSlNTdHJp
bmcodm0sIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlv
bih2bSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CkBAIC01MDYs
MTkgKzUwNCwxOSBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0
cmluZyhWTSogdm0sIFVDaGFyIGMpCiB7CiAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKQogICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoYyk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBTdHJpbmcoJmMsIDEp
LmltcGwoKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBTdHJpbmdJbXBsOjpj
cmVhdGUoJmMsIDEpKTsKIH0KIAogaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmco
Vk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgQVNTRVJUKHMubGVuZ3RoKCkgPiAxKTsK
LSAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMuaW1wbCgpKTsKKyAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZSgqdm0sICpzLmltcGwoKSk7CiB9CiAKIGlubGluZSBKU1N0cmluZyog
anNOb250cml2aWFsU3RyaW5nKFZNKiB2bSwgU3RyaW5nJiYgcykKIHsKICAgICBBU1NFUlQocy5s
ZW5ndGgoKSA+IDEpOwotICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgcy5yZWxlYXNl
SW1wbCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMucmVsZWFzZUltcGwo
KS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTU3Ry
aW5nOjp0b0lkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtNTcyLDcgKzU3MCw3
IEBAIGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCiAg
ICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAgICAgIHJl
dHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAgICB9Ci0g
ICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CisgICAgcmV0dXJuIEpT
U3RyaW5nOjpjcmVhdGUoKnZtLCAqcy5pbXBsKCkpOwogfQogCiBpbmxpbmUgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC02MzQsNyArNjMyLDcgQEAgaW5saW5lIEpTU3Ry
aW5nKiBqc093bmVkU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQogICAgICAgICBpZiAo
YyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnNt
YWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CiAgICAgfQotICAgIHJldHVybiBK
U1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIHMuaW1wbCgpKTsKKyAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCAqcy5pbXBsKCkpOwogfQogCiBpbmxp
bmUgSlNSb3BlU3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5k
ZXggMGM4MzRlMDVmMjc0Y2M2ZDRmN2NlZDY2ZjI4ZWJmMDU3MGJmYzU2Ny4uZjQyNGJhZGFlNTIw
ZjQzYWIyNGU2NGZiOWY3MzVjMWE3ZGQ5MDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlw
dEV4ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdl
dCgpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgp
CisgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAppbmRleCBiN2RhZDJhNDYy
ZGRkZmMyMjc2MmZkNWNkN2NmNmE0NjFjZGQxOGY2Li4wZjhkMDg0NDQ5ZTQ1Nzk3NjJhYmY4NzE1
YTQ5MDk3NGZlYTYxYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFeGVjdXRhYmxlLmNwcApAQCAtNDAsMTEgKzQwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTmF0aXZl
RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKE5hdGl2ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZShWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4
ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0sIFJlZjxKSVRDb2RlPiYm
IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFJlZjxKSVRDb2RlPiYmIGNvbnN0
cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNp
YywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAgICAgZXhlY3V0YWJsZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBO
YXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2ln
bmF0dXJlKTsKLSAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbFRodW5rLCBj
b25zdHJ1Y3RUaHVuaywgbmFtZSk7CisgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0s
IFdURk1vdmUoY2FsbFRodW5rKSwgV1RGTW92ZShjb25zdHJ1Y3RUaHVuayksIG5hbWUpOwogICAg
IHJldHVybiBleGVjdXRhYmxlOwogfQogCkBAIC01OCwxMSArNTgsMTEgQEAgU3RydWN0dXJlKiBO
YXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWMKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9
CiAKLXZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVu
aywgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJVENvZGU+JiYgY29u
c3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGNhbGxUaHVuazsKLSAgICBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RUaHVuazsKKyAgICBtX2ppdENvZGVGb3JDYWxsID0g
V1RGTW92ZShjYWxsVGh1bmspOworICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IFdURk1vdmUo
Y29uc3RydWN0VGh1bmspOwogICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IG1f
aml0Q29kZUZvckNhbGwtPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KTsKICAgICBtX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IG1faml0Q29kZUZvckNvbnN0cnVjdC0+
YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwogICAgIG1fbmFtZSA9IG5hbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXgg
ZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYS4uYWE1NmNmNGRjZmQxNGVi
MmFhYmFjMzRhYzNlNTAyZWIwMjA3YWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICB0eXBlZGVm
IEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0g
ICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHN0YXRp
YyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0mLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmss
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhc3NS
ZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJ
VENvZGU+JiYgY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggODVlYzRiNWNhNGIxYjdm
NThlNjNhYWE5NTIzZmVjNjU3NzZjYWJkOC4uYjY3ZmU4MmI1MGEyNjUwM2ZhZWRlZWFmNGZhYTkx
ZThkODNlNjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgSlNPYmplY3QqIGNoZWNr
U3ludGF4KEV4ZWNTdGF0ZSopOwogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRK
SVRDb2RlKCkKKyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCA4ZDFm
Mjg2MDhmZDQwMzRkZmU2ZmE1YzcwMjQ2MmNkMzRhYTQ1MzdhLi5hN2FmZTc4ZjZkZmMxNjU3ZjQ3
MDNhZmViNGI3MjA0NDE0MjZiMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTczLDkgKzczLDggQEAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXkgewogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyBy
ZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQogICAgIGNvbnN0IElkZW50
aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9w
ZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQogCi0gICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJv
cGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0
eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNz
UmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gcmVsZWFzZURhdGEoKSB7IHJldHVybiBXVEZN
b3ZlKG1fZGF0YSk7IH0KKyAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiByZWxlYXNl
RGF0YSgpIHsgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQogCiAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGVzZSBmdW5jdGlvbnMuCiAgICAgYm9vbCBjYW5BZGRLbm93blVuaXF1ZUZvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuaXNFbXB0eSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5oCmluZGV4IGZkNWYz
MGVkMWRmMDQ5ZjI0OTljOWEyZTNiYjJhNzdjMDM2YzczMjIuLjU3YTNmMzU5YmFhOTc1ZjIzZDNi
YjU3MTM0NTdjZWJhNTZjNGI4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cEtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cEtleS5oCkBAIC02Myw5ICs2Myw5IEBAIHN0cnVjdCBSZWdFeHBLZXkgewogICAgIHsKICAg
ICB9CiAKLSAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxhZ3MsIGNvbnN0IFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcGF0dGVybikKKyAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxhZ3MsIFJl
ZlB0cjxTdHJpbmdJbXBsPiYmIHBhdHRlcm4pCiAgICAgICAgIDogZmxhZ3NWYWx1ZShmbGFncykK
LSAgICAgICAgLCBwYXR0ZXJuKHBhdHRlcm4pCisgICAgICAgICwgcGF0dGVybihXVEZNb3ZlKHBh
dHRlcm4pKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggN2I1ZDYzNmFmZGQ3MDU3NDU1NmJmMDQx
YzI1NGVkYjdmMWY4MjM1ZC4uYzFmYjI3YTZkMTlmNGI0MGI2ZTczZjY0NTRiZjM4MDU5ZGM4OThi
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6
Om5ld0NvZGVCbG9ja0ZvcigKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKICAg
ICAgICAgcmV0dXJuIEV2YWxDb2RlQmxvY2s6OmNyZWF0ZSh2bSwKICAgICAgICAgICAgIGV4ZWN1
dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLmdldCgpLCBzY29wZSwK
LSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCkpOworICAgICAgICAg
ICAgKmV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCkpOwogICAgIH0KICAgICAKICAgICBp
ZiAoY2xhc3NJbmZvKCp2bSkgPT0gUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgewpAQCAtMTkz
LDcgKzE5Myw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9y
KAogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOwogICAgICAgICByZXR1cm4gUHJv
Z3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLAogICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0
YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAotICAgICAgICAg
ICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgc3RhcnRDb2x1bW4oKSk7CisgICAg
ICAgICAgICAqZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgc3RhcnRDb2x1bW4oKSk7
CiAgICAgfQogCiAgICAgaWYgKGNsYXNzSW5mbygqdm0pID09IE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjppbmZvKCkpIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1
dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9u
KTsKICAgICAgICAgcmV0dXJuIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZSh2bSwKICAg
ICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmdldCgpLCBzY29wZSwKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LnByb3ZpZGVyKCksIHN0YXJ0Q29sdW1uKCkpOworICAgICAgICAgICAgKmV4ZWN1dGFibGUtPnNv
dXJjZSgpLnByb3ZpZGVyKCksIHN0YXJ0Q29sdW1uKCkpOwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGNsYXNzSW5mbygqdm0pID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKQEAg
LTIyOSw3ICsyMjksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9j
a0ZvcigKICAgICB9CiAKICAgICByZXR1cm4gRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCAKLSAgICAgICAgc291cmNlKCku
cHJvdmlkZXIoKSwgc291cmNlKCkuc3RhcnRPZmZzZXQoKSwgc3RhcnRDb2x1bW4oKSk7CisgICAg
ICAgICpzb3VyY2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydE9mZnNldCgpLCBzdGFydENv
bHVtbigpKTsKIH0KIAogQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVu
dENvZGVCbG9ja0ZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuY3BwCmluZGV4IGNhYzVkNjllY2UyNTU0NjE2NWViNDMzZmU5ZWZlN2U2YTcyODM1NTku
LjYwZTIxYjZjZjQ2ZTEzZTQ2MjM1ODQ0OGZmMjhiN2RhOTE0MjJmY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApAQCAtMzksOSArMzksOSBA
QCBjbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlIHsKIHB1YmxpYzoKICAgICBTbWFsbFN0cmluZ3NT
dG9yYWdlKCk7CiAKLSAgICBTdHJpbmdJbXBsKiByZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIp
CisgICAgU3RyaW5nSW1wbCYgcmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fcmVwc1tjaGFyYWN0ZXJdLmdldCgpOworICAgICAgICByZXR1cm4gKm1f
cmVwc1tjaGFyYWN0ZXJdLmdldCgpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMCw3ICsxMTAs
NyBAQCBTbWFsbFN0cmluZ3M6On5TbWFsbFN0cmluZ3MoKQogdm9pZCBTbWFsbFN0cmluZ3M6OmNy
ZWF0ZUVtcHR5U3RyaW5nKFZNKiB2bSkKIHsKICAgICBBU1NFUlQoIW1fZW1wdHlTdHJpbmcpOwot
ICAgIG1fZW1wdHlTdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIFN0
cmluZ0ltcGw6OmVtcHR5KCkpOworICAgIG1fZW1wdHlTdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRl
SGFzT3RoZXJPd25lcigqdm0sICpTdHJpbmdJbXBsOjplbXB0eSgpKTsKICAgICBBU1NFUlQobV9u
ZWVkc1RvQmVWaXNpdGVkKTsKIH0KIApAQCAtMTE5LDExICsxMTksMTEgQEAgdm9pZCBTbWFsbFN0
cmluZ3M6OmNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhWTSogdm0sIHVuc2lnbmVkIGNoYXIg
Y2hhcmFjdGVyKQogICAgIGlmICghbV9zdG9yYWdlKQogICAgICAgICBtX3N0b3JhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNtYWxsU3RyaW5nc1N0b3JhZ2U+KCk7CiAgICAgQVNTRVJUKCFtX3Npbmds
ZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXSk7Ci0gICAgbV9zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzW2NoYXJhY3Rlcl0gPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4obV9zdG9yYWdlLT5yZXAoY2hhcmFjdGVyKSkpOworICAgIG1fc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdID0gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVy
T3duZXIoKnZtLCBtX3N0b3JhZ2UtPnJlcChjaGFyYWN0ZXIpKTsKICAgICBBU1NFUlQobV9uZWVk
c1RvQmVWaXNpdGVkKTsKIH0KIAotU3RyaW5nSW1wbCogU21hbGxTdHJpbmdzOjpzaW5nbGVDaGFy
YWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCitTdHJpbmdJbXBsJiBTbWFs
bFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rl
cikKIHsKICAgICBpZiAoIW1fc3RvcmFnZSkKICAgICAgICAgbV9zdG9yYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxTbWFsbFN0cmluZ3NTdG9yYWdlPigpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIFN0cmlu
Z0ltcGwqIFNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNo
YXIgY2hhcmFjdGVyKQogCiB2b2lkIFNtYWxsU3RyaW5nczo6aW5pdGlhbGl6ZShWTSogdm0sIEpT
U3RyaW5nKiYgc3RyaW5nLCBjb25zdCBjaGFyKiB2YWx1ZSkKIHsKLSAgICBzdHJpbmcgPSBKU1N0
cmluZzo6Y3JlYXRlKCp2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgdmFsdWUpLmltcGwo
KSk7CisgICAgc3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIEF0b21pY1N0cmluZ0ltcGw6
OmFkZCh2YWx1ZSkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgQVNTRVJUKG1fbmVlZHNUb0JlVmlz
aXRlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nt
YWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmgKaW5kZXggMjYzYjQyN2EwN2I4NjgyZDIyMTNjMWU2MDAzNDIxMjUzMTE1MDA4ZC4uZjMxYjVj
ZDY2ZmMyNmVjZDMwNGVlZjA5ZTIxMWZlZWI1MTk4OWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgU21h
bGxTdHJpbmdzIHsKICAgICAgICAgcmV0dXJuIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFy
YWN0ZXJdOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nSW1wbCog
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZ0ltcGwmIHNpbmdsZUNoYXJhY3RlclN0cmluZ1Jl
cCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CiAKICAgICBKU1N0cmluZyoqIHNpbmdsZUNoYXJh
Y3RlclN0cmluZ3MoKSB7IHJldHVybiAmbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA3MmMz
YmJlYWZjYmVlOWQ2MTRkMGM3ZDQ2NzNlOTk4ZDZlYzRjZmUuLjQ0NDg2ZGIzYzUyNTE1NWM3NTA0
YmJjYjBmMGNlZDczYzYwY2MwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcApAQCAtMTE0MywxMCArMTE0MywxMCBAQCBib29sIFN0cnVjdHVyZTo6cHJv
dG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TgogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0
b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCitSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVj
dHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQogewotICAgIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gYmFzZVNoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwotICAgIFJl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gY3VyU2hhcGUgPSBiYXNlU2hhcGU7CisgICAgUmVmPFN0cnVj
dHVyZVNoYXBlPiBiYXNlU2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPiBjdXJTaGFwZSA9IGJhc2VTaGFwZS5wdHIoKTsKICAgICBTdHJ1
Y3R1cmUqIGN1clN0cnVjdHVyZSA9IHRoaXM7CiAgICAgSlNWYWx1ZSBjdXJWYWx1ZSA9IHZhbHVl
OwogICAgIHdoaWxlIChjdXJTdHJ1Y3R1cmUpIHsKQEAgLTExNjgsNyArMTE2OCw3IEBAIFBhc3NS
ZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVl
IHZhbHVlKQogCiAgICAgICAgIGlmIChjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVj
dHVyZSgpKSB7CiAgICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNy
ZWF0ZSgpOwotICAgICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0cigpKTsK
KyAgICAgICAgICAgIGN1clNoYXBlLT5zZXRQcm90byhuZXdTaGFwZS5jb3B5UmVmKCkpOwogICAg
ICAgICAgICAgY3VyU2hhcGUgPSBXVEZNb3ZlKG5ld1NoYXBlKTsKICAgICAgICAgICAgIGN1clZh
bHVlID0gY3VyU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKICAgICAgICAgfQpAQCAtMTE3
Niw3ICsxMTc2LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGN1clN0cnVjdHVyZSA9IGN1clN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0dXJlKCk7CiAgICAgfQogICAgIAotICAgIHJl
dHVybiBXVEZNb3ZlKGJhc2VTaGFwZSk7CisgICAgcmV0dXJuIGJhc2VTaGFwZTsKIH0KIAogYm9v
bCBTdHJ1Y3R1cmU6OmNhblVzZUZvckFsbG9jYXRpb25zT2YoU3RydWN0dXJlKiBvdGhlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggYzE3YTM0MzZhYTFk
N2M1YmEwMTg0Mjk2ZDE5OWFkMGViNDg3ZjJlNi4uYjBmNDNiNzAwMjgyMjkwYzNhMjdjNGI3ZmVi
MWRjMWRhOGRlMDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiV3JpdGVC
YXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxhdGlvblRocmVhZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewpAQCAtNTkyLDcgKzU5MSw3IEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICB3aWxsU3RvcmVWYWx1ZVNsb3codm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNob3VsZE9wdGltaXplLCBJbmZlcnJlZFR5cGVUYWJsZTo6T2xkUHJv
cGVydHkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHRvU3RydWN0
dXJlU2hhcGUoSlNWYWx1ZSk7CisgICAgUmVmPFN0cnVjdHVyZVNoYXBlPiB0b1N0cnVjdHVyZVNo
YXBlKEpTVmFsdWUpOwogICAgIAogICAgIC8vIERldGVybWluZXMgaWYgdGhlIHR3byBzdHJ1Y3R1
cmVzIG1hdGNoIGVub3VnaCB0aGF0IHRoaXMgb25lIGNvdWxkIGJlIHVzZWQgZm9yIGFsbG9jYXRp
b25zCiAgICAgLy8gb2YgdGhlIG90aGVyIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAppbmRleCA0YzgwNjlhOGMwZjE4M2M4
Mzk1YjE0MGY5NTAwMTY3ZDUwOTU0MWQwLi5iMjViNDY2ZjY0MTZjYjA4ZGRmNWY1YmNiYTBmMTgx
ZTNmZDk0YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
TG9jYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZUxvY2F0aW9uQ2FjaGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1zdGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gVHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5
cGVMb2NhdGlvbihHbG9iYWxWYXJpYWJsZUlEIGdsb2JhbFZhcmlhYmxlSUQsIGludHB0cl90IHNv
dXJjZUlELCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBQYXNzUmVmUHRyPFR5cGVTZXQ+
IGdsb2JhbFR5cGVTZXQsIFZNKiB2bSkKK3N0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBU
eXBlTG9jYXRpb25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlSUQgZ2xvYmFs
VmFyaWFibGVJRCwgaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBl
bmQsIFJlZlB0cjxUeXBlU2V0PiYmIGdsb2JhbFR5cGVTZXQsIFZNKiB2bSkKIHsKICAgICBMb2Nh
dGlvbktleSBrZXk7CiAgICAga2V5Lm1fZ2xvYmFsVmFyaWFibGVJRCA9IGdsb2JhbFZhcmlhYmxl
SUQ7CkBAIC00OCw3ICs0OCw3IEBAIHN0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBUeXBl
TG9jYXRpb25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlCiAgICAgICAgIGxv
Y2F0aW9uLT5tX3NvdXJjZUlEID0gc291cmNlSUQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90
U3RhcnQgPSBzdGFydDsKICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RFbmQgPSBlbmQ7Ci0gICAg
ICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgPSBnbG9iYWxUeXBlU2V0OworICAgICAgICBs
b2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gV1RGTW92ZShnbG9iYWxUeXBlU2V0KTsKIAogICAg
ICAgICBtX2xvY2F0aW9uTWFwW2tleV0gPSBsb2NhdGlvbjsKICAgICAgICAgaXNOZXdMb2NhdGlv
biA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
TG9jYXRpb25DYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0
aW9uQ2FjaGUuaAppbmRleCA4ZTY1NDVkODIzNjY0ODU1NGM4NzBkMjkwMzI5NjQ4YzhjOWFkMGFh
Li4wMDhlZjczMjFkNWI0ZGY0Zjc1ZDRlMDg0N2E3M2ViZGYwMjgwM2IyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmgKQEAgLTU2LDcg
KzU2LDcgQEAgY2xhc3MgVHlwZUxvY2F0aW9uQ2FjaGUgewogICAgICAgICB1bnNpZ25lZCBtX2Vu
ZDsKICAgICB9OwogCi0gICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IGdldFR5cGVM
b2NhdGlvbihHbG9iYWxWYXJpYWJsZUlELCBpbnRwdHJfdCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCwgUGFzc1JlZlB0cjxUeXBlU2V0PiwgVk0qKTsKKyAgICBzdGQ6OnBhaXI8VHlwZUxv
Y2F0aW9uKiwgYm9vbD4gZ2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlSUQsIGludHB0cl90
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZWZQdHI8VHlwZVNldD4mJiwgVk0qKTsK
IHByaXZhdGU6ICAgICAKICAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxMb2NhdGlvbktl
eSwgVHlwZUxvY2F0aW9uKiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+IExvY2F0aW9uTWFwOwog
ICAgIExvY2F0aW9uTWFwIG1fbG9jYXRpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA2ZDk4MzM1OGMyZDFlMjQ2MzI4
Yzg2ZjNmN2ZkNDA5NjVkYjE3NWRjLi44NWM0OWQwNDZiYWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRl
ZmNkMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlckxvZy5jcHAKQEAgLTgyLDggKzgyLDggQEAgdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nl
c3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBUeXBlTG9jYXRpb24q
IGxvY2F0aW9uID0gZW50cnktPmxvY2F0aW9uOwogICAgICAgICBsb2NhdGlvbi0+bV9sYXN0U2Vl
blR5cGUgPSB0eXBlOwogICAgICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKLSAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0
eXBlLCBzaGFwZSwgc3RydWN0dXJlKTsKLSAgICAgICAgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25U
eXBlU2V0LT5hZGRUeXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hZGRUeXBlSW5mb3JtYXRpb24odHlw
ZSwgc2hhcGUuY29weVJlZigpLCBzdHJ1Y3R1cmUpOworICAgICAgICBsb2NhdGlvbi0+bV9pbnN0
cnVjdGlvblR5cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBlLCBXVEZNb3ZlKHNoYXBlKSwg
c3RydWN0dXJlKTsKIAogICAgICAgICBlbnRyeSsrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggMzFlYTdkZjM0ZmM0MDRmOThlNWI2NGRhOWVm
NDIzZTY2MzQ5NWMxNy4uOWI2OWM1NzgxMzc3MWNlZWQ4M2Y1OGRlOTI0NjU4MWFkNDI1OTQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTQxLDEyICs0
MSwxMiBAQCBUeXBlU2V0OjpUeXBlU2V0KCkKIHsKIH0KIAotdm9pZCBUeXBlU2V0OjphZGRUeXBl
SW5mb3JtYXRpb24oUnVudGltZVR5cGUgdHlwZSwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4g
cHJwTmV3U2hhcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKSAKK3ZvaWQgVHlwZVNldDo6YWRkVHlw
ZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBlIHR5cGUsIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4mJiBw
YXNzZWROZXdTaGFwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgUmVmUHRyPFN0cnVj
dHVyZVNoYXBlPiBuZXdTaGFwZSA9IHBycE5ld1NoYXBlOwogICAgIG1fc2VlblR5cGVzID0gbV9z
ZWVuVHlwZXMgfCB0eXBlOwogCi0gICAgaWYgKHN0cnVjdHVyZSAmJiBuZXdTaGFwZSAmJiAhcnVu
dGltZVR5cGVJc1ByaW1pdGl2ZSh0eXBlKSkgeworICAgIGlmIChzdHJ1Y3R1cmUgJiYgcGFzc2Vk
TmV3U2hhcGUgJiYgIXJ1bnRpbWVUeXBlSXNQcmltaXRpdmUodHlwZSkpIHsKKyAgICAgICAgUmVm
PFN0cnVjdHVyZVNoYXBlPiBuZXdTaGFwZSA9IHBhc3NlZE5ld1NoYXBlLnJlbGVhc2VOb25OdWxs
KCk7CiAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuY29udGFpbnMoc3RydWN0dXJlKSkgewog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKQEAgLTU2LDI2ICs1NiwyMiBAQCB2b2lkIFR5cGVTZXQ6OmFkZFR5cGVJbmZvcm1h
dGlvbihSdW50aW1lVHlwZSB0eXBlLCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBwcgogICAg
ICAgICAgICAgLy8gLSBXZSBkb24ndCBoYXZlIHR3byBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgc2hh
cGUuIChTYW1lIHNoYXBlcyBtYXkgaGF2ZSBkaWZmZXJlbnQgU3RydWN0dXJlcykuCiAgICAgICAg
ICAgICAvLyAtIFdlIGRvbid0IGhhdmUgdHdvIHNoYXBlcyB0aGF0IHNoYXJlIHRoZSBzYW1lIHBy
b3RvdHlwZSBjaGFpbi4gSWYgdGhlc2Ugc2hhcGVzIHNoYXJlIHRoZSBzYW1lIAogICAgICAgICAg
ICAgLy8gICBwcm90b3R5cGUgY2hhaW4sIHRoZXkgd2lsbCBiZSBtZXJnZWQgaW50byBvbmUgc2hh
cGUuCi0gICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICBTdHJpbmcg
aGFzaCA9IG5ld1NoYXBlLT5wcm9wZXJ0eUhhc2goKTsKICAgICAgICAgICAgIGZvciAoYXV0byYg
c2VlblNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNl
ZW5TaGFwZS0+cHJvcGVydHlIYXNoKCkgPT0gaGFzaCkgewotICAgICAgICAgICAgICAgICAgICBm
b3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0gCi0gICAgICAgICAgICAgICAgaWYgKHNlZW5TaGFwZS0+aGFzU2FtZVByb3RvdHlwZUNoYWlu
KG5ld1NoYXBlKSkgewotICAgICAgICAgICAgICAgICAgICBzZWVuU2hhcGUgPSBTdHJ1Y3R1cmVT
aGFwZTo6bWVyZ2Uoc2VlblNoYXBlLCBuZXdTaGFwZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
aWYgKHNlZW5TaGFwZS0+cHJvcGVydHlIYXNoKCkgPT0gaGFzaCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGlmIChzZWVuU2hhcGUtPmhhc1NhbWVQcm90b3R5
cGVDaGFpbihuZXdTaGFwZS5jb3B5UmVmKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHNlZW5T
aGFwZSA9IFN0cnVjdHVyZVNoYXBlOjptZXJnZShzZWVuU2hhcGUuY29weVJlZigpLCBXVEZNb3Zl
KG5ld1NoYXBlKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghZm91bmQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKSA8IDEwMCkKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5LmFwcGVuZChuZXdTaGFwZSk7Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAoIW1faXNPdmVyZmxvd24pCi0gICAgICAgICAgICAgICAgICAgIG1faXNP
dmVyZmxvd24gPSB0cnVlOworICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXpl
KCkgPCAxMDApIHsKKyAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZUhpc3RvcnkuYXBwZW5kKFdU
Rk1vdmUobmV3U2hhcGUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIW1faXNPdmVyZmxvd24pCisgICAgICAgICAgICAgICAgbV9pc092
ZXJmbG93biA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yMjIsOCArMjE4LDggQEAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlN0cnVjdHVyZURlc2NyaXB0aW8KIHsKICAgICBhdXRvIGRlc2NyaXB0aW9uID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0
dXJlRGVzY3JpcHRpb24+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKQotICAgICAgICBkZXNjcmlwdGlvbi0+YWRk
SXRlbShtX3N0cnVjdHVyZUhpc3RvcnkuYXQoaSktPmluc3BlY3RvclJlcHJlc2VudGF0aW9uKCkp
OworICAgIGZvciAoYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpCisgICAgICAgIGRl
c2NyaXB0aW9uLT5hZGRJdGVtKHNoYXBlLT5pbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpKTsKIAog
ICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KQEAgLTM2NywzMCArMzYzLDMwIEBAIFN0cmluZyBT
dHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNo
OwogfQogCi1TdHJpbmcgU3RydWN0dXJlU2hhcGU6OmxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+IHNoYXBlcykKK1N0cmluZyBTdHJ1Y3R1cmVT
aGFwZTo6bGVhc3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0b3I8UmVmPFN0cnVjdHVyZVNoYXBl
Pj4mIHNoYXBlcykKIHsKLSAgICBpZiAoIXNoYXBlcy5zaXplKCkpCisgICAgaWYgKHNoYXBlcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgUmVmUHRyPFN0
cnVjdHVyZVNoYXBlPiBvcmlnaW4gPSBzaGFwZXMuYXQoMCk7CisgICAgU3RydWN0dXJlU2hhcGUq
IG9yaWdpbiA9IHNoYXBlc1swXS5wdHIoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNo
YXBlcy5zaXplKCk7IGkrKykgewogICAgICAgICBib29sIGZvdW5kTFVCID0gZmFsc2U7CiAgICAg
ICAgIHdoaWxlICghZm91bmRMVUIpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFw
ZT4gY2hlY2sgPSBzaGFwZXMuYXQoaSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmVTaGFwZSogY2hl
Y2sgPSBzaGFwZXNbaV0ucHRyKCk7CiAgICAgICAgICAgICBTdHJpbmcgY3VyQ3Rvck5hbWUgPSBv
cmlnaW4tPm1fY29uc3RydWN0b3JOYW1lOwogICAgICAgICAgICAgd2hpbGUgKGNoZWNrKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGNoZWNrLT5tX2NvbnN0cnVjdG9yTmFtZSA9PSBjdXJDdG9yTmFt
ZSkgewogICAgICAgICAgICAgICAgICAgICBmb3VuZExVQiA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjaGVjayA9
IGNoZWNrLT5tX3Byb3RvOworICAgICAgICAgICAgICAgIGNoZWNrID0gY2hlY2stPm1fcHJvdG8u
Z2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWZvdW5kTFVCKSB7Ci0gICAg
ICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLT5tX3Byb3RvOwogICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBiZWNhdXNlIHdlIHVzdWFsbHkgYm90dG9tIG91
dCBhdCAiT2JqZWN0IiwgYnV0IHRoZXJlIGFyZSBzb21lIHNldHMgb2YgT2JqZWN0cwogICAgICAg
ICAgICAgICAgIC8vIHRoYXQgbWF5IGNhdXNlIHRoaXMgYmVoYXZpb3IuIFdlIGZhbGwgYmFjayB0
byAiT2JqZWN0IiBiZWNhdXNlIGl0J3Mgb3VyIHZlcnNpb24gb2YgVG9wLgotICAgICAgICAgICAg
ICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLT5tX3Byb3RvKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJPYmplY3QiKTsKKyAgICAg
ICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG8uZ2V0KCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtNTI5LDEwICs1MjUsMTAgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVj
dG8KICAgICByZXR1cm4gYmFzZTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6aGFzU2FtZVBy
b3RvdHlwZUNoYWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHBycE90aGVyKQorYm9vbCBT
dHJ1Y3R1cmVTaGFwZTo6aGFzU2FtZVByb3RvdHlwZUNoYWluKFJlZjxTdHJ1Y3R1cmVTaGFwZT4m
JiBwYXNzZWRPdGhlcikKIHsKICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNlbGYgPSB0aGlz
OwotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gb3RoZXIgPSBwcnBPdGhlcjsKKyAgICBSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IG90aGVyID0gV1RGTW92ZShwYXNzZWRPdGhlcik7CiAgICAgd2hp
bGUgKHNlbGYgJiYgb3RoZXIpIHsKICAgICAgICAgaWYgKHNlbGYtPm1fY29uc3RydWN0b3JOYW1l
ICE9IG90aGVyLT5tX2NvbnN0cnVjdG9yTmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTU0MywxMSArNTM5LDkgQEAgYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6aGFzU2FtZVByb3RvdHlw
ZUNoYWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHBycE90aGVyKQogICAgIHJldHVybiAh
c2VsZiAmJiAhb3RoZXI7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVy
ZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBwcnBBLCBjb25z
dCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBwcnBCKQorUmVmPFN0cnVjdHVyZVNoYXBlPiBT
dHJ1Y3R1cmVTaGFwZTo6bWVyZ2UoUmVmPFN0cnVjdHVyZVNoYXBlPiYmIGEsIFJlZjxTdHJ1Y3R1
cmVTaGFwZT4mJiBiKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gYSA9IHBycEE7Ci0g
ICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiID0gcHJwQjsKLSAgICBBU1NFUlQoYS0+aGFzU2Ft
ZVByb3RvdHlwZUNoYWluKGIpKTsKKyAgICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWlu
KGIuY29weVJlZigpKSk7CiAKICAgICBhdXRvIG1lcmdlZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVh
dGUoKTsKICAgICBmb3IgKGF1dG8gZmllbGQgOiBhLT5tX2ZpZWxkcykgewpAQCAtNTc0LDEyICs1
NjgsMTIgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdl
KGNvbnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIGlmIChhLT5tX3Byb3RvKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGItPm1fcHJvdG8pOwotICAgICAgICBtZXJnZWQtPnNl
dFByb3RvKFN0cnVjdHVyZVNoYXBlOjptZXJnZShhLT5tX3Byb3RvLCBiLT5tX3Byb3RvKSk7Cisg
ICAgICAgIG1lcmdlZC0+c2V0UHJvdG8oU3RydWN0dXJlU2hhcGU6Om1lcmdlKCphLT5tX3Byb3Rv
LCAqYi0+bV9wcm90bykpOwogICAgIH0KIAogICAgIG1lcmdlZC0+bWFya0FzRmluYWwoKTsKIAot
ICAgIHJldHVybiBXVEZNb3ZlKG1lcmdlZCk7CisgICAgcmV0dXJuIG1lcmdlZDsKIH0KIAogdm9p
ZCBTdHJ1Y3R1cmVTaGFwZTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmgKaW5kZXggMjJmMTc4ZDNlZWY2ZjM2NDI5MWU4Mzc3YjI4YjFk
YTA3MmVmNmFmZC4uZmI0MDY0MGViNDRkMTUwYzRjNjdjZWFkZTg1Y2Y1ZTFkNjJhYjJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaApAQCAtNjMsMTMgKzYzLDEzIEBA
IGNsYXNzIFN0cnVjdHVyZVNoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlU2hhcGU+
IHsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3Jp
cHRpb24+IGluc3BlY3RvclJlcHJlc2VudGF0aW9uKCk7CiAgICAgdm9pZCBzZXRDb25zdHJ1Y3Rv
ck5hbWUoU3RyaW5nIG5hbWUpIHsgbV9jb25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5pc0VtcHR5KCkg
PyBBU0NJSUxpdGVyYWwoIk9iamVjdCIpIDogbmFtZSk7IH0KICAgICBTdHJpbmcgY29uc3RydWN0
b3JOYW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5hbWU7IH0KLSAgICB2b2lkIHNldFByb3Rv
KFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlKSB7IG1fcHJvdG8gPSBzaGFwZTsgfQor
ICAgIHZvaWQgc2V0UHJvdG8oUmVmPFN0cnVjdHVyZVNoYXBlPiYmIHNoYXBlKSB7IG1fcHJvdG8g
PSBXVEZNb3ZlKHNoYXBlKTsgfQogICAgIHZvaWQgZW50ZXJEaWN0aW9uYXJ5TW9kZSgpOwogCiBw
cml2YXRlOgotICAgIHN0YXRpYyBTdHJpbmcgbGVhc3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0
b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZVNoYXBlPiBtZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiwgY29uc3Qg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4pOwotICAgIGJvb2wgaGFzU2FtZVByb3RvdHlwZUNo
YWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+KTsKKyAgICBzdGF0aWMgU3RyaW5nIGxlYXN0
Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+Jik7CisgICAg
c3RhdGljIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gbWVyZ2UoUmVmPFN0cnVjdHVyZVNoYXBlPiYmLCBS
ZWY8U3RydWN0dXJlU2hhcGU+JiYpOworICAgIGJvb2wgaGFzU2FtZVByb3RvdHlwZUNoYWluKFJl
ZjxTdHJ1Y3R1cmVTaGFwZT4mJik7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX2ZpZWxkczsKICAgICBIYXNoU2V0PFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX29wdGlvbmFsRmllbGRzOwpA
QCAtODUsNyArODUsNyBAQCBjbGFzcyBUeXBlU2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFR5cGVTZXQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFR5cGVTZXQ+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwZVNldCk7IH0KICAgICBUeXBlU2V0KCk7Ci0gICAg
dm9pZCBhZGRUeXBlSW5mb3JtYXRpb24oUnVudGltZVR5cGUsIFBhc3NSZWZQdHI8U3RydWN0dXJl
U2hhcGU+LCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1l
VHlwZSwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiYmLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGlu
dmFsaWRhdGVDYWNoZSgpOwogICAgIFN0cmluZyBkdW1wVHlwZXMoKSBjb25zdDsKICAgICBTdHJp
bmcgZGlzcGxheU5hbWUoKSBjb25zdDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBUeXBlU2V0
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVTZXQ+IHsKIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzT3ZlcmZsb3duOwogICAgIFJ1bnRpbWVUeXBlTWFzayBtX3NlZW5UeXBlczsKLSAg
ICBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4gbV9zdHJ1Y3R1cmVIaXN0b3J5OworICAg
IFZlY3RvcjxSZWY8U3RydWN0dXJlU2hhcGU+PiBtX3N0cnVjdHVyZUhpc3Rvcnk7CiAgICAgU3Ry
dWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDk3NGMzMTAyYWEzMDc1NzE5ZGVmNDAyMjBiNjVhMzM0NjRkMGJhNTIuLmMy
MjM5ZmRiZWQ3NWQzZTljNjVjZGJjYjk2NmU2ZmEyODMzZGQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTU0OSw4ICs1NDksOCBAQCBOYXRpdmVFeGVjdXRhYmxlKiBW
TTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50
cmlucwogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywKLSAgICAgICAgYWRv
cHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTElu
dENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKSwgZnVuY3Rpb24sCi0gICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jb25z
dHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29uc3RydWN0b3Is
CisgICAgICAgIGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaykpLCBmdW5jdGlvbiwKKyAgICAgICAgYWRvcHRSZWYoKm5ldyBO
YXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxs
aW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmsp
KSwgY29uc3RydWN0b3IsCiAgICAgICAgIE5vSW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwog
fQogCkBAIC04NjgsOSArODY4LDkgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQog
ICAgIHR5cGVQcm9maWxlcigpLT5kdW1wVHlwZVByb2ZpbGVyRGF0YSgqdGhpcyk7CiB9CiAKLXZv
aWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NS
ZWZQdHI8TWljcm90YXNrPiB0YXNrKQordm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWlj
cm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsIGds
b2JhbE9iamVjdCwgdGFzaykpOworICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsIGdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkp
OwogfQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggMDg4MDA4YTliY2JiN2ZmNjI0MTMzZGVlOWFmNWRkNjM5YjVmNjhhNS4uNTI3
YjhmODYzZmRkYTBiYWUwYTI5ZTVhM2JjNDg4MzcwYWJlMWYyZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC0xOTIsMTUgKzE5MiwxNSBAQCBjbGFzcyBRdWV1ZWRUYXNrIHsKIHB1
YmxpYzoKICAgICB2b2lkIHJ1bigpOwogCi0gICAgUXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiBtaWNyb3Rhc2spCisg
ICAgUXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxN
aWNyb3Rhc2s+JiYgbWljcm90YXNrKQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KHZtLCBnbG9i
YWxPYmplY3QpCi0gICAgICAgICwgbV9taWNyb3Rhc2sobWljcm90YXNrKQorICAgICAgICAsIG1f
bWljcm90YXNrKFdURk1vdmUobWljcm90YXNrKSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgog
ICAgIFN0cm9uZzxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7Ci0gICAgUmVmUHRyPE1p
Y3JvdGFzaz4gbV9taWNyb3Rhc2s7CisgICAgUmVmPE1pY3JvdGFzaz4gbV9taWNyb3Rhc2s7CiB9
OwogCiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKQEAgLTY1OSw3ICs2NTksNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxWTT4gewogICAgIGJvb2wgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwogICAg
IGJvb2wgZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPE1pY3Jv
dGFzaz4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9i
YWxPYmplY3QqLCBSZWY8TWljcm90YXNrPiYmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGRyYWluTWljcm90YXNrcygpOwogICAgIHZvaWQgc2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9u
U2hvdWxkVGhyb3coYm9vbCBnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25UaHJvdykgeyBtX2dsb2Jh
bENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93ID0gZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9u
VGhyb3c7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9u
U2hvdWxkVGhyb3coKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNo
b3VsZFRocm93OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VD
b2RlLmgKaW5kZXggMjZiYzVmMzVhNWViYzI4OGMyYTQ2ZGYwYzM5ZjUxMjA0NWYwMjU3Yi4uMDZh
OGVkYzgzMWI5M2E2MGJiNDJjZThhOGVlNGY0YmJlMGQ5NThmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtNDUsMjEgKzQ1LDIxIEBAIGNs
YXNzIFNjcmlwdFNvdXJjZUNvZGUgewogcHVibGljOgogICAgIFNjcmlwdFNvdXJjZUNvZGUoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3Np
dGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZSBzb3VyY2VUeXBlID0gSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0pCiAgICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpj
cmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybC5zdHJpbmcoKSB9LCB1cmwuc3Ry
aW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQotICAgICAgICAsIG1fY29kZShtX3By
b3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29w
eVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgIHsKICAg
ICB9CiAKICAgICBTY3JpcHRTb3VyY2VDb2RlKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBK
U0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlLCBSZWY8Q2FjaGVkU2NyaXB0
RmV0Y2hlcj4mJiBzY3JpcHRGZXRjaGVyKQogICAgICAgICA6IG1fcHJvdmlkZXIoQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXI6OmNyZWF0ZShjYWNoZWRTY3JpcHQsIHNvdXJjZVR5cGUsIFdURk1v
dmUoc2NyaXB0RmV0Y2hlcikpKQotICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyKQorICAgICAg
ICAsIG1fY29kZShtX3Byb3ZpZGVyLmNvcHlSZWYoKSkKICAgICAgICAgLCBtX2NhY2hlZFNjcmlw
dChjYWNoZWRTY3JpcHQpCiAgICAgewogICAgIH0KIAogICAgIFNjcmlwdFNvdXJjZUNvZGUoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0
YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIFJl
ZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCiAgICAgICAgIDogbV9wcm92
aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJj
ZU9yaWdpbiB7IHVybC5zdHJpbmcoKSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSB9LCB1cmwuc3Ry
aW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQotICAgICAgICAsIG1fY29kZShtX3By
b3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29w
eVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgIHsKICAg
ICB9CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUgewogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgUmVmPEpTQzo6U291
cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAgSlNDOjpTb3VyY2VDb2RlIG1fY29kZTsKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwogICAg
IFVSTCBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcApp
bmRleCA1ZWJlNTgzNjcwMWZjMmZjOTRjMjE1MDQ4NmI1OTkxNmVkOThiOGM4Li5iZjM1OGRjNmFi
NDg1MDk4NjQ1MDFhMDViNmY3M2Q4YjBhYzk5Mjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBSZXBsYXlDb250
cm9sbGVyOjpmcmFtZU5hdmlnYXRlZChGcmFtZSYgZnJhbWUpCiAgICAgLy8gV2Ugc3RvcmUgdGhl
IGlucHV0IGN1cnNvciBpbiBib3RoIERvY3VtZW50IGFuZCBKU0RPTVdpbmRvdywgc28gdGhhdAog
ICAgIC8vIHJlcGxheSBzdGF0ZSBpcyBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdENvcmUgYW5k
IHNjcmlwdC1mcmVlIGxheW91dCBjb2RlLgogICAgIGZyYW1lLmRvY3VtZW50KCktPnNldElucHV0
Q3Vyc29yKCptX2FjdGl2ZUN1cnNvcik7Ci0gICAgZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0SW5wdXRDdXJzb3IobV9hY3RpdmVDdXJzb3Iu
Z2V0KCkpOworICAgIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSktPnNldElucHV0Q3Vyc29yKCptX2FjdGl2ZUN1cnNvcik7CiB9CiAKIHZvaWQgUmVw
bGF5Q29udHJvbGxlcjo6ZnJhbWVEZXRhY2hlZChGcmFtZSYgZnJhbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301522</attachid>
            <date>2017-02-14 10:57:36 -0800</date>
            <delta_ts>2017-02-14 11:54:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168320-20170215035502.patch</filename>
            <type>text/plain</type>
            <size>118743</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi41MDY4YzZmODlkOTRhZDMy
NDNiYWViMDRmZTExZDljMjg5OTJmOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMDcgQEAKKzIwMTctMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCk6CisgICAgICAgIFVzZSBSZWY8
Vk0+IGZyb20gdGhlIGZhY3RvcnkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRS
ZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSk6CisgICAgICAgIFJldHVy
biBSZWY8PiBpbnN0ZWFkLgorCisgICAgICAgICogQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3Bw
OgorICAgICAgICAodGVzdEpTT05QYXJzZSk6CisgICAgICAgIFVzZSBSZWY8Vk0+LgorCisgICAg
ICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVy
OjpmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkpOgorICAgICAgICBVc2UgcmVmZXJlbmNl
IHNpbmNlIHdlIGFscmVhZHkgcGVyZm9ybSBudWxsIGNoZWNrLgorCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZik6CisgICAgICAgIFRha2UgUmVmPD4mJiBp
bnN0ZWFkIG9mIFBhc3NSZWZQdHI8Pi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5m
by5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFN0dWIpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldFNsb3dTdHViKToKKyAgICAgICAgVGFrZSBSZWY8PiYmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0cjw+LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICBUYWtlIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4uIEN1cnJlbnRseSwgdGhlIFNvdXJjZVByb3ZpZGVyIHdvdWxkIGJl
IG51bGxwdHIuCisgICAgICAgIFdlIHdpbGwgY2hhbmdlIGl0IHRvIFJlZjxTb3VyY2VQcm92aWRl
cj4gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODMyNS4KKwor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgVGFrZSBS
ZWY8VHlwZVNldD4mJi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnNldEpJVENvZGUpOgorICAgICAgICBUYWtlIFJlZjw+JiYgaW5z
dGVhZC4KKworICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdENvZGUpOgorICAgICAgICBSZXR1
cm4gUmVmUHRyPD4gaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgVGFrZSBS
ZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291cmNlUHJvdmlkZXIgd291bGUgYmUgbnVsbHB0ci4K
KworICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0
aW9uQ29kZUJsb2NrKToKKyAgICAgICAgVGFrZSBSZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291
cmNlUHJvdmlkZXIgd291bGUgYmUgbnVsbHB0ci4KKworICAgICAgICAqIGJ5dGVjb2RlL0dsb2Jh
bENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpHbG9iYWxDb2RlQmxvY2s6Okdsb2JhbENvZGVC
bG9jayk6CisgICAgICAgIFRha2UgUmVmUHRyPD4mJiBpbnN0ZWFkIHNpbmNlIFNvdXJjZVByb3Zp
ZGVyIHdvdWxlIGJlIG51bGxwdHIuCisKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6Ok1vZHVsZVByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICBUYWtlIFJlZlB0cjw+JiYgaW5zdGVhZCBzaW5jZSBTb3VyY2VQ
cm92aWRlciB3b3VsZSBiZSBudWxscHRyLgorCisgICAgICAgICogYnl0ZWNvZGUvUHJvZ3JhbUNv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAg
VGFrZSBSZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291cmNlUHJvdmlkZXIgd291bGUgYmUgbnVs
bHB0ci4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2F0aGVyRGVidWdnZXJQYXJzZURhdGFGb3JTb3VyY2UpOgorICAgICAgICBFbnN1
cmUgdGhlIHByb3ZpZGVyIGlzIG5vdCBudWxscHRyLiBJdCBpcyBPSyBiZWNhdXNlIHdlIGFscmVh
ZHkKKyAgICAgICAgdG91Y2ggYHByb3ZpZGVyLT54eHhgIHZhbHVlcy4KKworICAgICAgICAqIGRm
Zy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tJbnNl
cnRpb25TZXQ6Omluc2VydCk6CisgICAgICAgIFRha2UgUmVmPD4mJiBpbnN0ZWFkLgorCisgICAg
ICAgICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgor
ICAgICAgICBQYXNzIFJlZjw+JiYgdG8gYXBwZW5kQmxvY2suCisKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgIFBhc3MgUmVmPFBsYW4+JiYuIEFuZCB0YWtlIFJl
Zjw+JiYgY2FsbGJhY2suCisKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmg6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIGFwcGVuZEJsb2NrIHRha2VzIFJlZjw+JiYuCisKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YXBwZW5kQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpqaXRDb2RlKToKKyAgICAgICAgKiBkZmcvREZHSklURmluYWxpemVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcik6CisgICAgICAgIFRha2Ug
UmVmPEpJVENvZGU+JiYuCisKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAg
ICAgICBQYXNzIGNvbXBpbGF0aW9uIHJlZmVyZW5jZSBzaW5jZSB3ZSBhbHJlYWR5IHBlcmZvcm0g
bnVsbCBjaGVjay4KKworICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuaDoKKyAgICAgICAg
KiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgVGFrZSBSZWY8UGxhbj4mJi4KKworICAgICAgICAqIGRmZy9ERkdXb3Jr
bGlzdC5oOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgIERlcmVmZXJl
bmNlIGFuZCBwYXNzIGppdENvZGUgJiBjb21waWxhdGlvbiByZWZlcmVuY2VzLgorCisgICAgICAg
ICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKToKKyAgICAgICAgUmV0dXJuIFJlZjw+IGluc3RlYWQuCisKKyAgICAgICAg
KiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0
dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjps
aW5rKToKKyAgICAgICAgUGFzcyBjb21waWxhdGlvbiByZWZlcmVuY2Ugc2luY2Ugd2UgYWxyZWFk
eSBwZXJmb3JtIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFzQ29kZVB0cik6CisgICAgICAgIFRha2Ug
UmVmPD4mJiBpbnN0ZWFkLiBBbmQgdGhpcyBkcm9wcyB1bm5lY2Vzc2FyeSBudWxsIGNoZWNrLgor
CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgIFBhc3MgUmVmPD4gdG8gTmF0aXZlRXhlY3V0YWJs
ZTo6Y3JlYXRlLgorCisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpzZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFt
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludCk6CisgICAgICAgIFVzZSBSZWY8PiYmIGluc3RlYWQuCisKKyAgICAgICAgKiBwYXJzZXIv
U291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2RlKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6CisgICAgICAgIEFkZCBjb25z
dHJ1Y3RvcnMgdGFraW5nIFJlZjw+JiYuCisgICAgICAgIFdlIHN0aWxsIGhhdmUgY29uc3RydWN0
b3JzIHRoYXQgdGFrZSBSZWZQdHI8PiYmLgorICAgICAgICBXZSB3aWxsIGNoYW5nZSBpdCB0byBS
ZWY8U291cmNlUHJvdmlkZXI+JiYgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODMyNS4KKworICAgICAgICAqIHBhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRTb3VyY2VDb2RlOjpVbmxpbmtlZFNvdXJjZUNvZGUpOgor
ICAgICAgICBBZGQgY29uc3RydWN0b3JzIHRha2luZyBSZWY8PiYmLgorICAgICAgICBXZSBzdGls
bCBoYXZlIGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgUmVmUHRyPD4mJi4KKyAgICAgICAgV2Ugd2ls
bCBjaGFuZ2UgaXQgdG8gUmVmPFNvdXJjZVByb3ZpZGVyPiYmIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjUuCisKKyAgICAgICAgKiBwcm9maWxlci9Qcm9m
aWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjphZGRD
b21waWxhdGlvbik6CisgICAgICAgIFRha2UgUmVmPENvbXBpbGF0aW9uPiYmLgorCisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oOgorICAgICAgICBDaGFuZ2UgZGF0YSBzdHJ1
Y3R1cmVzIHRvIGhvbGQgUmVmPD4gaW5zdGVhZCBvZiBSZWZQdHI8Pi4KKworICAgICAgICAqIHJ1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Omdl
bmVyYXRlZEpJVENvZGUpOgorICAgICAgICBSZXR1cm4gUmVmPD4gaW5zdGVhZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZvcik6CisgICAgICAgIFJldHVybiBSZWY8PiBpbnN0
ZWFkLgorCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllcjo6YWRkKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkOCk6CisgICAg
ICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcik6CisgICAgICAgIEFuZCB0YWtlIFJlZjw+
IGluIHRoaXMgbWV0aG9kLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5wdXRDdXJzb3IpOgorICAgICAgICBDaGFu
Z2UgbV9pbnB1dEN1cnNvciBmcm9tIFJlZlB0cjw+IHRvIFJlZjw+LgorCisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUYWtlIFJlZjxQcm9wZXJ0eU5h
bWVBcnJheT4mJi4KKworICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OkpTU3RyaW5nKToKKyAg
ICAgICAgVGFrZSBSZWY8U3RyaW5nSW1wbD4mJiBzaW5jZSB3ZSBkbyBub3QgYWxsb3cgbnVsbHB0
ciBpbiB0aGlzIGNvbnN0cnVjdG9yLgorCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAg
IFRha2UgUmVmPFN0cmluZ0ltcGw+JiYgaW4gdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMuIEFuZCBk
cm9wIHVubmVjZXNzYXJ5IGFzc2VydGlvbnMuCisKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICBVc2UgU3RyaW5nSW1wbDo6Y3JlYXRlKCkgd2hpY2ggcmV0
dXJucyBSZWY8Pi4KKworICAgICAgICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOgorICAgICAg
ICBEZXJlZmVyZW5jZSBpbXBsKCkgc2luY2Ugd2UgZW5zdXJlIHRoYXQgYHMubGVuZ3RoKCkgPiAx
YC4KKworICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisgICAgICAgIFVzZSByZWxlYXNlTm9uTnVs
bCgpIHNpbmNlIHdlIGVuc3VyZSB0aGF0IGBzLmxlbmd0aCgpID4gMWAuCisKKyAgICAgICAgKEpT
Qzo6anNPd25lZFN0cmluZyk6CisgICAgICAgIFVzZSByZWxlYXNlTm9uTnVsbCgpIHNpbmNlIHdl
IGVuc3VyZSB0aGF0IGBzLmxlbmd0aCgpID4gMWAuCisKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUYWtlIFJl
ZjxKSVRDb2RlPiYmLgorCisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICBSZXR1cm4gUmVm
PEpJVENvZGU+LgorCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5hbWVBcnJheTo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgaXMg
bm90IHVzZWQuCisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cEtleS5oOgorICAgICAgICAoSlND
OjpSZWdFeHBLZXk6OlJlZ0V4cEtleSk6CisgICAgICAgIFRha2UgUmVmUHRyPD4mJi4KKworICAg
ICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJp
bmdzU3RvcmFnZTo6cmVwKToKKyAgICAgICAgUmV0dXJuIFN0cmluZ0ltcGwmIHNpbmNlIG1fcmVw
cyBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAo
SlNDOjpTbWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5U3RyaW5nKToKKyAgICAgICAgRGVyZWZlcmVu
Y2UgU3RyaW5nSW1wbDo6ZW1wdHkoKS4KKworICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OmNy
ZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyk6CisgICAgICAgIFVzZSBTdHJpbmdJbXBsJi4KKwor
ICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCk6Cisg
ICAgICAgIFJldHVybiBTdHJpbmdJbXBsJi4KKworICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6
OmluaXRpYWxpemUpOgorICAgICAgICBVc2UgQXRvbWljU3RyaW5nSW1wbDo6YWRkIGluc3RlYWQu
CisKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBl
KToKKyAgICAgICAgUmV0dXJuIFJlZjw+LgorCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKEpT
Qzo6VHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlvbik6CisgICAgICAgIFRha2UgUmVm
UHRyPFR5cGVTZXQ+JiYuCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmg6
CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICBQYXNzIFJl
Zjw+JiYuCisKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmll
cyk6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNl
dDo6YWRkVHlwZUluZm9ybWF0aW9uKToKKyAgICAgICAgVGFrZSBSZWZQdHI8PiYmIHNpbmNlIGl0
IGNhbiBiZSBudWxscHRyLgorICAgICAgICBBbmQgY2xlYW4gdXAgIm5vdCBmb3VuZCIgY29kZS4K
KworICAgICAgICAoSlNDOjpUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMpOgor
ICAgICAgICBVc2UgcmFuZ2UgYmFzZWQgaXRlcmF0aW9uLgorCisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNoYXBlOjpsZWFzdENvbW1vbkFuY2VzdG9yKToKKyAgICAgICAgV2UgZm91bmQgdGhhdCB0
aGlzIG1ldGhvZCBhY2NpZGVudGFsbHkgdGFrZXMgYGNvbnN0IFZlY3Rvcjw+YCBpbnN0ZWFkIG9m
IGBjb25zdCBWZWN0b3I8PiZgLgorICAgICAgICBBbmQgaW50ZXJuYWxseSwgd2UganVzdCB1c2Ug
cmF3IHBvaW50ZXJzIHNpbmNlIHRoZXNlIFN0cnVjdHVyZVNoYXBlcyBhcmUgb3duZWQgYnkgdGhl
IG1fcHJvdG8gdHJlZXMgd2hpY2ggc3RhcnRzIGZyb20gdGhlIGdpdmVuIFZlY3Rvcjw+LgorCisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpoYXNTYW1lUHJvdG90eXBlQ2hhaW4pOgorICAg
ICAgICBUYWtlIGNvbnN0IHJlZmVyZW5jZSBpbnN0ZWFkLiBBbmQgdXNlIHJhdyBwb2ludGVycyBp
bnRlcm5hbGx5LgorCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjptZXJnZSk6CisgICAg
ICAgIFRha2UgUmVmPD4mJi4KKworICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6c2V0UHJvdG8pOgorICAgICAgICBUYWtlIFJlZjw+JiYu
CisKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RG
dW5jdGlvbik6CisgICAgICAgIFBhc3MgUmVmPD4mJi4KKworICAgICAgICAoSlNDOjpWTTo6cXVl
dWVNaWNyb3Rhc2spOgorICAgICAgICBUYWtlIGFuZCBwYXNzIFJlZjw+JiYuCisKKyAgICAgICAg
KiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlF1ZXVlZFRhc2s6OlF1ZXVlZFRhc2spOgor
ICAgICAgICBUYWtlIFJlZjw+JiYuCisKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbk92ZXJyaWRl
cy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVPdmVycmlkZUluZm8pOgorICAgICAgICBX
ZSBuZWVkIHRoaXMgY2hhbmdlIGR1ZSB0byBSZWY8PiYmIGFuZCBSZWZQdHI8PiYmIGFtYmlndWl0
eSBvZiBTb3VyY2VDb2RlIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgT25jZSBTb3VyY2VDb2RlIGlz
IGZpeGVkIHRvIG9ubHkgdGFrZSBSZWY8PiYmLCB0aGlzIGNoYW5nZSBpcyB1bm5lY2Vzc2FyeS4K
KwogMjAxNy0wMi0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBhc3luY0Rpc2Fzc2VtYmx5IGNyYXNoZXMgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdkZjRk
ZTdmZjFlOWM2ODQzNzk5NWExZWEwNmFjODRkODlmYzMxNS4uYTgyYzc5MWQ5NGIzZjliNjA5OWFh
YzA2OWQxNzE1Yjc4ZDNjNmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAy
LTE0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIERyb3AgUGFzc1JlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4MzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgVXNl
IFJlZiBhbmQgcGFzcyBpdCB0byBTb3VyY2VDb2RlLgorICAgICAgICAqIHJlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OmZyYW1l
TmF2aWdhdGVkKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UuCisKIDIwMTctMDItMTMgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBVcGRh
dGUgdm9sdW1lIGFuZCBzY3J1YmJpbmcgc2xpZGVyIHRvIG1hdGNoIEhJIGRlc2lnbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAxMzc2OWRmM2NiY2Rk
OWFjMDQ3NDYzZjkxMmU0ZTI5OTExNjY2ZjcwLi5lN2RhZDE5YjAwY2M3ZWM5OTAyNjM0ZWFkZDU3
MjgwYzc5NWJmZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCkBAIC0xMzMsMTIgKzEzMywxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogewogICAg
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIFJlZlB0cjxWTT4gdm0gPSBncm91cCA/IFBh
c3NSZWZQdHI8Vk0+KHRvSlMoZ3JvdXApKSA6IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoKTsKKyAg
ICBSZWY8Vk0+IHZtID0gZ3JvdXAgPyBSZWY8Vk0+KCp0b0pTKGdyb3VwKSkgOiBWTTo6Y3JlYXRl
Q29udGV4dEdyb3VwKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLnB0cigpKTsKIAogICAgIGlmICghZ2xvYmFsT2JqZWN0
Q2xhc3MpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwg
anNOdWxsKCkpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGUodm0uZ2V0KCksIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0uZ2V0KCksIGpzTnVsbCgpKSk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgICAgIGlmIChKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KCkpCiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
dHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxD
b250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogICAg
ICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKSk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUoKnZtLCBnbG9i
YWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZSgqdm0sIDAsIGpzTnVsbCgpKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUodm0uZ2V0KCks
IGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLmdldCgpLCAwLCBqc051bGwoKSkpOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
Z2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShleGVjKTsKICAgICBpZiAoIXByb3RvdHlwZSkK
ICAgICAgICAgcHJvdG90eXBlID0ganNOdWxsKCk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5yZXNldFBy
b3RvdHlwZSgqdm0sIHByb3RvdHlwZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlw
ZSh2bS5nZXQoKSwgcHJvdG90eXBlKTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICBpZiAoSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCgpKQog
ICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IGYyYWQ5NDlkOTBh
MDY2NDY5NzI5N2YwZTg4NzFiMjRhZTc5ODlmNGQuLjc5MTczOGI5NWUwNTcyMjE4OTY2NmNmMTBm
NTg3ZWRlMzI0YzI1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
Y3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBPcGFx
dWVKU1NjcmlwdCA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFdURjo6UmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlKQorICAgIHN0YXRpYyBXVEY6OlJlZjxPcGFxdWVK
U1NjcmlwdD4gY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6OmFkb3B0UmVmKCpuZXcgT3BhcXVl
SlNTY3JpcHQodm0sIHNvdXJjZU9yaWdpbiwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJj
ZSkpOwogICAgIH0KQEAgLTk3LDcgKzk3LDcgQEAgSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVS
ZWZlcmVuY2luZ0ltbW9ydGFsQVNDSUlUZXh0KEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHQKICAg
ICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0sIFNvdXJjZU9yaWdpbiB7
IHNvdXJjZVVSTFN0cmluZyB9LCBzb3VyY2VVUkxTdHJpbmcsIHN0YXJ0aW5nTGluZU51bWJlciwg
U3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNvdXJjZSwgbGVuZ3RoKSkpOwog
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNl
Q29kZShyZXN1bHQpLCBlcnJvcikpIHsKKyAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VD
b2RlKHJlc3VsdC5jb3B5UmVmKCkpLCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2Fn
ZSkKICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGVy
cm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAoZXJyb3JMaW5lKQpAQCAtMTA1
LDcgKzEwNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRh
bEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQubGVha1JlZigpOworICAgIHJldHVybiAm
cmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3Ry
aW5nKEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQg
c3RhcnRpbmdMaW5lTnVtYmVyLCBKU1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJv
ck1lc3NhZ2UsIGludCogZXJyb3JMaW5lKQpAQCAtMTE5LDcgKzExOSw3IEBAIEpTU2NyaXB0UmVm
IEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAs
IEpTU3RyaW5nUmVmCiAgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZt
LCBTb3VyY2VPcmlnaW4geyBzb3VyY2VVUkxTdHJpbmcgfSwgc291cmNlVVJMU3RyaW5nLCBzdGFy
dGluZ0xpbmVOdW1iZXIsIHNvdXJjZS0+c3RyaW5nKCkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7Ci0gICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQpLCBlcnJvcikp
IHsKKyAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdC5jb3B5UmVmKCkp
LCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkKICAgICAgICAgICAgICplcnJv
ck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1Jl
ZigpOwogICAgICAgICBpZiAoZXJyb3JMaW5lKQpAQCAtMTI3LDcgKzEyNyw3IEBAIEpTU2NyaXB0
UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3Jv
dXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiByZXN1bHQubGVha1JlZigpOworICAgIHJldHVybiAmcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1NjcmlwdFJlZiBzY3JpcHQpCkBAIC0xNTIsNyArMTUy
LDcgQEAgSlNWYWx1ZVJlZiBKU1NjcmlwdEV2YWx1YXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1NjcmlwdFJlZiBzY3JpcHQsIEpTVmFsdWVSZWYKICAgICB9CiAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1
ZVJlZiA/IHRvSlMoZXhlYywgdGhpc1ZhbHVlUmVmKSA6IGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShleGVjLCBTb3VyY2VDb2RlKHNjcmlwdCksIHRoaXNWYWx1
ZSwgaW50ZXJuYWxFeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZXhl
YywgU291cmNlQ29kZSgqc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlvbik7CiAg
ICAgaWYgKGludGVybmFsRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgaW50ZXJuYWxFeGNlcHRpb24tPnZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFy
c2VUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNlVGVz
dC5jcHAKaW5kZXggMjc5N2MzYzhlYTVkMTVjMTgzYmVhMWUyZDRkMjU5MDEzMjc2MDY3YS4uMjIw
ZDdmMDc4NWU1YTBiNjZlMDY5MGIxNzQwYWRkMzRlMzU2YTQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwCkBAIC0zOCwyNyArMzgs
MjcgQEAgaW50IHRlc3RKU09OUGFyc2UoKQogewogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CiAK
LSAgICBSZWZQdHI8Vk0+IHZtID0gVk06OmNyZWF0ZSgpOworICAgIHsKKyAgICAgICAgUmVmPFZN
PiB2bSA9IFZNOjpjcmVhdGUoKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0uZ2V0KCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7
CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0uZ2V0KCkpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOwogCi0gICAgRXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB2MCA9
IEpTT05QYXJzZShleGVjLCAiIik7Ci0gICAgSlNWYWx1ZSB2MSA9IEpTT05QYXJzZShleGVjLCAi
IyQlXiIpOwotICAgIEpTVmFsdWUgdjIgPSBKU09OUGFyc2UoZXhlYywgU3RyaW5nKCkpOwotICAg
IFVDaGFyIGVtcHR5VUNoYXJBcnJheVsxXSA9IHsgJ1wwJyB9OwotICAgIEpTVmFsdWUgdjMgPSBK
U09OUGFyc2UoZXhlYywgU3RyaW5nKGVtcHR5VUNoYXJBcnJheSwgMCkpOwotICAgIEpTVmFsdWUg
djQ7Ci0gICAgSlNWYWx1ZSB2NSA9IEpTT05QYXJzZShleGVjLCAiMTIzIik7CisgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU1Zh
bHVlIHYwID0gSlNPTlBhcnNlKGV4ZWMsICIiKTsKKyAgICAgICAgSlNWYWx1ZSB2MSA9IEpTT05Q
YXJzZShleGVjLCAiIyQlXiIpOworICAgICAgICBKU1ZhbHVlIHYyID0gSlNPTlBhcnNlKGV4ZWMs
IFN0cmluZygpKTsKKyAgICAgICAgVUNoYXIgZW1wdHlVQ2hhckFycmF5WzFdID0geyAnXDAnIH07
CisgICAgICAgIEpTVmFsdWUgdjMgPSBKU09OUGFyc2UoZXhlYywgU3RyaW5nKGVtcHR5VUNoYXJB
cnJheSwgMCkpOworICAgICAgICBKU1ZhbHVlIHY0OworICAgICAgICBKU1ZhbHVlIHY1ID0gSlNP
TlBhcnNlKGV4ZWMsICIxMjMiKTsKIAotICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjAgIT0gdjEp
OwotICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjEgIT0gdjIpOwotICAgIGZhaWxlZCA9IGZhaWxl
ZCB8fCAodjIgIT0gdjMpOwotICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjMgIT0gdjQpOwotICAg
IGZhaWxlZCA9IGZhaWxlZCB8fCAodjQgPT0gdjUpOwotCi0gICAgdm0gPSBudWxscHRyOworICAg
ICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYwICE9IHYxKTsKKyAgICAgICAgZmFpbGVkID0gZmFp
bGVkIHx8ICh2MSAhPSB2Mik7CisgICAgICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjIgIT0gdjMp
OworICAgICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYzICE9IHY0KTsKKyAgICAgICAgZmFpbGVk
ID0gZmFpbGVkIHx8ICh2NCA9PSB2NSk7CisgICAgfQogCiAgICAgaWYgKGZhaWxlZCkKICAgICAg
ICAgcHJpbnRmKCJGQUlMOiBKU09OUGFyc2UgU3RyaW5nIHRlc3QuXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCmluZGV4IDkwMTA5NjdiOTk4
Mzc4YjViMjYwYmU1NGViYmVkYWFjZTdmMGQxYTcuLjU5MThjZjk5ZDRhODFmODRiOWUyNzA2ZjNj
ZDdiNTVmMTZhNmU0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBMaW5rQnVmZmVyOjpDb2RlUmVmIExpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgpCiAgICAgCiAgICAgQVNTRVJU
KG1fZGlkQWxsb2NhdGUpOwogICAgIGlmIChtX2V4ZWN1dGFibGVNZW1vcnkpCi0gICAgICAgIHJl
dHVybiBDb2RlUmVmKG1fZXhlY3V0YWJsZU1lbW9yeSk7CisgICAgICAgIHJldHVybiBDb2RlUmVm
KCptX2V4ZWN1dGFibGVNZW1vcnkpOwogICAgIAogICAgIHJldHVybiBDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKG1fY29kZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgKaW5kZXggYTcxYTQ4NmEwMmMyY2ZlMjVlOTZkYTQ0OTgyNzkwNGQ4ZGZiNzk3Zi4u
YzMxY2Y4NTI2MDBjYjBjODk2ZDk1MGYxYzRmYzkzN2EwZWU5MDFmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
CkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zNTQsOSArMzUzLDkgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHsKICAgICB7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmKFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gZXhlY3V0YWJsZU1lbW9yeSkK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoUmVmPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+JiYg
ZXhlY3V0YWJsZU1lbW9yeSkKICAgICAgICAgOiBtX2NvZGVQdHIoZXhlY3V0YWJsZU1lbW9yeS0+
c3RhcnQoKSkKLSAgICAgICAgLCBtX2V4ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZU1lbW9yeSkK
KyAgICAgICAgLCBtX2V4ZWN1dGFibGVNZW1vcnkoV1RGTW92ZShleGVjdXRhYmxlTWVtb3J5KSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2V4ZWN1dGFibGVNZW1vcnktPmlzTWFuYWdlZCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fZXhlY3V0YWJsZU1lbW9yeS0+c3RhcnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggMGE5MTAyMDEzODIw
NjBiYWIxZTIyZmQxMDVlZjZmNzIzYjFkNzllMC4uOTFkM2RkOGY3NWIxMjI4M2UwYWFkZDc4OGUw
Zjk2NzU5MGY2ZGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaApAQCAtMjA3LDEwICsyMDcsMTAgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVi
bGljIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIHZvaWQgc2V0RXhl
Y3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKEV4ZWN1dGFibGVCYXNlKik7CiAgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUoKTsKICAgICAKLSAgICB2b2lkIHNldFN0dWIoUGFzc1JlZlB0cjxQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gbmV3U3R1YikKKyAgICB2b2lkIHNldFN0dWIoUmVm
PFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAgICAgewogICAgICAgICBj
bGVhclN0dWIoKTsKLSAgICAgICAgbV9zdHViID0gbmV3U3R1YjsKKyAgICAgICAgbV9zdHViID0g
V1RGTW92ZShuZXdTdHViKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyU3R1YigpOwpAQCAtMjIw
LDkgKzIyMCw5IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIG1fc3R1Yi5nZXQoKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldFNsb3dTdHViKFBhc3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IG5ld1Ns
b3dTdHViKQorICAgIHZvaWQgc2V0U2xvd1N0dWIoUmVmPEpJVFN0dWJSb3V0aW5lPiYmIG5ld1Ns
b3dTdHViKQogICAgIHsKLSAgICAgICAgbV9zbG93U3R1YiA9IG5ld1Nsb3dTdHViOworICAgICAg
ICBtX3Nsb3dTdHViID0gV1RGTW92ZShuZXdTbG93U3R1Yik7CiAgICAgfQogCiAgICAgdm9pZCBj
bGVhclNsb3dTdHViKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWIyNmE2ZDY0YmRjZmQ3MGM4ZTQzNmVlOWJmOWE1OGU3MWI1ZGI0ZC4uMTZj
NTg3MTg2NDI0ZTI4NjFkMzczM2IxZjY3ZTIxNzlhZmY4NTBkYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE4ODksNyArMTg4OSw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywg
Q29kZUJsb2NrJiBvdGhlcikKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgSlNTY29wZSogc2NvcGUsIFBh
c3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VP
ZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBKU1Njb3BlKiBzY29w
ZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICA6IEpTQ2VsbCgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+dm0oKSwgdGhpcywgc2NvcGUtPmdsb2JhbE9iamVjdCgpKQogICAgICwgbV9udW1DYWxsZWVM
b2NhbHModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKQpAQCAtMTkxMiw3ICsx
OTEyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXQKICAgICAsIG1fdm0odW5saW5rZWRDb2Rl
QmxvY2stPnZtKCkpCiAgICAgLCBtX3RoaXNSZWdpc3Rlcih1bmxpbmtlZENvZGVCbG9jay0+dGhp
c1JlZ2lzdGVyKCkpCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKSkKLSAgICAsIG1fc291cmNlKHNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9z
b3VyY2UoV1RGTW92ZShzb3VyY2VQcm92aWRlcikpCiAgICAgLCBtX3NvdXJjZU9mZnNldChzb3Vy
Y2VPZmZzZXQpCiAgICAgLCBtX2ZpcnN0TGluZUNvbHVtbk9mZnNldChmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCiAgICAgLCBtX29zckV4aXRDb3VudGVyKDApCkBAIC0yMzA0LDcgKzIzMDQsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzdGQ6
OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gbG9jYXRpb25QYWlyID0gdm0udHlwZVByb2ZpbGVy
KCktPnR5cGVMb2NhdGlvbkNhY2hlKCktPmdldFR5cGVMb2NhdGlvbihnbG9iYWxWYXJpYWJsZUlE
LAotICAgICAgICAgICAgICAgIG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQsIGdsb2JhbFR5cGVTZXQsICZ2bSk7CisgICAgICAgICAgICAgICAgb3duZXJF
eGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgV1RGTW92ZShnbG9i
YWxUeXBlU2V0KSwgJnZtKTsKICAgICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBs
b2NhdGlvblBhaXIuZmlyc3Q7CiAgICAgICAgICAgICBib29sIGlzTmV3TG9jYXRpb24gPSBsb2Nh
dGlvblBhaXIuc2Vjb25kOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggMTE1OWJiMzk4YmFhM2FjMmYyMDhhN2VmNjZiOTViOTFkMjEyMDU5YS4uMTk0
MmVhMjFjNjNiMjUyOTlkOTZlMWU4ZGI4ZjU4N2U5NzE1NzMxNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKFZN
KiwgU3RydWN0dXJlKiwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKTsKLSAg
ICBDb2RlQmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwgSlNTY29wZSosIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+LCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCk7CisgICAgQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqLCBSZWZQdHI8U291
cmNlUHJvdmlkZXI+JiYsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwg
SlNTY29wZSopOwpAQCAtMzEyLDE1ICszMTIsMTUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgLy8gRXhhY3RseSBlcXVpdmFsZW50IHRvIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPm5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKGNvZGVCbG9jay0+c3BlY2lh
bGl6YXRpb25LaW5kKCkpCiAgICAgQ29kZUJsb2NrKiBuZXdSZXBsYWNlbWVudCgpOwogICAgIAot
ICAgIHZvaWQgc2V0SklUQ29kZShQYXNzUmVmUHRyPEpJVENvZGU+IGNvZGUpCisgICAgdm9pZCBz
ZXRKSVRDb2RlKFJlZjxKSVRDb2RlPiYmIGNvZGUpCiAgICAgewogICAgICAgICBBU1NFUlQoaGVh
cCgpLT5pc0RlZmVycmVkKCkpOwogICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5QWxs
b2NhdGVkKGNvZGUtPnNpemUoKSk7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gVGhpcyBpcyBwcm9i
YWJseSBub3QgbmVlZGVkIGJlY2F1c2UgdGhlIGxvY2sgd2lsbCBhbHNvIGRvIHNvbWV0aGluZyBz
aW1pbGFyLCBidXQgaXQncyBnb29kIHRvIGJlIHBhcmFub2lkLgotICAgICAgICBtX2ppdENvZGUg
PSBjb2RlOworICAgICAgICBtX2ppdENvZGUgPSBXVEZNb3ZlKGNvZGUpOwogICAgIH0KLSAgICBQ
YXNzUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KKyAgICBS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgaml0Q29kZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2Rl
QmxvY2ssIG1faml0Q29kZSk7IH0KICAgICBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUoKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9j
ay5oCmluZGV4IGU5ZTYxYmE2NGMxOGZhMzI0ZDhkNDZlOWQ0OWZiM2MzMTk4YjcxNzUuLmZkZTdi
MTE2NWZhYzRjOTE1NGUwY2U3OWQxNzUwNWUyOTdjMjYxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaApAQCAtNDcsMTAgKzQ3LDEwIEBAIGNs
YXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAKICAg
ICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRXZhbEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywK
LSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJj
ZVByb3ZpZGVyKQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZVByb3ZpZGVyKQogICAgIHsKICAgICAgICAgRXZhbENvZGVCbG9jayogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bS0+aGVhcCkp
Ci0gICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS0+ZXZhbENvZGVCbG9ja1N0cnVjdHVy
ZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJj
ZVByb3ZpZGVyKTsKKyAgICAgICAgICAgIEV2YWxDb2RlQmxvY2sodm0sIHZtLT5ldmFsQ29kZUJs
b2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBz
Y29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlcikpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oKnZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC03MCw4ICs3MCw4IEBAIGNsYXNz
IEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAgICAgICAg
IAogICAgIEV2YWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXZhbEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyKQotICAgICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3Ry
dWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgc291cmNl
UHJvdmlkZXIsIDAsIDEpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlUHJvdmlkZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBz
dHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZN
b3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgMSkKICAgICB7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAppbmRleCA1
YjQxOGIxNGNlODFjZTQwOGU5NTk2N2U4MDI3MWI3MGU3YmI4ZmY4Li40ZjU4ZDA5MTEwNGU5YzI2
YTFhMjE3MGU2ZmNiNjU5ZWQ5NDNlMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNz
IEZ1bmN0aW9uQ29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiAgICAgfQogCiAgICAgc3Rh
dGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssIEpTU2NvcGUqIHNjb3BlLAotICAgICAgICBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQ
cm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCiAgICAgewogICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvZGVCbG9jaz4odm0tPmhlYXApKQotICAg
ICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLT5mdW5jdGlvbkNvZGVCbG9ja1N0cnVj
dHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNv
dXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CisgICAg
ICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0tPmZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0
dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RG
TW92ZShzb3VyY2VQcm92aWRlciksIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxl
LCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAg
ICAgfQpAQCAtNjgsOCArNjgsOCBAQCBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBD
b2RlQmxvY2sgewogICAgIH0KIAogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUs
Ci0gICAgICAgIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAg
ICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNv
bHVtbk9mZnNldCkKKyAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3Zp
ZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNl
dCkKKyAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VP
ZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oCmluZGV4IDlh
YjIyMjZiMDU2NWQ2YjFiYjVmNzAxNGViM2U5Y2I0OTNkMWMwMmYuLmFhMjljY2EzMzI0MzU3M2My
NzAwZTI4Nzg2NmUxOWI5NTg0YTJiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2xvYmFsQ29kZUJsb2NrLmgKQEAgLTQ1LDggKzQ1LDggQEAgY2xhc3MgR2xvYmFs
Q29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIEdsb2Jh
bENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywg
SlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVy
LCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkK
LSAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxp
bmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICBHbG9iYWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWdu
ZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICAgICA6IENvZGVCbG9jayh2bSwgc3RydWN0
dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShz
b3VyY2VQcm92aWRlciksIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAg
IHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01vZHVsZVByb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKaW5kZXggYjNjM2IxMWUzYTQxZDFhNTQxMzcwNGY1
YWRmZDBiOTFjZGIyMmYzNy4uNjI2NzRlYTkyNTMxZmFmZWQ2NzZmYTZhMDg5N2IzZWUyZmYyMGNj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dy
YW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oCkBAIC00OCwxMCArNDgsMTAgQEAgY2xhc3MgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAgIHN0YXRp
YyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxT
b3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKKyAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAg
ICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCi0gICAgICAgICAg
ICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+bW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0
cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUs
IHNvdXJjZVByb3ZpZGVyLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPm1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZN
b3ZlKHNvdXJjZVByb3ZpZGVyKSwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKICAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVC
bG9jaywgc2NvcGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtNjgsOCAr
NjgsOCBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVC
bG9jayB7CiAgICAgfQogCiAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAg
ICAgICBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJv
dmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAgICAgOiBHbG9iYWxD
b2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAg
ICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlk
ZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2Rl
QmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywg
c2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQp
CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cm9ncmFtQ29kZUJsb2NrLmgKaW5kZXggOTRjN2E3YTNkZTlhZDVhYTA2ZmIwNGFjOGRmYjdiMzMx
NDVlNDc2Yy4uODUwNGFjNGEwNTFhMDdlMTFlM2EyNTg5NDU0MGViMGU0ZGE0NWE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCkBA
IC00OCwxMCArNDgsMTAgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxD
b2RlQmxvY2sgewogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUo
Vk0qIHZtLCBQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwg
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KQogICAgIHsKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCi0gICAgICAgICAg
ICBQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+cHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQo
KSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3Zp
ZGVyLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgUHJvZ3JhbUNvZGVCbG9j
ayh2bSwgdm0tPnByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgZmly
c3RMaW5lQ29sdW1uT2Zmc2V0KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtNjgsOCArNjgsOCBAQCBjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgfQogCiAgICAgUHJvZ3JhbUNv
ZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9ncmFtRXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4g
c291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAgICAg
OiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZz
ZXQpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBH
bG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCAwLCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKaW5kZXggM2IwNThiYWJmYjEzNzEzN2Y0
MDUzZTA4OTg1Yjk0MWY2MTFkYjIwMy4uNDhmOTM5ZjEwZmRhY2ExYzc3NTc0YjFiZDg4NjBiOGU3
MWYwN2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyUGFyc2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJQYXJzZURhdGEuY3BwCkBAIC0xNjcsOSArMTY3LDEwIEBAIGJvb2wgZ2F0aGVyRGVidWdn
ZXJQYXJzZURhdGEoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlYnVnZ2VyUGFy
c2VEYXRhCiAKIGJvb2wgZ2F0aGVyRGVidWdnZXJQYXJzZURhdGFGb3JTb3VyY2UoVk0mIHZtLCBT
b3VyY2VQcm92aWRlciogcHJvdmlkZXIsIERlYnVnZ2VyUGFyc2VEYXRhJiBkZWJ1Z2dlclBhcnNl
RGF0YSkKIHsKKyAgICBBU1NFUlQocHJvdmlkZXIpOwogICAgIGludCBzdGFydExpbmUgPSBwcm92
aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOwogICAgIGludCBzdGFy
dENvbHVtbiA9IHByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4ub25lQmFzZWRJbnQo
KTsKLSAgICBTb3VyY2VDb2RlIGNvbXBsZXRlU291cmNlKHByb3ZpZGVyLCBzdGFydExpbmUsIHN0
YXJ0Q29sdW1uKTsKKyAgICBTb3VyY2VDb2RlIGNvbXBsZXRlU291cmNlKCpwcm92aWRlciwgc3Rh
cnRMaW5lLCBzdGFydENvbHVtbik7CiAKICAgICBzd2l0Y2ggKHByb3ZpZGVyLT5zb3VyY2VUeXBl
KCkpIHsKICAgICBjYXNlIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKaW5k
ZXggZDU3YzAxYzcwMTUyM2FlZjZmYjFlZTU0MjllMGNhYjRkZmU0NWNjMS4uNGM5Mzk3NWM1MTZj
MjU3YWJhNWY0OTUxY2VkMTU3Y2EwNWNkMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKQEAgLTQ0LDIxICs0NCwyMiBAQCB2
b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoY29uc3QgQmxvY2tJbnNlcnRpb24mIGluc2Vy
dGlvbikKICAgICBtX2luc2VydGlvbnMuYXBwZW5kKGluc2VydGlvbik7CiB9CiAKLXZvaWQgQmxv
Y2tJbnNlcnRpb25TZXQ6Omluc2VydChzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QmFzaWNCbG9j
az4gYmxvY2spCit2b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoc2l6ZV90IGluZGV4LCBS
ZWY8QmFzaWNCbG9jaz4mJiBibG9jaykKIHsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5k
ZXgsIGJsb2NrKSk7CisgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJs
b2NrKSkpOwogfQogCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHNpemVf
dCBpbmRleCwgZmxvYXQgZXhlY3V0aW9uQ291bnQpCiB7Ci0gICAgUmVmUHRyPEJhc2ljQmxvY2s+
IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soCisgICAgUmVmPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKAogICAgICAgICBVSU5UX01BWCwKICAgICAg
ICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCks
CiAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpLAogICAgICAgICBleGVjdXRpb25Db3VudCkpOwogICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA9
IHRydWU7Ci0gICAgaW5zZXJ0KGluZGV4LCBibG9jayk7Ci0gICAgcmV0dXJuIGJsb2NrLmdldCgp
OworICAgIGF1dG8qIHJlc3VsdCA9IGJsb2NrLnB0cigpOworICAgIGluc2VydChpbmRleCwgV1RG
TW92ZShibG9jaykpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEJhc2ljQmxvY2sqIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBmbG9hdCBleGVj
dXRpb25Db3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxv
Y2tJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNl
cnRpb25TZXQuaAppbmRleCBlZWNjNDQ3OTliMmRhOWM5MDdhOWUwMGNkMzVlYjkwYjQ3NmVlNjlj
Li5iNWI2YTAwNWNjOGU2ODBhNDY3NDdjZWNlZjk2ZWRjNmViMGM1ZDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IHsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQo
KTsKICAgICAKICAgICB2b2lkIGluc2VydChjb25zdCBCbG9ja0luc2VydGlvbiYpOwotICAgIHZv
aWQgaW5zZXJ0KHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxCYXNpY0Jsb2NrPik7CisgICAgdm9p
ZCBpbnNlcnQoc2l6ZV90IGluZGV4LCBSZWY8QmFzaWNCbG9jaz4mJik7CiAgICAgQmFzaWNCbG9j
ayogaW5zZXJ0KHNpemVfdCBpbmRleCwgZmxvYXQgZXhlY3V0aW9uQ291bnQpOwogICAgIEJhc2lj
QmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGZsb2F0IGV4ZWN1dGlvbkNv
dW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCBlNTY1MWYyYjVjZGZlY2Y2MjgwNTNmYmYyYTAxZGRhYjIxZjAwNjA1Li43NjVj
M2I0ODhkYzIyNzQxMmI1MzEyYTA1MzVmZWI2YzEyN2Q2YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTYyOSw3ICsxNjI5LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
aW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICBBU1NFUlQobGFzdEJsb2NrLT50ZXJtaW5h
bCgpKTsKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUg
Y29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCi0gICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2Nr
ID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1f
bnVtTG9jYWxzLCAxKSk7CisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5l
dyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkp
OwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJucyB0byB0aGUgYmFzaWMgYmxvY2sgd2Un
cmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lU3Rh
Y2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7CkBAIC0xNjQwLDIyICsxNjQw
LDIyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
a1RvTGluay0+dGVybWluYWwoKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gSnVtcCk7
CiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7Ci0gICAgICAgIG5vZGUtPnRh
cmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKKyAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9
IGJsb2NrLnB0cigpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3Nb
aV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGlu
ayksICIgYXMgbGlua2VkIChqdW1wcyB0byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tUb0xp
bmstPmRpZExpbmsoKTsKICAgICB9CiAgICAgCi0gICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5n
ZXQoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLnB0cigpOwogICAgIEFTU0VSVChtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8
fCBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3Qo
KS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQpOwogICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5nZXQo
KSksICIgKG1hbnkgcmV0dXJucylcbiIpOworICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5r
ZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5wdHIoKSksICIgKG1hbnkgcmV0dXJucylcbiIp
OwogICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykg
ewotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5h
cHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwotICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7
CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFw
cGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CisgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsK
ICAgICB9Ci0gICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CisgICAgbV9ncmFwaC5hcHBl
bmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogfQog
CkBAIC0yMDAyLDkgKzIwMDIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZygKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0dXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7Ci0gICAgICAg
IFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRf
TUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBibG9jay5nZXQoKTsKLSAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7
CisgICAgICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9j
ayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gYmxvY2sucHRyKCk7CisgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2so
YmxvY2suY29weVJlZigpKTsKICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAg
ICAKICAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcp
OwpAQCAtMjAxNyw5ICsyMDE3LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcoCiAgICAgICAgIGlmICghaW5saW5pbmdSZXN1bHQpIHsKICAgICAgICAgICAgIC8vIFRoYXQg
ZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sgZGllLiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3Vs
ZCBoYXZlIGJlZW4gYWRkZWQgdG8KICAgICAgICAgICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBn
aXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCi0g
ICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gYmxvY2suZ2V0KCkpOwotICAgICAg
ICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpID09IGJsb2NrKTsKLSAgICAgICAg
ICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29udGVudHMoYmxvY2suZ2V0KCkpOworICAgICAg
ICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9PSBibG9jay5wdHIoKSk7CisgICAgICAg
ICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJsb2NrLnB0cigpKTsKICAgICAg
ICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxlZCBtZWFucyB3ZSBuZWVkIGEg
c2xvdyBwYXRoLgpAQCAtMjAzNCw3ICsyMDM0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgICAgICAgICBBU1NFUlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKICAg
ICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tpXS5leGVjdXRhYmxlKCk7
CiAgICAgICAgIH0KLSAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBo
LmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwgYmxvY2suZ2V0KCkpKTsKKyAgICAgICAgZGF0YS5jYXNl
cy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwgYmxvY2su
cHRyKCkpKTsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OwogICAgICAgICBt
X2V4aXRPSyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7IC8vIFRoaXMg
b25seSBjb21lcyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5vcm1hbCBpbmxpbmVk
IGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KQEAgLTIwNTIsMTcgKzIwNTIsMTcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICBkYXRhTG9n
KCJGaW5pc2hlZCBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1c1tpXSwgIiBhdCAiLCBjdXJyZW50
Q29kZU9yaWdpbigpLCAiLlxuIik7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxCYXNpY0Jsb2Nr
PiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCi0gICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRf
TUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBSZWY8QmFzaWNCbG9j
az4gc2xvd1BhdGhCbG9jayA9IGFkb3B0UmVmKAorICAgICAgICAqbmV3IEJhc2ljQmxvY2soVUlO
VF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwogICAgIG1fY3VycmVudElu
ZGV4ID0gb2xkT2Zmc2V0OwogICAgIG1fZXhpdE9LID0gdHJ1ZTsKLSAgICBkYXRhLmZhbGxUaHJv
dWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2suZ2V0KCkpOwotICAgIG1fZ3JhcGguYXBw
ZW5kQmxvY2soc2xvd1BhdGhCbG9jayk7CisgICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRh
cmdldChzbG93UGF0aEJsb2NrLnB0cigpKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQ
YXRoQmxvY2suY29weVJlZigpKTsKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygi
TWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxpbmtlZCAo
c2xvdyBwYXRoIGJsb2NrKVxuIik7CisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9p
bnRlcihzbG93UGF0aEJsb2NrLnB0cigpKSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylc
biIpOwogICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKICAgICBwcmVwYXJlVG9QYXJzZUJs
b2NrKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIG1f
Y3VycmVudEJsb2NrID0gc2xvd1BhdGhCbG9jay5wdHIoKTsKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCkBAIC0yMDg2LDE3ICsyMDg2LDE3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBjb250
aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAotICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01B
WCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7Ci0gICAgbV9ncmFwaC5hcHBlbmRC
bG9jayhjb250aW51YXRpb25CbG9jayk7CisgICAgUmVmPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlv
bkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgICpuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9u
dW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhj
b250aW51YXRpb25CbG9jay5jb3B5UmVmKCkpOwogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRpb25C
bG9jay5nZXQoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOwotICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxvY2su
Z2V0KCkpKTsKKyAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1Bv
aW50ZXIoY29udGludWF0aW9uQmxvY2sucHRyKCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2Nr
KGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpKSk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwot
ICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgbV9jdXJy
ZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5wdHIoKTsKICAgICAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0tOykKLSAgICAgICAgbGFuZGluZ0Jsb2Nr
c1tpXS0+dGVybWluYWwoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgp
OworICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT50ZXJtaW5hbCgpLT50YXJnZXRCbG9jaygpID0g
Y29udGludWF0aW9uQmxvY2sucHRyKCk7CiAgICAgCiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRP
ZmZzZXQ7CiAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNTgxNyw4ICs1ODE3LDggQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobV9jdXJyZW50SW5kZXgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgMSkpOwotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGJsb2NrLmdldCgpOworICAgICAgICAgICAgICAgICAgICBSZWY8QmFzaWNCbG9jaz4gYmxv
Y2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2sobV9jdXJyZW50SW5kZXgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgMSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGJsb2NrLnB0cigpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc2VydGlvbiBj
aGVja3MgdHdvIHRoaW5nczoKICAgICAgICAgICAgICAgICAgICAgLy8gMSkgSWYgdGhlIGJ5dGVj
b2RlQmVnaW4gaXMgZ3JlYXRlciB0aGFuIGN1cnJlbnRJbmRleCwgdGhlbiBzb21ldGhpbmcgaGFz
IGdvbmUKICAgICAgICAgICAgICAgICAgICAgLy8gICAgaG9ycmlibHkgd3JvbmcuIFNvLCB3ZSdy
ZSBwcm9iYWJseSBnZW5lcmF0aW5nIGluY29ycmVjdCBjb2RlLgpAQCAtNTgzMSwxMiArNTgzMSwx
MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RCZWdpbiwgbGFzdEJlZ2luID09IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudElu
ZGV4KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdl
dCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2Nr
LnB0cigpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgogICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBl
bmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1Bh
cnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKaW5kZXggMTRjZDBkMDE0MmRiMmI4YjNhODI0YmZj
NDZmOGNkOTBiZTE1NTYwOS4uNzkzNzdlN2Y5ZmFhODRjYjE3ZjMzZWQ1ODIzOTcwNjgwOTUyODk3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbERGR1doaXRlbGlzdCgp
CiBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgQ29tcGls
YXRpb25Nb2RlIG1vZGUsCiAgICAgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25z
dCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcywKLSAgICBQYXNzUmVmUHRyPERl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2spCisgICAgUmVmPERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIU9wdGlvbnM6OmJ5dGVj
b2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCkpCiAgICAgICAgIHx8ICFlbnN1cmVHbG9iYWxERkdXaGl0ZWxpc3QoKS5jb250YWlucyhj
b2RlQmxvY2spKQpAQCAtOTYsMTUgKzk2LDE1IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBj
b21waWxlSW1wbCgKICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHZtLnR5cGVQ
cm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlByZXBhcmluZyBm
b3IgREZHIGNvbXBpbGF0aW9uLiIpKTsKICAgICAKLSAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IGFk
b3B0UmVmKAotICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2Nr
LCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsKKyAgICBS
ZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAorICAgICAgICAqbmV3IFBsYW4oY29kZUJsb2NrLCBw
cm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFu
ZGxlVmFsdWVzKSk7CiAgICAgCi0gICAgcGxhbi0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBw
bGFuLT5jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmIChPcHRpb25zOjp1c2VD
b25jdXJyZW50SklUKCkpIHsKICAgICAgICAgV29ya2xpc3QmIHdvcmtsaXN0ID0gZW5zdXJlR2xv
YmFsV29ya2xpc3RGb3IobW9kZSk7CiAgICAgICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMo
bW9kZSkpCiAgICAgICAgICAgICBkYXRhTG9nKCJEZWZlcnJpbmcgREZHIGNvbXBpbGF0aW9uIG9m
ICIsICpjb2RlQmxvY2ssICIgd2l0aCBxdWV1ZSBsZW5ndGggIiwgd29ya2xpc3QucXVldWVMZW5n
dGgoKSwgIi5cbiIpOwotICAgICAgICB3b3JrbGlzdC5lbnF1ZXVlKHBsYW4pOworICAgICAgICB3
b3JrbGlzdC5lbnF1ZXVlKFdURk1vdmUocGxhbikpOwogICAgICAgICByZXR1cm4gQ29tcGlsYXRp
b25EZWZlcnJlZDsKICAgICB9CiAgICAgCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIENvbXBp
bGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCiBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgVk0mLCBDb2RlQmxvY2sqLCBD
b2RlQmxvY2sqLCBDb21waWxhdGlvbk1vZGUsIHVuc2lnbmVkLCBjb25zdCBPcGVyYW5kczxKU1Zh
bHVlPiYsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+KQorICAg
IFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYpCiB7CiAgICAgcmV0dXJuIENvbXBp
bGF0aW9uRmFpbGVkOwogfQpAQCAtMTIzLDEyICsxMjMsMTEgQEAgc3RhdGljIENvbXBpbGF0aW9u
UmVzdWx0IGNvbXBpbGVJbXBsKAogQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZSgKICAgICBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2Nr
LCBDb21waWxhdGlvbk1vZGUgbW9kZSwKICAgICB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxlVmFsdWVzLAotICAgIFBhc3NS
ZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBwYXNzZWRDYWxsYmFjaykKKyAgICBS
ZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0
cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7
CiAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gY29tcGlsZUltcGwoCiAgICAgICAgIHZt
LCBjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2Rl
SW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMsCi0gICAgICAgIGNhbGxiYWNrKTsKKyAgICAgICAgY2Fs
bGJhY2suY29weVJlZigpKTsKICAgICBpZiAocmVzdWx0ICE9IENvbXBpbGF0aW9uRGVmZXJyZWQp
CiAgICAgICAgIGNhbGxiYWNrLT5jb21waWxhdGlvbkRpZENvbXBsZXRlKGNvZGVCbG9jaywgcHJv
ZmlsZWRERkdDb2RlQmxvY2ssIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCmluZGV4IDFkNThkMWE4YTA5ZDg1YzNkMzMxZjRmNDE3
OWExZDAzNWRmNjMzOTQuLjFhMmQxOGNlOWU5YWM0N2MzYjRjYWUwMWY5ZDIyZDI3Y2FhNjE3YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaApAQCAtNDUsNiArNDUsNiBAQCBK
U19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBnZXROdW1Db21waWxhdGlvbnMoKTsKIENvbXBpbGF0
aW9uUmVzdWx0IGNvbXBpbGUoCiAgICAgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIHByb2Zp
bGVkREZHQ29kZUJsb2NrLCBDb21waWxhdGlvbk1vZGUsCiAgICAgdW5zaWduZWQgb3NyRW50cnlC
eXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcywK
LSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4pOworICAgIFJlZjxE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNmQ1MjQ2OTRkYjgyYzk3
YTBjMzYwYTcyYTVkZTNmOWYwYjBmMzI4Yi4uM2IzMjkyMDg3NDI4YzE3NGFiNTM5NjFiMTY3YjEy
OGQxMzFlMjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDQyLDEw
ICs0NDIsMTAgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAg
IEJhc2ljQmxvY2sqIGJsb2NrKEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QgeyByZXR1cm4g
bV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7IH0KICAgICBCYXNpY0Jsb2NrKiBsYXN0QmxvY2so
KSBjb25zdCB7IHJldHVybiBibG9jayhudW1CbG9ja3MoKSAtIDEpOyB9CiAKLSAgICB2b2lkIGFw
cGVuZEJsb2NrKFBhc3NSZWZQdHI8QmFzaWNCbG9jaz4gYmFzaWNCbG9jaykKKyAgICB2b2lkIGFw
cGVuZEJsb2NrKFJlZjxCYXNpY0Jsb2NrPiYmIGJhc2ljQmxvY2spCiAgICAgewogICAgICAgICBi
YXNpY0Jsb2NrLT5pbmRleCA9IG1fYmxvY2tzLnNpemUoKTsKLSAgICAgICAgbV9ibG9ja3MuYXBw
ZW5kKGJhc2ljQmxvY2spOworICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShiYXNpY0Js
b2NrKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQga2lsbEJsb2NrKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5k
ZXggMzUxM2I1Yjk1MjI3NzMwYzkzYzIxMDNlYzRmOWZkYzQ2YmU4ODE1Ny4uZGI1ZTUyNWZmZGFh
OTU3Y2RhZTBjNzdkZDk5MjhjMzEzYzY1YTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAgICAgCiAgICAg
bV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxp
bmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKCkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlRnVuY3Rpb24oKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKIAogICAgIG1fZ3JhcGgubV9w
bGFuLmZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwg
d2l0aEFyaXR5Q2hlY2spOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKIH0KIAog
dm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAppbmRleCA1Mzkx
MTU4YzVlYjViMDU1ODIzMzMyN2Y3NTY3NTk1Nzc2N2Y3ZDk0Li42YjY1ZWNjNzcyNDllY2E5ZWFk
OWIxOTZiZjczNjRiOTU2NThlYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwg
UGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4g
bGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmlu
YWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUmVmPEpJVENvZGU+JiYgaml0Q29kZSwg
c3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciB3aXRoQXJpdHlDaGVjaykKICAgICA6IEZpbmFsaXplcihwbGFuKQotICAgICwgbV9qaXRD
b2RlKGppdENvZGUpCisgICAgLCBtX2ppdENvZGUoV1RGTW92ZShqaXRDb2RlKSkKICAgICAsIG1f
bGlua0J1ZmZlcihXVEZNb3ZlKGxpbmtCdWZmZXIpKQogICAgICwgbV93aXRoQXJpdHlDaGVjayh3
aXRoQXJpdHlDaGVjaykKIHsKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplKCkKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcg
SklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5j
b2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSk7CiAgICAgCi0gICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSht
X2ppdENvZGUpOworICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNv
cHlSZWYoKSk7CiAgICAgCiAgICAgZmluYWxpemVDb21tb24oKTsKICAgICAKQEAgLTczLDcgKzcz
LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgIG1faml0Q29k
ZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCiAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtC
dWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklU
VHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKICAgICAg
ICAgbV93aXRoQXJpdHlDaGVjayk7Ci0gICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSht
X2ppdENvZGUpOworICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNv
cHlSZWYoKSk7CiAgICAgCiAgICAgZmluYWxpemVDb21tb24oKTsKICAgICAKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKCkKICNlbmRpZiAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0aW9uKQotICAgICAgICBt
X3BsYW4udm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9wbGFuLmNv
ZGVCbG9jaywgbV9wbGFuLmNvbXBpbGF0aW9uKTsKKyAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5
dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssICptX3BsYW4u
Y29tcGlsYXRpb24pOwogICAgIAogICAgIGlmICghbV9wbGFuLndpbGxUcnlUb1RpZXJVcCkKICAg
ICAgICAgbV9wbGFuLmNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENv
bXBpbGF0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklURmluYWxpemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFs
aXplci5oCmluZGV4IDFiMjFmOGM4NWMwOWJjYTg5MjBiY2E0MGY5NTkwOWJhODIzYjc5ZWIuLmIx
YTJiYzAzNGViYTlmZmZlMTRiMDcxZTBiNzJjNmQ1NjI3NjFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVEZpbmFsaXplciA6IHB1YmxpYyBG
aW5hbGl6ZXIgewogcHVibGljOgotICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxK
SVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpFbXB0eVZhbHVlKSk7CisgICAgSklURmluYWxpemVyKFBsYW4mLCBSZWY8SklUQ29k
ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpFbXB0eVZhbHVlKSk7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAgICAgCiAg
ICAgc2l6ZV90IGNvZGVTaXplKCkgb3ZlcnJpZGU7CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEpJ
VEZpbmFsaXplciA6IHB1YmxpYyBGaW5hbGl6ZXIgewogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFs
aXplQ29tbW9uKCk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsKKyAgICBS
ZWY8SklUQ29kZT4gbV9qaXRDb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBt
X2xpbmtCdWZmZXI7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCAxMTRj
YTk1NzE0NGRiNTI4MDhjZTg1M2QzMWY3NjViZDIyZmNhYmViLi5hZjNiNjNlMDgyZGU4YjY5Mjk2
Nzc0NzNiMzZkZWViYzM5M2FmYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dv
cmtsaXN0LmNwcApAQCAtMjIzLDE3ICsyMjMsMTYgQEAgYm9vbCBXb3JrbGlzdDo6aXNBY3RpdmVG
b3JWTShWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdvcmtsaXN0
OjplbnF1ZXVlKFBhc3NSZWZQdHI8UGxhbj4gcGFzc2VkUGxhbikKK3ZvaWQgV29ya2xpc3Q6OmVu
cXVldWUoUmVmPFBsYW4+JiYgcGxhbikKIHsKLSAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IHBhc3Nl
ZFBsYW47CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIsIFdURjo6
ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRvIG9wdGlt
aXplICIsIHBsYW4tPmtleSgpLCAiXG4iKTsKICAgICB9CiAgICAgQVNTRVJUKG1fcGxhbnMuZmlu
ZChwbGFuLT5rZXkoKSkgPT0gbV9wbGFucy5lbmQoKSk7Ci0gICAgbV9wbGFucy5hZGQocGxhbi0+
a2V5KCksIHBsYW4pOwotICAgIG1fcXVldWUuYXBwZW5kKHBsYW4pOworICAgIG1fcGxhbnMuYWRk
KHBsYW4tPmtleSgpLCBwbGFuLmNvcHlSZWYoKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92
ZShwbGFuKSk7CiAgICAgbV9wbGFuRW5xdWV1ZWQtPm5vdGlmeU9uZShsb2NrZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgKaW5kZXggMzY2MWU2ZWU4M2QzNTQ3
N2Y3YmFmODc0OGE3MjQ0NTg2YTAzOTBhNS4uMjhkOWFiZjRhMzhhMDNhZGZhYTMxZWZhYzJkMzQ2
MWU0YjcwMjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3Jr
bGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBXb3JrbGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsaXN0
PiB7CiAgICAgCiAgICAgc3RhdGljIFJlZjxXb3JrbGlzdD4gY3JlYXRlKENTdHJpbmcgd29ya2xp
c3ROYW1lLCB1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5ID0g
MCk7CiAgICAgCi0gICAgdm9pZCBlbnF1ZXVlKFBhc3NSZWZQdHI8UGxhbj4pOworICAgIHZvaWQg
ZW5xdWV1ZShSZWY8UGxhbj4mJik7CiAgICAgCiAgICAgLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRv
OgogICAgIC8vIHdvcmtsaXN0LT53YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJlUmVhZHkodm0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCmluZGV4IGRj
ZjNkYWQxZDAyN2Q3MGNmNTE0ZDJkODczZjhlYzVkMDY0NTA1ZDMuLjAwZWE2NTFlMWUyYmRjZGNm
Njg1M2ZjZTkyMzFmNTcyNDBmNWQ3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVEZpbmFsaXplci5jcHAKQEAgLTgxLDEwICs4MSwxMCBAQCBib29sIEpJVEZpbmFsaXpl
cjo6ZmluYWxpemVGdW5jdGlvbigpCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRy
eXBvaW50TGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9y
ICVzIHdpdGggQjMgZ2VuZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5j
dGlvbikpKTsKICAgICAKLSAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUp
OworICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUoKmppdENvZGUpOwogCiAgICAgaWYg
KG1fcGxhbi5jb21waWxhdGlvbikKLSAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlv
bik7CisgICAgICAgIG1fcGxhbi52bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxh
dGlvbihtX3BsYW4uY29kZUJsb2NrLCAqbV9wbGFuLmNvbXBpbGF0aW9uKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCAzMWEyYWUxNWMxNzA4Y2E4ZDU1OTMyZjY4OTA5MzVk
MDYwZTY0MDJmLi5iYWI2ZGUxM2IyOGE3MzlkYTA2ZmU1YmY5NDJiMDA3ZDlmZTA5MGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
Y3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhj
ZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB9CiAKIAotUGFzc1JlZlB0cjxK
SVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCitSZWY8SklUU3R1YlJvdXRpbmU+
IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYg
Y29kZSwKICAgICBWTSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKQEAgLTE0MiwxNyAr
MTQyLDE3IEBAIFBhc3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5l
KAogICAgIENhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCiB7CiAg
ICAgaWYgKCFtYWtlc0NhbGxzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpJVFN0dWJS
b3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRp
bmUoY29kZSkpOwogICAgIAogICAgIGlmIChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJs
b2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMtPmppdFR5cGUoKSkpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUs
IHZtLCBvd25lciwgY2VsbHMsIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRp
b25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIs
IGNlbGxzLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNh
bGxTaXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwg
dm0pKTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IGEyNTNkYTM1YTY5YTc5YjYzZDI1M2M4
ZWExNDg4ZWYwMjFmYWM1NTkuLjVlZTM2Y2E0NjBkMTA3YTQzZTRhODg2ODgxOWUzMDhlM2E0NThl
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvCiAvLyBh
cHByb3ByaWF0ZS4gR2VuZXJhbGx5IHlvdSBvbmx5IG5lZWQgdG8gcGFzcyBwb2ludGVycyB0aGF0
IHdpbGwgYmUgdXNlZAogLy8gYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgdG8gQysrIG9yIEpTLgogLy8g
Ci0vLyBQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKKy8v
IFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUsCiAvLyAgICBWTSYgdm0sCiAvLyAgICBjb25zdCBK
U0NlbGwqIG93bmVyLApAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
CiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQgdXAgd2l0aCBtb3JlIGNv
ZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1QYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGVKSVRTdHViUm91dGluZSgKK1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1
YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiA9IHsgfSwgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycyA9
IG51bGxwdHIsIENhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4ID0g
Q2FsbFNpdGVJbmRleChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2MmMwNDM2OTg5YzkwNjI3NGYwZGMzOWQzM2Zh
ZjMwNWVmNmZlODdkLi5lNzQyMTliNjJiNDU4ZGU5MzEyMGM5YzVkOTVkY2M1NTE1MDU2ZTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC04MjksNyArODI5LDcgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBpZiAobV9jb21waWxhdGlvbikgewogICAgICAgICBp
ZiAoT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpCiAgICAgICAgICAg
ICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLmdldCgpLCBw
YXRjaEJ1ZmZlcik7Ci0gICAgICAgIG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+YWRkQ29t
cGlsYXRpb24obV9jb2RlQmxvY2ssIG1fY29tcGlsYXRpb24pOworICAgICAgICBtX3ZtLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCAqbV9jb21waWxh
dGlvbik7CiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1
aWxkTWFwcGluZygpKQpAQCAtODQ1LDcgKzg0NSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6
bGluaygpCiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hy
aW5rKTsKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVK
SVQpKSk7CisgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShyZXN1bHQsIHdpdGhB
cml0eUNoZWNrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpKTsKIAogI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRSkKICAgICBkYXRhTG9nRigiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVw
KS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCBy
ZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggMzA0NzIxMmQ0ZWM0ZTE4YWMzMWY4YThhMTQ0Mzkx
MTQyOTkwMGEyNy4uZWJmZTJlZjI0MThlYzJkODY0NmZiNWM0NzJlYjc4YWFmNmY1NjgyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtNzAsMTEgKzcw
LDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIC8vIHRoZSBjaHVybi4KICAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0K
ICAgICAKLSAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzQ29kZVB0cihQYXNzUmVm
UHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSkKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGFzQ29kZVB0cihSZWY8SklUU3R1YlJvdXRpbmU+JiYgc3R1YlJvdXRpbmUpCiAg
ICAgewotICAgICAgICBpZiAoIXN0dWJSb3V0aW5lKQotICAgICAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpOwotICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHJlc3VsdCA9IHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpOwogICAgICAgICBBU1NFUlQo
ISFyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuY3BwCmluZGV4IDYwYzNjYzdhN2UxYWQ4OTMzYzMyYWEyMGIxYTJhZWUwNDEz
MGIzNzEuLmRlNDhlNjJkZGFiOGVmYWY4YmUzMTgyODcxYmU4ZDcwOTliMTdjN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTEwOCw5ICsxMDgsOSBAQCBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTgogICAgIH0gZWxzZQogICAgICAgICBmb3JDYWxsID0gYWRvcHRS
ZWYobmV3IE5hdGl2ZUpJVENvZGUoSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbCh2bSwgZnVuY3Rp
b24pLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+
IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkp
LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmPEpJVENvZGU+IGZvckNvbnN0cnVj
dCA9IGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qodm0pKSwgSklUQ29kZTo6
SG9zdENhbGxUaHVuaykpOwogICAgIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwg
Zm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxl
OjpjcmVhdGUoKnZtLCBmb3JDYWxsLnJlbGVhc2VOb25OdWxsKCksIGZ1bmN0aW9uLCBXVEZNb3Zl
KGZvckNvbnN0cnVjdCksIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7
CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVu
Y3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVF
eGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IGY1
OTE4YjcyMTcwYWM1ZGU0N2MyYmVkMzYzNzk2NTMwZTAxOTU0MDEuLmY3ZDc2MWRjMWRhYzAzZmYx
M2EyODk5M2RmMzRjMzU5Y2U0YjA2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgc3RhdGljIHZvaWQg
c2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAg
aWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7
CiAgICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAg
ICAgICAgICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZigqbmV3
IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTU5LDEyICs1
OSwxMiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAg
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
TExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAg
YWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
TExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJ
VENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2sp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRFdmFs
RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtNzIsMTQgKzcyLDE0
IEBAIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAg
ICAgYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYo
Km5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5
cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTg3LDE0ICs4NywxNCBAQCBz
dGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAg
ICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFk
b3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxM
SW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldE1v
ZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0x
MDIsMTQgKzEwMiwxNCBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChW
TSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZt
LmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3Jh
bUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklU
Q29kZSh2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihu
ZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJl
ZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERp
cmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxp
bnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2
bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlQ29kZS5oCmluZGV4IDhmNGZkMzhiYWFiODA1YjJmMjA4YjNkOGViODYzZjNmNWM0Mzg1Zjgu
LjkwZjU0N2EyMDAyNDM0ZjAxMWUxNWQ5YzJiY2I3YTgwYTUxYjhhZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCkBAIC00MSwyMCArNDEsMjcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUoUGFz
c1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIpCi0gICAgICAgICAgICA6IFVubGlua2Vk
U291cmNlQ29kZShwcm92aWRlcikKKyAgICAgICAgU291cmNlQ29kZShSZWY8U291cmNlUHJvdmlk
ZXI+JiYgcHJvdmlkZXIpCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3Zl
KHByb3ZpZGVyKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IGZpcnN0TGluZSwgaW50IHN0
YXJ0Q29sdW1uKQotICAgICAgICAgICAgOiBVbmxpbmtlZFNvdXJjZUNvZGUocHJvdmlkZXIpCisg
ICAgICAgIFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgZmly
c3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29k
ZShXVEZNb3ZlKHByb3ZpZGVyKSkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQogICAgICAgICAg
ICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1h
eChzdGFydENvbHVtbiwgMSkpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3Vy
Y2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBlbmRPZmZzZXQsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikKLSAgICAg
ICAgICAgIDogVW5saW5rZWRTb3VyY2VDb2RlKHByb3ZpZGVyLCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQorICAgICAgICBTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRD
b2x1bW4pCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVy
KSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3Jk
aW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQorICAg
ICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChz
dGQ6Om1heChzdGFydENvbHVtbiwgMSkpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBTb3VyY2VDb2RlKFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCisg
ICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVyKSwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQogICAgICAgICAgICAg
LCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChz
dGFydENvbHVtbiwgMSkpKQogICAgICAgICB7CkBAIC04Nyw3ICs5NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5z
aWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQg
c3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBzdGFydENvbHVtbiArPSAxOyAvLyBDb252ZXJ0
IHRvIGJhc2UgMS4KLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUocHJvdmlkZXIoKSwgb3BlbkJy
YWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgICAgIHJl
dHVybiBTb3VyY2VDb2RlKFJlZlB0cjxTb3VyY2VQcm92aWRlcj4geyBwcm92aWRlcigpIH0sIG9w
ZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9VbmxpbmtlZFNvdXJjZUNvZGUuaAppbmRleCAyOWVjZjViMWUyMmY1N2YyMTY2ODI3YTVkYTY1
YWY2NTQ5YjVmZjM1Li5lNjhjZTg4MzgxOTZhZjg5ZDg3Mjk1NjhmODg1OGFmZTc5NWJhMDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2Rl
LmgKQEAgLTQ3LDE1ICs0NywyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlk
ZXI+IHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICAg
ICBVbmxpbmtlZFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyKQorICAg
ICAgICAgICAgOiBtX3Byb3ZpZGVyKFdURk1vdmUocHJvdmlkZXIpKQogICAgICAgICAgICAgLCBt
X3N0YXJ0T2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KG1fcHJvdmlkZXItPnNv
dXJjZSgpLmxlbmd0aCgpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBVbmxpbmtl
ZFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBzdGFy
dE9mZnNldCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRl
cikKKyAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92
aWRlciwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3By
b3ZpZGVyKFdURk1vdmUocHJvdmlkZXIpKQorICAgICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0
YXJ0T2Zmc2V0KQorICAgICAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFVubGlua2VkU291cmNlQ29kZShSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgcHJvdmlkZXIsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAg
ICAgICAgICAgIDogbV9wcm92aWRlcihXVEZNb3ZlKHByb3ZpZGVyKSkKICAgICAgICAgICAgICwg
bV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoZW5k
T2Zmc2V0KQogICAgICAgICB7CkBAIC05MSw2ICs5OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQgLSBtX3N0YXJ0T2Zm
c2V0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIGl0IFJlZjxT
b3VyY2VQcm92aWRpZXI+LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4MzI1CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92
aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7CiAgICAgICAgIGludCBtX2VuZE9mZnNl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFi
YXNlLmNwcAppbmRleCA4ZWQ5ZjE4NDVmM2U2YTU5N2Y2OTNlYmY1ZThmMmQ2NzQwZjA4MzIzLi4w
MWNlZmM0NDM4MTgyYzVjMGU1Mzg2MGJmODI1MTNlNmZlNThlM2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC04Niwx
NSArODYsMTMgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiAgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJsb2NrKTsKIH0KIAot
dm9pZCBEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFBhc3NS
ZWZQdHI8Q29tcGlsYXRpb24+IHBhc3NlZENvbXBpbGF0aW9uKQordm9pZCBEYXRhYmFzZTo6YWRk
Q29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlZjxDb21waWxhdGlvbj4mJiBjb21w
aWxhdGlvbikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKIAotICAgIFJlZlB0cjxDb21waWxhdGlvbj4gY29tcGls
YXRpb24gPSBwYXNzZWRDb21waWxhdGlvbjsKLSAgICAKLSAgICBtX2NvbXBpbGF0aW9ucy5hcHBl
bmQoY29tcGlsYXRpb24pOwotICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNvZGVCbG9jaywgY29t
cGlsYXRpb24pOworICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChjb21waWxhdGlvbi5jb3B5UmVm
KCkpOworICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNvZGVCbG9jaywgV1RGTW92ZShjb21waWxh
dGlvbikpOwogfQogCiBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFz
ZS5oCmluZGV4IDIwNmFhM2FiM2I1MzQxZDVmMDRhZDUxMDhlNmJiNmYwNjRkOTI5YjcuLmI5ZWYz
NmMwMzlmYjQyMWU5ZGZkZWRlMTZjZGU1MDI0MjA1OWEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaApAQCAtMzQsNyArMzQsNiBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTIsNyArNTEs
NyBAQCBjbGFzcyBEYXRhYmFzZSB7CiAgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29kZXNGb3Io
Q29kZUJsb2NrKik7CiAgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqKTsKICAg
ICAKLSAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFBhc3NSZWZQdHI8Q29tcGls
YXRpb24+KTsKKyAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFJlZjxDb21waWxh
dGlvbj4mJik7CiAgICAgCiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNj
cmlwdCBvYmplY3QgdGhhdCBpcyBzdWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb24uCiAg
ICAgLy8gTm90ZSB0aGF0IGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFuIEV4ZWNT
dGF0ZSogYXNzb2NpYXRlZCB3aXRoIGEgZ2xvYmFsCkBAIC04NSw4ICs4NCw4IEBAIGNsYXNzIERh
dGFiYXNlIHsKICAgICBWTSYgbV92bTsKICAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBt
X2J5dGVjb2RlczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNv
ZGVzTWFwOwotICAgIFZlY3RvcjxSZWZQdHI8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0aW9uczsK
LSAgICBIYXNoTWFwPENvZGVCbG9jayosIFJlZlB0cjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRp
b25NYXA7CisgICAgVmVjdG9yPFJlZjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25zOworICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgUmVmPENvbXBpbGF0aW9uPj4gbV9jb21waWxhdGlvbk1hcDsK
ICAgICBWZWN0b3I8RXZlbnQ+IG1fZXZlbnRzOwogICAgIGJvb2wgbV9zaG91bGRTYXZlQXRFeGl0
OwogICAgIENTdHJpbmcgbV9hdEV4aXRTYXZlRmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCBhNmJhYjY3NzQ3ZjRlOTI4MzIz
Y2U3NTVlMGQ1NzJlNzYyM2U0MTNlLi5jODcxZTVmMzZiYzczMGIwZGZkMmVhMzkwZWI1ZDI5OWMw
OTg0MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAg
ICAgfQogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICBS
ZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAppbmRleCA1ZDFlMGI0YjY0NGZjNjExOGYyZTc2YmMz
OTg4YjEzNDg2YzA4NzYwLi42MjgxNmE1OTRjZDMyNTU0OTQyZWYyOTI3OGJiMjNhYmU5MDFhZTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFz
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgK
QEAgLTEyNSwxOSArMTI1LDE5IEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdDsKIAogcHVibGljOgotICAg
IFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKQorICAgIFJlZjxK
SVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9qaXRDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIHJldHVybiBtX2ppdENvZGVGb3JDYWxsOworICAg
ICAgICByZXR1cm4gKm1faml0Q29kZUZvckNhbGw7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxK
SVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkKKyAgICBSZWY8SklUQ29kZT4g
Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9q
aXRDb2RlRm9yQ29uc3RydWN0KTsKLSAgICAgICAgcmV0dXJuIG1faml0Q29kZUZvckNvbnN0cnVj
dDsKKyAgICAgICAgcmV0dXJuICptX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgfQogICAgICAg
ICAKLSAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQorICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKICAgICB7CiAgICAgICAgIGlmIChraW5kID09
IENvZGVGb3JDYWxsKQogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4
IGIwYzVjM2U2NzJkMGEzMjk3ZTJkYTM2OTg4NDMwYzdhNjUwYjdkZmYuLjk5MjU2ZDY1ODkzNDkw
NmIyMjAxY2I1YmRlZWRlNTc3MjJlMjBlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTdHJpbmdJbXBsPiBJ
ZGVudGlmaWVyOjphZGQoVk0qIHZtLCBjb25zdCBjaGFyKiBjKQogICAgIEFTU0VSVChjKTsKICAg
ICBBU1NFUlQoY1swXSk7CiAgICAgaWYgKCFjWzFdKQotICAgICAgICByZXR1cm4gKnZtLT5zbWFs
bFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGNbMF0pOworICAgICAgICByZXR1cm4g
dm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoY1swXSk7CiAKICAgICBy
ZXR1cm4gKkF0b21pY1N0cmluZ0ltcGw6OmFkZChjKTsKIH0KQEAgLTU4LDcgKzU4LDcgQEAgUmVm
PFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50
IGxlbmd0aCkKICAgICAgICAgVUNoYXIgYyA9IHNbMF07CiAgICAgICAgIEFTU0VSVChjIDw9IDB4
ZmYpOwogICAgICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpKQotICAgICAg
ICAgICAgcmV0dXJuICp2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChj
KTsKKyAgICAgICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZ1JlcChjKTsKICAgICB9CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqU3Ry
aW5nSW1wbDo6ZW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaAppbmRleCAyNWUxNmFlMzQxN2Q2ZDAyNjlmZjRmNzM2MWRkOGEyNmYyNDNjODY2Li5hOTYz
YjQzMzA2MTdjYTUzMmYyMWM0ODMyZWRmNjgwODRhNDFiZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yMTgsNyArMjE4LDcgQEAgUmVmPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQqIHMsIGludCBsZW5ndGgpCiAg
ICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIFQgYyA9IHNbMF07CiAgICAgICAgIGlmIChj
YW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYykpCi0gICAgICAgICAgICByZXR1cm4gKnZtLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOworICAgICAgICAgICAgcmV0
dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOwogICAgIH0K
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGRkNzQ2M2M3M2E3YjEyY2VjNTdkNjliOTJhNWIwMjYxYzZmNDRiYzcuLjQxODg0MDZlOTM5
YjA4ODVkNDQ5ZGMzZjdkNmZlYTZjYTc3OWFhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNjIsMTggKzEzNjIsMTUgQEAg
Ym9vbCBKU0dsb2JhbE9iamVjdDo6cmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0CiB9CiAK
ICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vy
c29yKFBhc3NSZWZQdHI8SW5wdXRDdXJzb3I+IHBycEN1cnNvcikKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnNldElucHV0Q3Vyc29yKFJlZjxJbnB1dEN1cnNvcj4mJiBjdXJzb3IpCiB7Ci0gICAgbV9p
bnB1dEN1cnNvciA9IHBycEN1cnNvcjsKLSAgICBBU1NFUlQobV9pbnB1dEN1cnNvcik7Ci0KLSAg
ICBJbnB1dEN1cnNvciYgY3Vyc29yID0gaW5wdXRDdXJzb3IoKTsKKyAgICBtX2lucHV0Q3Vyc29y
ID0gV1RGTW92ZShjdXJzb3IpOwogICAgIC8vIFNhdmUgb3Igc2V0IHRoZSByYW5kb20gc2VlZC4g
VGhpcyBwZXJmb3JtZWQgaGVyZSByYXRoZXIgdGhhbiB0aGUgY29uc3RydWN0b3IKICAgICAvLyB0
byBhdm9pZCB0aHJlYWRpbmcgdGhlIGlucHV0IGN1cnNvciB0aHJvdWdoIGFsbCB0aGUgYWJzdHJh
Y3Rpb24gbGF5ZXJzLgotICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkKLSAgICAgICAgY3Vy
c29yLmFwcGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVkKCkpOwotICAg
IGVsc2UgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7Ci0gICAgICAgIGlmIChTZXRSYW5kb21T
ZWVkKiBpbnB1dCA9IGN1cnNvci5mZXRjaElucHV0PFNldFJhbmRvbVNlZWQ+KCkpCisgICAgaWYg
KG1faW5wdXRDdXJzb3ItPmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIG1faW5wdXRDdXJzb3ItPmFw
cGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVkKCkpOworICAgIGVsc2Ug
aWYgKG1faW5wdXRDdXJzb3IuaXNSZXBsYXlpbmcoKSkgeworICAgICAgICBpZiAoU2V0UmFuZG9t
U2VlZCogaW5wdXQgPSBtX2lucHV0Q3Vyc29yLT5mZXRjaElucHV0PFNldFJhbmRvbVNlZWQ+KCkp
CiAgICAgICAgICAgICBtX3dlYWtSYW5kb20uc2V0U2VlZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5wdXQtPnJhbmRvbVNlZWQoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGY5ZGU2NDFiNjNmYTgwMDhmOGJkZmMz
Y2M1NDY2NGQxNzc1M2RkZjAuLmE5MDk2Nzk2OTBlYTllNDExZTRhN2Q3ZmRkN2FkMjA2NWEwMTIx
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgog
I2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIAogc3RydWN0IE9wYXF1ZUpTQ2xhc3M7CiBzdHJ1Y3QgT3BhcXVlSlND
bGFzc0NvbnRleHREYXRhOwpAQCAtMzc5LDcgKzM3OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFZNJiBtX3ZtOwogCiAj
aWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgUmVmUHRyPElucHV0Q3Vyc29yPiBtX2lucHV0Q3Vy
c29yOworICAgIFJlZjxJbnB1dEN1cnNvcj4gbV9pbnB1dEN1cnNvcjsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC02MTcsOCArNjE2LDggQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3Q7CiAKICNpZiBF
TkFCTEUoV0VCX1JFUExBWSkKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldElucHV0Q3Vy
c29yKFBhc3NSZWZQdHI8SW5wdXRDdXJzb3I+KTsKLSAgICBJbnB1dEN1cnNvciYgaW5wdXRDdXJz
b3IoKSBjb25zdCB7IHJldHVybiAqbV9pbnB1dEN1cnNvcjsgfQorICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0SW5wdXRDdXJzb3IoUmVmPElucHV0Q3Vyc29yPiYmKTsKKyAgICBJbnB1dEN1
cnNvciYgaW5wdXRDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX2lucHV0Q3Vyc29yLmdldCgpOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5j
cHAKaW5kZXggZGZkOTY1MTQ0N2Q3MWI0MTQ4OTI4ZWYzMTg0MmJiMjdmNTA0YTBiMS4uZDVmNzA5
MTBkMjJiMGQ3ZWY2YzgwMjQ0OWM5YTE1NGZmMWYwZWRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3Bw
CkBAIC0zOCwxOCArMzgsMTggQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0pCiB7CiAgICAgaWYgKCF2bS5lbXB0eVByb3Bl
cnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpIHsKICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwotICAgICAgICB2bS5l
bXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IgPSBTdHJvbmc8SlNDZWxsPih2bSwgY3JlYXRlKHZt
LCAwLCAwLCAwLCBwcm9wZXJ0eU5hbWVzKSk7CisgICAgICAgIHZtLmVtcHR5UHJvcGVydHlOYW1l
RW51bWVyYXRvciA9IFN0cm9uZzxKU0NlbGw+KHZtLCBjcmVhdGUodm0sIDAsIDAsIDAsIFdURk1v
dmUocHJvcGVydHlOYW1lcykpKTsKICAgICB9CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqPih2bS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCkpOwog
fQogCi1KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGluZGV4ZWRMZW5n
dGgsIHVpbnQzMl90IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzKQorSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJf
dCBpbmRleGVkTGVuZ3RoLCB1aW50MzJfdCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBQcm9w
ZXJ0eU5hbWVBcnJheSYmIHByb3BlcnR5TmFtZXMpCiB7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0
dXJlSUQgPSBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmlkKCkgOiAwOwogICAgIHVpbnQzMl90IGlu
bGluZUNhcGFjaXR5ID0gc3RydWN0dXJlID8gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpIDog
MDsKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBuZXcgKE5vdE51
bGwsIAogICAgICAgICBhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPih2bS5o
ZWFwKSkgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBzdHJ1Y3R1cmVJRCwgaW5saW5lQ2Fw
YWNpdHkpOwotICAgIGVudW1lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBpbmRleGVkTGVuZ3Ro
LCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSk7CisgICAg
ZW51bWVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0sIGluZGV4ZWRMZW5ndGgsIG51bWJlclN0cnVj
dHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXMucmVsZWFzZURhdGEoKSk7CiAgICAgcmV0dXJu
IGVudW1lcmF0b3I7CiB9CiAKQEAgLTYwLDExICs2MCwxMCBAQCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZUlEIHN0cnVj
dHVyZQogewogfQogCi12b2lkIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCB1aW50MzJfdCBpbmRleGVkTGVuZ3RoLCB1aW50MzJfdCBlbmRTdHJ1Y3R1cmVQ
cm9wZXJ0eUluZGV4LCBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gaWRlbnRzKQor
dm9pZCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgdWlu
dDMyX3QgaW5kZXhlZExlbmd0aCwgdWludDMyX3QgZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCwg
UmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4mJiBpZGVudGlmaWVycykKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAKLSAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRh
PiBpZGVudGlmaWVycyA9IGlkZW50czsKICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3Bl
cnR5TmFtZVZlY3RvciYgdmVjdG9yID0gaWRlbnRpZmllcnMtPnByb3BlcnR5TmFtZVZlY3Rvcigp
OwogCiAgICAgbV9pbmRleGVkTGVuZ3RoID0gaW5kZXhlZExlbmd0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgK
aW5kZXggMzM1NjE0M2YzMTJjZWFjNjQwMDc3MTNiMTZjMjg0NzYzMjI0YjRlNC4uNWUxMjM1OTg1
YTI4OWM0NmJlZmRjODBjY2JkNzRlN2M5MDU0NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJik7Ci0gICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQz
Ml90LCBQcm9wZXJ0eU5hbWVBcnJheSYpOworICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVy
dHlOYW1lQXJyYXkmJik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwpAQCAtODUsNyArODUs
NyBAQCBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKIAogcHJpdmF0ZToKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBTdHJ1Y3R1
cmVJRCwgdWludDMyX3QpOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCB1aW50MzJfdCwg
dWludDMyX3QsIFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPik7CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIHVpbnQzMl90LCB1aW50MzJfdCwgUmVmUHRyPFByb3BlcnR5TmFt
ZUFycmF5RGF0YT4mJik7CiAKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPj4gbV9w
cm9wZXJ0eU5hbWVzOwogICAgIFN0cnVjdHVyZUlEIG1fY2FjaGVkU3RydWN0dXJlSUQ7CkBAIC0x
MzUsNyArMTM1LDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogcHJvcGVydHlO
YW1lRW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMKIAogICAgIG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGV4ZWMsIHN0cnVjdHVyZSk7CiAKLSAgICBlbnVtZXJhdG9yID0gSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgaW5kZXhlZExlbmd0aCwg
bnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgcHJvcGVydHlOYW1lcyk7CisgICAgZW51bWVyYXRv
ciA9IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGluZGV4
ZWRMZW5ndGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIFdURk1vdmUocHJvcGVydHlOYW1l
cykpOwogICAgIGVudW1lcmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKHZtLCBzdHJ1Y3R1
cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKTsKICAgICBpZiAoIWluZGV4ZWRMZW5ndGggJiYgc3Ry
dWN0dXJlLT5jYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSkKICAgICAgICAgc3RydWN0
dXJlLT5zZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtLCBlbnVtZXJhdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGJjYjU0MDVmZjU3MDUw
ZmQ2YzQzYmQzNmVlMGI1NzY0ZmMxZjM0NDQuLjNmYzY3N2RhNzYzZmQ1NmMwNDhmZWVkMTA0NTJj
ZTQ2Nzk1NGU5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApA
QCAtOTcsMTAgKzk3LDEwIEBAIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpOwogICAgIAogcHJpdmF0ZToKLSAgICBKU1N0cmluZyhWTSYgdm0sIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgSlNTdHJpbmcoVk0mIHZtLCBSZWY8U3RyaW5n
SW1wbD4mJiB2YWx1ZSkKICAgICAgICAgOiBKU0NlbGwodm0sIHZtLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkKICAgICAgICAgLCBtX2ZsYWdzKDApCi0gICAgICAgICwgbV92YWx1ZShSZWZQdHI8U3Ry
aW5nSW1wbD4odmFsdWUpKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCiAgICAg
ewogICAgIH0KIApAQCAtMTM2LDIwICsxMzYsMTggQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB9CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShW
TSYgdm0sIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgc3RhdGljIEpTU3RyaW5n
KiBjcmVhdGUoVk0mIHZtLCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgo
KTsKICAgICAgICAgc2l6ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAgICBKU1N0cmlu
ZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhl
YXApKSBKU1N0cmluZyh2bSwgdmFsdWUpOworICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmluZyh2
bSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZt
LCBsZW5ndGgsIGNvc3QpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KLSAgICBz
dGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3duZXIoVk0mIHZtLCBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHZhbHVlKQorICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25l
cihWTSYgdm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KHZhbHVlKTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAg
ICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3Ry
aW5nPih2bS5oZWFwKSkgSlNTdHJpbmcodm0sIHZhbHVlKTsKKyAgICAgICAgSlNTdHJpbmcqIG5l
d1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkg
SlNTdHJpbmcodm0sIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hD
cmVhdGlvbih2bSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CkBA
IC01MDYsMTkgKzUwNCwxOSBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJh
Y3RlclN0cmluZyhWTSogdm0sIFVDaGFyIGMpCiB7CiAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKQogICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoYyk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBTdHJpbmco
JmMsIDEpLmltcGwoKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBTdHJpbmdJ
bXBsOjpjcmVhdGUoJmMsIDEpKTsKIH0KIAogaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxT
dHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgQVNTRVJUKHMubGVuZ3RoKCkg
PiAxKTsKLSAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMuaW1wbCgpKTsKKyAgICBy
ZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sICpzLmltcGwoKSk7CiB9CiAKIGlubGluZSBKU1N0
cmluZyoganNOb250cml2aWFsU3RyaW5nKFZNKiB2bSwgU3RyaW5nJiYgcykKIHsKICAgICBBU1NF
UlQocy5sZW5ndGgoKSA+IDEpOwotICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgcy5y
ZWxlYXNlSW1wbCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMucmVsZWFz
ZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogQUxXQVlTX0lOTElORSBJZGVudGlmaWVy
IEpTU3RyaW5nOjp0b0lkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtNTcyLDcg
KzU3MCw3IEBAIGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcm
IHMpCiAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAg
ICB9Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CisgICAgcmV0
dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCAqcy5pbXBsKCkpOwogfQogCiBpbmxpbmUgSlNTdHJp
bmcqIGpzU3Vic3RyaW5nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC02MzQsNyArNjMyLDcgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQogICAgICAg
ICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4g
dm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CiAgICAgfQotICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIHMuaW1wbCgpKTsKKyAgICBy
ZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCAqcy5pbXBsKCkpOwogfQog
CiBpbmxpbmUgSlNSb3BlU3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoVk0qIHZtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmgKaW5kZXggMGM4MzRlMDVmMjc0Y2M2ZDRmN2NlZDY2ZjI4ZWJmMDU3MGJmYzU2Ny4uZjQyNGJh
ZGFlNTIwZjQzYWIyNGU2NGZiOWY3MzVjMWE3ZGQ5MDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC00
NCw3ICs0NCw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmdldCgpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklU
Q29kZSgpCisgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAppbmRleCBiN2Rh
ZDJhNDYyZGRkZmMyMjc2MmZkNWNkN2NmNmE0NjFjZGQxOGY2Li4wZjhkMDg0NDQ5ZTQ1Nzk3NjJh
YmY4NzE1YTQ5MDk3NGZlYTYxYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcApAQCAtNDAsMTEgKzQwLDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAi
TmF0aXZlRXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE5hdGl2ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2
ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RU
aHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05h
dGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0sIFJlZjxKSVRD
b2RlPiYmIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFJlZjxKSVRDb2RlPiYm
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAgICAgZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhl
YXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIGludHJpbnNp
Yywgc2lnbmF0dXJlKTsKLSAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwgY2FsbFRo
dW5rLCBjb25zdHJ1Y3RUaHVuaywgbmFtZSk7CisgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRp
b24odm0sIFdURk1vdmUoY2FsbFRodW5rKSwgV1RGTW92ZShjb25zdHJ1Y3RUaHVuayksIG5hbWUp
OwogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCkBAIC01OCwxMSArNTgsMTEgQEAgU3RydWN0
dXJlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiB9CiAKLXZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQ
YXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1
Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywgUmVmPEpJVENvZGU+
JiYgY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbCA9IGNhbGxUaHVuazsKLSAgICBt
X2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RUaHVuazsKKyAgICBtX2ppdENvZGVGb3JD
YWxsID0gV1RGTW92ZShjYWxsVGh1bmspOworICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IFdU
Rk1vdmUoY29uc3RydWN0VGh1bmspOwogICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
ayA9IG1faml0Q29kZUZvckNhbGwtPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KTsKICAg
ICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IG1faml0Q29kZUZvckNvbnN0
cnVjdC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNrQXJpdHkpOwogICAgIG1fbmFtZSA9IG5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgK
aW5kZXggZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYS4uYWE1NmNmNGRj
ZmQxNGViMmFhYmFjMzRhYzNlNTAyZWIwMjA3YWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICB0
eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OwogCi0gICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFBhc3NSZWZQdHI8
SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxK
SVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0mLCBSZWY8SklUQ29kZT4mJiBjYWxs
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RU
aHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKIApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmss
IFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVuaywg
UmVmPEpJVENvZGU+JiYgY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggODVlYzRiNWNh
NGIxYjdmNThlNjNhYWE5NTIzZmVjNjU3NzZjYWJkOC4uYjY3ZmU4MmI1MGEyNjUwM2ZhZWRlZWFm
NGZhYTkxZThkODNlNjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogCiAgICAgSlNPYmplY3Qq
IGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSopOwogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5l
cmF0ZWRKSVRDb2RlKCkKKyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRl
eCA4ZDFmMjg2MDhmZDQwMzRkZmU2ZmE1YzcwMjQ2MmNkMzRhYTQ1MzdhLi5hN2FmZTc4ZjZkZmMx
NjU3ZjQ3MDNhZmViNGI3MjA0NDE0MjZiMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTczLDkgKzczLDggQEAgY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXkgewogICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQg
aSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQogCi0gICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQ
dHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KICAgICBQ
cm9wZXJ0eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KLSAg
ICBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gcmVsZWFzZURhdGEoKSB7IHJldHVy
biBXVEZNb3ZlKG1fZGF0YSk7IH0KKyAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBy
ZWxlYXNlRGF0YSgpIHsgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQogCiAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGVzZSBmdW5jdGlvbnMuCiAgICAgYm9vbCBjYW5BZGRLbm93blVuaXF1ZUZvclN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuaXNF
bXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5oCmluZGV4
IGZkNWYzMGVkMWRmMDQ5ZjI0OTljOWEyZTNiYjJhNzdjMDM2YzczMjIuLjU3YTNmMzU5YmFhOTc1
ZjIzZDNiYjU3MTM0NTdjZWJhNTZjNGI4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cEtleS5oCkBAIC02Myw5ICs2Myw5IEBAIHN0cnVjdCBSZWdFeHBLZXkgewogICAg
IHsKICAgICB9CiAKLSAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxhZ3MsIGNvbnN0IFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcGF0dGVybikKKyAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxh
Z3MsIFJlZlB0cjxTdHJpbmdJbXBsPiYmIHBhdHRlcm4pCiAgICAgICAgIDogZmxhZ3NWYWx1ZShm
bGFncykKLSAgICAgICAgLCBwYXR0ZXJuKHBhdHRlcm4pCisgICAgICAgICwgcGF0dGVybihXVEZN
b3ZlKHBhdHRlcm4pKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCmluZGV4IGNhYzVkNjllY2UyNTU0NjE2NWViNDMzZmU5
ZWZlN2U2YTcyODM1NTkuLjYwZTIxYjZjZjQ2ZTEzZTQ2MjM1ODQ0OGZmMjhiN2RhOTE0MjJmY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApA
QCAtMzksOSArMzksOSBAQCBjbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlIHsKIHB1YmxpYzoKICAg
ICBTbWFsbFN0cmluZ3NTdG9yYWdlKCk7CiAKLSAgICBTdHJpbmdJbXBsKiByZXAodW5zaWduZWQg
Y2hhciBjaGFyYWN0ZXIpCisgICAgU3RyaW5nSW1wbCYgcmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFj
dGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmVwc1tjaGFyYWN0ZXJdLmdldCgpOworICAg
ICAgICByZXR1cm4gKm1fcmVwc1tjaGFyYWN0ZXJdLmdldCgpOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTExMCw3ICsxMTAsNyBAQCBTbWFsbFN0cmluZ3M6On5TbWFsbFN0cmluZ3MoKQogdm9pZCBT
bWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5U3RyaW5nKFZNKiB2bSkKIHsKICAgICBBU1NFUlQoIW1f
ZW1wdHlTdHJpbmcpOwotICAgIG1fZW1wdHlTdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3Ro
ZXJPd25lcigqdm0sIFN0cmluZ0ltcGw6OmVtcHR5KCkpOworICAgIG1fZW1wdHlTdHJpbmcgPSBK
U1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sICpTdHJpbmdJbXBsOjplbXB0eSgpKTsK
ICAgICBBU1NFUlQobV9uZWVkc1RvQmVWaXNpdGVkKTsKIH0KIApAQCAtMTE5LDExICsxMTksMTEg
QEAgdm9pZCBTbWFsbFN0cmluZ3M6OmNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhWTSogdm0s
IHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQogICAgIGlmICghbV9zdG9yYWdlKQogICAgICAgICBt
X3N0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNtYWxsU3RyaW5nc1N0b3JhZ2U+KCk7CiAgICAg
QVNTRVJUKCFtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXSk7Ci0gICAgbV9zaW5n
bGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0gPSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJP
d25lcigqdm0sIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4obV9zdG9yYWdlLT5yZXAoY2hhcmFjdGVy
KSkpOworICAgIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdID0gSlNTdHJpbmc6
OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCBtX3N0b3JhZ2UtPnJlcChjaGFyYWN0ZXIpKTsKICAg
ICBBU1NFUlQobV9uZWVkc1RvQmVWaXNpdGVkKTsKIH0KIAotU3RyaW5nSW1wbCogU21hbGxTdHJp
bmdzOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCitT
dHJpbmdJbXBsJiBTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25l
ZCBjaGFyIGNoYXJhY3RlcikKIHsKICAgICBpZiAoIW1fc3RvcmFnZSkKICAgICAgICAgbV9zdG9y
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTbWFsbFN0cmluZ3NTdG9yYWdlPigpOwpAQCAtMTMyLDcg
KzEzMiw3IEBAIFN0cmluZ0ltcGwqIFNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5n
UmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQogCiB2b2lkIFNtYWxsU3RyaW5nczo6aW5pdGlh
bGl6ZShWTSogdm0sIEpTU3RyaW5nKiYgc3RyaW5nLCBjb25zdCBjaGFyKiB2YWx1ZSkKIHsKLSAg
ICBzdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgdmFsdWUpLmltcGwoKSk7CisgICAgc3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIEF0
b21pY1N0cmluZ0ltcGw6OmFkZCh2YWx1ZSkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgQVNTRVJU
KG1fbmVlZHNUb0JlVmlzaXRlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmgKaW5kZXggMjYzYjQyN2EwN2I4NjgyZDIyMTNjMWU2MDAzNDIxMjUz
MTE1MDA4ZC4uZjMxYjVjZDY2ZmMyNmVjZDMwNGVlZjA5ZTIxMWZlZWI1MTk4OWY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTcxLDcgKzcx
LDcgQEAgY2xhc3MgU21hbGxTdHJpbmdzIHsKICAgICAgICAgcmV0dXJuIG1fc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nc1tjaGFyYWN0ZXJdOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFdU
Rjo6U3RyaW5nSW1wbCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hh
cmFjdGVyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZ0ltcGwmIHNpbmdsZUNo
YXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CiAKICAgICBKU1N0cmlu
ZyoqIHNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVybiAmbV9zaW5nbGVDaGFyYWN0ZXJT
dHJpbmdzWzBdOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCmluZGV4IDA3MmMzYmJlYWZjYmVlOWQ2MTRkMGM3ZDQ2NzNlOTk4ZDZlYzRjZmUuLjQ0NDg2
ZGIzYzUyNTE1NWM3NTA0YmJjYjBmMGNlZDczYzYwY2MwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTE0MywxMCArMTE0MywxMCBAQCBib29s
IFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TgogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFw
ZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCitSZWY8U3RydWN0
dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQogewot
ICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gYmFzZVNoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gY3VyU2hhcGUgPSBiYXNlU2hhcGU7
CisgICAgUmVmPFN0cnVjdHVyZVNoYXBlPiBiYXNlU2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBjdXJTaGFwZSA9IGJhc2VTaGFwZS5w
dHIoKTsKICAgICBTdHJ1Y3R1cmUqIGN1clN0cnVjdHVyZSA9IHRoaXM7CiAgICAgSlNWYWx1ZSBj
dXJWYWx1ZSA9IHZhbHVlOwogICAgIHdoaWxlIChjdXJTdHJ1Y3R1cmUpIHsKQEAgLTExNjgsNyAr
MTE2OCw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1
cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQogCiAgICAgICAgIGlmIChjdXJTdHJ1Y3R1cmUtPnN0b3Jl
ZFByb3RvdHlwZVN0cnVjdHVyZSgpKSB7CiAgICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3Ry
dWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwotICAgICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5l
d1NoYXBlLnB0cigpKTsKKyAgICAgICAgICAgIGN1clNoYXBlLT5zZXRQcm90byhuZXdTaGFwZS5j
b3B5UmVmKCkpOwogICAgICAgICAgICAgY3VyU2hhcGUgPSBXVEZNb3ZlKG5ld1NoYXBlKTsKICAg
ICAgICAgICAgIGN1clZhbHVlID0gY3VyU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKICAg
ICAgICAgfQpAQCAtMTE3Niw3ICsxMTc2LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4g
U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGN1clN0
cnVjdHVyZSA9IGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0dXJlKCk7CiAgICAg
fQogICAgIAotICAgIHJldHVybiBXVEZNb3ZlKGJhc2VTaGFwZSk7CisgICAgcmV0dXJuIGJhc2VT
aGFwZTsKIH0KIAogYm9vbCBTdHJ1Y3R1cmU6OmNhblVzZUZvckFsbG9jYXRpb25zT2YoU3RydWN0
dXJlKiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5k
ZXggYzE3YTM0MzZhYTFkN2M1YmEwMTg0Mjk2ZDE5OWFkMGViNDg3ZjJlNi4uYjBmNDNiNzAwMjgy
MjkwYzNhMjdjNGI3ZmViMWRjMWRhOGRlMDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJXZWFrLmgiCiAj
aW5jbHVkZSAiV3JpdGVCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxhdGlv
blRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNTkyLDcgKzU5MSw3IEBAIGNsYXNz
IFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICB3aWxsU3RvcmVWYWx1
ZVNsb3codm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZE9wdGltaXplLCBJbmZlcnJlZFR5
cGVUYWJsZTo6T2xkUHJvcGVydHkpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8U3RydWN0dXJl
U2hhcGU+IHRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSk7CisgICAgUmVmPFN0cnVjdHVyZVNoYXBl
PiB0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUpOwogICAgIAogICAgIC8vIERldGVybWluZXMgaWYg
dGhlIHR3byBzdHJ1Y3R1cmVzIG1hdGNoIGVub3VnaCB0aGF0IHRoaXMgb25lIGNvdWxkIGJlIHVz
ZWQgZm9yIGFsbG9jYXRpb25zCiAgICAgLy8gb2YgdGhlIG90aGVyIG9uZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAppbmRleCA0
YzgwNjlhOGMwZjE4M2M4Mzk1YjE0MGY5NTAwMTY3ZDUwOTU0MWQwLi5iMjViNDY2ZjY0MTZjYjA4
ZGRmNWY1YmNiYTBmMTgxZTNmZDk0YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1zdGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gVHlwZUxvY2F0
aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlvbihHbG9iYWxWYXJpYWJsZUlEIGdsb2JhbFZhcmlhYmxl
SUQsIGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBQYXNz
UmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5cGVTZXQsIFZNKiB2bSkKK3N0ZDo6cGFpcjxUeXBlTG9j
YXRpb24qLCBib29sPiBUeXBlTG9jYXRpb25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZh
cmlhYmxlSUQgZ2xvYmFsVmFyaWFibGVJRCwgaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBlbmQsIFJlZlB0cjxUeXBlU2V0PiYmIGdsb2JhbFR5cGVTZXQsIFZNKiB2
bSkKIHsKICAgICBMb2NhdGlvbktleSBrZXk7CiAgICAga2V5Lm1fZ2xvYmFsVmFyaWFibGVJRCA9
IGdsb2JhbFZhcmlhYmxlSUQ7CkBAIC00OCw3ICs0OCw3IEBAIHN0ZDo6cGFpcjxUeXBlTG9jYXRp
b24qLCBib29sPiBUeXBlTG9jYXRpb25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlh
YmxlCiAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0gc291cmNlSUQ7CiAgICAgICAgIGxv
Y2F0aW9uLT5tX2Rpdm90U3RhcnQgPSBzdGFydDsKICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RF
bmQgPSBlbmQ7Ci0gICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgPSBnbG9iYWxUeXBl
U2V0OworICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gV1RGTW92ZShnbG9iYWxU
eXBlU2V0KTsKIAogICAgICAgICBtX2xvY2F0aW9uTWFwW2tleV0gPSBsb2NhdGlvbjsKICAgICAg
ICAgaXNOZXdMb2NhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuaAppbmRleCA4ZTY1NDVkODIzNjY0ODU1NGM4NzBkMjkw
MzI5NjQ4YzhjOWFkMGFhLi4wMDhlZjczMjFkNWI0ZGY0Zjc1ZDRlMDg0N2E3M2ViZGYwMjgwM2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25D
YWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNh
Y2hlLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgVHlwZUxvY2F0aW9uQ2FjaGUgewogICAgICAg
ICB1bnNpZ25lZCBtX2VuZDsKICAgICB9OwogCi0gICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbios
IGJvb2w+IGdldFR5cGVMb2NhdGlvbihHbG9iYWxWYXJpYWJsZUlELCBpbnRwdHJfdCwgdW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUGFzc1JlZlB0cjxUeXBlU2V0PiwgVk0qKTsKKyAgICBz
dGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gZ2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlh
YmxlSUQsIGludHB0cl90LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBSZWZQdHI8VHlw
ZVNldD4mJiwgVk0qKTsKIHByaXZhdGU6ICAgICAKICAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVk
X21hcDxMb2NhdGlvbktleSwgVHlwZUxvY2F0aW9uKiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+
IExvY2F0aW9uTWFwOwogICAgIExvY2F0aW9uTWFwIG1fbG9jYXRpb25NYXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA2ZDk4
MzM1OGMyZDFlMjQ2MzI4Yzg2ZjNmN2ZkNDA5NjVkYjE3NWRjLi44NWM0OWQwNDZiYWZlYWM3YzJm
ZGVhMjE1MjU4ZDNjNDRlZmNkMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTgyLDggKzgyLDggQEAgdm9pZCBUeXBlUHJv
ZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAg
ICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gZW50cnktPmxvY2F0aW9uOwogICAgICAgICBsb2Nh
dGlvbi0+bV9sYXN0U2VlblR5cGUgPSB0eXBlOwogICAgICAgICBpZiAobG9jYXRpb24tPm1fZ2xv
YmFsVHlwZVNldCkKLSAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFkZFR5
cGVJbmZvcm1hdGlvbih0eXBlLCBzaGFwZSwgc3RydWN0dXJlKTsKLSAgICAgICAgbG9jYXRpb24t
Pm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5hZGRUeXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hZGRUeXBl
SW5mb3JtYXRpb24odHlwZSwgc2hhcGUuY29weVJlZigpLCBzdHJ1Y3R1cmUpOworICAgICAgICBs
b2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBlLCBX
VEZNb3ZlKHNoYXBlKSwgc3RydWN0dXJlKTsKIAogICAgICAgICBlbnRyeSsrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggMzFlYTdkZjM0ZmM0
MDRmOThlNWI2NGRhOWVmNDIzZTY2MzQ5NWMxNy4uZmI4MTEzODQ3Zjk3MzBhM2EzZmFlYmExMTJj
OGM5ZmZiZGVkNzY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5j
cHAKQEAgLTQxLDEyICs0MSwxMiBAQCBUeXBlU2V0OjpUeXBlU2V0KCkKIHsKIH0KIAotdm9pZCBU
eXBlU2V0OjphZGRUeXBlSW5mb3JtYXRpb24oUnVudGltZVR5cGUgdHlwZSwgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4gcHJwTmV3U2hhcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKSAKK3ZvaWQg
VHlwZVNldDo6YWRkVHlwZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBlIHR5cGUsIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4mJiBwYXNzZWROZXdTaGFwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0g
ICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBuZXdTaGFwZSA9IHBycE5ld1NoYXBlOwogICAgIG1f
c2VlblR5cGVzID0gbV9zZWVuVHlwZXMgfCB0eXBlOwogCi0gICAgaWYgKHN0cnVjdHVyZSAmJiBu
ZXdTaGFwZSAmJiAhcnVudGltZVR5cGVJc1ByaW1pdGl2ZSh0eXBlKSkgeworICAgIGlmIChzdHJ1
Y3R1cmUgJiYgcGFzc2VkTmV3U2hhcGUgJiYgIXJ1bnRpbWVUeXBlSXNQcmltaXRpdmUodHlwZSkp
IHsKKyAgICAgICAgUmVmPFN0cnVjdHVyZVNoYXBlPiBuZXdTaGFwZSA9IHBhc3NlZE5ld1NoYXBl
LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuY29udGFpbnMo
c3RydWN0dXJlKSkgewogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9sb2NrKTsKQEAgLTU2LDI2ICs1NiwyMiBAQCB2b2lkIFR5cGVTZXQ6
OmFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlwZSB0eXBlLCBQYXNzUmVmUHRyPFN0cnVjdHVy
ZVNoYXBlPiBwcgogICAgICAgICAgICAgLy8gLSBXZSBkb24ndCBoYXZlIHR3byBpbnN0YW5jZXMg
b2YgdGhlIHNhbWUgc2hhcGUuIChTYW1lIHNoYXBlcyBtYXkgaGF2ZSBkaWZmZXJlbnQgU3RydWN0
dXJlcykuCiAgICAgICAgICAgICAvLyAtIFdlIGRvbid0IGhhdmUgdHdvIHNoYXBlcyB0aGF0IHNo
YXJlIHRoZSBzYW1lIHByb3RvdHlwZSBjaGFpbi4gSWYgdGhlc2Ugc2hhcGVzIHNoYXJlIHRoZSBz
YW1lIAogICAgICAgICAgICAgLy8gICBwcm90b3R5cGUgY2hhaW4sIHRoZXkgd2lsbCBiZSBtZXJn
ZWQgaW50byBvbmUgc2hhcGUuCi0gICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAg
ICAgICAgICBTdHJpbmcgaGFzaCA9IG5ld1NoYXBlLT5wcm9wZXJ0eUhhc2goKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgc2VlblNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNlZW5TaGFwZS0+cHJvcGVydHlIYXNoKCkgPT0gaGFzaCkgewotICAgICAg
ICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAgaWYgKHNlZW5TaGFwZS0+aGFzU2Ft
ZVByb3RvdHlwZUNoYWluKG5ld1NoYXBlKSkgewotICAgICAgICAgICAgICAgICAgICBzZWVuU2hh
cGUgPSBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2Uoc2VlblNoYXBlLCBuZXdTaGFwZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgaWYgKHNlZW5TaGFwZS0+cHJvcGVydHlIYXNoKCkgPT0gaGFzaCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGlmIChzZWVuU2hhcGUt
Pmhhc1NhbWVQcm90b3R5cGVDaGFpbihuZXdTaGFwZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc2VlblNoYXBlID0gU3RydWN0dXJlU2hhcGU6Om1lcmdlKHNlZW5TaGFwZS5jb3B5UmVm
KCksIFdURk1vdmUobmV3U2hhcGUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFmb3VuZCkg
ewotICAgICAgICAgICAgICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpIDwgMTAwKQot
ICAgICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZUhpc3RvcnkuYXBwZW5kKG5ld1NoYXBlKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmICghbV9pc092ZXJmbG93bikKLSAgICAgICAgICAgICAg
ICAgICAgbV9pc092ZXJmbG93biA9IHRydWU7CisgICAgICAgICAgICBpZiAobV9zdHJ1Y3R1cmVI
aXN0b3J5LnNpemUoKSA8IDEwMCkgeworICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlSGlzdG9y
eS5hcHBlbmQoV1RGTW92ZShuZXdTaGFwZSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV9pc092ZXJmbG93bikKKyAgICAgICAgICAg
ICAgICBtX2lzT3ZlcmZsb3duID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIyMiw4
ICsyMTgsOCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpbwogewogICAgIGF1dG8gZGVzY3JpcHRp
b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpOyBpKyspCi0gICAgICAgIGRlc2Ny
aXB0aW9uLT5hZGRJdGVtKG1fc3RydWN0dXJlSGlzdG9yeS5hdChpKS0+aW5zcGVjdG9yUmVwcmVz
ZW50YXRpb24oKSk7CisgICAgZm9yIChhdXRvJiBzaGFwZSA6IG1fc3RydWN0dXJlSGlzdG9yeSkK
KyAgICAgICAgZGVzY3JpcHRpb24tPmFkZEl0ZW0oc2hhcGUtPmluc3BlY3RvclJlcHJlc2VudGF0
aW9uKCkpOwogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQpAQCAtMzY3LDMwICszNjMsMzAg
QEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgIHJldHVybiAqbV9w
cm9wZXJ0eUhhc2g7CiB9CiAKLVN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNl
c3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4gc2hhcGVzKQorU3RyaW5n
IFN0cnVjdHVyZVNoYXBlOjpsZWFzdENvbW1vbkFuY2VzdG9yKGNvbnN0IFZlY3RvcjxSZWY8U3Ry
dWN0dXJlU2hhcGU+PiYgc2hhcGVzKQogewotICAgIGlmICghc2hhcGVzLnNpemUoKSkKKyAgICBp
ZiAoc2hhcGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAg
ICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG9yaWdpbiA9IHNoYXBlcy5hdCgwKTsKKyAgICBTdHJ1
Y3R1cmVTaGFwZSogb3JpZ2luID0gc2hhcGVzWzBdLnB0cigpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAxOyBpIDwgc2hhcGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGJvb2wgZm91bmRMVUIgPSBm
YWxzZTsKICAgICAgICAgd2hpbGUgKCFmb3VuZExVQikgewotICAgICAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZVNoYXBlPiBjaGVjayA9IHNoYXBlcy5hdChpKTsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZVNoYXBlKiBjaGVjayA9IHNoYXBlc1tpXS5wdHIoKTsKICAgICAgICAgICAgIFN0cmluZyBjdXJD
dG9yTmFtZSA9IG9yaWdpbi0+bV9jb25zdHJ1Y3Rvck5hbWU7CiAgICAgICAgICAgICB3aGlsZSAo
Y2hlY2spIHsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2stPm1fY29uc3RydWN0b3JOYW1lID09
IGN1ckN0b3JOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kTFVCID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGNoZWNrID0gY2hlY2stPm1fcHJvdG87CisgICAgICAgICAgICAgICAgY2hlY2sgPSBjaGVj
ay0+bV9wcm90by5nZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghZm91bmRM
VUIpIHsKLSAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG87CiAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyB1bmxpa2VseSB0byBoYXBwZW4sIGJlY2F1c2Ugd2UgdXN1YWxs
eSBib3R0b20gb3V0IGF0ICJPYmplY3QiLCBidXQgdGhlcmUgYXJlIHNvbWUgc2V0cyBvZiBPYmpl
Y3RzCiAgICAgICAgICAgICAgICAgLy8gdGhhdCBtYXkgY2F1c2UgdGhpcyBiZWhhdmlvci4gV2Ug
ZmFsbCBiYWNrIHRvICJPYmplY3QiIGJlY2F1c2UgaXQncyBvdXIgdmVyc2lvbiBvZiBUb3AuCi0g
ICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4pCisgICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4t
Pm1fcHJvdG8pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk9iamVj
dCIpOworICAgICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpbi0+bV9wcm90by5nZXQoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC01MjksMjUgKzUyNSwyMyBAQCBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IFN0cnVjdHVyZVNo
YXBlOjppbnNwZWN0bwogICAgIHJldHVybiBiYXNlOwogfQogCi1ib29sIFN0cnVjdHVyZVNoYXBl
OjpoYXNTYW1lUHJvdG90eXBlQ2hhaW4oUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gcHJwT3Ro
ZXIpCitib29sIFN0cnVjdHVyZVNoYXBlOjpoYXNTYW1lUHJvdG90eXBlQ2hhaW4oY29uc3QgU3Ry
dWN0dXJlU2hhcGUmIG90aGVyUmVmKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2Vs
ZiA9IHRoaXM7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBvdGhlciA9IHBycE90aGVyOwor
ICAgIGNvbnN0IFN0cnVjdHVyZVNoYXBlKiBzZWxmID0gdGhpczsKKyAgICBjb25zdCBTdHJ1Y3R1
cmVTaGFwZSogb3RoZXIgPSAmb3RoZXJSZWY7CiAgICAgd2hpbGUgKHNlbGYgJiYgb3RoZXIpIHsK
ICAgICAgICAgaWYgKHNlbGYtPm1fY29uc3RydWN0b3JOYW1lICE9IG90aGVyLT5tX2NvbnN0cnVj
dG9yTmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc2VsZiA9IHNlbGYt
Pm1fcHJvdG87Ci0gICAgICAgIG90aGVyID0gb3RoZXItPm1fcHJvdG87CisgICAgICAgIHNlbGYg
PSBzZWxmLT5tX3Byb3RvLmdldCgpOworICAgICAgICBvdGhlciA9IG90aGVyLT5tX3Byb3RvLmdl
dCgpOwogICAgIH0KIAogICAgIHJldHVybiAhc2VsZiAmJiAhb3RoZXI7CiB9CiAKLVBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlPiBwcnBBLCBjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBw
cnBCKQorUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UoUmVmPFN0cnVj
dHVyZVNoYXBlPiYmIGEsIFJlZjxTdHJ1Y3R1cmVTaGFwZT4mJiBiKQogewotICAgIFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4gYSA9IHBycEE7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiID0g
cHJwQjsKLSAgICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIpKTsKKyAgICBBU1NF
UlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIuZ2V0KCkpKTsKIAogICAgIGF1dG8gbWVyZ2Vk
ID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBmaWVsZCA6IGEtPm1f
ZmllbGRzKSB7CkBAIC01NzQsMTIgKzU2OCwxMiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBl
PiBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UoY29uc3QgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZQog
CiAgICAgaWYgKGEtPm1fcHJvdG8pIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYi0+bV9wcm90
byk7Ci0gICAgICAgIG1lcmdlZC0+c2V0UHJvdG8oU3RydWN0dXJlU2hhcGU6Om1lcmdlKGEtPm1f
cHJvdG8sIGItPm1fcHJvdG8pKTsKKyAgICAgICAgbWVyZ2VkLT5zZXRQcm90byhTdHJ1Y3R1cmVT
aGFwZTo6bWVyZ2UoKmEtPm1fcHJvdG8sICpiLT5tX3Byb3RvKSk7CiAgICAgfQogCiAgICAgbWVy
Z2VkLT5tYXJrQXNGaW5hbCgpOwogCi0gICAgcmV0dXJuIFdURk1vdmUobWVyZ2VkKTsKKyAgICBy
ZXR1cm4gbWVyZ2VkOwogfQogCiB2b2lkIFN0cnVjdHVyZVNoYXBlOjplbnRlckRpY3Rpb25hcnlN
b2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAppbmRleCAyMmYxNzhk
M2VlZjZmMzY0MjkxZTgzNzdiMjhiMWRhMDcyZWY2YWZkLi4wYzM3MDAzYTc3MmNkMzc2YmM4MTA1
NjY0NjMxYTRmNjU0MjIxMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5oCkBAIC02MywxMyArNjMsMTMgQEAgY2xhc3MgU3RydWN0dXJlU2hhcGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdHJ1Y3R1cmVTaGFwZT4gewogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gaW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKTsK
ICAgICB2b2lkIHNldENvbnN0cnVjdG9yTmFtZShTdHJpbmcgbmFtZSkgeyBtX2NvbnN0cnVjdG9y
TmFtZSA9IChuYW1lLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IikgOiBuYW1lKTsg
fQogICAgIFN0cmluZyBjb25zdHJ1Y3Rvck5hbWUoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yTmFt
ZTsgfQotICAgIHZvaWQgc2V0UHJvdG8oUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUp
IHsgbV9wcm90byA9IHNoYXBlOyB9CisgICAgdm9pZCBzZXRQcm90byhSZWY8U3RydWN0dXJlU2hh
cGU+JiYgc2hhcGUpIHsgbV9wcm90byA9IFdURk1vdmUoc2hhcGUpOyB9CiAgICAgdm9pZCBlbnRl
ckRpY3Rpb25hcnlNb2RlKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFN0cmluZyBsZWFzdENv
bW1vbkFuY2VzdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+Pik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG1lcmdlKGNvbnN0IFBhc3NSZWZQdHI8
U3RydWN0dXJlU2hhcGU+LCBjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPik7Ci0gICAg
Ym9vbCBoYXNTYW1lUHJvdG90eXBlQ2hhaW4oUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4pOwor
ICAgIHN0YXRpYyBTdHJpbmcgbGVhc3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0b3I8UmVmPFN0
cnVjdHVyZVNoYXBlPj4mKTsKKyAgICBzdGF0aWMgUmVmPFN0cnVjdHVyZVNoYXBlPiBtZXJnZShS
ZWY8U3RydWN0dXJlU2hhcGU+JiYsIFJlZjxTdHJ1Y3R1cmVTaGFwZT4mJik7CisgICAgYm9vbCBo
YXNTYW1lUHJvdG90eXBlQ2hhaW4oY29uc3QgU3RydWN0dXJlU2hhcGUmKTsKIAogICAgIEhhc2hT
ZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fZmllbGRz
OwogICAgIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhh
c2g+IG1fb3B0aW9uYWxGaWVsZHM7CkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFR5cGVTZXQgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHlwZVNldD4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8VHlwZVNldD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBlU2V0KTsg
fQogICAgIFR5cGVTZXQoKTsKLSAgICB2b2lkIGFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlw
ZSwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4sIFN0cnVjdHVyZSopOworICAgIHZvaWQgYWRk
VHlwZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBlLCBSZWZQdHI8U3RydWN0dXJlU2hhcGU+JiYsIFN0
cnVjdHVyZSopOwogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKCk7CiAgICAgU3RyaW5nIGR1bXBU
eXBlcygpIGNvbnN0OwogICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0OwpAQCAtMTAzLDcg
KzEwMyw3IEBAIGNsYXNzIFR5cGVTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHlw
ZVNldD4gewogcHJpdmF0ZToKICAgICBib29sIG1faXNPdmVyZmxvd247CiAgICAgUnVudGltZVR5
cGVNYXNrIG1fc2VlblR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+PiBt
X3N0cnVjdHVyZUhpc3Rvcnk7CisgICAgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+IG1fc3Ry
dWN0dXJlSGlzdG9yeTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTc0YzMxMDJhYTMwNzU3MTlkZWY0
MDIyMGI2NWEzMzQ2NGQwYmE1Mi4uYzIyMzlmZGJlZDc1ZDNlOWM2NWNkYmNiOTY2ZTZmYTI4MzNk
ZDQyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNTQ5LDggKzU0OSw4
IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgVU5VU0VEX1BBUkFNKGludHJpbnNpYyk7
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3Jl
YXRlKCp0aGlzLAotICAgICAgICBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9s
aW5lKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpLCBmdW5jdGlvbiwKLSAgICAgICAgYWRvcHRS
ZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENv
ZGVSZWYobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lKSwgSklUQ29kZTo6SG9zdENh
bGxUaHVuaykpLCBjb25zdHJ1Y3RvciwKKyAgICAgICAgYWRvcHRSZWYoKm5ldyBOYXRpdmVKSVRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2
ZV9jYWxsX3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSksIGZ1bmN0aW9uLAor
ICAgICAgICBhZG9wdFJlZigqbmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lKSwg
SklUQ29kZTo6SG9zdENhbGxUaHVuaykpLCBjb25zdHJ1Y3RvciwKICAgICAgICAgTm9JbnRyaW5z
aWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKQEAgLTg2OCw5ICs4NjgsOSBAQCB2b2lkIFZNOjpk
dW1wVHlwZVByb2ZpbGVyRGF0YSgpCiAgICAgdHlwZVByb2ZpbGVyKCktPmR1bXBUeXBlUHJvZmls
ZXJEYXRhKCp0aGlzKTsKIH0KIAotdm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IHRhc2spCit2b2lkIFZNOjpx
dWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNr
PiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRUYXNrPigqdGhpcywgZ2xvYmFsT2JqZWN0LCB0YXNrKSk7CisgICAgbV9taWNyb3Rh
c2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgVk06OmRyYWluTWljcm90YXNrcygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAwODgwMDhhOWJjYmI3ZmY2MjQxMzNk
ZWU5YWY1ZGQ2MzliNWY2OGE1Li41MjdiOGY4NjNmZGRhMGJhZTBhMjllNWEzYmM0ODgzNzBhYmUx
ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE5MiwxNSArMTkyLDE1IEBA
IGNsYXNzIFF1ZXVlZFRhc2sgewogcHVibGljOgogICAgIHZvaWQgcnVuKCk7CiAKLSAgICBRdWV1
ZWRUYXNrKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxN
aWNyb3Rhc2s+IG1pY3JvdGFzaykKKyAgICBRdWV1ZWRUYXNrKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPE1pY3JvdGFzaz4mJiBtaWNyb3Rhc2spCiAgICAgICAgIDog
bV9nbG9iYWxPYmplY3Qodm0sIGdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX21pY3JvdGFzayht
aWNyb3Rhc2spCisgICAgICAgICwgbV9taWNyb3Rhc2soV1RGTW92ZShtaWNyb3Rhc2spKQogICAg
IHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2Jh
bE9iamVjdDsKLSAgICBSZWZQdHI8TWljcm90YXNrPiBtX21pY3JvdGFzazsKKyAgICBSZWY8TWlj
cm90YXNrPiBtX21pY3JvdGFzazsKIH07CiAKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwpAQCAt
NjU5LDcgKzY1OSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgYm9vbCBlbmFibGVDb250
cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgYm9vbCBkaXNhYmxlQ29udHJvbEZsb3dQcm9maWxlcigp
OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9i
amVjdCosIFBhc3NSZWZQdHI8TWljcm90YXNrPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCosIFJlZjxNaWNyb3Rhc2s+JiYpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgdm9pZCBzZXRH
bG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdyhib29sIGdsb2JhbENvbnN0UmVkZWNs
YXJhdGlvblRocm93KSB7IG1fZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3cgPSBn
bG9iYWxDb25zdFJlZGVjbGFyYXRpb25UaHJvdzsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBn
bG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3c7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmluZGV4IDM4YTUxYzE1MTM3OWZm
NGE0ZjQ3Y2E3MjNmYjY4Y2UxMThkZTI2M2IuLmVmODk0MzU5MjU0MGZkZWIyMzM0YTFhYTRjOWIy
NzA1NTVhZjNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVPdmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYg
bmV3CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFkZXIpOwogICAgIG5ld1Byb3Zp
ZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKIAotICAgIGF1dG8gbmV3UHJvdmlkZXIgPSBTdHJpbmdT
b3VyY2VQcm92aWRlcjo6Y3JlYXRlKG5ld1Byb3ZpZGVyU3RyLCBTb3VyY2VPcmlnaW4geyAiPG92
ZXJyaWRkZW4+IiB9LCAiPG92ZXJyaWRkZW4+Iik7CisgICAgUmVmPFNvdXJjZVByb3ZpZGVyPiBu
ZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlkZXJTdHIs
IFNvdXJjZU9yaWdpbiB7ICI8b3ZlcnJpZGRlbj4iIH0sICI8b3ZlcnJpZGRlbj4iKTsKIAogICAg
IGluZm8uZmlyc3RMaW5lID0gMTsKICAgICBpbmZvLmxpbmVDb3VudCA9IDE7IC8vIEZha2luZyBp
dC4gVGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgZm9yIG5vdy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCAyNmJjNWYzNWE1ZWJjMjg4YzJh
NDZkZjBjMzlmNTEyMDQ1ZjAyNTdiLi4wNmE4ZWRjODMxYjkzYTYwYmI0MmNlOGE4ZWU0ZjRiYmUw
ZDk1OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3Vy
Y2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29k
ZS5oCkBAIC00NSwyMSArNDUsMjEgQEAgY2xhc3MgU2NyaXB0U291cmNlQ29kZSB7CiBwdWJsaWM6
CiAgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1
cmwgPSBVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0
aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKICAgICAgICAgOiBtX3Byb3ZpZGVyKEpT
Qzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2lu
IHsgdXJsLnN0cmluZygpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlw
ZSkpCi0gICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIsIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKKyAgICAg
ICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKICAgICAg
ICAgLCBtX3VybCh1cmwpCiAgICAgewogICAgIH0KIAogICAgIFNjcmlwdFNvdXJjZUNvZGUoQ2Fj
aGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNv
dXJjZVR5cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCiAgICAg
ICAgIDogbV9wcm92aWRlcihDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNhY2hl
ZFNjcmlwdCwgc291cmNlVHlwZSwgV1RGTW92ZShzY3JpcHRGZXRjaGVyKSkpCi0gICAgICAgICwg
bV9jb2RlKG1fcHJvdmlkZXIpCisgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigp
KQogICAgICAgICAsIG1fY2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCkKICAgICB7CiAgICAgfQog
CiAgICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0
RmV0Y2hlcikKICAgICAgICAgOiBtX3Byb3ZpZGVyKEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShzb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgdXJsLnN0cmluZygpLCBXVEZNb3Zl
KHNjcmlwdEZldGNoZXIpIH0sIHVybC5zdHJpbmcoKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlw
ZSkpCi0gICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIsIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKKyAgICAg
ICAgLCBtX2NvZGUobV9wcm92aWRlci5jb3B5UmVmKCksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkKICAgICAg
ICAgLCBtX3VybCh1cmwpCiAgICAgewogICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgU2Ny
aXB0U291cmNlQ29kZSB7CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8SlNDOjpTb3VyY2VQcm92aWRlcj4gbV9w
cm92aWRlcjsKKyAgICBSZWY8SlNDOjpTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICBK
U0M6OlNvdXJjZUNvZGUgbV9jb2RlOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVw
bGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDVlYmU1ODM2NzAxZmMyZmM5NGMyMTUwNDg2
YjU5OTE2ZWQ5OGI4YzguLmJmMzU4ZGM2YWI0ODUwOTg2NDUwMWEwNWI2ZjczZDhiMGFjOTkyODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTQyMSw3
ICs0MjEsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBm
cmFtZSkKICAgICAvLyBXZSBzdG9yZSB0aGUgaW5wdXQgY3Vyc29yIGluIGJvdGggRG9jdW1lbnQg
YW5kIEpTRE9NV2luZG93LCBzbyB0aGF0CiAgICAgLy8gcmVwbGF5IHN0YXRlIGlzIGFjY2Vzc2li
bGUgZnJvbSBKYXZhU2NyaXB0Q29yZSBhbmQgc2NyaXB0LWZyZWUgbGF5b3V0IGNvZGUuCiAgICAg
ZnJhbWUuZG9jdW1lbnQoKS0+c2V0SW5wdXRDdXJzb3IoKm1fYWN0aXZlQ3Vyc29yKTsKLSAgICBm
cmFtZS5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJ
bnB1dEN1cnNvcihtX2FjdGl2ZUN1cnNvci5nZXQoKSk7CisgICAgZnJhbWUuc2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0SW5wdXRDdXJzb3IoKm1fYWN0
aXZlQ3Vyc29yKTsKIH0KIAogdm9pZCBSZXBsYXlDb250cm9sbGVyOjpmcmFtZURldGFjaGVkKEZy
YW1lJiBmcmFtZSkK
</data>
<flag name="review"
          id="323325"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301609</attachid>
            <date>2017-02-15 06:31:26 -0800</date>
            <delta_ts>2017-02-15 06:31:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-168320-20170215232850.patch</filename>
            <type>text/plain</type>
            <size>118744</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi41MDY4YzZmODlkOTRhZDMy
NDNiYWViMDRmZTExZDljMjg5OTJmOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMDcgQEAKKzIwMTctMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCk6CisgICAgICAgIFVzZSBSZWY8
Vk0+IGZyb20gdGhlIGZhY3RvcnkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRS
ZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSk6CisgICAgICAgIFJldHVy
biBSZWY8PiBpbnN0ZWFkLgorCisgICAgICAgICogQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3Bw
OgorICAgICAgICAodGVzdEpTT05QYXJzZSk6CisgICAgICAgIFVzZSBSZWY8Vk0+LgorCisgICAg
ICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVy
OjpmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkpOgorICAgICAgICBVc2UgcmVmZXJlbmNl
IHNpbmNlIHdlIGFscmVhZHkgcGVyZm9ybSBudWxsIGNoZWNrLgorCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZik6CisgICAgICAgIFRha2UgUmVmPD4mJiBp
bnN0ZWFkIG9mIFBhc3NSZWZQdHI8Pi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5m
by5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFN0dWIpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldFNsb3dTdHViKToKKyAgICAgICAgVGFrZSBSZWY8PiYmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0cjw+LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICBUYWtlIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4uIEN1cnJlbnRseSwgdGhlIFNvdXJjZVByb3ZpZGVyIHdvdWxkIGJl
IG51bGxwdHIuCisgICAgICAgIFdlIHdpbGwgY2hhbmdlIGl0IHRvIFJlZjxTb3VyY2VQcm92aWRl
cj4gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODMyNS4KKwor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgVGFrZSBS
ZWY8VHlwZVNldD4mJi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnNldEpJVENvZGUpOgorICAgICAgICBUYWtlIFJlZjw+JiYgaW5z
dGVhZC4KKworICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdENvZGUpOgorICAgICAgICBSZXR1
cm4gUmVmUHRyPD4gaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgVGFrZSBS
ZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291cmNlUHJvdmlkZXIgd291bGUgYmUgbnVsbHB0ci4K
KworICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0
aW9uQ29kZUJsb2NrKToKKyAgICAgICAgVGFrZSBSZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291
cmNlUHJvdmlkZXIgd291bGUgYmUgbnVsbHB0ci4KKworICAgICAgICAqIGJ5dGVjb2RlL0dsb2Jh
bENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpHbG9iYWxDb2RlQmxvY2s6Okdsb2JhbENvZGVC
bG9jayk6CisgICAgICAgIFRha2UgUmVmUHRyPD4mJiBpbnN0ZWFkIHNpbmNlIFNvdXJjZVByb3Zp
ZGVyIHdvdWxlIGJlIG51bGxwdHIuCisKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6Ok1vZHVsZVByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICBUYWtlIFJlZlB0cjw+JiYgaW5zdGVhZCBzaW5jZSBTb3VyY2VQ
cm92aWRlciB3b3VsZSBiZSBudWxscHRyLgorCisgICAgICAgICogYnl0ZWNvZGUvUHJvZ3JhbUNv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAg
VGFrZSBSZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291cmNlUHJvdmlkZXIgd291bGUgYmUgbnVs
bHB0ci4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2F0aGVyRGVidWdnZXJQYXJzZURhdGFGb3JTb3VyY2UpOgorICAgICAgICBFbnN1
cmUgdGhlIHByb3ZpZGVyIGlzIG5vdCBudWxscHRyLiBJdCBpcyBPSyBiZWNhdXNlIHdlIGFscmVh
ZHkKKyAgICAgICAgdG91Y2ggYHByb3ZpZGVyLT54eHhgIHZhbHVlcy4KKworICAgICAgICAqIGRm
Zy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tJbnNl
cnRpb25TZXQ6Omluc2VydCk6CisgICAgICAgIFRha2UgUmVmPD4mJiBpbnN0ZWFkLgorCisgICAg
ICAgICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgor
ICAgICAgICBQYXNzIFJlZjw+JiYgdG8gYXBwZW5kQmxvY2suCisKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgIFBhc3MgUmVmPFBsYW4+JiYuIEFuZCB0YWtlIFJl
Zjw+JiYgY2FsbGJhY2suCisKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmg6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIGFwcGVuZEJsb2NrIHRha2VzIFJlZjw+JiYuCisKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YXBwZW5kQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpqaXRDb2RlKToKKyAgICAgICAgKiBkZmcvREZHSklURmluYWxpemVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcik6CisgICAgICAgIFRha2Ug
UmVmPEpJVENvZGU+JiYuCisKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAg
ICAgICBQYXNzIGNvbXBpbGF0aW9uIHJlZmVyZW5jZSBzaW5jZSB3ZSBhbHJlYWR5IHBlcmZvcm0g
bnVsbCBjaGVjay4KKworICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuaDoKKyAgICAgICAg
KiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgVGFrZSBSZWY8UGxhbj4mJi4KKworICAgICAgICAqIGRmZy9ERkdXb3Jr
bGlzdC5oOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgIERlcmVmZXJl
bmNlIGFuZCBwYXNzIGppdENvZGUgJiBjb21waWxhdGlvbiByZWZlcmVuY2VzLgorCisgICAgICAg
ICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKToKKyAgICAgICAgUmV0dXJuIFJlZjw+IGluc3RlYWQuCisKKyAgICAgICAg
KiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0
dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjps
aW5rKToKKyAgICAgICAgUGFzcyBjb21waWxhdGlvbiByZWZlcmVuY2Ugc2luY2Ugd2UgYWxyZWFk
eSBwZXJmb3JtIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFzQ29kZVB0cik6CisgICAgICAgIFRha2Ug
UmVmPD4mJiBpbnN0ZWFkLiBBbmQgdGhpcyBkcm9wcyB1bm5lY2Vzc2FyeSBudWxsIGNoZWNrLgor
CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgIFBhc3MgUmVmPD4gdG8gTmF0aXZlRXhlY3V0YWJs
ZTo6Y3JlYXRlLgorCisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpzZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFt
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludCk6CisgICAgICAgIFVzZSBSZWY8PiYmIGluc3RlYWQuCisKKyAgICAgICAgKiBwYXJzZXIv
U291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2RlKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6CisgICAgICAgIEFkZCBjb25z
dHJ1Y3RvcnMgdGFraW5nIFJlZjw+JiYuCisgICAgICAgIFdlIHN0aWxsIGhhdmUgY29uc3RydWN0
b3JzIHRoYXQgdGFrZSBSZWZQdHI8PiYmLgorICAgICAgICBXZSB3aWxsIGNoYW5nZSBpdCB0byBS
ZWY8U291cmNlUHJvdmlkZXI+JiYgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODMyNS4KKworICAgICAgICAqIHBhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRTb3VyY2VDb2RlOjpVbmxpbmtlZFNvdXJjZUNvZGUpOgor
ICAgICAgICBBZGQgY29uc3RydWN0b3JzIHRha2luZyBSZWY8PiYmLgorICAgICAgICBXZSBzdGls
bCBoYXZlIGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgUmVmUHRyPD4mJi4KKyAgICAgICAgV2Ugd2ls
bCBjaGFuZ2UgaXQgdG8gUmVmPFNvdXJjZVByb3ZpZGVyPiYmIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjUuCisKKyAgICAgICAgKiBwcm9maWxlci9Qcm9m
aWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjphZGRD
b21waWxhdGlvbik6CisgICAgICAgIFRha2UgUmVmPENvbXBpbGF0aW9uPiYmLgorCisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oOgorICAgICAgICBDaGFuZ2UgZGF0YSBzdHJ1
Y3R1cmVzIHRvIGhvbGQgUmVmPD4gaW5zdGVhZCBvZiBSZWZQdHI8Pi4KKworICAgICAgICAqIHJ1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Omdl
bmVyYXRlZEpJVENvZGUpOgorICAgICAgICBSZXR1cm4gUmVmPD4gaW5zdGVhZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZvcik6CisgICAgICAgIFJldHVybiBSZWY8PiBpbnN0
ZWFkLgorCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllcjo6YWRkKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkOCk6CisgICAg
ICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcik6CisgICAgICAgIEFuZCB0YWtlIFJlZjw+
IGluIHRoaXMgbWV0aG9kLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5wdXRDdXJzb3IpOgorICAgICAgICBDaGFu
Z2UgbV9pbnB1dEN1cnNvciBmcm9tIFJlZlB0cjw+IHRvIFJlZjw+LgorCisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUYWtlIFJlZjxQcm9wZXJ0eU5h
bWVBcnJheT4mJi4KKworICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OkpTU3RyaW5nKToKKyAg
ICAgICAgVGFrZSBSZWY8U3RyaW5nSW1wbD4mJiBzaW5jZSB3ZSBkbyBub3QgYWxsb3cgbnVsbHB0
ciBpbiB0aGlzIGNvbnN0cnVjdG9yLgorCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAg
IFRha2UgUmVmPFN0cmluZ0ltcGw+JiYgaW4gdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMuIEFuZCBk
cm9wIHVubmVjZXNzYXJ5IGFzc2VydGlvbnMuCisKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICBVc2UgU3RyaW5nSW1wbDo6Y3JlYXRlKCkgd2hpY2ggcmV0
dXJucyBSZWY8Pi4KKworICAgICAgICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOgorICAgICAg
ICBEZXJlZmVyZW5jZSBpbXBsKCkgc2luY2Ugd2UgZW5zdXJlIHRoYXQgYHMubGVuZ3RoKCkgPiAx
YC4KKworICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisgICAgICAgIFVzZSByZWxlYXNlTm9uTnVs
bCgpIHNpbmNlIHdlIGVuc3VyZSB0aGF0IGBzLmxlbmd0aCgpID4gMWAuCisKKyAgICAgICAgKEpT
Qzo6anNPd25lZFN0cmluZyk6CisgICAgICAgIFVzZSByZWxlYXNlTm9uTnVsbCgpIHNpbmNlIHdl
IGVuc3VyZSB0aGF0IGBzLmxlbmd0aCgpID4gMWAuCisKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUYWtlIFJl
ZjxKSVRDb2RlPiYmLgorCisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICBSZXR1cm4gUmVm
PEpJVENvZGU+LgorCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5hbWVBcnJheTo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgaXMg
bm90IHVzZWQuCisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cEtleS5oOgorICAgICAgICAoSlND
OjpSZWdFeHBLZXk6OlJlZ0V4cEtleSk6CisgICAgICAgIFRha2UgUmVmUHRyPD4mJi4KKworICAg
ICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJp
bmdzU3RvcmFnZTo6cmVwKToKKyAgICAgICAgUmV0dXJuIFN0cmluZ0ltcGwmIHNpbmNlIG1fcmVw
cyBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAo
SlNDOjpTbWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5U3RyaW5nKToKKyAgICAgICAgRGVyZWZlcmVu
Y2UgU3RyaW5nSW1wbDo6ZW1wdHkoKS4KKworICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OmNy
ZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyk6CisgICAgICAgIFVzZSBTdHJpbmdJbXBsJi4KKwor
ICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCk6Cisg
ICAgICAgIFJldHVybiBTdHJpbmdJbXBsJi4KKworICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6
OmluaXRpYWxpemUpOgorICAgICAgICBVc2UgQXRvbWljU3RyaW5nSW1wbDo6YWRkIGluc3RlYWQu
CisKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBl
KToKKyAgICAgICAgUmV0dXJuIFJlZjw+LgorCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKEpT
Qzo6VHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlvbik6CisgICAgICAgIFRha2UgUmVm
UHRyPFR5cGVTZXQ+JiYuCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmg6
CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICBQYXNzIFJl
Zjw+JiYuCisKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmll
cyk6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNl
dDo6YWRkVHlwZUluZm9ybWF0aW9uKToKKyAgICAgICAgVGFrZSBSZWZQdHI8PiYmIHNpbmNlIGl0
IGNhbiBiZSBudWxscHRyLgorICAgICAgICBBbmQgY2xlYW4gdXAgIm5vdCBmb3VuZCIgY29kZS4K
KworICAgICAgICAoSlNDOjpUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMpOgor
ICAgICAgICBVc2UgcmFuZ2UgYmFzZWQgaXRlcmF0aW9uLgorCisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNoYXBlOjpsZWFzdENvbW1vbkFuY2VzdG9yKToKKyAgICAgICAgV2UgZm91bmQgdGhhdCB0
aGlzIG1ldGhvZCBhY2NpZGVudGFsbHkgdGFrZXMgYGNvbnN0IFZlY3Rvcjw+YCBpbnN0ZWFkIG9m
IGBjb25zdCBWZWN0b3I8PiZgLgorICAgICAgICBBbmQgaW50ZXJuYWxseSwgd2UganVzdCB1c2Ug
cmF3IHBvaW50ZXJzIHNpbmNlIHRoZXNlIFN0cnVjdHVyZVNoYXBlcyBhcmUgb3duZWQgYnkgdGhl
IG1fcHJvdG8gdHJlZXMgd2hpY2ggc3RhcnRzIGZyb20gdGhlIGdpdmVuIFZlY3Rvcjw+LgorCisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpoYXNTYW1lUHJvdG90eXBlQ2hhaW4pOgorICAg
ICAgICBUYWtlIGNvbnN0IHJlZmVyZW5jZSBpbnN0ZWFkLiBBbmQgdXNlIHJhdyBwb2ludGVycyBp
bnRlcm5hbGx5LgorCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjptZXJnZSk6CisgICAg
ICAgIFRha2UgUmVmPD4mJi4KKworICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6c2V0UHJvdG8pOgorICAgICAgICBUYWtlIFJlZjw+JiYu
CisKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RG
dW5jdGlvbik6CisgICAgICAgIFBhc3MgUmVmPD4mJi4KKworICAgICAgICAoSlNDOjpWTTo6cXVl
dWVNaWNyb3Rhc2spOgorICAgICAgICBUYWtlIGFuZCBwYXNzIFJlZjw+JiYuCisKKyAgICAgICAg
KiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlF1ZXVlZFRhc2s6OlF1ZXVlZFRhc2spOgor
ICAgICAgICBUYWtlIFJlZjw+JiYuCisKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbk92ZXJyaWRl
cy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVPdmVycmlkZUluZm8pOgorICAgICAgICBX
ZSBuZWVkIHRoaXMgY2hhbmdlIGR1ZSB0byBSZWY8PiYmIGFuZCBSZWZQdHI8PiYmIGFtYmlndWl0
eSBvZiBTb3VyY2VDb2RlIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgT25jZSBTb3VyY2VDb2RlIGlz
IGZpeGVkIHRvIG9ubHkgdGFrZSBSZWY8PiYmLCB0aGlzIGNoYW5nZSBpcyB1bm5lY2Vzc2FyeS4K
KwogMjAxNy0wMi0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBhc3luY0Rpc2Fzc2VtYmx5IGNyYXNoZXMgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdkZjRk
ZTdmZjFlOWM2ODQzNzk5NWExZWEwNmFjODRkODlmYzMxNS4uYTgyYzc5MWQ5NGIzZjliNjA5OWFh
YzA2OWQxNzE1Yjc4ZDNjNmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAy
LTE0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIERyb3AgUGFzc1JlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4MzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgVXNl
IFJlZiBhbmQgcGFzcyBpdCB0byBTb3VyY2VDb2RlLgorICAgICAgICAqIHJlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OmZyYW1l
TmF2aWdhdGVkKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UuCisKIDIwMTctMDItMTMgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBVcGRh
dGUgdm9sdW1lIGFuZCBzY3J1YmJpbmcgc2xpZGVyIHRvIG1hdGNoIEhJIGRlc2lnbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAxMzc2OWRmM2NiY2Rk
OWFjMDQ3NDYzZjkxMmU0ZTI5OTExNjY2ZjcwLi5lN2RhZDE5YjAwY2M3ZWM5OTAyNjM0ZWFkZDU3
MjgwYzc5NWJmZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCkBAIC0xMzMsMTIgKzEzMywxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogewogICAg
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIFJlZlB0cjxWTT4gdm0gPSBncm91cCA/IFBh
c3NSZWZQdHI8Vk0+KHRvSlMoZ3JvdXApKSA6IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoKTsKKyAg
ICBSZWY8Vk0+IHZtID0gZ3JvdXAgPyBSZWY8Vk0+KCp0b0pTKGdyb3VwKSkgOiBWTTo6Y3JlYXRl
Q29udGV4dEdyb3VwKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLnB0cigpKTsKIAogICAgIGlmICghZ2xvYmFsT2JqZWN0
Q2xhc3MpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwg
anNOdWxsKCkpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGUodm0uZ2V0KCksIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0uZ2V0KCksIGpzTnVsbCgpKSk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgICAgIGlmIChKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KCkpCiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
dHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxD
b250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogICAg
ICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKSk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUoKnZtLCBnbG9i
YWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZSgqdm0sIDAsIGpzTnVsbCgpKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUodm0uZ2V0KCks
IGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLmdldCgpLCAwLCBqc051bGwoKSkpOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
Z2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShleGVjKTsKICAgICBpZiAoIXByb3RvdHlwZSkK
ICAgICAgICAgcHJvdG90eXBlID0ganNOdWxsKCk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5yZXNldFBy
b3RvdHlwZSgqdm0sIHByb3RvdHlwZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlw
ZSh2bS5nZXQoKSwgcHJvdG90eXBlKTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICBpZiAoSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCgpKQog
ICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IGYyYWQ5NDlkOTBh
MDY2NDY5NzI5N2YwZTg4NzFiMjRhZTc5ODlmNGQuLjc5MTczOGI5NWUwNTcyMjE4OTY2NmNmMTBm
NTg3ZWRlMzI0YzI1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
Y3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBPcGFx
dWVKU1NjcmlwdCA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFdURjo6UmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlKQorICAgIHN0YXRpYyBXVEY6OlJlZjxPcGFxdWVK
U1NjcmlwdD4gY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6OmFkb3B0UmVmKCpuZXcgT3BhcXVl
SlNTY3JpcHQodm0sIHNvdXJjZU9yaWdpbiwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJj
ZSkpOwogICAgIH0KQEAgLTk3LDcgKzk3LDcgQEAgSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVS
ZWZlcmVuY2luZ0ltbW9ydGFsQVNDSUlUZXh0KEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHQKICAg
ICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0sIFNvdXJjZU9yaWdpbiB7
IHNvdXJjZVVSTFN0cmluZyB9LCBzb3VyY2VVUkxTdHJpbmcsIHN0YXJ0aW5nTGluZU51bWJlciwg
U3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNvdXJjZSwgbGVuZ3RoKSkpOwog
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNl
Q29kZShyZXN1bHQpLCBlcnJvcikpIHsKKyAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VD
b2RlKHJlc3VsdC5jb3B5UmVmKCkpLCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2Fn
ZSkKICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGVy
cm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAoZXJyb3JMaW5lKQpAQCAtMTA1
LDcgKzEwNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRh
bEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQubGVha1JlZigpOworICAgIHJldHVybiAm
cmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3Ry
aW5nKEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQg
c3RhcnRpbmdMaW5lTnVtYmVyLCBKU1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJv
ck1lc3NhZ2UsIGludCogZXJyb3JMaW5lKQpAQCAtMTE5LDcgKzExOSw3IEBAIEpTU2NyaXB0UmVm
IEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAs
IEpTU3RyaW5nUmVmCiAgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZt
LCBTb3VyY2VPcmlnaW4geyBzb3VyY2VVUkxTdHJpbmcgfSwgc291cmNlVVJMU3RyaW5nLCBzdGFy
dGluZ0xpbmVOdW1iZXIsIHNvdXJjZS0+c3RyaW5nKCkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7Ci0gICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQpLCBlcnJvcikp
IHsKKyAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdC5jb3B5UmVmKCkp
LCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkKICAgICAgICAgICAgICplcnJv
ck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1Jl
ZigpOwogICAgICAgICBpZiAoZXJyb3JMaW5lKQpAQCAtMTI3LDcgKzEyNyw3IEBAIEpTU2NyaXB0
UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3Jv
dXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiByZXN1bHQubGVha1JlZigpOworICAgIHJldHVybiAmcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1NjcmlwdFJlZiBzY3JpcHQpCkBAIC0xNTIsNyArMTUy
LDcgQEAgSlNWYWx1ZVJlZiBKU1NjcmlwdEV2YWx1YXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1NjcmlwdFJlZiBzY3JpcHQsIEpTVmFsdWVSZWYKICAgICB9CiAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1
ZVJlZiA/IHRvSlMoZXhlYywgdGhpc1ZhbHVlUmVmKSA6IGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShleGVjLCBTb3VyY2VDb2RlKHNjcmlwdCksIHRoaXNWYWx1
ZSwgaW50ZXJuYWxFeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZXhl
YywgU291cmNlQ29kZSgqc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlvbik7CiAg
ICAgaWYgKGludGVybmFsRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgaW50ZXJuYWxFeGNlcHRpb24tPnZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFy
c2VUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNlVGVz
dC5jcHAKaW5kZXggMjc5N2MzYzhlYTVkMTVjMTgzYmVhMWUyZDRkMjU5MDEzMjc2MDY3YS4uMjIw
ZDdmMDc4NWU1YTBiNjZlMDY5MGIxNzQwYWRkMzRlMzU2YTQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwCkBAIC0zOCwyNyArMzgs
MjcgQEAgaW50IHRlc3RKU09OUGFyc2UoKQogewogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CiAK
LSAgICBSZWZQdHI8Vk0+IHZtID0gVk06OmNyZWF0ZSgpOworICAgIHsKKyAgICAgICAgUmVmPFZN
PiB2bSA9IFZNOjpjcmVhdGUoKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0uZ2V0KCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7
CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0uZ2V0KCkpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOwogCi0gICAgRXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB2MCA9
IEpTT05QYXJzZShleGVjLCAiIik7Ci0gICAgSlNWYWx1ZSB2MSA9IEpTT05QYXJzZShleGVjLCAi
IyQlXiIpOwotICAgIEpTVmFsdWUgdjIgPSBKU09OUGFyc2UoZXhlYywgU3RyaW5nKCkpOwotICAg
IFVDaGFyIGVtcHR5VUNoYXJBcnJheVsxXSA9IHsgJ1wwJyB9OwotICAgIEpTVmFsdWUgdjMgPSBK
U09OUGFyc2UoZXhlYywgU3RyaW5nKGVtcHR5VUNoYXJBcnJheSwgMCkpOwotICAgIEpTVmFsdWUg
djQ7Ci0gICAgSlNWYWx1ZSB2NSA9IEpTT05QYXJzZShleGVjLCAiMTIzIik7CisgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU1Zh
bHVlIHYwID0gSlNPTlBhcnNlKGV4ZWMsICIiKTsKKyAgICAgICAgSlNWYWx1ZSB2MSA9IEpTT05Q
YXJzZShleGVjLCAiIyQlXiIpOworICAgICAgICBKU1ZhbHVlIHYyID0gSlNPTlBhcnNlKGV4ZWMs
IFN0cmluZygpKTsKKyAgICAgICAgVUNoYXIgZW1wdHlVQ2hhckFycmF5WzFdID0geyAnXDAnIH07
CisgICAgICAgIEpTVmFsdWUgdjMgPSBKU09OUGFyc2UoZXhlYywgU3RyaW5nKGVtcHR5VUNoYXJB
cnJheSwgMCkpOworICAgICAgICBKU1ZhbHVlIHY0OworICAgICAgICBKU1ZhbHVlIHY1ID0gSlNP
TlBhcnNlKGV4ZWMsICIxMjMiKTsKIAotICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjAgIT0gdjEp
OwotICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjEgIT0gdjIpOwotICAgIGZhaWxlZCA9IGZhaWxl
ZCB8fCAodjIgIT0gdjMpOwotICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjMgIT0gdjQpOwotICAg
IGZhaWxlZCA9IGZhaWxlZCB8fCAodjQgPT0gdjUpOwotCi0gICAgdm0gPSBudWxscHRyOworICAg
ICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYwICE9IHYxKTsKKyAgICAgICAgZmFpbGVkID0gZmFp
bGVkIHx8ICh2MSAhPSB2Mik7CisgICAgICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjIgIT0gdjMp
OworICAgICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYzICE9IHY0KTsKKyAgICAgICAgZmFpbGVk
ID0gZmFpbGVkIHx8ICh2NCA9PSB2NSk7CisgICAgfQogCiAgICAgaWYgKGZhaWxlZCkKICAgICAg
ICAgcHJpbnRmKCJGQUlMOiBKU09OUGFyc2UgU3RyaW5nIHRlc3QuXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCmluZGV4IDkwMTA5NjdiOTk4
Mzc4YjViMjYwYmU1NGViYmVkYWFjZTdmMGQxYTcuLjU5MThjZjk5ZDRhODFmODRiOWUyNzA2ZjNj
ZDdiNTVmMTZhNmU0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBMaW5rQnVmZmVyOjpDb2RlUmVmIExpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgpCiAgICAgCiAgICAgQVNTRVJU
KG1fZGlkQWxsb2NhdGUpOwogICAgIGlmIChtX2V4ZWN1dGFibGVNZW1vcnkpCi0gICAgICAgIHJl
dHVybiBDb2RlUmVmKG1fZXhlY3V0YWJsZU1lbW9yeSk7CisgICAgICAgIHJldHVybiBDb2RlUmVm
KCptX2V4ZWN1dGFibGVNZW1vcnkpOwogICAgIAogICAgIHJldHVybiBDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKG1fY29kZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgKaW5kZXggYTcxYTQ4NmEwMmMyY2ZlMjVlOTZkYTQ0OTgyNzkwNGQ4ZGZiNzk3Zi4u
YzMxY2Y4NTI2MDBjYjBjODk2ZDk1MGYxYzRmYzkzN2EwZWU5MDFmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
CkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zNTQsOSArMzUzLDkgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHsKICAgICB7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmKFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gZXhlY3V0YWJsZU1lbW9yeSkK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoUmVmPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+JiYg
ZXhlY3V0YWJsZU1lbW9yeSkKICAgICAgICAgOiBtX2NvZGVQdHIoZXhlY3V0YWJsZU1lbW9yeS0+
c3RhcnQoKSkKLSAgICAgICAgLCBtX2V4ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZU1lbW9yeSkK
KyAgICAgICAgLCBtX2V4ZWN1dGFibGVNZW1vcnkoV1RGTW92ZShleGVjdXRhYmxlTWVtb3J5KSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2V4ZWN1dGFibGVNZW1vcnktPmlzTWFuYWdlZCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fZXhlY3V0YWJsZU1lbW9yeS0+c3RhcnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggMGE5MTAyMDEzODIw
NjBiYWIxZTIyZmQxMDVlZjZmNzIzYjFkNzllMC4uOTFkM2RkOGY3NWIxMjI4M2UwYWFkZDc4OGUw
Zjk2NzU5MGY2ZGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaApAQCAtMjA3LDEwICsyMDcsMTAgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVi
bGljIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIHZvaWQgc2V0RXhl
Y3V0YWJsZUR1cmluZ0NvbXBpbGF0aW9uKEV4ZWN1dGFibGVCYXNlKik7CiAgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUoKTsKICAgICAKLSAgICB2b2lkIHNldFN0dWIoUGFzc1JlZlB0cjxQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gbmV3U3R1YikKKyAgICB2b2lkIHNldFN0dWIoUmVm
PFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiAgICAgewogICAgICAgICBj
bGVhclN0dWIoKTsKLSAgICAgICAgbV9zdHViID0gbmV3U3R1YjsKKyAgICAgICAgbV9zdHViID0g
V1RGTW92ZShuZXdTdHViKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyU3R1YigpOwpAQCAtMjIw
LDkgKzIyMCw5IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+IHsKICAgICAgICAgcmV0dXJuIG1fc3R1Yi5nZXQoKTsKICAgICB9
CiAKLSAgICB2b2lkIHNldFNsb3dTdHViKFBhc3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IG5ld1Ns
b3dTdHViKQorICAgIHZvaWQgc2V0U2xvd1N0dWIoUmVmPEpJVFN0dWJSb3V0aW5lPiYmIG5ld1Ns
b3dTdHViKQogICAgIHsKLSAgICAgICAgbV9zbG93U3R1YiA9IG5ld1Nsb3dTdHViOworICAgICAg
ICBtX3Nsb3dTdHViID0gV1RGTW92ZShuZXdTbG93U3R1Yik7CiAgICAgfQogCiAgICAgdm9pZCBj
bGVhclNsb3dTdHViKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWIyNmE2ZDY0YmRjZmQ3MGM4ZTQzNmVlOWJmOWE1OGU3MWI1ZGI0ZC4uMTZj
NTg3MTg2NDI0ZTI4NjFkMzczM2IxZjY3ZTIxNzlhZmY4NTBkYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE4ODksNyArMTg4OSw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywg
Q29kZUJsb2NrJiBvdGhlcikKIH0KIAogQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgSlNTY29wZSogc2NvcGUsIFBh
c3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VP
ZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICBKU1Njb3BlKiBzY29w
ZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICA6IEpTQ2VsbCgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+dm0oKSwgdGhpcywgc2NvcGUtPmdsb2JhbE9iamVjdCgpKQogICAgICwgbV9udW1DYWxsZWVM
b2NhbHModW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKQpAQCAtMTkxMiw3ICsx
OTEyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXQKICAgICAsIG1fdm0odW5saW5rZWRDb2Rl
QmxvY2stPnZtKCkpCiAgICAgLCBtX3RoaXNSZWdpc3Rlcih1bmxpbmtlZENvZGVCbG9jay0+dGhp
c1JlZ2lzdGVyKCkpCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKSkKLSAgICAsIG1fc291cmNlKHNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9z
b3VyY2UoV1RGTW92ZShzb3VyY2VQcm92aWRlcikpCiAgICAgLCBtX3NvdXJjZU9mZnNldChzb3Vy
Y2VPZmZzZXQpCiAgICAgLCBtX2ZpcnN0TGluZUNvbHVtbk9mZnNldChmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCiAgICAgLCBtX29zckV4aXRDb3VudGVyKDApCkBAIC0yMzA0LDcgKzIzMDQsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzdGQ6
OnBhaXI8VHlwZUxvY2F0aW9uKiwgYm9vbD4gbG9jYXRpb25QYWlyID0gdm0udHlwZVByb2ZpbGVy
KCktPnR5cGVMb2NhdGlvbkNhY2hlKCktPmdldFR5cGVMb2NhdGlvbihnbG9iYWxWYXJpYWJsZUlE
LAotICAgICAgICAgICAgICAgIG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQsIGdsb2JhbFR5cGVTZXQsICZ2bSk7CisgICAgICAgICAgICAgICAgb3duZXJF
eGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgV1RGTW92ZShnbG9i
YWxUeXBlU2V0KSwgJnZtKTsKICAgICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBs
b2NhdGlvblBhaXIuZmlyc3Q7CiAgICAgICAgICAgICBib29sIGlzTmV3TG9jYXRpb24gPSBsb2Nh
dGlvblBhaXIuc2Vjb25kOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggMTE1OWJiMzk4YmFhM2FjMmYyMDhhN2VmNjZiOTViOTFkMjEyMDU5YS4uMTk0
MmVhMjFjNjNiMjUyOTlkOTZlMWU4ZGI4ZjU4N2U5NzE1NzMxNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKFZN
KiwgU3RydWN0dXJlKiwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKTsKLSAg
ICBDb2RlQmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwgSlNTY29wZSosIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+LCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCk7CisgICAgQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqLCBSZWZQdHI8U291
cmNlUHJvdmlkZXI+JiYsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiwg
SlNTY29wZSopOwpAQCAtMzEyLDE1ICszMTIsMTUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgLy8gRXhhY3RseSBlcXVpdmFsZW50IHRvIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPm5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKGNvZGVCbG9jay0+c3BlY2lh
bGl6YXRpb25LaW5kKCkpCiAgICAgQ29kZUJsb2NrKiBuZXdSZXBsYWNlbWVudCgpOwogICAgIAot
ICAgIHZvaWQgc2V0SklUQ29kZShQYXNzUmVmUHRyPEpJVENvZGU+IGNvZGUpCisgICAgdm9pZCBz
ZXRKSVRDb2RlKFJlZjxKSVRDb2RlPiYmIGNvZGUpCiAgICAgewogICAgICAgICBBU1NFUlQoaGVh
cCgpLT5pc0RlZmVycmVkKCkpOwogICAgICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5QWxs
b2NhdGVkKGNvZGUtPnNpemUoKSk7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gVGhpcyBpcyBwcm9i
YWJseSBub3QgbmVlZGVkIGJlY2F1c2UgdGhlIGxvY2sgd2lsbCBhbHNvIGRvIHNvbWV0aGluZyBz
aW1pbGFyLCBidXQgaXQncyBnb29kIHRvIGJlIHBhcmFub2lkLgotICAgICAgICBtX2ppdENvZGUg
PSBjb2RlOworICAgICAgICBtX2ppdENvZGUgPSBXVEZNb3ZlKGNvZGUpOwogICAgIH0KLSAgICBQ
YXNzUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KKyAgICBS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIHN0YXRp
YyBwdHJkaWZmX3Qgaml0Q29kZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2Rl
QmxvY2ssIG1faml0Q29kZSk7IH0KICAgICBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUoKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9j
ay5oCmluZGV4IGU5ZTYxYmE2NGMxOGZhMzI0ZDhkNDZlOWQ0OWZiM2MzMTk4YjcxNzUuLmZkZTdi
MTE2NWZhYzRjOTE1NGUwY2U3OWQxNzUwNWUyOTdjMjYxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaApAQCAtNDcsMTAgKzQ3LDEwIEBAIGNs
YXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAKICAg
ICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRXZhbEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywK
LSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJj
ZVByb3ZpZGVyKQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiYmIHNvdXJjZVByb3ZpZGVyKQogICAgIHsKICAgICAgICAgRXZhbENvZGVCbG9jayogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bS0+aGVhcCkp
Ci0gICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS0+ZXZhbENvZGVCbG9ja1N0cnVjdHVy
ZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJj
ZVByb3ZpZGVyKTsKKyAgICAgICAgICAgIEV2YWxDb2RlQmxvY2sodm0sIHZtLT5ldmFsQ29kZUJs
b2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBz
Y29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlcikpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oKnZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC03MCw4ICs3MCw4IEBAIGNsYXNz
IEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAgICAgICAg
IAogICAgIEV2YWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXZhbEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyKQotICAgICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3Ry
dWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgc291cmNl
UHJvdmlkZXIsIDAsIDEpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlUHJvdmlkZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBz
dHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZN
b3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgMSkKICAgICB7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAppbmRleCA1
YjQxOGIxNGNlODFjZTQwOGU5NTk2N2U4MDI3MWI3MGU3YmI4ZmY4Li40ZjU4ZDA5MTEwNGU5YzI2
YTFhMjE3MGU2ZmNiNjU5ZWQ5NDNlMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNz
IEZ1bmN0aW9uQ29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiAgICAgfQogCiAgICAgc3Rh
dGljIEZ1bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2ssIEpTU2NvcGUqIHNjb3BlLAotICAgICAgICBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQ
cm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5P
ZmZzZXQpCiAgICAgewogICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvZGVCbG9jaz4odm0tPmhlYXApKQotICAg
ICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLT5mdW5jdGlvbkNvZGVCbG9ja1N0cnVj
dHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNv
dXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CisgICAg
ICAgICAgICBGdW5jdGlvbkNvZGVCbG9jayh2bSwgdm0tPmZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0
dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RG
TW92ZShzb3VyY2VQcm92aWRlciksIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxl
LCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAg
ICAgfQpAQCAtNjgsOCArNjgsOCBAQCBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBD
b2RlQmxvY2sgewogICAgIH0KIAogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUs
Ci0gICAgICAgIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAg
ICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNv
bHVtbk9mZnNldCkKKyAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3Zp
ZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNl
dCkKKyAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VP
ZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oCmluZGV4IDlh
YjIyMjZiMDU2NWQ2YjFiYjVmNzAxNGViM2U5Y2I0OTNkMWMwMmYuLmFhMjljY2EzMzI0MzU3M2My
NzAwZTI4Nzg2NmUxOWI5NTg0YTJiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2xvYmFsQ29kZUJsb2NrLmgKQEAgLTQ1LDggKzQ1LDggQEAgY2xhc3MgR2xvYmFs
Q29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIEdsb2Jh
bENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywg
SlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVy
LCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkK
LSAgICAgICAgOiBDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxp
bmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICBHbG9iYWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWdu
ZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICAgICA6IENvZGVCbG9jayh2bSwgc3RydWN0
dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShz
b3VyY2VQcm92aWRlciksIHNvdXJjZU9mZnNldCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAg
IHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01vZHVsZVByb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKaW5kZXggYjNjM2IxMWUzYTQxZDFhNTQxMzcwNGY1
YWRmZDBiOTFjZGIyMmYzNy4uNjI2NzRlYTkyNTMxZmFmZWQ2NzZmYTZhMDg5N2IzZWUyZmYyMGNj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dy
YW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oCkBAIC00OCwxMCArNDgsMTAgQEAgY2xhc3MgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAgIHN0YXRp
YyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxT
b3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKKyAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAg
ICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCi0gICAgICAgICAg
ICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+bW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0
cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUs
IHNvdXJjZVByb3ZpZGVyLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPm1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZN
b3ZlKHNvdXJjZVByb3ZpZGVyKSwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKICAgICAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVC
bG9jaywgc2NvcGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtNjgsOCAr
NjgsOCBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVC
bG9jayB7CiAgICAgfQogCiAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAg
ICAgICBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJv
dmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAgICAgOiBHbG9iYWxD
b2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAg
ICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlk
ZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2Rl
QmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywg
c2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQp
CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cm9ncmFtQ29kZUJsb2NrLmgKaW5kZXggOTRjN2E3YTNkZTlhZDVhYTA2ZmIwNGFjOGRmYjdiMzMx
NDVlNDc2Yy4uODUwNGFjNGEwNTFhMDdlMTFlM2EyNTg5NDU0MGViMGU0ZGE0NWE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCkBA
IC00OCwxMCArNDgsMTAgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxD
b2RlQmxvY2sgewogICAgIH0KIAogICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUo
Vk0qIHZtLCBQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwg
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0
TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KQogICAgIHsKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpCi0gICAgICAgICAg
ICBQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+cHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQo
KSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3Zp
ZGVyLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpOworICAgICAgICAgICAgUHJvZ3JhbUNvZGVCbG9j
ayh2bSwgdm0tPnByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgZmly
c3RMaW5lQ29sdW1uT2Zmc2V0KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtNjgsOCArNjgsOCBAQCBjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAgfQogCiAgICAgUHJvZ3JhbUNv
ZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9ncmFtRXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrLAotICAgICAgICBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4g
c291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKLSAgICAgICAg
OiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtl
ZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZz
ZXQpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBH
bG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCAwLCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKaW5kZXggM2IwNThiYWJmYjEzNzEzN2Y0
MDUzZTA4OTg1Yjk0MWY2MTFkYjIwMy4uNDhmOTM5ZjEwZmRhY2ExYzc3NTc0YjFiZDg4NjBiOGU3
MWYwN2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyUGFyc2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJQYXJzZURhdGEuY3BwCkBAIC0xNjcsOSArMTY3LDEwIEBAIGJvb2wgZ2F0aGVyRGVidWdn
ZXJQYXJzZURhdGEoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlYnVnZ2VyUGFy
c2VEYXRhCiAKIGJvb2wgZ2F0aGVyRGVidWdnZXJQYXJzZURhdGFGb3JTb3VyY2UoVk0mIHZtLCBT
b3VyY2VQcm92aWRlciogcHJvdmlkZXIsIERlYnVnZ2VyUGFyc2VEYXRhJiBkZWJ1Z2dlclBhcnNl
RGF0YSkKIHsKKyAgICBBU1NFUlQocHJvdmlkZXIpOwogICAgIGludCBzdGFydExpbmUgPSBwcm92
aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOwogICAgIGludCBzdGFy
dENvbHVtbiA9IHByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4ub25lQmFzZWRJbnQo
KTsKLSAgICBTb3VyY2VDb2RlIGNvbXBsZXRlU291cmNlKHByb3ZpZGVyLCBzdGFydExpbmUsIHN0
YXJ0Q29sdW1uKTsKKyAgICBTb3VyY2VDb2RlIGNvbXBsZXRlU291cmNlKCpwcm92aWRlciwgc3Rh
cnRMaW5lLCBzdGFydENvbHVtbik7CiAKICAgICBzd2l0Y2ggKHByb3ZpZGVyLT5zb3VyY2VUeXBl
KCkpIHsKICAgICBjYXNlIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKaW5k
ZXggZDU3YzAxYzcwMTUyM2FlZjZmYjFlZTU0MjllMGNhYjRkZmU0NWNjMS4uNGM5Mzk3NWM1MTZj
MjU3YWJhNWY0OTUxY2VkMTU3Y2EwNWNkMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKQEAgLTQ0LDIxICs0NCwyMiBAQCB2
b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoY29uc3QgQmxvY2tJbnNlcnRpb24mIGluc2Vy
dGlvbikKICAgICBtX2luc2VydGlvbnMuYXBwZW5kKGluc2VydGlvbik7CiB9CiAKLXZvaWQgQmxv
Y2tJbnNlcnRpb25TZXQ6Omluc2VydChzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QmFzaWNCbG9j
az4gYmxvY2spCit2b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoc2l6ZV90IGluZGV4LCBS
ZWY8QmFzaWNCbG9jaz4mJiBibG9jaykKIHsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5k
ZXgsIGJsb2NrKSk7CisgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJs
b2NrKSkpOwogfQogCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHNpemVf
dCBpbmRleCwgZmxvYXQgZXhlY3V0aW9uQ291bnQpCiB7Ci0gICAgUmVmUHRyPEJhc2ljQmxvY2s+
IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2soCisgICAgUmVmPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKAogICAgICAgICBVSU5UX01BWCwKICAgICAg
ICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCks
CiAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpLAogICAgICAgICBleGVjdXRpb25Db3VudCkpOwogICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA9
IHRydWU7Ci0gICAgaW5zZXJ0KGluZGV4LCBibG9jayk7Ci0gICAgcmV0dXJuIGJsb2NrLmdldCgp
OworICAgIGF1dG8qIHJlc3VsdCA9IGJsb2NrLnB0cigpOworICAgIGluc2VydChpbmRleCwgV1RG
TW92ZShibG9jaykpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEJhc2ljQmxvY2sqIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBmbG9hdCBleGVj
dXRpb25Db3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxv
Y2tJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNl
cnRpb25TZXQuaAppbmRleCBlZWNjNDQ3OTliMmRhOWM5MDdhOWUwMGNkMzVlYjkwYjQ3NmVlNjlj
Li5iNWI2YTAwNWNjOGU2ODBhNDY3NDdjZWNlZjk2ZWRjNmViMGM1ZDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IHsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQo
KTsKICAgICAKICAgICB2b2lkIGluc2VydChjb25zdCBCbG9ja0luc2VydGlvbiYpOwotICAgIHZv
aWQgaW5zZXJ0KHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxCYXNpY0Jsb2NrPik7CisgICAgdm9p
ZCBpbnNlcnQoc2l6ZV90IGluZGV4LCBSZWY8QmFzaWNCbG9jaz4mJik7CiAgICAgQmFzaWNCbG9j
ayogaW5zZXJ0KHNpemVfdCBpbmRleCwgZmxvYXQgZXhlY3V0aW9uQ291bnQpOwogICAgIEJhc2lj
QmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGZsb2F0IGV4ZWN1dGlvbkNv
dW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCBlNTY1MWYyYjVjZGZlY2Y2MjgwNTNmYmYyYTAxZGRhYjIxZjAwNjA1Li43NjVj
M2I0ODhkYzIyNzQxMmI1MzEyYTA1MzVmZWI2YzEyN2Q2YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTYyOSw3ICsxNjI5LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwg
aW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICBBU1NFUlQobGFzdEJsb2NrLT50ZXJtaW5h
bCgpKTsKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZvciB0aGUg
Y29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCi0gICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJsb2Nr
ID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVudHMsIG1f
bnVtTG9jYWxzLCAxKSk7CisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5l
dyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkp
OwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJucyB0byB0aGUgYmFzaWMgYmxvY2sgd2Un
cmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lU3Rh
Y2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7CkBAIC0xNjQwLDIyICsxNjQw
LDIyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5v
ZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
a1RvTGluay0+dGVybWluYWwoKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gSnVtcCk7
CiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0QmxvY2soKSk7Ci0gICAgICAgIG5vZGUtPnRh
cmdldEJsb2NrKCkgPSBibG9jay5nZXQoKTsKKyAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9
IGJsb2NrLnB0cigpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3Nb
aV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGlu
ayksICIgYXMgbGlua2VkIChqdW1wcyB0byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tUb0xp
bmstPmRpZExpbmsoKTsKICAgICB9CiAgICAgCi0gICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5n
ZXQoKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLnB0cigpOwogICAgIEFTU0VSVChtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8
fCBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3Qo
KS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQpOwogICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5nZXQo
KSksICIgKG1hbnkgcmV0dXJucylcbiIpOworICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5r
ZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5wdHIoKSksICIgKG1hbnkgcmV0dXJucylcbiIp
OwogICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykg
ewotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5h
cHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwotICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7
CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFw
cGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CisgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsK
ICAgICB9Ci0gICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CisgICAgbV9ncmFwaC5hcHBl
bmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogfQog
CkBAIC0yMDAyLDkgKzIwMDIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
ZygKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0dXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7Ci0gICAgICAg
IFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRf
TUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKLSAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBibG9jay5nZXQoKTsKLSAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7
CisgICAgICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9j
ayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgICAgIG1f
Y3VycmVudEJsb2NrID0gYmxvY2sucHRyKCk7CisgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2so
YmxvY2suY29weVJlZigpKTsKICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAg
ICAKICAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcp
OwpAQCAtMjAxNyw5ICsyMDE3LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcoCiAgICAgICAgIGlmICghaW5saW5pbmdSZXN1bHQpIHsKICAgICAgICAgICAgIC8vIFRoYXQg
ZmFpbGVkIHNvIHdlIGxldCB0aGUgYmxvY2sgZGllLiBOb3RoaW5nIGludGVyZXN0aW5nIHNob3Vs
ZCBoYXZlIGJlZW4gYWRkZWQgdG8KICAgICAgICAgICAgIC8vIHRoZSBibG9jay4gV2UgYWxzbyBn
aXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgKGxlc3MgZnJlcXVlbnQpIGNhbGxlZXMuCi0g
ICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2sgPT0gYmxvY2suZ2V0KCkpOwotICAgICAg
ICAgICAgQVNTRVJUKG1fZ3JhcGgubV9ibG9ja3MubGFzdCgpID09IGJsb2NrKTsKLSAgICAgICAg
ICAgIG1fZ3JhcGgua2lsbEJsb2NrQW5kSXRzQ29udGVudHMoYmxvY2suZ2V0KCkpOworICAgICAg
ICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9PSBibG9jay5wdHIoKSk7CisgICAgICAg
ICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJsb2NrLnB0cigpKTsKICAgICAg
ICAgICAgIG1fZ3JhcGgubV9ibG9ja3MucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IGlubGluaW5nIGZhaWxlZCBtZWFucyB3ZSBuZWVkIGEg
c2xvdyBwYXRoLgpAQCAtMjAzNCw3ICsyMDM0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgICAgICAgICBBU1NFUlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKICAg
ICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tpXS5leGVjdXRhYmxlKCk7
CiAgICAgICAgIH0KLSAgICAgICAgZGF0YS5jYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBo
LmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwgYmxvY2suZ2V0KCkpKTsKKyAgICAgICAgZGF0YS5jYXNl
cy5hcHBlbmQoU3dpdGNoQ2FzZShtX2dyYXBoLmZyZWV6ZSh0aGluZ1RvQ2FzZU9uKSwgYmxvY2su
cHRyKCkpKTsKICAgICAgICAgbV9jdXJyZW50SW5kZXggPSBuZXh0T2Zmc2V0OwogICAgICAgICBt
X2V4aXRPSyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCk7IC8vIFRoaXMg
b25seSBjb21lcyBpbnRvIHBsYXkgZm9yIGludHJpbnNpY3MsIHNpbmNlIG5vcm1hbCBpbmxpbmVk
IGNvZGUgd2lsbCBsZWF2ZSBhbiBlbXB0eSBxdWV1ZS4KQEAgLTIwNTIsMTcgKzIwNTIsMTcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICBkYXRhTG9n
KCJGaW5pc2hlZCBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1c1tpXSwgIiBhdCAiLCBjdXJyZW50
Q29kZU9yaWdpbigpLCAiLlxuIik7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxCYXNpY0Jsb2Nr
PiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCi0gICAgICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRf
TUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBSZWY8QmFzaWNCbG9j
az4gc2xvd1BhdGhCbG9jayA9IGFkb3B0UmVmKAorICAgICAgICAqbmV3IEJhc2ljQmxvY2soVUlO
VF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwogICAgIG1fY3VycmVudElu
ZGV4ID0gb2xkT2Zmc2V0OwogICAgIG1fZXhpdE9LID0gdHJ1ZTsKLSAgICBkYXRhLmZhbGxUaHJv
dWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2suZ2V0KCkpOwotICAgIG1fZ3JhcGguYXBw
ZW5kQmxvY2soc2xvd1BhdGhCbG9jayk7CisgICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRh
cmdldChzbG93UGF0aEJsb2NrLnB0cigpKTsKKyAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQ
YXRoQmxvY2suY29weVJlZigpKTsKICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygi
TWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2suZ2V0KCkpLCAiIGFzIGxpbmtlZCAo
c2xvdyBwYXRoIGJsb2NrKVxuIik7CisgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9p
bnRlcihzbG93UGF0aEJsb2NrLnB0cigpKSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylc
biIpOwogICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmsoKTsKICAgICBwcmVwYXJlVG9QYXJzZUJs
b2NrKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBzbG93UGF0aEJsb2NrLmdldCgpOworICAgIG1f
Y3VycmVudEJsb2NrID0gc2xvd1BhdGhCbG9jay5wdHIoKTsKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCkBAIC0yMDg2LDE3ICsyMDg2LDE3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBjb250
aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAotICAgICAgICBuZXcgQmFzaWNCbG9jayhVSU5UX01B
WCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7Ci0gICAgbV9ncmFwaC5hcHBlbmRC
bG9jayhjb250aW51YXRpb25CbG9jayk7CisgICAgUmVmPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlv
bkJsb2NrID0gYWRvcHRSZWYoCisgICAgICAgICpuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9u
dW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhj
b250aW51YXRpb25CbG9jay5jb3B5UmVmKCkpOwogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRpb25C
bG9jay5nZXQoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOwotICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxvY2su
Z2V0KCkpKTsKKyAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1Bv
aW50ZXIoY29udGludWF0aW9uQmxvY2sucHRyKCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKKyAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2Nr
KGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpKSk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwot
ICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2suZ2V0KCk7CisgICAgbV9jdXJy
ZW50QmxvY2sgPSBjb250aW51YXRpb25CbG9jay5wdHIoKTsKICAgICAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsYW5kaW5nQmxvY2tzLnNpemUoKTsgaS0tOykKLSAgICAgICAgbGFuZGluZ0Jsb2Nr
c1tpXS0+dGVybWluYWwoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgp
OworICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT50ZXJtaW5hbCgpLT50YXJnZXRCbG9jaygpID0g
Y29udGludWF0aW9uQmxvY2sucHRyKCk7CiAgICAgCiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRP
ZmZzZXQ7CiAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNTgxNyw4ICs1ODE3LDggQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IGJs
b2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobV9jdXJyZW50SW5kZXgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgMSkpOwotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGJsb2NrLmdldCgpOworICAgICAgICAgICAgICAgICAgICBSZWY8QmFzaWNCbG9jaz4gYmxv
Y2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2sobV9jdXJyZW50SW5kZXgsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgMSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ayA9IGJsb2NrLnB0cigpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFzc2VydGlvbiBj
aGVja3MgdHdvIHRoaW5nczoKICAgICAgICAgICAgICAgICAgICAgLy8gMSkgSWYgdGhlIGJ5dGVj
b2RlQmVnaW4gaXMgZ3JlYXRlciB0aGFuIGN1cnJlbnRJbmRleCwgdGhlbiBzb21ldGhpbmcgaGFz
IGdvbmUKICAgICAgICAgICAgICAgICAgICAgLy8gICAgaG9ycmlibHkgd3JvbmcuIFNvLCB3ZSdy
ZSBwcm9iYWJseSBnZW5lcmF0aW5nIGluY29ycmVjdCBjb2RlLgpAQCAtNTgzMSwxMiArNTgzMSwx
MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RCZWdpbiwgbGFzdEJlZ2luID09IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudElu
ZGV4KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLmdl
dCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2Nr
LnB0cigpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgogICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZEJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBl
bmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1Bh
cnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKaW5kZXggMTRjZDBkMDE0MmRiMmI4YjNhODI0YmZj
NDZmOGNkOTBiZTE1NTYwOS4uNzkzNzdlN2Y5ZmFhODRjYjE3ZjMzZWQ1ODIzOTcwNjgwOTUyODk3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbERGR1doaXRlbGlzdCgp
CiBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgQ29tcGls
YXRpb25Nb2RlIG1vZGUsCiAgICAgdW5zaWduZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCBjb25z
dCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcywKLSAgICBQYXNzUmVmUHRyPERl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2spCisgICAgUmVmPERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIU9wdGlvbnM6OmJ5dGVj
b2RlUmFuZ2VUb0RGR0NvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCkpCiAgICAgICAgIHx8ICFlbnN1cmVHbG9iYWxERkdXaGl0ZWxpc3QoKS5jb250YWlucyhj
b2RlQmxvY2spKQpAQCAtOTYsMTUgKzk2LDE1IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBj
b21waWxlSW1wbCgKICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHZtLnR5cGVQ
cm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIlByZXBhcmluZyBm
b3IgREZHIGNvbXBpbGF0aW9uLiIpKTsKICAgICAKLSAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IGFk
b3B0UmVmKAotICAgICAgICBuZXcgUGxhbihjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2Nr
LCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsKKyAgICBS
ZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAorICAgICAgICAqbmV3IFBsYW4oY29kZUJsb2NrLCBw
cm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFu
ZGxlVmFsdWVzKSk7CiAgICAgCi0gICAgcGxhbi0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBw
bGFuLT5jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmIChPcHRpb25zOjp1c2VD
b25jdXJyZW50SklUKCkpIHsKICAgICAgICAgV29ya2xpc3QmIHdvcmtsaXN0ID0gZW5zdXJlR2xv
YmFsV29ya2xpc3RGb3IobW9kZSk7CiAgICAgICAgIGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMo
bW9kZSkpCiAgICAgICAgICAgICBkYXRhTG9nKCJEZWZlcnJpbmcgREZHIGNvbXBpbGF0aW9uIG9m
ICIsICpjb2RlQmxvY2ssICIgd2l0aCBxdWV1ZSBsZW5ndGggIiwgd29ya2xpc3QucXVldWVMZW5n
dGgoKSwgIi5cbiIpOwotICAgICAgICB3b3JrbGlzdC5lbnF1ZXVlKHBsYW4pOworICAgICAgICB3
b3JrbGlzdC5lbnF1ZXVlKFdURk1vdmUocGxhbikpOwogICAgICAgICByZXR1cm4gQ29tcGlsYXRp
b25EZWZlcnJlZDsKICAgICB9CiAgICAgCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIENvbXBp
bGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCiBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgVk0mLCBDb2RlQmxvY2sqLCBD
b2RlQmxvY2sqLCBDb21waWxhdGlvbk1vZGUsIHVuc2lnbmVkLCBjb25zdCBPcGVyYW5kczxKU1Zh
bHVlPiYsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+KQorICAg
IFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYpCiB7CiAgICAgcmV0dXJuIENvbXBp
bGF0aW9uRmFpbGVkOwogfQpAQCAtMTIzLDEyICsxMjMsMTEgQEAgc3RhdGljIENvbXBpbGF0aW9u
UmVzdWx0IGNvbXBpbGVJbXBsKAogQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZSgKICAgICBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2Nr
LCBDb21waWxhdGlvbk1vZGUgbW9kZSwKICAgICB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxlVmFsdWVzLAotICAgIFBhc3NS
ZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBwYXNzZWRDYWxsYmFjaykKKyAgICBS
ZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0
cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7
CiAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gY29tcGlsZUltcGwoCiAgICAgICAgIHZt
LCBjb2RlQmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2Rl
SW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMsCi0gICAgICAgIGNhbGxiYWNrKTsKKyAgICAgICAgY2Fs
bGJhY2suY29weVJlZigpKTsKICAgICBpZiAocmVzdWx0ICE9IENvbXBpbGF0aW9uRGVmZXJyZWQp
CiAgICAgICAgIGNhbGxiYWNrLT5jb21waWxhdGlvbkRpZENvbXBsZXRlKGNvZGVCbG9jaywgcHJv
ZmlsZWRERkdDb2RlQmxvY2ssIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCmluZGV4IDFkNThkMWE4YTA5ZDg1YzNkMzMxZjRmNDE3
OWExZDAzNWRmNjMzOTQuLjFhMmQxOGNlOWU5YWM0N2MzYjRjYWUwMWY5ZDIyZDI3Y2FhNjE3YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaApAQCAtNDUsNiArNDUsNiBAQCBK
U19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBnZXROdW1Db21waWxhdGlvbnMoKTsKIENvbXBpbGF0
aW9uUmVzdWx0IGNvbXBpbGUoCiAgICAgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIHByb2Zp
bGVkREZHQ29kZUJsb2NrLCBDb21waWxhdGlvbk1vZGUsCiAgICAgdW5zaWduZWQgb3NyRW50cnlC
eXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcywK
LSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4pOworICAgIFJlZjxE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNmQ1MjQ2OTRkYjgyYzk3
YTBjMzYwYTcyYTVkZTNmOWYwYjBmMzI4Yi4uM2IzMjkyMDg3NDI4YzE3NGFiNTM5NjFiMTY3YjEy
OGQxMzFlMjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNDQyLDEw
ICs0NDIsMTAgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAg
IEJhc2ljQmxvY2sqIGJsb2NrKEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QgeyByZXR1cm4g
bV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7IH0KICAgICBCYXNpY0Jsb2NrKiBsYXN0QmxvY2so
KSBjb25zdCB7IHJldHVybiBibG9jayhudW1CbG9ja3MoKSAtIDEpOyB9CiAKLSAgICB2b2lkIGFw
cGVuZEJsb2NrKFBhc3NSZWZQdHI8QmFzaWNCbG9jaz4gYmFzaWNCbG9jaykKKyAgICB2b2lkIGFw
cGVuZEJsb2NrKFJlZjxCYXNpY0Jsb2NrPiYmIGJhc2ljQmxvY2spCiAgICAgewogICAgICAgICBi
YXNpY0Jsb2NrLT5pbmRleCA9IG1fYmxvY2tzLnNpemUoKTsKLSAgICAgICAgbV9ibG9ja3MuYXBw
ZW5kKGJhc2ljQmxvY2spOworICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShiYXNpY0Js
b2NrKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQga2lsbEJsb2NrKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5k
ZXggMzUxM2I1Yjk1MjI3NzMwYzkzYzIxMDNlYzRmOWZkYzQ2YmU4ODE1Ny4uZGI1ZTUyNWZmZGFh
OTU3Y2RhZTBjNzdkZDk5MjhjMzEzYzY1YTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAgICAgCiAgICAg
bV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxp
bmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKCkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlRnVuY3Rpb24oKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKIAogICAgIG1fZ3JhcGgubV9w
bGFuLmZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKLSAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwg
d2l0aEFyaXR5Q2hlY2spOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKIH0KIAog
dm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAppbmRleCA1Mzkx
MTU4YzVlYjViMDU1ODIzMzMyN2Y3NTY3NTk1Nzc2N2Y3ZDk0Li42YjY1ZWNjNzcyNDllY2E5ZWFk
OWIxOTZiZjczNjRiOTU2NThlYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwg
UGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4g
bGlua0J1ZmZlciwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrKQorSklURmlu
YWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbiwgUmVmPEpJVENvZGU+JiYgaml0Q29kZSwg
c3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciB3aXRoQXJpdHlDaGVjaykKICAgICA6IEZpbmFsaXplcihwbGFuKQotICAgICwgbV9qaXRD
b2RlKGppdENvZGUpCisgICAgLCBtX2ppdENvZGUoV1RGTW92ZShqaXRDb2RlKSkKICAgICAsIG1f
bGlua0J1ZmZlcihXVEZNb3ZlKGxpbmtCdWZmZXIpKQogICAgICwgbV93aXRoQXJpdHlDaGVjayh3
aXRoQXJpdHlDaGVjaykKIHsKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplKCkKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcg
SklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5j
b2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSk7CiAgICAgCi0gICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSht
X2ppdENvZGUpOworICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNv
cHlSZWYoKSk7CiAgICAgCiAgICAgZmluYWxpemVDb21tb24oKTsKICAgICAKQEAgLTczLDcgKzcz
LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgIG1faml0Q29k
ZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCiAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtC
dWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklU
VHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKICAgICAg
ICAgbV93aXRoQXJpdHlDaGVjayk7Ci0gICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSht
X2ppdENvZGUpOworICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNv
cHlSZWYoKSk7CiAgICAgCiAgICAgZmluYWxpemVDb21tb24oKTsKICAgICAKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKCkKICNlbmRpZiAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0aW9uKQotICAgICAgICBt
X3BsYW4udm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+YWRkQ29tcGlsYXRpb24obV9wbGFuLmNv
ZGVCbG9jaywgbV9wbGFuLmNvbXBpbGF0aW9uKTsKKyAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5
dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssICptX3BsYW4u
Y29tcGlsYXRpb24pOwogICAgIAogICAgIGlmICghbV9wbGFuLndpbGxUcnlUb1RpZXJVcCkKICAg
ICAgICAgbV9wbGFuLmNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENv
bXBpbGF0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklURmluYWxpemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFs
aXplci5oCmluZGV4IDFiMjFmOGM4NWMwOWJjYTg5MjBiY2E0MGY5NTkwOWJhODIzYjc5ZWIuLmIx
YTJiYzAzNGViYTlmZmZlMTRiMDcxZTBiNzJjNmQ1NjI3NjFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVEZpbmFsaXplciA6IHB1YmxpYyBG
aW5hbGl6ZXIgewogcHVibGljOgotICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxK
SVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpFbXB0eVZhbHVlKSk7CisgICAgSklURmluYWxpemVyKFBsYW4mLCBSZWY8SklUQ29k
ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpFbXB0eVZhbHVlKSk7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAgICAgCiAg
ICAgc2l6ZV90IGNvZGVTaXplKCkgb3ZlcnJpZGU7CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEpJ
VEZpbmFsaXplciA6IHB1YmxpYyBGaW5hbGl6ZXIgewogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFs
aXplQ29tbW9uKCk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsKKyAgICBS
ZWY8SklUQ29kZT4gbV9qaXRDb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBt
X2xpbmtCdWZmZXI7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCAxMTRj
YTk1NzE0NGRiNTI4MDhjZTg1M2QzMWY3NjViZDIyZmNhYmViLi5hZjNiNjNlMDgyZGU4YjY5Mjk2
Nzc0NzNiMzZkZWViYzM5M2FmYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dv
cmtsaXN0LmNwcApAQCAtMjIzLDE3ICsyMjMsMTYgQEAgYm9vbCBXb3JrbGlzdDo6aXNBY3RpdmVG
b3JWTShWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdvcmtsaXN0
OjplbnF1ZXVlKFBhc3NSZWZQdHI8UGxhbj4gcGFzc2VkUGxhbikKK3ZvaWQgV29ya2xpc3Q6OmVu
cXVldWUoUmVmPFBsYW4+JiYgcGxhbikKIHsKLSAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IHBhc3Nl
ZFBsYW47CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIsIFdURjo6
ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRvIG9wdGlt
aXplICIsIHBsYW4tPmtleSgpLCAiXG4iKTsKICAgICB9CiAgICAgQVNTRVJUKG1fcGxhbnMuZmlu
ZChwbGFuLT5rZXkoKSkgPT0gbV9wbGFucy5lbmQoKSk7Ci0gICAgbV9wbGFucy5hZGQocGxhbi0+
a2V5KCksIHBsYW4pOwotICAgIG1fcXVldWUuYXBwZW5kKHBsYW4pOworICAgIG1fcGxhbnMuYWRk
KHBsYW4tPmtleSgpLCBwbGFuLmNvcHlSZWYoKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92
ZShwbGFuKSk7CiAgICAgbV9wbGFuRW5xdWV1ZWQtPm5vdGlmeU9uZShsb2NrZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgKaW5kZXggMzY2MWU2ZWU4M2QzNTQ3
N2Y3YmFmODc0OGE3MjQ0NTg2YTAzOTBhNS4uMjhkOWFiZjRhMzhhMDNhZGZhYTMxZWZhYzJkMzQ2
MWU0YjcwMjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3Jr
bGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBXb3JrbGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsaXN0
PiB7CiAgICAgCiAgICAgc3RhdGljIFJlZjxXb3JrbGlzdD4gY3JlYXRlKENTdHJpbmcgd29ya2xp
c3ROYW1lLCB1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5ID0g
MCk7CiAgICAgCi0gICAgdm9pZCBlbnF1ZXVlKFBhc3NSZWZQdHI8UGxhbj4pOworICAgIHZvaWQg
ZW5xdWV1ZShSZWY8UGxhbj4mJik7CiAgICAgCiAgICAgLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRv
OgogICAgIC8vIHdvcmtsaXN0LT53YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJlUmVhZHkodm0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCmluZGV4IGRj
ZjNkYWQxZDAyN2Q3MGNmNTE0ZDJkODczZjhlYzVkMDY0NTA1ZDMuLjAwZWE2NTFlMWUyYmRjZGNm
Njg1M2ZjZTkyMzFmNTcyNDBmNWQ3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVEZpbmFsaXplci5jcHAKQEAgLTgxLDEwICs4MSwxMCBAQCBib29sIEpJVEZpbmFsaXpl
cjo6ZmluYWxpemVGdW5jdGlvbigpCiAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRy
eXBvaW50TGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9y
ICVzIHdpdGggQjMgZ2VuZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5j
dGlvbikpKTsKICAgICAKLSAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUp
OworICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUoKmppdENvZGUpOwogCiAgICAgaWYg
KG1fcGxhbi5jb21waWxhdGlvbikKLSAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlv
bik7CisgICAgICAgIG1fcGxhbi52bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxh
dGlvbihtX3BsYW4uY29kZUJsb2NrLCAqbV9wbGFuLmNvbXBpbGF0aW9uKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCAzMWEyYWUxNWMxNzA4Y2E4ZDU1OTMyZjY4OTA5MzVk
MDYwZTY0MDJmLi5iYWI2ZGUxM2IyOGE3MzlkYTA2ZmU1YmY5NDJiMDA3ZDlmZTA5MGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
Y3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhj
ZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB9CiAKIAotUGFzc1JlZlB0cjxK
SVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCitSZWY8SklUU3R1YlJvdXRpbmU+
IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYg
Y29kZSwKICAgICBWTSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKQEAgLTE0MiwxNyAr
MTQyLDE3IEBAIFBhc3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5l
KAogICAgIENhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCiB7CiAg
ICAgaWYgKCFtYWtlc0NhbGxzKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpJVFN0dWJS
b3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRp
bmUoY29kZSkpOwogICAgIAogICAgIGlmIChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJs
b2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMtPmppdFR5cGUoKSkpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUs
IHZtLCBvd25lciwgY2VsbHMsIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRp
b25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIs
IGNlbGxzLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNh
bGxTaXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwg
dm0pKTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IGEyNTNkYTM1YTY5YTc5YjYzZDI1M2M4
ZWExNDg4ZWYwMjFmYWM1NTkuLjVlZTM2Y2E0NjBkMTA3YTQzZTRhODg2ODgxOWUzMDhlM2E0NThl
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvCiAvLyBh
cHByb3ByaWF0ZS4gR2VuZXJhbGx5IHlvdSBvbmx5IG5lZWQgdG8gcGFzcyBwb2ludGVycyB0aGF0
IHdpbGwgYmUgdXNlZAogLy8gYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgdG8gQysrIG9yIEpTLgogLy8g
Ci0vLyBQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKKy8v
IFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUsCiAvLyAgICBWTSYgdm0sCiAvLyAgICBjb25zdCBK
U0NlbGwqIG93bmVyLApAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
CiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQgdXAgd2l0aCBtb3JlIGNv
ZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1QYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGVKSVRTdHViUm91dGluZSgKK1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1
YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiA9IHsgfSwgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycyA9
IG51bGxwdHIsIENhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4ID0g
Q2FsbFNpdGVJbmRleChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2MmMwNDM2OTg5YzkwNjI3NGYwZGMzOWQzM2Zh
ZjMwNWVmNmZlODdkLi5lNzQyMTliNjJiNDU4ZGU5MzEyMGM5YzVkOTVkY2M1NTE1MDU2ZTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC04MjksNyArODI5LDcgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBpZiAobV9jb21waWxhdGlvbikgewogICAgICAgICBp
ZiAoT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpCiAgICAgICAgICAg
ICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLmdldCgpLCBw
YXRjaEJ1ZmZlcik7Ci0gICAgICAgIG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+YWRkQ29t
cGlsYXRpb24obV9jb2RlQmxvY2ssIG1fY29tcGlsYXRpb24pOworICAgICAgICBtX3ZtLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCAqbV9jb21waWxh
dGlvbik7CiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1
aWxkTWFwcGluZygpKQpAQCAtODQ1LDcgKzg0NSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6
bGluaygpCiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hy
aW5rKTsKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3
IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVK
SVQpKSk7CisgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShyZXN1bHQsIHdpdGhB
cml0eUNoZWNrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCkpKTsKIAogI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRSkKICAgICBkYXRhTG9nRigiSklUIGdlbmVyYXRlZCBjb2RlIGZvciAlcCBhdCBbJXAsICVw
KS5cbiIsIG1fY29kZUJsb2NrLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5zdGFydCgpLCBy
ZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggMzA0NzIxMmQ0ZWM0ZTE4YWMzMWY4YThhMTQ0Mzkx
MTQyOTkwMGEyNy4uZWJmZTJlZjI0MThlYzJkODY0NmZiNWM0NzJlYjc4YWFmNmY1NjgyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtNzAsMTEgKzcw
LDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIC8vIHRoZSBjaHVybi4KICAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0K
ICAgICAKLSAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzQ29kZVB0cihQYXNzUmVm
UHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSkKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGFzQ29kZVB0cihSZWY8SklUU3R1YlJvdXRpbmU+JiYgc3R1YlJvdXRpbmUpCiAg
ICAgewotICAgICAgICBpZiAoIXN0dWJSb3V0aW5lKQotICAgICAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpOwotICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHJlc3VsdCA9IHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpOwogICAgICAgICBBU1NFUlQo
ISFyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuY3BwCmluZGV4IDYwYzNjYzdhN2UxYWQ4OTMzYzMyYWEyMGIxYTJhZWUwNDEz
MGIzNzEuLmRlNDhlNjJkZGFiOGVmYWY4YmUzMTgyODcxYmU4ZDcwOTliMTdjN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTEwOCw5ICsxMDgsOSBAQCBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTgogICAgIH0gZWxzZQogICAgICAgICBmb3JDYWxsID0gYWRvcHRS
ZWYobmV3IE5hdGl2ZUpJVENvZGUoSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbCh2bSwgZnVuY3Rp
b24pLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgUmVmUHRyPEpJVENvZGU+
IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkp
LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CisgICAgUmVmPEpJVENvZGU+IGZvckNvbnN0cnVj
dCA9IGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qodm0pKSwgSklUQ29kZTo6
SG9zdENhbGxUaHVuaykpOwogICAgIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwg
Zm9yQ29uc3RydWN0LCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxl
OjpjcmVhdGUoKnZtLCBmb3JDYWxsLnJlbGVhc2VOb25OdWxsKCksIGZ1bmN0aW9uLCBXVEZNb3Zl
KGZvckNvbnN0cnVjdCksIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7
CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVu
Y3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVF
eGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IGY1
OTE4YjcyMTcwYWM1ZGU0N2MyYmVkMzYzNzk2NTMwZTAxOTU0MDEuLmY3ZDc2MWRjMWRhYzAzZmYx
M2EyODk5M2RmMzRjMzU5Y2U0YjA2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgc3RhdGljIHZvaWQg
c2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAg
aWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7
CiAgICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICAgICAgYWRv
cHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAg
ICAgICAgICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuaykpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZigqbmV3
IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTU5LDEyICs1
OSwxMiBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAg
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
TExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAg
YWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
TExJbnRDb2RlUmVmKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUo
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJ
bnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJ
VENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2sp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRFdmFs
RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtNzIsMTQgKzcyLDE0
IEBAIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKICAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVj
dEpJVENvZGUodm0uZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAg
ICAgYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYo
Km5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X2V2YWxfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5
cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTg3LDE0ICs4NywxNCBAQCBz
dGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RK
SVRDb2RlKHZtLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAg
ICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIGFk
b3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxM
SW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldE1v
ZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0x
MDIsMTQgKzEwMiwxNCBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChW
TSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZt
LmNhblVzZUpJVCgpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAg
ICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3Jh
bUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklU
Q29kZSh2bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZihu
ZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJl
ZihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERp
cmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxp
bnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogdm9pZCBzZXRFbnRyeXBvaW50KFZNJiB2
bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlQ29kZS5oCmluZGV4IDhmNGZkMzhiYWFiODA1YjJmMjA4YjNkOGViODYzZjNmNWM0Mzg1Zjgu
LjkwZjU0N2EyMDAyNDM0ZjAxMWUxNWQ5YzJiY2I3YTgwYTUxYjhhZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCkBAIC00MSwyMCArNDEsMjcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNvdXJjZUNvZGUoUGFz
c1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIpCi0gICAgICAgICAgICA6IFVubGlua2Vk
U291cmNlQ29kZShwcm92aWRlcikKKyAgICAgICAgU291cmNlQ29kZShSZWY8U291cmNlUHJvdmlk
ZXI+JiYgcHJvdmlkZXIpCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3Zl
KHByb3ZpZGVyKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU291cmNlQ29kZShQ
YXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IGZpcnN0TGluZSwgaW50IHN0
YXJ0Q29sdW1uKQotICAgICAgICAgICAgOiBVbmxpbmtlZFNvdXJjZUNvZGUocHJvdmlkZXIpCisg
ICAgICAgIFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgZmly
c3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29k
ZShXVEZNb3ZlKHByb3ZpZGVyKSkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQogICAgICAgICAg
ICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1h
eChzdGFydENvbHVtbiwgMSkpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3Vy
Y2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyLCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBlbmRPZmZzZXQsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikKLSAgICAg
ICAgICAgIDogVW5saW5rZWRTb3VyY2VDb2RlKHByb3ZpZGVyLCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQorICAgICAgICBTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRD
b2x1bW4pCisgICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVy
KSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3Jk
aW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQorICAg
ICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChz
dGQ6Om1heChzdGFydENvbHVtbiwgMSkpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBTb3VyY2VDb2RlKFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCisg
ICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShXVEZNb3ZlKHByb3ZpZGVyKSwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQogICAgICAgICAgICAg
LCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChz
dGFydENvbHVtbiwgMSkpKQogICAgICAgICB7CkBAIC04Nyw3ICs5NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5z
aWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQg
c3RhcnRDb2x1bW4pCiAgICAgewogICAgICAgICBzdGFydENvbHVtbiArPSAxOyAvLyBDb252ZXJ0
IHRvIGJhc2UgMS4KLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUocHJvdmlkZXIoKSwgb3BlbkJy
YWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgICAgIHJl
dHVybiBTb3VyY2VDb2RlKFJlZlB0cjxTb3VyY2VQcm92aWRlcj4geyBwcm92aWRlcigpIH0sIG9w
ZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9VbmxpbmtlZFNvdXJjZUNvZGUuaAppbmRleCAyOWVjZjViMWUyMmY1N2YyMTY2ODI3YTVkYTY1
YWY2NTQ5YjVmZjM1Li5lNjhjZTg4MzgxOTZhZjg5ZDg3Mjk1NjhmODg1OGFmZTc5NWJhMDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2Rl
LmgKQEAgLTQ3LDE1ICs0NywyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlk
ZXI+IHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICAg
ICBVbmxpbmtlZFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyKQorICAg
ICAgICAgICAgOiBtX3Byb3ZpZGVyKFdURk1vdmUocHJvdmlkZXIpKQogICAgICAgICAgICAgLCBt
X3N0YXJ0T2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KG1fcHJvdmlkZXItPnNv
dXJjZSgpLmxlbmd0aCgpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBVbmxpbmtl
ZFNvdXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBzdGFy
dE9mZnNldCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRl
cikKKyAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92
aWRlciwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQorICAgICAgICAgICAgOiBtX3By
b3ZpZGVyKFdURk1vdmUocHJvdmlkZXIpKQorICAgICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0
YXJ0T2Zmc2V0KQorICAgICAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFVubGlua2VkU291cmNlQ29kZShSZWZQdHI8U291cmNl
UHJvdmlkZXI+JiYgcHJvdmlkZXIsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAg
ICAgICAgICAgIDogbV9wcm92aWRlcihXVEZNb3ZlKHByb3ZpZGVyKSkKICAgICAgICAgICAgICwg
bV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoZW5k
T2Zmc2V0KQogICAgICAgICB7CkBAIC05MSw2ICs5OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQgLSBtX3N0YXJ0T2Zm
c2V0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIGl0IFJlZjxT
b3VyY2VQcm92aWRpZXI+LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4MzI1CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92
aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7CiAgICAgICAgIGludCBtX2VuZE9mZnNl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFi
YXNlLmNwcAppbmRleCA4ZWQ5ZjE4NDVmM2U2YTU5N2Y2OTNlYmY1ZThmMmQ2NzQwZjA4MzIzLi4w
MWNlZmM0NDM4MTgyYzVjMGU1Mzg2MGJmODI1MTNlNmZlNThlM2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCkBAIC04Niwx
NSArODYsMTMgQEAgdm9pZCBEYXRhYmFzZTo6bm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiAgICAgbV9jb21waWxhdGlvbk1hcC5yZW1vdmUoY29kZUJsb2NrKTsKIH0KIAot
dm9pZCBEYXRhYmFzZTo6YWRkQ29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFBhc3NS
ZWZQdHI8Q29tcGlsYXRpb24+IHBhc3NlZENvbXBpbGF0aW9uKQordm9pZCBEYXRhYmFzZTo6YWRk
Q29tcGlsYXRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlZjxDb21waWxhdGlvbj4mJiBjb21w
aWxhdGlvbikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKIAotICAgIFJlZlB0cjxDb21waWxhdGlvbj4gY29tcGls
YXRpb24gPSBwYXNzZWRDb21waWxhdGlvbjsKLSAgICAKLSAgICBtX2NvbXBpbGF0aW9ucy5hcHBl
bmQoY29tcGlsYXRpb24pOwotICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNvZGVCbG9jaywgY29t
cGlsYXRpb24pOworICAgIG1fY29tcGlsYXRpb25zLmFwcGVuZChjb21waWxhdGlvbi5jb3B5UmVm
KCkpOworICAgIG1fY29tcGlsYXRpb25NYXAuc2V0KGNvZGVCbG9jaywgV1RGTW92ZShjb21waWxh
dGlvbikpOwogfQogCiBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFz
ZS5oCmluZGV4IDIwNmFhM2FiM2I1MzQxZDVmMDRhZDUxMDhlNmJiNmYwNjRkOTI5YjcuLmI5ZWYz
NmMwMzlmYjQyMWU5ZGZkZWRlMTZjZGU1MDI0MjA1OWEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaApAQCAtMzQsNyArMzQsNiBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTIsNyArNTEs
NyBAQCBjbGFzcyBEYXRhYmFzZSB7CiAgICAgQnl0ZWNvZGVzKiBlbnN1cmVCeXRlY29kZXNGb3Io
Q29kZUJsb2NrKik7CiAgICAgdm9pZCBub3RpZnlEZXN0cnVjdGlvbihDb2RlQmxvY2sqKTsKICAg
ICAKLSAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFBhc3NSZWZQdHI8Q29tcGls
YXRpb24+KTsKKyAgICB2b2lkIGFkZENvbXBpbGF0aW9uKENvZGVCbG9jayosIFJlZjxDb21waWxh
dGlvbj4mJik7CiAgICAgCiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGFiYXNlIHRvIGEgSmF2YVNj
cmlwdCBvYmplY3QgdGhhdCBpcyBzdWl0YWJsZSBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb24uCiAg
ICAgLy8gTm90ZSB0aGF0IGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXNlIGFuIEV4ZWNT
dGF0ZSogYXNzb2NpYXRlZCB3aXRoIGEgZ2xvYmFsCkBAIC04NSw4ICs4NCw4IEBAIGNsYXNzIERh
dGFiYXNlIHsKICAgICBWTSYgbV92bTsKICAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBt
X2J5dGVjb2RlczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNv
ZGVzTWFwOwotICAgIFZlY3RvcjxSZWZQdHI8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0aW9uczsK
LSAgICBIYXNoTWFwPENvZGVCbG9jayosIFJlZlB0cjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRp
b25NYXA7CisgICAgVmVjdG9yPFJlZjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25zOworICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgUmVmPENvbXBpbGF0aW9uPj4gbV9jb21waWxhdGlvbk1hcDsK
ICAgICBWZWN0b3I8RXZlbnQ+IG1fZXZlbnRzOwogICAgIGJvb2wgbV9zaG91bGRTYXZlQXRFeGl0
OwogICAgIENTdHJpbmcgbV9hdEV4aXRTYXZlRmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCBhNmJhYjY3NzQ3ZjRlOTI4MzIz
Y2U3NTVlMGQ1NzJlNzYyM2U0MTNlLi5jODcxZTVmMzZiYzczMGIwZGZkMmVhMzkwZWI1ZDI5OWMw
OTg0MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAg
ICAgfQogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICBS
ZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaAppbmRleCA1ZDFlMGI0YjY0NGZjNjExOGYyZTc2YmMz
OTg4YjEzNDg2YzA4NzYwLi42MjgxNmE1OTRjZDMyNTU0OTQyZWYyOTI3OGJiMjNhYmU5MDFhZTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFz
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgK
QEAgLTEyNSwxOSArMTI1LDE5IEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdDsKIAogcHVibGljOgotICAg
IFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKQorICAgIFJlZjxK
SVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9qaXRDb2RlRm9yQ2FsbCk7Ci0gICAgICAgIHJldHVybiBtX2ppdENvZGVGb3JDYWxsOworICAg
ICAgICByZXR1cm4gKm1faml0Q29kZUZvckNhbGw7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxK
SVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkKKyAgICBSZWY8SklUQ29kZT4g
Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9q
aXRDb2RlRm9yQ29uc3RydWN0KTsKLSAgICAgICAgcmV0dXJuIG1faml0Q29kZUZvckNvbnN0cnVj
dDsKKyAgICAgICAgcmV0dXJuICptX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgfQogICAgICAg
ICAKLSAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQorICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKICAgICB7CiAgICAgICAgIGlmIChraW5kID09
IENvZGVGb3JDYWxsKQogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4
IGIwYzVjM2U2NzJkMGEzMjk3ZTJkYTM2OTg4NDMwYzdhNjUwYjdkZmYuLjk5MjU2ZDY1ODkzNDkw
NmIyMjAxY2I1YmRlZWRlNTc3MjJlMjBlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTdHJpbmdJbXBsPiBJ
ZGVudGlmaWVyOjphZGQoVk0qIHZtLCBjb25zdCBjaGFyKiBjKQogICAgIEFTU0VSVChjKTsKICAg
ICBBU1NFUlQoY1swXSk7CiAgICAgaWYgKCFjWzFdKQotICAgICAgICByZXR1cm4gKnZtLT5zbWFs
bFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGNbMF0pOworICAgICAgICByZXR1cm4g
dm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoY1swXSk7CiAKICAgICBy
ZXR1cm4gKkF0b21pY1N0cmluZ0ltcGw6OmFkZChjKTsKIH0KQEAgLTU4LDcgKzU4LDcgQEAgUmVm
PFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50
IGxlbmd0aCkKICAgICAgICAgVUNoYXIgYyA9IHNbMF07CiAgICAgICAgIEFTU0VSVChjIDw9IDB4
ZmYpOwogICAgICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpKQotICAgICAg
ICAgICAgcmV0dXJuICp2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChj
KTsKKyAgICAgICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZ1JlcChjKTsKICAgICB9CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqU3Ry
aW5nSW1wbDo6ZW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaAppbmRleCAyNWUxNmFlMzQxN2Q2ZDAyNjlmZjRmNzM2MWRkOGEyNmYyNDNjODY2Li5hOTYz
YjQzMzA2MTdjYTUzMmYyMWM0ODMyZWRmNjgwODRhNDFiZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yMTgsNyArMjE4LDcgQEAgUmVmPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQqIHMsIGludCBsZW5ndGgpCiAg
ICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIFQgYyA9IHNbMF07CiAgICAgICAgIGlmIChj
YW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYykpCi0gICAgICAgICAgICByZXR1cm4gKnZtLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOworICAgICAgICAgICAgcmV0
dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOwogICAgIH0K
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGRkNzQ2M2M3M2E3YjEyY2VjNTdkNjliOTJhNWIwMjYxYzZmNDRiYzcuLmNmNGUxNmZiNjQ1
MDBkYjU0MTdhYmMwNWExMWE0ZmU0ZjhiNzI1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNjIsMTggKzEzNjIsMTUgQEAg
Ym9vbCBKU0dsb2JhbE9iamVjdDo6cmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0CiB9CiAK
ICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vy
c29yKFBhc3NSZWZQdHI8SW5wdXRDdXJzb3I+IHBycEN1cnNvcikKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnNldElucHV0Q3Vyc29yKFJlZjxJbnB1dEN1cnNvcj4mJiBjdXJzb3IpCiB7Ci0gICAgbV9p
bnB1dEN1cnNvciA9IHBycEN1cnNvcjsKLSAgICBBU1NFUlQobV9pbnB1dEN1cnNvcik7Ci0KLSAg
ICBJbnB1dEN1cnNvciYgY3Vyc29yID0gaW5wdXRDdXJzb3IoKTsKKyAgICBtX2lucHV0Q3Vyc29y
ID0gV1RGTW92ZShjdXJzb3IpOwogICAgIC8vIFNhdmUgb3Igc2V0IHRoZSByYW5kb20gc2VlZC4g
VGhpcyBwZXJmb3JtZWQgaGVyZSByYXRoZXIgdGhhbiB0aGUgY29uc3RydWN0b3IKICAgICAvLyB0
byBhdm9pZCB0aHJlYWRpbmcgdGhlIGlucHV0IGN1cnNvciB0aHJvdWdoIGFsbCB0aGUgYWJzdHJh
Y3Rpb24gbGF5ZXJzLgotICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkKLSAgICAgICAgY3Vy
c29yLmFwcGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVkKCkpOwotICAg
IGVsc2UgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7Ci0gICAgICAgIGlmIChTZXRSYW5kb21T
ZWVkKiBpbnB1dCA9IGN1cnNvci5mZXRjaElucHV0PFNldFJhbmRvbVNlZWQ+KCkpCisgICAgaWYg
KG1faW5wdXRDdXJzb3ItPmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIG1faW5wdXRDdXJzb3ItPmFw
cGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVkKCkpOworICAgIGVsc2Ug
aWYgKG1faW5wdXRDdXJzb3ItPmlzUmVwbGF5aW5nKCkpIHsKKyAgICAgICAgaWYgKFNldFJhbmRv
bVNlZWQqIGlucHV0ID0gbV9pbnB1dEN1cnNvci0+ZmV0Y2hJbnB1dDxTZXRSYW5kb21TZWVkPigp
KQogICAgICAgICAgICAgbV93ZWFrUmFuZG9tLnNldFNlZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGlucHV0LT5yYW5kb21TZWVkKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmOWRlNjQxYjYzZmE4MDA4ZjhiZGZj
M2NjNTQ2NjRkMTc3NTNkZGYwLi5hOTA5Njc5NjkwZWE5ZTQxMWU0YTdkN2ZkZDdhZDIwNjVhMDEy
MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4K
ICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzOwogc3RydWN0IE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YTsKQEAgLTM3OSw3ICszNzgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBWTSYgbV92bTsKIAog
I2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIFJlZlB0cjxJbnB1dEN1cnNvcj4gbV9pbnB1dEN1
cnNvcjsKKyAgICBSZWY8SW5wdXRDdXJzb3I+IG1faW5wdXRDdXJzb3I7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpAQCAtNjE3LDggKzYxNiw4IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRJbnB1dEN1
cnNvcihQYXNzUmVmUHRyPElucHV0Q3Vyc29yPik7Ci0gICAgSW5wdXRDdXJzb3ImIGlucHV0Q3Vy
c29yKCkgY29uc3QgeyByZXR1cm4gKm1faW5wdXRDdXJzb3I7IH0KKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldElucHV0Q3Vyc29yKFJlZjxJbnB1dEN1cnNvcj4mJik7CisgICAgSW5wdXRD
dXJzb3ImIGlucHV0Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dEN1cnNvci5nZXQoKTsg
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
Y3BwCmluZGV4IGRmZDk2NTE0NDdkNzFiNDE0ODkyOGVmMzE4NDJiYjI3ZjUwNGEwYjEuLmQ1Zjcw
OTEwZDIyYjBkN2VmNmM4MDI0NDljOWExNTRmZjFmMGVkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cApAQCAtMzgsMTggKzM4LDE4IEBAIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUoVk0mIHZtKQogewogICAgIGlmICghdm0uZW1wdHlQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmdldCgpKSB7CiAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHBy
b3BlcnR5TmFtZXMoJnZtLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKTsKLSAgICAgICAgdm0u
ZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yID0gU3Ryb25nPEpTQ2VsbD4odm0sIGNyZWF0ZSh2
bSwgMCwgMCwgMCwgcHJvcGVydHlOYW1lcykpOworICAgICAgICB2bS5lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3IgPSBTdHJvbmc8SlNDZWxsPih2bSwgY3JlYXRlKHZtLCAwLCAwLCAwLCBXVEZN
b3ZlKHByb3BlcnR5TmFtZXMpKSk7CiAgICAgfQogICAgIHJldHVybiBqc0Nhc3Q8SlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKj4odm0uZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmdldCgpKTsK
IH0KIAotSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBpbmRleGVkTGVu
Z3RoLCB1aW50MzJfdCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcykKK0pTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMy
X3QgaW5kZXhlZExlbmd0aCwgdWludDMyX3QgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgUHJv
cGVydHlOYW1lQXJyYXkmJiBwcm9wZXJ0eU5hbWVzKQogewogICAgIFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEID0gc3RydWN0dXJlID8gc3RydWN0dXJlLT5pZCgpIDogMDsKICAgICB1aW50MzJfdCBp
bmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSA6
IDA7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0gbmV3IChOb3RO
dWxsLCAKICAgICAgICAgYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4odm0u
aGVhcCkpIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSwgc3RydWN0dXJlSUQsIGlubGluZUNh
cGFjaXR5KTsKLSAgICBlbnVtZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgaW5kZXhlZExlbmd0
aCwgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgcHJvcGVydHlOYW1lcy5kYXRhKCkpOworICAg
IGVudW1lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBpbmRleGVkTGVuZ3RoLCBudW1iZXJTdHJ1
Y3R1cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzLnJlbGVhc2VEYXRhKCkpOwogICAgIHJldHVy
biBlbnVtZXJhdG9yOwogfQogCkBAIC02MCwxMSArNjAsMTAgQEAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmVJRCBzdHJ1
Y3R1cmUKIHsKIH0KIAotdm9pZCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgdWludDMyX3QgaW5kZXhlZExlbmd0aCwgdWludDMyX3QgZW5kU3RydWN0dXJl
UHJvcGVydHlJbmRleCwgUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IGlkZW50cykK
K3ZvaWQgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIHVp
bnQzMl90IGluZGV4ZWRMZW5ndGgsIHVpbnQzMl90IGVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgs
IFJlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+JiYgaWRlbnRpZmllcnMpCiB7CiAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogCi0gICAgUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0
YT4gaWRlbnRpZmllcnMgPSBpZGVudHM7CiAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9w
ZXJ0eU5hbWVWZWN0b3ImIHZlY3RvciA9IGlkZW50aWZpZXJzLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KTsKIAogICAgIG1faW5kZXhlZExlbmd0aCA9IGluZGV4ZWRMZW5ndGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5o
CmluZGV4IDMzNTYxNDNmMzEyY2VhYzY0MDA3NzEzYjE2YzI4NDc2MzIyNGI0ZTQuLjVlMTIzNTk4
NWEyODljNDZiZWZkYzgwY2NiZDc0ZTdjOTA1NDU3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNyZWF0ZShWTSYpOwotICAgIHN0YXRpYyBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50
MzJfdCwgUHJvcGVydHlOYW1lQXJyYXkmKTsKKyAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCwgdWludDMyX3QsIFByb3Bl
cnR5TmFtZUFycmF5JiYpOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKQEAgLTg1LDcgKzg1
LDcgQEAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAKIHByaXZhdGU6CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgU3RydWN0
dXJlSUQsIHVpbnQzMl90KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgdWludDMyX3Qs
IHVpbnQzMl90LCBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4pOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCB1aW50MzJfdCwgdWludDMyX3QsIFJlZlB0cjxQcm9wZXJ0eU5h
bWVBcnJheURhdGE+JiYpOwogCiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU1N0cmluZz4+IG1f
cHJvcGVydHlOYW1lczsKICAgICBTdHJ1Y3R1cmVJRCBtX2NhY2hlZFN0cnVjdHVyZUlEOwpAQCAt
MTM1LDcgKzEzNSw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIHByb3BlcnR5
TmFtZUVudW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjCiAKICAgICBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihleGVjLCBzdHJ1Y3R1cmUpOwogCi0gICAgZW51bWVyYXRvciA9IEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGluZGV4ZWRMZW5ndGgs
IG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXMpOworICAgIGVudW1lcmF0
b3IgPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBpbmRl
eGVkTGVuZ3RoLCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBXVEZNb3ZlKHByb3BlcnR5TmFt
ZXMpKTsKICAgICBlbnVtZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbih2bSwgc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSk7CiAgICAgaWYgKCFpbmRleGVkTGVuZ3RoICYmIHN0
cnVjdHVyZS0+Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCiAgICAgICAgIHN0cnVj
dHVyZS0+c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSwgZW51bWVyYXRvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCBiY2I1NDA1ZmY1NzA1
MGZkNmM0M2JkMzZlZTBiNTc2NGZjMWYzNDQ0Li4zZmM2NzdkYTc2M2ZkNTZjMDQ4ZmVlZDEwNDUy
Y2U0Njc5NTRlOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
QEAgLTk3LDEwICs5NywxMCBAQCBjbGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgSlNTdHJpbmcoVk0mIHZtLCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVlKQorICAgIEpTU3RyaW5nKFZNJiB2bSwgUmVmPFN0cmlu
Z0ltcGw+JiYgdmFsdWUpCiAgICAgICAgIDogSlNDZWxsKHZtLCB2bS5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpCiAgICAgICAgICwgbV9mbGFncygwKQotICAgICAgICAsIG1fdmFsdWUoUmVmUHRyPFN0
cmluZ0ltcGw+KHZhbHVlKSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQogICAg
IHsKICAgICB9CiAKQEAgLTEzNiwyMCArMTM2LDE4IEBAIGNsYXNzIEpTU3RyaW5nIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgfQogCiBwdWJsaWM6Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUo
Vk0mIHZtLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVlKQorICAgIHN0YXRpYyBKU1N0cmlu
ZyogY3JlYXRlKFZNJiB2bSwgUmVmPFN0cmluZ0ltcGw+JiYgdmFsdWUpCiAgICAgewotICAgICAg
ICBBU1NFUlQodmFsdWUpOwogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1ZS0+bGVuZ3Ro
KCk7CiAgICAgICAgIHNpemVfdCBjb3N0ID0gdmFsdWUtPmNvc3QoKTsKLSAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5o
ZWFwKSkgSlNTdHJpbmcodm0sIHZhbHVlKTsKKyAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkgSlNTdHJpbmco
dm0sIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2
bSwgbGVuZ3RoLCBjb3N0KTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9Ci0gICAg
c3RhdGljIEpTU3RyaW5nKiBjcmVhdGVIYXNPdGhlck93bmVyKFZNJiB2bSwgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiB2YWx1ZSkKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3du
ZXIoVk0mIHZtLCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh2YWx1ZSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSB2YWx1ZS0+bGVuZ3RoKCk7Ci0gICAg
ICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0
cmluZz4odm0uaGVhcCkpIEpTU3RyaW5nKHZtLCB2YWx1ZSk7CisgICAgICAgIEpTU3RyaW5nKiBu
ZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0uaGVhcCkp
IEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNo
Q3JlYXRpb24odm0sIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQpA
QCAtNTA2LDE5ICs1MDQsMTkgQEAgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoVk0qIHZtLCBVQ2hhciBjKQogewogICAgIGlmIChjIDw9IG1heFNpbmdsZUNo
YXJhY3RlclN0cmluZykKICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGMpOwotICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgU3RyaW5n
KCZjLCAxKS5pbXBsKCkpOworICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgU3RyaW5n
SW1wbDo6Y3JlYXRlKCZjLCAxKSk7CiB9CiAKIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFs
U3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5nJiBzKQogewogICAgIEFTU0VSVChzLmxlbmd0aCgp
ID4gMSk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CisgICAg
cmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCAqcy5pbXBsKCkpOwogfQogCiBpbmxpbmUgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhWTSogdm0sIFN0cmluZyYmIHMpCiB7CiAgICAgQVNT
RVJUKHMubGVuZ3RoKCkgPiAxKTsKLSAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMu
cmVsZWFzZUltcGwoKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLnJlbGVh
c2VJbXBsKCkucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSWRlbnRpZmll
ciBKU1N0cmluZzo6dG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKQEAgLTU3Miw3
ICs1NzAsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKFZNKiB2bSwgY29uc3QgU3RyaW5n
JiBzKQogICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAg
ICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CiAg
ICAgfQotICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgcy5pbXBsKCkpOworICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgKnMuaW1wbCgpKTsKIH0KIAogaW5saW5lIEpTU3Ry
aW5nKiBqc1N1YnN0cmluZyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNjM0LDcgKzYzMiw3IEBAIGlubGlu
ZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKICAgICAg
ICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJu
IHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpOwogICAgIH0KLSAgICBy
ZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCBzLmltcGwoKSk7CisgICAg
cmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCp2bSwgKnMuaW1wbCgpKTsKIH0K
IAogaW5saW5lIEpTUm9wZVN0cmluZyoganNTdHJpbmdCdWlsZGVyKFZNKiB2bSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oCmluZGV4IDBjODM0ZTA1ZjI3NGNjNmQ0ZjdjZWQ2NmYyOGViZjA1NzBiZmM1NjcuLmY0MjRi
YWRhZTUyMGY0M2FiMjRlNjRmYjlmNzM1YzFhN2RkOTAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5nZXQoKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJ
VENvZGUoKQorICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKaW5kZXggYjdk
YWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNi4uMGY4ZDA4NDQ0OWU0NTc5NzYy
YWJmODcxNWE0OTA5NzRmZWE2MWJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQwLDExICs0MCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsg
Ik5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVjdXRhYmxlKiBOYXRp
dmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVu
aywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCitO
YXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBSZWY8SklU
Q29kZT4mJiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBSZWY8SklUQ29kZT4m
JiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBp
bnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogICAgIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5o
ZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBpbnRyaW5z
aWMsIHNpZ25hdHVyZSk7Ci0gICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxU
aHVuaywgY29uc3RydWN0VGh1bmssIG5hbWUpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0
aW9uKHZtLCBXVEZNb3ZlKGNhbGxUaHVuayksIFdURk1vdmUoY29uc3RydWN0VGh1bmspLCBuYW1l
KTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIApAQCAtNTgsMTEgKzU4LDExIEBAIFN0cnVj
dHVyZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogfQogCi12b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
UGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3Ry
dWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmssIFJlZjxKSVRDb2Rl
PiYmIGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgIG1faml0Q29kZUZvckNhbGwgPSBjYWxsVGh1bms7Ci0gICAg
bV9qaXRDb2RlRm9yQ29uc3RydWN0ID0gY29uc3RydWN0VGh1bms7CisgICAgbV9qaXRDb2RlRm9y
Q2FsbCA9IFdURk1vdmUoY2FsbFRodW5rKTsKKyAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBX
VEZNb3ZlKGNvbnN0cnVjdFRodW5rKTsKICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hl
Y2sgPSBtX2ppdENvZGVGb3JDYWxsLT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7CiAg
ICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QtPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KTsKICAgICBtX25hbWUgPSBuYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5o
CmluZGV4IGU0ZDNlMDQ5NDU3YjQ1ZDAyNDU3ZThkZGE1NDQ5MGIzNzE0YWNjZWEuLmFhNTZjZjRk
Y2ZkMTRlYjJhYWJhYzM0YWMzZTUwMmViMDIwN2FmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAg
dHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKIAotICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0mLCBQYXNzUmVmUHRy
PEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8
SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiwgUmVmPEpJVENvZGU+JiYgY2Fs
bFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUmVmPEpJVENvZGU+JiYgY29uc3RydWN0
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5r
LCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUp
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmss
IFJlZjxKSVRDb2RlPiYmIGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDg1ZWM0YjVj
YTRiMWI3ZjU4ZTYzYWFhOTUyM2ZlYzY1Nzc2Y2FiZDguLmI2N2ZlODJiNTBhMjY1MDNmYWVkZWVh
ZjRmYWE5MWU4ZDgzZTY1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKIAogICAgIEpTT2JqZWN0
KiBjaGVja1N5bnRheChFeGVjU3RhdGUqKTsKIAotICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2Vu
ZXJhdGVkSklUQ29kZSgpCisgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKaW5k
ZXggOGQxZjI4NjA4ZmQ0MDM0ZGZlNmZhNWM3MDI0NjJjZDM0YWE0NTM3YS4uYTdhZmU3OGY2ZGZj
MTY1N2Y0NzAzYWZlYjRiNzIwNDQxNDI2YjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC03Myw5ICs3Myw4IEBAIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5IHsKICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVk
IGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KIAotICAgIHZvaWQgc2V0RGF0YShQYXNzUmVm
UHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CiAgICAg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9Ci0g
ICAgUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1
cm4gV1RGTW92ZShtX2RhdGEpOyB9CisgICAgUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4g
cmVsZWFzZURhdGEoKSB7IHJldHVybiBXVEZNb3ZlKG1fZGF0YSk7IH0KIAogICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhlc2UgZnVuY3Rpb25zLgogICAgIGJvb2wgY2FuQWRkS25vd25VbmlxdWVGb3JT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmlz
RW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaAppbmRl
eCBmZDVmMzBlZDFkZjA0OWYyNDk5YzlhMmUzYmIyYTc3YzAzNmM3MzIyLi41N2EzZjM1OWJhYTk3
NWYyM2QzYmI1NzEzNDU3Y2ViYTU2YzRiODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBLZXkuaApAQCAtNjMsOSArNjMsOSBAQCBzdHJ1Y3QgUmVnRXhwS2V5IHsKICAg
ICB7CiAgICAgfQogCi0gICAgUmVnRXhwS2V5KFJlZ0V4cEZsYWdzIGZsYWdzLCBjb25zdCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHBhdHRlcm4pCisgICAgUmVnRXhwS2V5KFJlZ0V4cEZsYWdzIGZs
YWdzLCBSZWZQdHI8U3RyaW5nSW1wbD4mJiBwYXR0ZXJuKQogICAgICAgICA6IGZsYWdzVmFsdWUo
ZmxhZ3MpCi0gICAgICAgICwgcGF0dGVybihwYXR0ZXJuKQorICAgICAgICAsIHBhdHRlcm4oV1RG
TW92ZShwYXR0ZXJuKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAppbmRleCBjYWM1ZDY5ZWNlMjU1NDYxNjVlYjQzM2Zl
OWVmZTdlNmE3MjgzNTU5Li42MGUyMWI2Y2Y0NmUxM2U0NjIzNTg0NDhmZjI4YjdkYTkxNDIyZmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAK
QEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgU21hbGxTdHJpbmdzU3RvcmFnZSB7CiBwdWJsaWM6CiAg
ICAgU21hbGxTdHJpbmdzU3RvcmFnZSgpOwogCi0gICAgU3RyaW5nSW1wbCogcmVwKHVuc2lnbmVk
IGNoYXIgY2hhcmFjdGVyKQorICAgIFN0cmluZ0ltcGwmIHJlcCh1bnNpZ25lZCBjaGFyIGNoYXJh
Y3RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlcHNbY2hhcmFjdGVyXS5nZXQoKTsKKyAg
ICAgICAgcmV0dXJuICptX3JlcHNbY2hhcmFjdGVyXS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xMTAsNyArMTEwLDcgQEAgU21hbGxTdHJpbmdzOjp+U21hbGxTdHJpbmdzKCkKIHZvaWQg
U21hbGxTdHJpbmdzOjpjcmVhdGVFbXB0eVN0cmluZyhWTSogdm0pCiB7CiAgICAgQVNTRVJUKCFt
X2VtcHR5U3RyaW5nKTsKLSAgICBtX2VtcHR5U3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZUhhc090
aGVyT3duZXIoKnZtLCBTdHJpbmdJbXBsOjplbXB0eSgpKTsKKyAgICBtX2VtcHR5U3RyaW5nID0g
SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCAqU3RyaW5nSW1wbDo6ZW1wdHkoKSk7
CiAgICAgQVNTRVJUKG1fbmVlZHNUb0JlVmlzaXRlZCk7CiB9CiAKQEAgLTExOSwxMSArMTE5LDEx
IEBAIHZvaWQgU21hbGxTdHJpbmdzOjpjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVk0qIHZt
LCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikKICAgICBpZiAoIW1fc3RvcmFnZSkKICAgICAgICAg
bV9zdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTbWFsbFN0cmluZ3NTdG9yYWdlPigpOwogICAg
IEFTU0VSVCghbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0pOwotICAgIG1fc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdID0gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVy
T3duZXIoKnZtLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KG1fc3RvcmFnZS0+cmVwKGNoYXJhY3Rl
cikpKTsKKyAgICBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXSA9IEpTU3RyaW5n
OjpjcmVhdGVIYXNPdGhlck93bmVyKCp2bSwgbV9zdG9yYWdlLT5yZXAoY2hhcmFjdGVyKSk7CiAg
ICAgQVNTRVJUKG1fbmVlZHNUb0JlVmlzaXRlZCk7CiB9CiAKLVN0cmluZ0ltcGwqIFNtYWxsU3Ry
aW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQor
U3RyaW5nSW1wbCYgU21hbGxTdHJpbmdzOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAodW5zaWdu
ZWQgY2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgaWYgKCFtX3N0b3JhZ2UpCiAgICAgICAgIG1fc3Rv
cmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U21hbGxTdHJpbmdzU3RvcmFnZT4oKTsKQEAgLTEzMiw3
ICsxMzIsNyBAQCBTdHJpbmdJbXBsKiBTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmlu
Z1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikKIAogdm9pZCBTbWFsbFN0cmluZ3M6OmluaXRp
YWxpemUoVk0qIHZtLCBKU1N0cmluZyomIHN0cmluZywgY29uc3QgY2hhciogdmFsdWUpCiB7Ci0g
ICAgc3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHZhbHVlKS5pbXBsKCkpOworICAgIHN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBB
dG9taWNTdHJpbmdJbXBsOjphZGQodmFsdWUpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIEFTU0VS
VChtX25lZWRzVG9CZVZpc2l0ZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4IDI2M2I0MjdhMDdiODY4MmQyMjEzYzFlNjAwMzQyMTI1
MzExNTAwOGQuLmYzMWI1Y2Q2NmZjMjZlY2QzMDRlZWYwOWUyMTFmZWViNTE5ODlmNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC03MSw3ICs3
MSw3IEBAIGNsYXNzIFNtYWxsU3RyaW5ncyB7CiAgICAgICAgIHJldHVybiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBX
VEY6OlN0cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNo
YXJhY3Rlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmdJbXBsJiBzaW5nbGVD
aGFyYWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpOwogCiAgICAgSlNTdHJp
bmcqKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkgeyByZXR1cm4gJm1fc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nc1swXTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCAwNzJjM2JiZWFmY2JlZTlkNjE0ZDBjN2Q0NjczZTk5OGQ2ZWM0Y2ZlLi40NDQ4
NmRiM2M1MjUxNTVjNzUwNGJiY2IwZjBjZWQ3M2M2MGNjMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTExNDMsMTAgKzExNDMsMTAgQEAgYm9v
bCBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlU2hh
cGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQorUmVmPFN0cnVj
dHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGJhc2VTaGFwZSA9IFN0cnVjdHVyZVNoYXBlOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1clNoYXBlID0gYmFzZVNoYXBl
OworICAgIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gYmFzZVNoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gY3VyU2hhcGUgPSBiYXNlU2hhcGUu
cHRyKCk7CiAgICAgU3RydWN0dXJlKiBjdXJTdHJ1Y3R1cmUgPSB0aGlzOwogICAgIEpTVmFsdWUg
Y3VyVmFsdWUgPSB2YWx1ZTsKICAgICB3aGlsZSAoY3VyU3RydWN0dXJlKSB7CkBAIC0xMTY4LDcg
KzExNjgsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0
dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKIAogICAgICAgICBpZiAoY3VyU3RydWN0dXJlLT5zdG9y
ZWRQcm90b3R5cGVTdHJ1Y3R1cmUoKSkgewogICAgICAgICAgICAgYXV0byBuZXdTaGFwZSA9IFN0
cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGN1clNoYXBlLT5zZXRQcm90byhu
ZXdTaGFwZS5wdHIoKSk7CisgICAgICAgICAgICBjdXJTaGFwZS0+c2V0UHJvdG8obmV3U2hhcGUu
Y29weVJlZigpKTsKICAgICAgICAgICAgIGN1clNoYXBlID0gV1RGTW92ZShuZXdTaGFwZSk7CiAg
ICAgICAgICAgICBjdXJWYWx1ZSA9IGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiAg
ICAgICAgIH0KQEAgLTExNzYsNyArMTE3Niw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+
IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICBjdXJT
dHJ1Y3R1cmUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gV1RGTW92ZShiYXNlU2hhcGUpOworICAgIHJldHVybiBiYXNl
U2hhcGU7CiB9CiAKIGJvb2wgU3RydWN0dXJlOjpjYW5Vc2VGb3JBbGxvY2F0aW9uc09mKFN0cnVj
dHVyZSogb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmlu
ZGV4IGMxN2EzNDM2YWExZDdjNWJhMDE4NDI5NmQxOTlhZDBlYjQ4N2YyZTYuLmIwZjQzYjcwMDI4
MjI5MGMzYTI3YzRiN2ZlYjFkYzFkYThkZTAxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiV2Vhay5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllcklubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRp
b25UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTU5Miw3ICs1OTEsNyBAQCBjbGFz
cyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgd2lsbFN0b3JlVmFs
dWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRPcHRpbWl6ZSwgSW5mZXJyZWRU
eXBlVGFibGU6Ok9sZFByb3BlcnR5KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFN0cnVjdHVy
ZVNoYXBlPiB0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUpOworICAgIFJlZjxTdHJ1Y3R1cmVTaGFw
ZT4gdG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlKTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIGlm
IHRoZSB0d28gc3RydWN0dXJlcyBtYXRjaCBlbm91Z2ggdGhhdCB0aGlzIG9uZSBjb3VsZCBiZSB1
c2VkIGZvciBhbGxvY2F0aW9ucwogICAgIC8vIG9mIHRoZSBvdGhlciBvbmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKaW5kZXgg
NGM4MDY5YThjMGYxODNjODM5NWIxNDBmOTUwMDE2N2Q1MDk1NDFkMC4uYjI1YjQ2NmY2NDE2Y2Iw
OGRkZjVmNWJjYmEwZjE4MWUzZmQ5NGE5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IFR5cGVMb2Nh
dGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRpb24oR2xvYmFsVmFyaWFibGVJRCBnbG9iYWxWYXJpYWJs
ZUlELCBpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUGFz
c1JlZlB0cjxUeXBlU2V0PiBnbG9iYWxUeXBlU2V0LCBWTSogdm0pCitzdGQ6OnBhaXI8VHlwZUxv
Y2F0aW9uKiwgYm9vbD4gVHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlvbihHbG9iYWxW
YXJpYWJsZUlEIGdsb2JhbFZhcmlhYmxlSUQsIGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kLCBSZWZQdHI8VHlwZVNldD4mJiBnbG9iYWxUeXBlU2V0LCBWTSog
dm0pCiB7CiAgICAgTG9jYXRpb25LZXkga2V5OwogICAgIGtleS5tX2dsb2JhbFZhcmlhYmxlSUQg
PSBnbG9iYWxWYXJpYWJsZUlEOwpAQCAtNDgsNyArNDgsNyBAQCBzdGQ6OnBhaXI8VHlwZUxvY2F0
aW9uKiwgYm9vbD4gVHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlvbihHbG9iYWxWYXJp
YWJsZQogICAgICAgICBsb2NhdGlvbi0+bV9zb3VyY2VJRCA9IHNvdXJjZUlEOwogICAgICAgICBs
b2NhdGlvbi0+bV9kaXZvdFN0YXJ0ID0gc3RhcnQ7CiAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90
RW5kID0gZW5kOwotICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gZ2xvYmFsVHlw
ZVNldDsKKyAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCA9IFdURk1vdmUoZ2xvYmFs
VHlwZVNldCk7CiAKICAgICAgICAgbV9sb2NhdGlvbk1hcFtrZXldID0gbG9jYXRpb247CiAgICAg
ICAgIGlzTmV3TG9jYXRpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmgKaW5kZXggOGU2NTQ1ZDgyMzY2NDg1NTRjODcwZDI5
MDMyOTY0OGM4YzlhZDBhYS4uMDA4ZWY3MzIxZDViNGRmNGY3NWQ0ZTA4NDdhNzNlYmRmMDI4MDNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9u
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25D
YWNoZS5oCkBAIC01Niw3ICs1Niw3IEBAIGNsYXNzIFR5cGVMb2NhdGlvbkNhY2hlIHsKICAgICAg
ICAgdW5zaWduZWQgbV9lbmQ7CiAgICAgfTsKIAotICAgIHN0ZDo6cGFpcjxUeXBlTG9jYXRpb24q
LCBib29sPiBnZXRUeXBlTG9jYXRpb24oR2xvYmFsVmFyaWFibGVJRCwgaW50cHRyX3QsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIFBhc3NSZWZQdHI8VHlwZVNldD4sIFZNKik7CisgICAg
c3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IGdldFR5cGVMb2NhdGlvbihHbG9iYWxWYXJp
YWJsZUlELCBpbnRwdHJfdCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUmVmUHRyPFR5
cGVTZXQ+JiYsIFZNKik7CiBwcml2YXRlOiAgICAgCiAgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJl
ZF9tYXA8TG9jYXRpb25LZXksIFR5cGVMb2NhdGlvbiosIEhhc2hNZXRob2Q8TG9jYXRpb25LZXk+
PiBMb2NhdGlvbk1hcDsKICAgICBMb2NhdGlvbk1hcCBtX2xvY2F0aW9uTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKaW5kZXggNmQ5
ODMzNThjMmQxZTI0NjMyOGM4NmYzZjdmZDQwOTY1ZGIxNzVkYy4uODVjNDlkMDQ2YmFmZWFjN2My
ZmRlYTIxNTI1OGQzYzQ0ZWZjZDExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBAIC04Miw4ICs4Miw4IEBAIHZvaWQgVHlwZVBy
b2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAg
ICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGVudHJ5LT5sb2NhdGlvbjsKICAgICAgICAgbG9j
YXRpb24tPm1fbGFzdFNlZW5UeXBlID0gdHlwZTsKICAgICAgICAgaWYgKGxvY2F0aW9uLT5tX2ds
b2JhbFR5cGVTZXQpCi0gICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hZGRU
eXBlSW5mb3JtYXRpb24odHlwZSwgc2hhcGUsIHN0cnVjdHVyZSk7Ci0gICAgICAgIGxvY2F0aW9u
LT5tX2luc3RydWN0aW9uVHlwZVNldC0+YWRkVHlwZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWRkVHlw
ZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLmNvcHlSZWYoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
bG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5hZGRUeXBlSW5mb3JtYXRpb24odHlwZSwg
V1RGTW92ZShzaGFwZSksIHN0cnVjdHVyZSk7CiAKICAgICAgICAgZW50cnkrKzsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDMxZWE3ZGYzNGZj
NDA0Zjk4ZTViNjRkYTllZjQyM2U2NjM0OTVjMTcuLmZiODExMzg0N2Y5NzMwYTNhM2ZhZWJhMTEy
YzhjOWZmYmRlZDc2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwCkBAIC00MSwxMiArNDEsMTIgQEAgVHlwZVNldDo6VHlwZVNldCgpCiB7CiB9CiAKLXZvaWQg
VHlwZVNldDo6YWRkVHlwZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBlIHR5cGUsIFBhc3NSZWZQdHI8
U3RydWN0dXJlU2hhcGU+IHBycE5ld1NoYXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgCit2b2lk
IFR5cGVTZXQ6OmFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlwZSB0eXBlLCBSZWZQdHI8U3Ry
dWN0dXJlU2hhcGU+JiYgcGFzc2VkTmV3U2hhcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbmV3U2hhcGUgPSBwcnBOZXdTaGFwZTsKICAgICBt
X3NlZW5UeXBlcyA9IG1fc2VlblR5cGVzIHwgdHlwZTsKIAotICAgIGlmIChzdHJ1Y3R1cmUgJiYg
bmV3U2hhcGUgJiYgIXJ1bnRpbWVUeXBlSXNQcmltaXRpdmUodHlwZSkpIHsKKyAgICBpZiAoc3Ry
dWN0dXJlICYmIHBhc3NlZE5ld1NoYXBlICYmICFydW50aW1lVHlwZUlzUHJpbWl0aXZlKHR5cGUp
KSB7CisgICAgICAgIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gbmV3U2hhcGUgPSBwYXNzZWROZXdTaGFw
ZS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmNvbnRhaW5z
KHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CkBAIC01NiwyNiArNTYsMjIgQEAgdm9pZCBUeXBlU2V0
OjphZGRUeXBlSW5mb3JtYXRpb24oUnVudGltZVR5cGUgdHlwZSwgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmVTaGFwZT4gcHIKICAgICAgICAgICAgIC8vIC0gV2UgZG9uJ3QgaGF2ZSB0d28gaW5zdGFuY2Vz
IG9mIHRoZSBzYW1lIHNoYXBlLiAoU2FtZSBzaGFwZXMgbWF5IGhhdmUgZGlmZmVyZW50IFN0cnVj
dHVyZXMpLgogICAgICAgICAgICAgLy8gLSBXZSBkb24ndCBoYXZlIHR3byBzaGFwZXMgdGhhdCBz
aGFyZSB0aGUgc2FtZSBwcm90b3R5cGUgY2hhaW4uIElmIHRoZXNlIHNoYXBlcyBzaGFyZSB0aGUg
c2FtZSAKICAgICAgICAgICAgIC8vICAgcHJvdG90eXBlIGNoYWluLCB0aGV5IHdpbGwgYmUgbWVy
Z2VkIGludG8gb25lIHNoYXBlLgotICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAg
ICAgICAgICAgU3RyaW5nIGhhc2ggPSBuZXdTaGFwZS0+cHJvcGVydHlIYXNoKCk7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHNlZW5TaGFwZSA6IG1fc3RydWN0dXJlSGlzdG9yeSkgewotICAgICAg
ICAgICAgICAgIGlmIChzZWVuU2hhcGUtPnByb3BlcnR5SGFzaCgpID09IGhhc2gpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9IAotICAgICAgICAgICAgICAgIGlmIChzZWVuU2hhcGUtPmhhc1Nh
bWVQcm90b3R5cGVDaGFpbihuZXdTaGFwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VlblNo
YXBlID0gU3RydWN0dXJlU2hhcGU6Om1lcmdlKHNlZW5TaGFwZSwgbmV3U2hhcGUpOwotICAgICAg
ICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGlmIChzZWVuU2hhcGUtPnByb3BlcnR5SGFzaCgpID09IGhhc2gpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBpZiAoc2VlblNoYXBl
LT5oYXNTYW1lUHJvdG90eXBlQ2hhaW4obmV3U2hhcGUuZ2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNlZW5TaGFwZSA9IFN0cnVjdHVyZVNoYXBlOjptZXJnZShzZWVuU2hhcGUuY29weVJl
ZigpLCBXVEZNb3ZlKG5ld1NoYXBlKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghZm91bmQp
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKSA8IDEwMCkK
LSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5LmFwcGVuZChuZXdTaGFwZSk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW1faXNPdmVyZmxvd24pCi0gICAgICAgICAgICAg
ICAgICAgIG1faXNPdmVyZmxvd24gPSB0cnVlOworICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJl
SGlzdG9yeS5zaXplKCkgPCAxMDApIHsKKyAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZUhpc3Rv
cnkuYXBwZW5kKFdURk1vdmUobmV3U2hhcGUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW1faXNPdmVyZmxvd24pCisgICAgICAgICAg
ICAgICAgbV9pc092ZXJmbG93biA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yMjIs
OCArMjE4LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW8KIHsKICAgICBhdXRvIGRlc2NyaXB0
aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKQotICAgICAgICBkZXNj
cmlwdGlvbi0+YWRkSXRlbShtX3N0cnVjdHVyZUhpc3RvcnkuYXQoaSktPmluc3BlY3RvclJlcHJl
c2VudGF0aW9uKCkpOworICAgIGZvciAoYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3Rvcnkp
CisgICAgICAgIGRlc2NyaXB0aW9uLT5hZGRJdGVtKHNoYXBlLT5pbnNwZWN0b3JSZXByZXNlbnRh
dGlvbigpKTsKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KQEAgLTM2NywzMCArMzYzLDMw
IEBAIFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICByZXR1cm4gKm1f
cHJvcGVydHlIYXNoOwogfQogCi1TdHJpbmcgU3RydWN0dXJlU2hhcGU6OmxlYXN0Q29tbW9uQW5j
ZXN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+IHNoYXBlcykKK1N0cmlu
ZyBTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0b3I8UmVmPFN0
cnVjdHVyZVNoYXBlPj4mIHNoYXBlcykKIHsKLSAgICBpZiAoIXNoYXBlcy5zaXplKCkpCisgICAg
aWYgKHNoYXBlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0g
ICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBvcmlnaW4gPSBzaGFwZXMuYXQoMCk7CisgICAgU3Ry
dWN0dXJlU2hhcGUqIG9yaWdpbiA9IHNoYXBlc1swXS5wdHIoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IHNoYXBlcy5zaXplKCk7IGkrKykgewogICAgICAgICBib29sIGZvdW5kTFVCID0g
ZmFsc2U7CiAgICAgICAgIHdoaWxlICghZm91bmRMVUIpIHsKLSAgICAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4gY2hlY2sgPSBzaGFwZXMuYXQoaSk7CisgICAgICAgICAgICBTdHJ1Y3R1
cmVTaGFwZSogY2hlY2sgPSBzaGFwZXNbaV0ucHRyKCk7CiAgICAgICAgICAgICBTdHJpbmcgY3Vy
Q3Rvck5hbWUgPSBvcmlnaW4tPm1fY29uc3RydWN0b3JOYW1lOwogICAgICAgICAgICAgd2hpbGUg
KGNoZWNrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrLT5tX2NvbnN0cnVjdG9yTmFtZSA9
PSBjdXJDdG9yTmFtZSkgewogICAgICAgICAgICAgICAgICAgICBmb3VuZExVQiA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBjaGVjayA9IGNoZWNrLT5tX3Byb3RvOworICAgICAgICAgICAgICAgIGNoZWNrID0gY2hl
Y2stPm1fcHJvdG8uZ2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWZvdW5k
TFVCKSB7Ci0gICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLT5tX3Byb3RvOwogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBiZWNhdXNlIHdlIHVzdWFs
bHkgYm90dG9tIG91dCBhdCAiT2JqZWN0IiwgYnV0IHRoZXJlIGFyZSBzb21lIHNldHMgb2YgT2Jq
ZWN0cwogICAgICAgICAgICAgICAgIC8vIHRoYXQgbWF5IGNhdXNlIHRoaXMgYmVoYXZpb3IuIFdl
IGZhbGwgYmFjayB0byAiT2JqZWN0IiBiZWNhdXNlIGl0J3Mgb3VyIHZlcnNpb24gb2YgVG9wLgot
ICAgICAgICAgICAgICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAgICAgIGlmICghb3JpZ2lu
LT5tX3Byb3RvKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJPYmpl
Y3QiKTsKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG8uZ2V0KCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTI5LDI1ICs1MjUsMjMgQEAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVT
aGFwZTo6aW5zcGVjdG8KICAgICByZXR1cm4gYmFzZTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVTaGFw
ZTo6aGFzU2FtZVByb3RvdHlwZUNoYWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHBycE90
aGVyKQorYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6aGFzU2FtZVByb3RvdHlwZUNoYWluKGNvbnN0IFN0
cnVjdHVyZVNoYXBlJiBvdGhlclJlZikKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNl
bGYgPSB0aGlzOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gb3RoZXIgPSBwcnBPdGhlcjsK
KyAgICBjb25zdCBTdHJ1Y3R1cmVTaGFwZSogc2VsZiA9IHRoaXM7CisgICAgY29uc3QgU3RydWN0
dXJlU2hhcGUqIG90aGVyID0gJm90aGVyUmVmOwogICAgIHdoaWxlIChzZWxmICYmIG90aGVyKSB7
CiAgICAgICAgIGlmIChzZWxmLT5tX2NvbnN0cnVjdG9yTmFtZSAhPSBvdGhlci0+bV9jb25zdHJ1
Y3Rvck5hbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNlbGYgPSBzZWxm
LT5tX3Byb3RvOwotICAgICAgICBvdGhlciA9IG90aGVyLT5tX3Byb3RvOworICAgICAgICBzZWxm
ID0gc2VsZi0+bV9wcm90by5nZXQoKTsKKyAgICAgICAgb3RoZXIgPSBvdGhlci0+bV9wcm90by5n
ZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gIXNlbGYgJiYgIW90aGVyOwogfQogCi1QYXNzUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UoY29uc3QgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmVTaGFwZT4gcHJwQSwgY29uc3QgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4g
cHJwQikKK1JlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKFJlZjxTdHJ1
Y3R1cmVTaGFwZT4mJiBhLCBSZWY8U3RydWN0dXJlU2hhcGU+JiYgYikKIHsKLSAgICBSZWZQdHI8
U3RydWN0dXJlU2hhcGU+IGEgPSBwcnBBOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gYiA9
IHBycEI7Ci0gICAgQVNTRVJUKGEtPmhhc1NhbWVQcm90b3R5cGVDaGFpbihiKSk7CisgICAgQVNT
RVJUKGEtPmhhc1NhbWVQcm90b3R5cGVDaGFpbihiLmdldCgpKSk7CiAKICAgICBhdXRvIG1lcmdl
ZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8gZmllbGQgOiBhLT5t
X2ZpZWxkcykgewpAQCAtNTc0LDEyICs1NjgsMTIgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFw
ZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNvbnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUK
IAogICAgIGlmIChhLT5tX3Byb3RvKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGItPm1fcHJv
dG8pOwotICAgICAgICBtZXJnZWQtPnNldFByb3RvKFN0cnVjdHVyZVNoYXBlOjptZXJnZShhLT5t
X3Byb3RvLCBiLT5tX3Byb3RvKSk7CisgICAgICAgIG1lcmdlZC0+c2V0UHJvdG8oU3RydWN0dXJl
U2hhcGU6Om1lcmdlKCphLT5tX3Byb3RvLCAqYi0+bV9wcm90bykpOwogICAgIH0KIAogICAgIG1l
cmdlZC0+bWFya0FzRmluYWwoKTsKIAotICAgIHJldHVybiBXVEZNb3ZlKG1lcmdlZCk7CisgICAg
cmV0dXJuIG1lcmdlZDsKIH0KIAogdm9pZCBTdHJ1Y3R1cmVTaGFwZTo6ZW50ZXJEaWN0aW9uYXJ5
TW9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKaW5kZXggMjJmMTc4
ZDNlZWY2ZjM2NDI5MWU4Mzc3YjI4YjFkYTA3MmVmNmFmZC4uMGMzNzAwM2E3NzJjZDM3NmJjODEw
NTY2NDYzMWE0ZjY1NDIyMTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVT
ZXQuaApAQCAtNjMsMTMgKzYzLDEzIEBAIGNsYXNzIFN0cnVjdHVyZVNoYXBlIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3RydWN0dXJlU2hhcGU+IHsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IGluc3BlY3RvclJlcHJlc2VudGF0aW9uKCk7
CiAgICAgdm9pZCBzZXRDb25zdHJ1Y3Rvck5hbWUoU3RyaW5nIG5hbWUpIHsgbV9jb25zdHJ1Y3Rv
ck5hbWUgPSAobmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIk9iamVjdCIpIDogbmFtZSk7
IH0KICAgICBTdHJpbmcgY29uc3RydWN0b3JOYW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5h
bWU7IH0KLSAgICB2b2lkIHNldFByb3RvKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBl
KSB7IG1fcHJvdG8gPSBzaGFwZTsgfQorICAgIHZvaWQgc2V0UHJvdG8oUmVmPFN0cnVjdHVyZVNo
YXBlPiYmIHNoYXBlKSB7IG1fcHJvdG8gPSBXVEZNb3ZlKHNoYXBlKTsgfQogICAgIHZvaWQgZW50
ZXJEaWN0aW9uYXJ5TW9kZSgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBTdHJpbmcgbGVhc3RD
b21tb25BbmNlc3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4pOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBtZXJnZShjb25zdCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlPiwgY29uc3QgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4pOwotICAg
IGJvb2wgaGFzU2FtZVByb3RvdHlwZUNoYWluKFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+KTsK
KyAgICBzdGF0aWMgU3RyaW5nIGxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJlZjxT
dHJ1Y3R1cmVTaGFwZT4+Jik7CisgICAgc3RhdGljIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gbWVyZ2Uo
UmVmPFN0cnVjdHVyZVNoYXBlPiYmLCBSZWY8U3RydWN0dXJlU2hhcGU+JiYpOworICAgIGJvb2wg
aGFzU2FtZVByb3RvdHlwZUNoYWluKGNvbnN0IFN0cnVjdHVyZVNoYXBlJik7CiAKICAgICBIYXNo
U2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX2ZpZWxk
czsKICAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBI
YXNoPiBtX29wdGlvbmFsRmllbGRzOwpAQCAtODUsNyArODUsNyBAQCBjbGFzcyBUeXBlU2V0IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVTZXQ+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFR5cGVTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwZVNldCk7
IH0KICAgICBUeXBlU2V0KCk7Ci0gICAgdm9pZCBhZGRUeXBlSW5mb3JtYXRpb24oUnVudGltZVR5
cGUsIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+LCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGFk
ZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlwZSwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiYmLCBT
dHJ1Y3R1cmUqKTsKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZSgpOwogICAgIFN0cmluZyBkdW1w
VHlwZXMoKSBjb25zdDsKICAgICBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBUeXBlU2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5
cGVTZXQ+IHsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3ZlcmZsb3duOwogICAgIFJ1bnRpbWVU
eXBlTWFzayBtX3NlZW5UeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4g
bV9zdHJ1Y3R1cmVIaXN0b3J5OworICAgIFZlY3RvcjxSZWY8U3RydWN0dXJlU2hhcGU+PiBtX3N0
cnVjdHVyZUhpc3Rvcnk7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDk3NGMzMTAyYWEzMDc1NzE5ZGVm
NDAyMjBiNjVhMzM0NjRkMGJhNTIuLmMyMjM5ZmRiZWQ3NWQzZTljNjVjZGJjYjk2NmU2ZmEyODMz
ZGQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTU0OSw4ICs1NDks
OCBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlucwogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMp
OwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZSgqdGhpcywKLSAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBv
bGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCi0gICAgICAgIGFkb3B0
UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRD
b2RlUmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RD
YWxsVGh1bmspKSwgY29uc3RydWN0b3IsCisgICAgICAgIGFkb3B0UmVmKCpuZXcgTmF0aXZlSklU
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRp
dmVfY2FsbF90cmFtcG9saW5lKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpLCBmdW5jdGlvbiwK
KyAgICAgICAgYWRvcHRSZWYoKm5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSks
IEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29uc3RydWN0b3IsCiAgICAgICAgIE5vSW50cmlu
c2ljLCBzaWduYXR1cmUsIG5hbWUpOwogfQogCkBAIC04NjgsOSArODY4LDkgQEAgdm9pZCBWTTo6
ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogICAgIHR5cGVQcm9maWxlcigpLT5kdW1wVHlwZVByb2Zp
bGVyRGF0YSgqdGhpcyk7CiB9CiAKLXZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiB0YXNrKQordm9pZCBWTTo6
cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPE1pY3JvdGFz
az4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UXVldWVkVGFzaz4oKnRoaXMsIGdsb2JhbE9iamVjdCwgdGFzaykpOworICAgIG1fbWljcm90
YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsIGdsb2Jh
bE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3Mo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMDg4MDA4YTliY2JiN2ZmNjI0MTMz
ZGVlOWFmNWRkNjM5YjVmNjhhNS4uNTI3YjhmODYzZmRkYTBiYWUwYTI5ZTVhM2JjNDg4MzcwYWJl
MWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xOTIsMTUgKzE5MiwxNSBA
QCBjbGFzcyBRdWV1ZWRUYXNrIHsKIHB1YmxpYzoKICAgICB2b2lkIHJ1bigpOwogCi0gICAgUXVl
dWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8
TWljcm90YXNrPiBtaWNyb3Rhc2spCisgICAgUXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgbWljcm90YXNrKQogICAgICAgICA6
IG1fZ2xvYmFsT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9taWNyb3Rhc2so
bWljcm90YXNrKQorICAgICAgICAsIG1fbWljcm90YXNrKFdURk1vdmUobWljcm90YXNrKSkKICAg
ICB7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFN0cm9uZzxKU0dsb2JhbE9iamVjdD4gbV9nbG9i
YWxPYmplY3Q7Ci0gICAgUmVmUHRyPE1pY3JvdGFzaz4gbV9taWNyb3Rhc2s7CisgICAgUmVmPE1p
Y3JvdGFzaz4gbV9taWNyb3Rhc2s7CiB9OwogCiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKQEAg
LTY1OSw3ICs2NTksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIGJvb2wgZW5hYmxlQ29u
dHJvbEZsb3dQcm9maWxlcigpOwogICAgIGJvb2wgZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIo
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxP
YmplY3QqLCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqLCBSZWY8TWljcm90YXNrPiYmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRyYWluTWljcm90YXNrcygpOwogICAgIHZvaWQgc2V0
R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coYm9vbCBnbG9iYWxDb25zdFJlZGVj
bGFyYXRpb25UaHJvdykgeyBtX2dsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93ID0g
Z2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uVGhyb3c7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
Z2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSBjb25zdCB7IHJldHVybiBtX2ds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCAzOGE1MWMxNTEzNzlm
ZjRhNGY0N2NhNzIzZmI2OGNlMTE4ZGUyNjNiLi5lZjg5NDM1OTI1NDBmZGViMjMzNGExYWE0Yzli
MjcwNTU1YWYzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcm
IG5ldwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChvcmlnSGVhZGVyKTsKICAgICBuZXdQcm92
aWRlclN0ci5hcHBlbmQobmV3Qm9keSk7CiAKLSAgICBhdXRvIG5ld1Byb3ZpZGVyID0gU3RyaW5n
U291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgU291cmNlT3JpZ2luIHsgIjxv
dmVycmlkZGVuPiIgfSwgIjxvdmVycmlkZGVuPiIpOworICAgIFJlZjxTb3VyY2VQcm92aWRlcj4g
bmV3UHJvdmlkZXIgPSBTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG5ld1Byb3ZpZGVyU3Ry
LCBTb3VyY2VPcmlnaW4geyAiPG92ZXJyaWRkZW4+IiB9LCAiPG92ZXJyaWRkZW4+Iik7CiAKICAg
ICBpbmZvLmZpcnN0TGluZSA9IDE7CiAgICAgaW5mby5saW5lQ291bnQgPSAxOyAvLyBGYWtpbmcg
aXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0dGVyIGZvciBub3cuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggMjZiYzVmMzVhNWViYzI4OGMy
YTQ2ZGYwYzM5ZjUxMjA0NWYwMjU3Yi4uMDZhOGVkYzgzMWI5M2E2MGJiNDJjZThhOGVlNGY0YmJl
MGQ5NThmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291
cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNv
ZGUuaApAQCAtNDUsMjEgKzQ1LDIxIEBAIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUgewogcHVibGlj
OgogICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYg
dXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3Np
dGlvbigpLCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlID0gSlNDOjpT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pCiAgICAgICAgIDogbV9wcm92aWRlcihK
U0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdp
biB7IHVybC5zdHJpbmcoKSB9LCB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5
cGUpKQotICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5v
bmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisgICAg
ICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGluZS5v
bmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAg
ICAgICwgbV91cmwodXJsKQogICAgIHsKICAgICB9CiAKICAgICBTY3JpcHRTb3VyY2VDb2RlKENh
Y2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBz
b3VyY2VUeXBlLCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4mJiBzY3JpcHRGZXRjaGVyKQogICAg
ICAgICA6IG1fcHJvdmlkZXIoQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXI6OmNyZWF0ZShjYWNo
ZWRTY3JpcHQsIHNvdXJjZVR5cGUsIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikpKQotICAgICAgICAs
IG1fY29kZShtX3Byb3ZpZGVyKQorICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLmNvcHlSZWYo
KSkKICAgICAgICAgLCBtX2NhY2hlZFNjcmlwdChjYWNoZWRTY3JpcHQpCiAgICAgewogICAgIH0K
IAogICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlw
dEZldGNoZXIpCiAgICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVy
OjpjcmVhdGUoc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHVybC5zdHJpbmcoKSwgV1RGTW92
ZShzY3JpcHRGZXRjaGVyKSB9LCB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5
cGUpKQotICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5v
bmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCisgICAg
ICAgICwgbV9jb2RlKG1fcHJvdmlkZXIuY29weVJlZigpLCBzdGFydFBvc2l0aW9uLm1fbGluZS5v
bmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAg
ICAgICwgbV91cmwodXJsKQogICAgIHsKICAgICB9CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFNj
cmlwdFNvdXJjZUNvZGUgewogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IG1f
cHJvdmlkZXI7CisgICAgUmVmPEpTQzo6U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAg
SlNDOjpTb3VyY2VDb2RlIG1fY29kZTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwogICAgIFVSTCBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRleCA1ZWJlNTgzNjcwMWZjMmZjOTRjMjE1MDQ4
NmI1OTkxNmVkOThiOGM4Li5iZjM1OGRjNmFiNDg1MDk4NjQ1MDFhMDViNmY3M2Q4YjBhYzk5Mjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC00MjEs
NyArNDIxLDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVyOjpmcmFtZU5hdmlnYXRlZChGcmFtZSYg
ZnJhbWUpCiAgICAgLy8gV2Ugc3RvcmUgdGhlIGlucHV0IGN1cnNvciBpbiBib3RoIERvY3VtZW50
IGFuZCBKU0RPTVdpbmRvdywgc28gdGhhdAogICAgIC8vIHJlcGxheSBzdGF0ZSBpcyBhY2Nlc3Np
YmxlIGZyb20gSmF2YVNjcmlwdENvcmUgYW5kIHNjcmlwdC1mcmVlIGxheW91dCBjb2RlLgogICAg
IGZyYW1lLmRvY3VtZW50KCktPnNldElucHV0Q3Vyc29yKCptX2FjdGl2ZUN1cnNvcik7Ci0gICAg
ZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0
SW5wdXRDdXJzb3IobV9hY3RpdmVDdXJzb3IuZ2V0KCkpOworICAgIGZyYW1lLnNjcmlwdCgpLmds
b2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPnNldElucHV0Q3Vyc29yKCptX2Fj
dGl2ZUN1cnNvcik7CiB9CiAKIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVEZXRhY2hlZChG
cmFtZSYgZnJhbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301610</attachid>
            <date>2017-02-15 06:34:57 -0800</date>
            <delta_ts>2017-02-15 06:34:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-168320-20170215233222.patch</filename>
            <type>text/plain</type>
            <size>118754</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi41MDY4YzZmODlkOTRhZDMy
NDNiYWViMDRmZTExZDljMjg5OTJmOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMDcgQEAKKzIwMTctMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCk6CisgICAgICAgIFVzZSBSZWY8
Vk0+IGZyb20gdGhlIGZhY3RvcnkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRS
ZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSk6CisgICAgICAgIFJldHVy
biBSZWY8PiBpbnN0ZWFkLgorCisgICAgICAgICogQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3Bw
OgorICAgICAgICAodGVzdEpTT05QYXJzZSk6CisgICAgICAgIFVzZSBSZWY8Vk0+LgorCisgICAg
ICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVy
OjpmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkpOgorICAgICAgICBVc2UgcmVmZXJlbmNl
IHNpbmNlIHdlIGFscmVhZHkgcGVyZm9ybSBudWxsIGNoZWNrLgorCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZik6CisgICAgICAgIFRha2UgUmVmPD4mJiBp
bnN0ZWFkIG9mIFBhc3NSZWZQdHI8Pi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5m
by5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFN0dWIpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldFNsb3dTdHViKToKKyAgICAgICAgVGFrZSBSZWY8PiYmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0cjw+LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICBUYWtlIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4uIEN1cnJlbnRseSwgdGhlIFNvdXJjZVByb3ZpZGVyIHdvdWxkIGJl
IG51bGxwdHIuCisgICAgICAgIFdlIHdpbGwgY2hhbmdlIGl0IHRvIFJlZjxTb3VyY2VQcm92aWRl
cj4gaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODMyNS4KKwor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgVGFrZSBS
ZWY8VHlwZVNldD4mJi4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnNldEpJVENvZGUpOgorICAgICAgICBUYWtlIFJlZjw+JiYgaW5z
dGVhZC4KKworICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdENvZGUpOgorICAgICAgICBSZXR1
cm4gUmVmUHRyPD4gaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgVGFrZSBS
ZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291cmNlUHJvdmlkZXIgd291bGUgYmUgbnVsbHB0ci4K
KworICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAg
KiBieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0
aW9uQ29kZUJsb2NrKToKKyAgICAgICAgVGFrZSBSZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291
cmNlUHJvdmlkZXIgd291bGUgYmUgbnVsbHB0ci4KKworICAgICAgICAqIGJ5dGVjb2RlL0dsb2Jh
bENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpHbG9iYWxDb2RlQmxvY2s6Okdsb2JhbENvZGVC
bG9jayk6CisgICAgICAgIFRha2UgUmVmUHRyPD4mJiBpbnN0ZWFkIHNpbmNlIFNvdXJjZVByb3Zp
ZGVyIHdvdWxlIGJlIG51bGxwdHIuCisKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6Ok1vZHVsZVByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICBUYWtlIFJlZlB0cjw+JiYgaW5zdGVhZCBzaW5jZSBTb3VyY2VQ
cm92aWRlciB3b3VsZSBiZSBudWxscHRyLgorCisgICAgICAgICogYnl0ZWNvZGUvUHJvZ3JhbUNv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAg
VGFrZSBSZWZQdHI8PiYmIGluc3RlYWQgc2luY2UgU291cmNlUHJvdmlkZXIgd291bGUgYmUgbnVs
bHB0ci4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2F0aGVyRGVidWdnZXJQYXJzZURhdGFGb3JTb3VyY2UpOgorICAgICAgICBFbnN1
cmUgdGhlIHByb3ZpZGVyIGlzIG5vdCBudWxscHRyLiBJdCBpcyBPSyBiZWNhdXNlIHdlIGFscmVh
ZHkKKyAgICAgICAgdG91Y2ggYHByb3ZpZGVyLT54eHhgIHZhbHVlcy4KKworICAgICAgICAqIGRm
Zy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tJbnNl
cnRpb25TZXQ6Omluc2VydCk6CisgICAgICAgIFRha2UgUmVmPD4mJiBpbnN0ZWFkLgorCisgICAg
ICAgICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5l
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgor
ICAgICAgICBQYXNzIFJlZjw+JiYgdG8gYXBwZW5kQmxvY2suCisKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgIFBhc3MgUmVmPFBsYW4+JiYuIEFuZCB0YWtlIFJl
Zjw+JiYgY2FsbGJhY2suCisKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmg6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIGFwcGVuZEJsb2NrIHRha2VzIFJlZjw+JiYuCisKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YXBwZW5kQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpqaXRDb2RlKToKKyAgICAgICAgKiBkZmcvREZHSklURmluYWxpemVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcik6CisgICAgICAgIFRha2Ug
UmVmPEpJVENvZGU+JiYuCisKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAg
ICAgICBQYXNzIGNvbXBpbGF0aW9uIHJlZmVyZW5jZSBzaW5jZSB3ZSBhbHJlYWR5IHBlcmZvcm0g
bnVsbCBjaGVjay4KKworICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuaDoKKyAgICAgICAg
KiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjplbnF1
ZXVlKToKKyAgICAgICAgVGFrZSBSZWY8UGxhbj4mJi4KKworICAgICAgICAqIGRmZy9ERkdXb3Jr
bGlzdC5oOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgIERlcmVmZXJl
bmNlIGFuZCBwYXNzIGppdENvZGUgJiBjb21waWxhdGlvbiByZWZlcmVuY2VzLgorCisgICAgICAg
ICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKToKKyAgICAgICAgUmV0dXJuIFJlZjw+IGluc3RlYWQuCisKKyAgICAgICAg
KiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0
dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjps
aW5rKToKKyAgICAgICAgUGFzcyBjb21waWxhdGlvbiByZWZlcmVuY2Ugc2luY2Ugd2UgYWxyZWFk
eSBwZXJmb3JtIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFzQ29kZVB0cik6CisgICAgICAgIFRha2Ug
UmVmPD4mJiBpbnN0ZWFkLiBBbmQgdGhpcyBkcm9wcyB1bm5lY2Vzc2FyeSBudWxsIGNoZWNrLgor
CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgIFBhc3MgUmVmPD4gdG8gTmF0aXZlRXhlY3V0YWJs
ZTo6Y3JlYXRlLgorCisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxM
SW50OjpzZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFt
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlw
b2ludCk6CisgICAgICAgIFVzZSBSZWY8PiYmIGluc3RlYWQuCisKKyAgICAgICAgKiBwYXJzZXIv
U291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2RlKToKKyAg
ICAgICAgKEpTQzo6U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbik6CisgICAgICAgIEFkZCBjb25z
dHJ1Y3RvcnMgdGFraW5nIFJlZjw+JiYuCisgICAgICAgIFdlIHN0aWxsIGhhdmUgY29uc3RydWN0
b3JzIHRoYXQgdGFrZSBSZWZQdHI8PiYmLgorICAgICAgICBXZSB3aWxsIGNoYW5nZSBpdCB0byBS
ZWY8U291cmNlUHJvdmlkZXI+JiYgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODMyNS4KKworICAgICAgICAqIHBhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRTb3VyY2VDb2RlOjpVbmxpbmtlZFNvdXJjZUNvZGUpOgor
ICAgICAgICBBZGQgY29uc3RydWN0b3JzIHRha2luZyBSZWY8PiYmLgorICAgICAgICBXZSBzdGls
bCBoYXZlIGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgUmVmUHRyPD4mJi4KKyAgICAgICAgV2Ugd2ls
bCBjaGFuZ2UgaXQgdG8gUmVmPFNvdXJjZVByb3ZpZGVyPiYmIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgzMjUuCisKKyAgICAgICAgKiBwcm9maWxlci9Qcm9m
aWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkRhdGFiYXNlOjphZGRD
b21waWxhdGlvbik6CisgICAgICAgIFRha2UgUmVmPENvbXBpbGF0aW9uPiYmLgorCisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oOgorICAgICAgICBDaGFuZ2UgZGF0YSBzdHJ1
Y3R1cmVzIHRvIGhvbGQgUmVmPD4gaW5zdGVhZCBvZiBSZWZQdHI8Pi4KKworICAgICAgICAqIHJ1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6Omdl
bmVyYXRlZEpJVENvZGUpOgorICAgICAgICBSZXR1cm4gUmVmPD4gaW5zdGVhZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZvcik6CisgICAgICAgIFJldHVybiBSZWY8PiBpbnN0
ZWFkLgorCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllcjo6YWRkKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkOCk6CisgICAg
ICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcik6CisgICAgICAgIEFuZCB0YWtlIFJlZjw+
IGluIHRoaXMgbWV0aG9kLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5wdXRDdXJzb3IpOgorICAgICAgICBDaGFu
Z2UgbV9pbnB1dEN1cnNvciBmcm9tIFJlZlB0cjw+IHRvIFJlZjw+LgorCisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUYWtlIFJlZjxQcm9wZXJ0eU5h
bWVBcnJheT4mJi4KKworICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZUVudW1lcmF0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OkpTU3RyaW5nKToKKyAg
ICAgICAgVGFrZSBSZWY8U3RyaW5nSW1wbD4mJiBzaW5jZSB3ZSBkbyBub3QgYWxsb3cgbnVsbHB0
ciBpbiB0aGlzIGNvbnN0cnVjdG9yLgorCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAg
IFRha2UgUmVmPFN0cmluZ0ltcGw+JiYgaW4gdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMuIEFuZCBk
cm9wIHVubmVjZXNzYXJ5IGFzc2VydGlvbnMuCisKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcpOgorICAgICAgICBVc2UgU3RyaW5nSW1wbDo6Y3JlYXRlKCkgd2hpY2ggcmV0
dXJucyBSZWY8Pi4KKworICAgICAgICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOgorICAgICAg
ICBEZXJlZmVyZW5jZSBpbXBsKCkgc2luY2Ugd2UgZW5zdXJlIHRoYXQgYHMubGVuZ3RoKCkgPiAx
YC4KKworICAgICAgICAoSlNDOjpqc1N0cmluZyk6CisgICAgICAgIFVzZSByZWxlYXNlTm9uTnVs
bCgpIHNpbmNlIHdlIGVuc3VyZSB0aGF0IGBzLmxlbmd0aCgpID4gMWAuCisKKyAgICAgICAgKEpT
Qzo6anNPd25lZFN0cmluZyk6CisgICAgICAgIFVzZSByZWxlYXNlTm9uTnVsbCgpIHNpbmNlIHdl
IGVuc3VyZSB0aGF0IGBzLmxlbmd0aCgpID4gMWAuCisKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICBUYWtlIFJl
ZjxKSVRDb2RlPiYmLgorCisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICBSZXR1cm4gUmVm
PEpJVENvZGU+LgorCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5hbWVBcnJheTo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgaXMg
bm90IHVzZWQuCisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cEtleS5oOgorICAgICAgICAoSlND
OjpSZWdFeHBLZXk6OlJlZ0V4cEtleSk6CisgICAgICAgIFRha2UgUmVmUHRyPD4mJi4KKworICAg
ICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJp
bmdzU3RvcmFnZTo6cmVwKToKKyAgICAgICAgUmV0dXJuIFN0cmluZ0ltcGwmIHNpbmNlIG1fcmVw
cyBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAo
SlNDOjpTbWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5U3RyaW5nKToKKyAgICAgICAgRGVyZWZlcmVu
Y2UgU3RyaW5nSW1wbDo6ZW1wdHkoKS4KKworICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OmNy
ZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyk6CisgICAgICAgIFVzZSBTdHJpbmdJbXBsJi4KKwor
ICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCk6Cisg
ICAgICAgIFJldHVybiBTdHJpbmdJbXBsJi4KKworICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6
OmluaXRpYWxpemUpOgorICAgICAgICBVc2UgQXRvbWljU3RyaW5nSW1wbDo6YWRkIGluc3RlYWQu
CisKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBl
KToKKyAgICAgICAgUmV0dXJuIFJlZjw+LgorCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKEpT
Qzo6VHlwZUxvY2F0aW9uQ2FjaGU6OmdldFR5cGVMb2NhdGlvbik6CisgICAgICAgIFRha2UgUmVm
UHRyPFR5cGVTZXQ+JiYuCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmg6
CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICBQYXNzIFJl
Zjw+JiYuCisKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmll
cyk6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNl
dDo6YWRkVHlwZUluZm9ybWF0aW9uKToKKyAgICAgICAgVGFrZSBSZWZQdHI8PiYmIHNpbmNlIGl0
IGNhbiBiZSBudWxscHRyLgorICAgICAgICBBbmQgY2xlYW4gdXAgIm5vdCBmb3VuZCIgY29kZS4K
KworICAgICAgICAoSlNDOjpUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMpOgor
ICAgICAgICBVc2UgcmFuZ2UgYmFzZWQgaXRlcmF0aW9uLgorCisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNoYXBlOjpsZWFzdENvbW1vbkFuY2VzdG9yKToKKyAgICAgICAgV2UgZm91bmQgdGhhdCB0
aGlzIG1ldGhvZCBhY2NpZGVudGFsbHkgdGFrZXMgYGNvbnN0IFZlY3Rvcjw+YCBpbnN0ZWFkIG9m
IGBjb25zdCBWZWN0b3I8PiZgLgorICAgICAgICBBbmQgaW50ZXJuYWxseSwgd2UganVzdCB1c2Ug
cmF3IHBvaW50ZXJzIHNpbmNlIHRoZXNlIFN0cnVjdHVyZVNoYXBlcyBhcmUgb3duZWQgYnkgdGhl
IG1fcHJvdG8gdHJlZXMgd2hpY2ggc3RhcnRzIGZyb20gdGhlIGdpdmVuIFZlY3Rvcjw+LgorCisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpoYXNTYW1lUHJvdG90eXBlQ2hhaW4pOgorICAg
ICAgICBUYWtlIGNvbnN0IHJlZmVyZW5jZSBpbnN0ZWFkLiBBbmQgdXNlIHJhdyBwb2ludGVycyBp
bnRlcm5hbGx5LgorCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjptZXJnZSk6CisgICAg
ICAgIFRha2UgUmVmPD4mJi4KKworICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6c2V0UHJvdG8pOgorICAgICAgICBUYWtlIFJlZjw+JiYu
CisKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RG
dW5jdGlvbik6CisgICAgICAgIFBhc3MgUmVmPD4mJi4KKworICAgICAgICAoSlNDOjpWTTo6cXVl
dWVNaWNyb3Rhc2spOgorICAgICAgICBUYWtlIGFuZCBwYXNzIFJlZjw+JiYuCisKKyAgICAgICAg
KiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlF1ZXVlZFRhc2s6OlF1ZXVlZFRhc2spOgor
ICAgICAgICBUYWtlIFJlZjw+JiYuCisKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbk92ZXJyaWRl
cy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVPdmVycmlkZUluZm8pOgorICAgICAgICBX
ZSBuZWVkIHRoaXMgY2hhbmdlIGR1ZSB0byBSZWY8PiYmIGFuZCBSZWZQdHI8PiYmIGFtYmlndWl0
eSBvZiBTb3VyY2VDb2RlIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgT25jZSBTb3VyY2VDb2RlIGlz
IGZpeGVkIHRvIG9ubHkgdGFrZSBSZWY8PiYmLCB0aGlzIGNoYW5nZSBpcyB1bm5lY2Vzc2FyeS4K
KwogMjAxNy0wMi0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBhc3luY0Rpc2Fzc2VtYmx5IGNyYXNoZXMgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdkZjRk
ZTdmZjFlOWM2ODQzNzk5NWExZWEwNmFjODRkODlmYzMxNS4uYTgyYzc5MWQ5NGIzZjliNjA5OWFh
YzA2OWQxNzE1Yjc4ZDNjNmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAy
LTE0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIERyb3AgUGFzc1JlZlB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4MzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlOjpTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgVXNl
IFJlZiBhbmQgcGFzcyBpdCB0byBTb3VyY2VDb2RlLgorICAgICAgICAqIHJlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OmZyYW1l
TmF2aWdhdGVkKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UuCisKIDIwMTctMDItMTMgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBVcGRh
dGUgdm9sdW1lIGFuZCBzY3J1YmJpbmcgc2xpZGVyIHRvIG1hdGNoIEhJIGRlc2lnbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAxMzc2OWRmM2NiY2Rk
OWFjMDQ3NDYzZjkxMmU0ZTI5OTExNjY2ZjcwLi5lN2RhZDE5YjAwY2M3ZWM5OTAyNjM0ZWFkZDU3
MjgwYzc5NWJmZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCkBAIC0xMzMsMTIgKzEzMywxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250
ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogewogICAg
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgIFJlZlB0cjxWTT4gdm0gPSBncm91cCA/IFBh
c3NSZWZQdHI8Vk0+KHRvSlMoZ3JvdXApKSA6IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoKTsKKyAg
ICBSZWY8Vk0+IHZtID0gZ3JvdXAgPyBSZWY8Vk0+KCp0b0pTKGdyb3VwKSkgOiBWTTo6Y3JlYXRl
Q29udGV4dEdyb3VwKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLnB0cigpKTsKIAogICAgIGlmICghZ2xvYmFsT2JqZWN0
Q2xhc3MpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFs
T2JqZWN0OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwg
anNOdWxsKCkpKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGUodm0uZ2V0KCksIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0uZ2V0KCksIGpzTnVsbCgpKSk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgICAgIGlmIChKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVkQnlEZWZhdWx0
KCkpCiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
dHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxD
b250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogICAg
ICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKSk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUoKnZtLCBnbG9i
YWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZSgqdm0sIDAsIGpzTnVsbCgpKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUodm0uZ2V0KCks
IGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLmdldCgpLCAwLCBqc051bGwoKSkpOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
Z2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShleGVjKTsKICAgICBpZiAoIXByb3RvdHlwZSkK
ICAgICAgICAgcHJvdG90eXBlID0ganNOdWxsKCk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5yZXNldFBy
b3RvdHlwZSgqdm0sIHByb3RvdHlwZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlw
ZSh2bS5nZXQoKSwgcHJvdG90eXBlKTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICBpZiAoSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVmYXVsdCgpKQog
ICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IGYyYWQ5NDlkOTBh
MDY2NDY5NzI5N2YwZTg4NzFiMjRhZTc5ODlmNGQuLjc5MTczOGI5NWUwNTcyMjE4OTY2NmNmMTBm
NTg3ZWRlMzI0YzI1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
Y3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBPcGFx
dWVKU1NjcmlwdCA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFdURjo6UmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlKQorICAgIHN0YXRpYyBXVEY6OlJlZjxPcGFxdWVK
U1NjcmlwdD4gY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6OmFkb3B0UmVmKCpuZXcgT3BhcXVl
SlNTY3JpcHQodm0sIHNvdXJjZU9yaWdpbiwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJj
ZSkpOwogICAgIH0KQEAgLTk3LDcgKzk3LDcgQEAgSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVS
ZWZlcmVuY2luZ0ltbW9ydGFsQVNDSUlUZXh0KEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHQKICAg
ICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0sIFNvdXJjZU9yaWdpbiB7
IHNvdXJjZVVSTFN0cmluZyB9LCBzb3VyY2VVUkxTdHJpbmcsIHN0YXJ0aW5nTGluZU51bWJlciwg
U3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNvdXJjZSwgbGVuZ3RoKSkpOwog
CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7Ci0gICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNl
Q29kZShyZXN1bHQpLCBlcnJvcikpIHsKKyAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VD
b2RlKHJlc3VsdC5jb3B5UmVmKCkpLCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2Fn
ZSkKICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGVy
cm9yLm1lc3NhZ2UoKSkubGVha1JlZigpOwogICAgICAgICBpZiAoZXJyb3JMaW5lKQpAQCAtMTA1
LDcgKzEwNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRh
bEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQubGVha1JlZigpOworICAgIHJldHVybiAm
cmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3Ry
aW5nKEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQg
c3RhcnRpbmdMaW5lTnVtYmVyLCBKU1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJv
ck1lc3NhZ2UsIGludCogZXJyb3JMaW5lKQpAQCAtMTE5LDcgKzExOSw3IEBAIEpTU2NyaXB0UmVm
IEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAs
IEpTU3RyaW5nUmVmCiAgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZt
LCBTb3VyY2VPcmlnaW4geyBzb3VyY2VVUkxTdHJpbmcgfSwgc291cmNlVVJMU3RyaW5nLCBzdGFy
dGluZ0xpbmVOdW1iZXIsIHNvdXJjZS0+c3RyaW5nKCkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7Ci0gICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQpLCBlcnJvcikp
IHsKKyAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdC5jb3B5UmVmKCkp
LCBlcnJvcikpIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkKICAgICAgICAgICAgICplcnJv
ck1lc3NhZ2UgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGVycm9yLm1lc3NhZ2UoKSkubGVha1Jl
ZigpOwogICAgICAgICBpZiAoZXJyb3JMaW5lKQpAQCAtMTI3LDcgKzEyNyw3IEBAIEpTU2NyaXB0
UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3Jv
dXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiByZXN1bHQubGVha1JlZigpOworICAgIHJldHVybiAmcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1NjcmlwdFJlZiBzY3JpcHQpCkBAIC0xNTIsNyArMTUy
LDcgQEAgSlNWYWx1ZVJlZiBKU1NjcmlwdEV2YWx1YXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1NjcmlwdFJlZiBzY3JpcHQsIEpTVmFsdWVSZWYKICAgICB9CiAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1
ZVJlZiA/IHRvSlMoZXhlYywgdGhpc1ZhbHVlUmVmKSA6IGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShleGVjLCBTb3VyY2VDb2RlKHNjcmlwdCksIHRoaXNWYWx1
ZSwgaW50ZXJuYWxFeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZXhl
YywgU291cmNlQ29kZSgqc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlvbik7CiAg
ICAgaWYgKGludGVybmFsRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgaW50ZXJuYWxFeGNlcHRpb24tPnZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFy
c2VUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNlVGVz
dC5jcHAKaW5kZXggMjc5N2MzYzhlYTVkMTVjMTgzYmVhMWUyZDRkMjU5MDEzMjc2MDY3YS4uYWNm
MDI5NzcwYWU2OWVhZmRlMGM2ZGMwNDY1NDVhNWRmMTc0MWY5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwCkBAIC0zOCwyNyArMzgs
MjcgQEAgaW50IHRlc3RKU09OUGFyc2UoKQogewogICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CiAK
LSAgICBSZWZQdHI8Vk0+IHZtID0gVk06OmNyZWF0ZSgpOworICAgIHsKKyAgICAgICAgUmVmPFZN
PiB2bSA9IFZNOjpjcmVhdGUoKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0uZ2V0KCkp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7
CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0ucHRyKCkpOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bS5nZXQoKSwg
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bS5nZXQoKSwganNOdWxsKCkpKTsKIAot
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpT
VmFsdWUgdjAgPSBKU09OUGFyc2UoZXhlYywgIiIpOwotICAgIEpTVmFsdWUgdjEgPSBKU09OUGFy
c2UoZXhlYywgIiMkJV4iKTsKLSAgICBKU1ZhbHVlIHYyID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmlu
ZygpKTsKLSAgICBVQ2hhciBlbXB0eVVDaGFyQXJyYXlbMV0gPSB7ICdcMCcgfTsKLSAgICBKU1Zh
bHVlIHYzID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmluZyhlbXB0eVVDaGFyQXJyYXksIDApKTsKLSAg
ICBKU1ZhbHVlIHY0OwotICAgIEpTVmFsdWUgdjUgPSBKU09OUGFyc2UoZXhlYywgIjEyMyIpOwor
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAg
ICAgICAgSlNWYWx1ZSB2MCA9IEpTT05QYXJzZShleGVjLCAiIik7CisgICAgICAgIEpTVmFsdWUg
djEgPSBKU09OUGFyc2UoZXhlYywgIiMkJV4iKTsKKyAgICAgICAgSlNWYWx1ZSB2MiA9IEpTT05Q
YXJzZShleGVjLCBTdHJpbmcoKSk7CisgICAgICAgIFVDaGFyIGVtcHR5VUNoYXJBcnJheVsxXSA9
IHsgJ1wwJyB9OworICAgICAgICBKU1ZhbHVlIHYzID0gSlNPTlBhcnNlKGV4ZWMsIFN0cmluZyhl
bXB0eVVDaGFyQXJyYXksIDApKTsKKyAgICAgICAgSlNWYWx1ZSB2NDsKKyAgICAgICAgSlNWYWx1
ZSB2NSA9IEpTT05QYXJzZShleGVjLCAiMTIzIik7CiAKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwg
KHYwICE9IHYxKTsKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYxICE9IHYyKTsKLSAgICBmYWls
ZWQgPSBmYWlsZWQgfHwgKHYyICE9IHYzKTsKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHYzICE9
IHY0KTsKLSAgICBmYWlsZWQgPSBmYWlsZWQgfHwgKHY0ID09IHY1KTsKLQotICAgIHZtID0gbnVs
bHB0cjsKKyAgICAgICAgZmFpbGVkID0gZmFpbGVkIHx8ICh2MCAhPSB2MSk7CisgICAgICAgIGZh
aWxlZCA9IGZhaWxlZCB8fCAodjEgIT0gdjIpOworICAgICAgICBmYWlsZWQgPSBmYWlsZWQgfHwg
KHYyICE9IHYzKTsKKyAgICAgICAgZmFpbGVkID0gZmFpbGVkIHx8ICh2MyAhPSB2NCk7CisgICAg
ICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjQgPT0gdjUpOworICAgIH0KIAogICAgIGlmIChmYWls
ZWQpCiAgICAgICAgIHByaW50ZigiRkFJTDogSlNPTlBhcnNlIFN0cmluZyB0ZXN0LlxuIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCA5
MDEwOTY3Yjk5ODM3OGI1YjI2MGJlNTRlYmJlZGFhY2U3ZjBkMWE3Li41OTE4Y2Y5OWQ0YTgxZjg0
YjllMjcwNmYzY2Q3YjU1ZjE2YTZlNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTGlua0J1ZmZlcjo6Q29k
ZVJlZiBMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKQogICAgIAog
ICAgIEFTU0VSVChtX2RpZEFsbG9jYXRlKTsKICAgICBpZiAobV9leGVjdXRhYmxlTWVtb3J5KQot
ICAgICAgICByZXR1cm4gQ29kZVJlZihtX2V4ZWN1dGFibGVNZW1vcnkpOworICAgICAgICByZXR1
cm4gQ29kZVJlZigqbV9leGVjdXRhYmxlTWVtb3J5KTsKICAgICAKICAgICByZXR1cm4gQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihtX2NvZGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oCmluZGV4IGE3MWE0ODZhMDJjMmNmZTI1ZTk2ZGE0NDk4Mjc5MDRk
OGRmYjc5N2YuLmMzMWNmODUyNjAwY2IwYzg5NmQ5NTBmMWM0ZmM5MzdhMGVlOTAxZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMzU0LDkgKzM1Myw5IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB7CiAgICAgewogICAgIH0KIAotICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZihQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1dGFi
bGVNZW1vcnkpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKFJlZjxFeGVjdXRhYmxlTWVtb3J5
SGFuZGxlPiYmIGV4ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgIDogbV9jb2RlUHRyKGV4ZWN1dGFi
bGVNZW1vcnktPnN0YXJ0KCkpCi0gICAgICAgICwgbV9leGVjdXRhYmxlTWVtb3J5KGV4ZWN1dGFi
bGVNZW1vcnkpCisgICAgICAgICwgbV9leGVjdXRhYmxlTWVtb3J5KFdURk1vdmUoZXhlY3V0YWJs
ZU1lbW9yeSkpCiAgICAgewogICAgICAgICBBU1NFUlQobV9leGVjdXRhYmxlTWVtb3J5LT5pc01h
bmFnZWQoKSk7CiAgICAgICAgIEFTU0VSVChtX2V4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IDBh
OTEwMjAxMzgyMDYwYmFiMWUyMmZkMTA1ZWY2ZjcyM2IxZDc5ZTAuLjkxZDNkZDhmNzViMTIyODNl
MGFhZGQ3ODhlMGY5Njc1OTBmNmRlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTIwNywxMCArMjA3LDEwIEBAIGNsYXNzIENhbGxMaW5r
SW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKICAgICB2
b2lkIHNldEV4ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihFeGVjdXRhYmxlQmFzZSopOwogICAg
IEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCk7CiAgICAgCi0gICAgdm9pZCBzZXRTdHViKFBh
c3NSZWZQdHI8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IG5ld1N0dWIpCisgICAgdm9pZCBz
ZXRTdHViKFJlZjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHViKQogICAgIHsK
ICAgICAgICAgY2xlYXJTdHViKCk7Ci0gICAgICAgIG1fc3R1YiA9IG5ld1N0dWI7CisgICAgICAg
IG1fc3R1YiA9IFdURk1vdmUobmV3U3R1Yik7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclN0dWIo
KTsKQEAgLTIyMCw5ICsyMjAsOSBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNS
YXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIHJldHVybiBtX3N0dWIuZ2V0
KCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRTbG93U3R1YihQYXNzUmVmUHRyPEpJVFN0dWJSb3V0
aW5lPiBuZXdTbG93U3R1YikKKyAgICB2b2lkIHNldFNsb3dTdHViKFJlZjxKSVRTdHViUm91dGlu
ZT4mJiBuZXdTbG93U3R1YikKICAgICB7Ci0gICAgICAgIG1fc2xvd1N0dWIgPSBuZXdTbG93U3R1
YjsKKyAgICAgICAgbV9zbG93U3R1YiA9IFdURk1vdmUobmV3U2xvd1N0dWIpOwogICAgIH0KIAog
ICAgIHZvaWQgY2xlYXJTbG93U3R1YigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IGViMjZhNmQ2NGJkY2ZkNzBjOGU0MzZlZTliZjlhNThlNzFi
NWRiNGQuLjE2YzU4NzE4NjQyNGUyODYxZDM3MzNiMWY2N2UyMTc5YWZmODUwZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xODg5LDcgKzE4
ODksNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiB9CiAKIENvZGVCbG9jazo6Q29kZUJsb2NrKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAotICAgIEpTU2NvcGUq
IHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWdu
ZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgSlNT
Y29wZSogc2NvcGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlciwgdW5z
aWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCiAgICAg
OiBKU0NlbGwoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2dsb2JhbE9iamVjdChzY29wZS0+Z2xv
YmFsT2JqZWN0KCktPnZtKCksIHRoaXMsIHNjb3BlLT5nbG9iYWxPYmplY3QoKSkKICAgICAsIG1f
bnVtQ2FsbGVlTG9jYWxzKHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKQEAg
LTE5MTIsNyArMTkxMiw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgLCBtX3ZtKHVu
bGlua2VkQ29kZUJsb2NrLT52bSgpKQogICAgICwgbV90aGlzUmVnaXN0ZXIodW5saW5rZWRDb2Rl
QmxvY2stPnRoaXNSZWdpc3RlcigpKQogICAgICwgbV9zY29wZVJlZ2lzdGVyKHVubGlua2VkQ29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpCi0gICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikK
KyAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlUHJvdmlkZXIpKQogICAgICwgbV9zb3VyY2VP
ZmZzZXQoc291cmNlT2Zmc2V0KQogICAgICwgbV9maXJzdExpbmVDb2x1bW5PZmZzZXQoZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQpAQCAtMjMwNCw3ICsy
MzA0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgc3RkOjpwYWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IGxvY2F0aW9uUGFpciA9IHZtLnR5
cGVQcm9maWxlcigpLT50eXBlTG9jYXRpb25DYWNoZSgpLT5nZXRUeXBlTG9jYXRpb24oZ2xvYmFs
VmFyaWFibGVJRCwKLSAgICAgICAgICAgICAgICBvd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCks
IGRpdm90U3RhcnQsIGRpdm90RW5kLCBnbG9iYWxUeXBlU2V0LCAmdm0pOworICAgICAgICAgICAg
ICAgIG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIFdU
Rk1vdmUoZ2xvYmFsVHlwZVNldCksICZ2bSk7CiAgICAgICAgICAgICBUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uID0gbG9jYXRpb25QYWlyLmZpcnN0OwogICAgICAgICAgICAgYm9vbCBpc05ld0xvY2F0
aW9uID0gbG9jYXRpb25QYWlyLnNlY29uZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IDExNTliYjM5OGJhYTNhYzJmMjA4YTdlZjY2Yjk1YjkxZDIx
MjA1OWEuLjE5NDJlYTIxYzYzYjI1Mjk5ZDk2ZTFlOGRiOGY1ODdlOTcxNTczMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTExOCw3ICsxMTgsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJvdGVjdGVkOgogICAgIENv
ZGVCbG9jayhWTSosIFN0cnVjdHVyZSosIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBv
dGhlcik7Ci0gICAgQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqLCBQYXNzUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpOworICAgIENvZGVCbG9jayhWTSosIFN0cnVjdHVyZSosIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU1Njb3BlKiwg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXQsIHVuc2lnbmVk
IGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
Q29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayosIEpTU2NvcGUqKTsKQEAgLTMxMiwxNSArMzEyLDE1IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vIEV4YWN0bHkgZXF1aXZhbGVudCB0byBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zvcihjb2RlQmxv
Y2stPnNwZWNpYWxpemF0aW9uS2luZCgpKQogICAgIENvZGVCbG9jayogbmV3UmVwbGFjZW1lbnQo
KTsKICAgICAKLSAgICB2b2lkIHNldEpJVENvZGUoUGFzc1JlZlB0cjxKSVRDb2RlPiBjb2RlKQor
ICAgIHZvaWQgc2V0SklUQ29kZShSZWY8SklUQ29kZT4mJiBjb2RlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAgICAgICAgaGVhcCgpLT5yZXBvcnRFeHRy
YU1lbW9yeUFsbG9jYXRlZChjb2RlLT5zaXplKCkpOwogICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIFRo
aXMgaXMgcHJvYmFibHkgbm90IG5lZWRlZCBiZWNhdXNlIHRoZSBsb2NrIHdpbGwgYWxzbyBkbyBz
b21ldGhpbmcgc2ltaWxhciwgYnV0IGl0J3MgZ29vZCB0byBiZSBwYXJhbm9pZC4KLSAgICAgICAg
bV9qaXRDb2RlID0gY29kZTsKKyAgICAgICAgbV9qaXRDb2RlID0gV1RGTW92ZShjb2RlKTsKICAg
ICB9Ci0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2Rl
OyB9CisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0K
ICAgICBzdGF0aWMgcHRyZGlmZl90IGppdENvZGVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQ29kZUJsb2NrLCBtX2ppdENvZGUpOyB9CiAgICAgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXZhbENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2
YWxDb2RlQmxvY2suaAppbmRleCBlOWU2MWJhNjRjMThmYTMyNGQ4ZDQ2ZTlkNDlmYjNjMzE5OGI3
MTc1Li5mZGU3YjExNjVmYWM0YzkxNTRlMGNlNzlkMTc1MDVlMjk3YzI2MTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgKQEAgLTQ3LDEwICs0
NywxMCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAg
ICAgfQogCiAgICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIEV2YWxFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssCi0gICAgICAgIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBzb3VyY2VQcm92aWRlcikKKyAgICAgICAgSlNTY29wZSogc2NvcGUsIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4mJiBzb3VyY2VQcm92aWRlcikKICAgICB7CiAgICAgICAgIEV2YWxDb2RlQmxv
Y2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbENvZGVCbG9jaz4o
dm0tPmhlYXApKQotICAgICAgICAgICAgRXZhbENvZGVCbG9jayh2bSwgdm0tPmV2YWxDb2RlQmxv
Y2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNj
b3BlLCBzb3VyY2VQcm92aWRlcik7CisgICAgICAgICAgICBFdmFsQ29kZUJsb2NrKHZtLCB2bS0+
ZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENv
ZGVCbG9jaywgc2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpKTsKICAgICAgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKCp2bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgc2NvcGUpOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtNzAsOCArNzAs
OCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAgICAg
fQogICAgICAgICAKICAgICBFdmFsQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2ssCi0gICAgICAgIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlcikKLSAgICAgICAgOiBHbG9iYWxDb2RlQmxv
Y2sodm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2Nv
cGUsIHNvdXJjZVByb3ZpZGVyLCAwLCAxKQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyKQorICAgICAgICA6IEdsb2JhbENvZGVC
bG9jayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBz
Y29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIDAsIDEpCiAgICAgewogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2Nr
LmgKaW5kZXggNWI0MThiMTRjZTgxY2U0MDhlOTU5NjdlODAyNzFiNzBlN2JiOGZmOC4uNGY1OGQw
OTExMDRlOWMyNmExYTIxNzBlNmZjYjY1OWVkOTQzZTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgKQEAgLTQ4LDEwICs0OCwx
MCBAQCBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAgIH0K
IAogICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwKLSAgICAgICAgUGFzc1JlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWdu
ZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db2RlQmxvY2s+KHZtLT5o
ZWFwKSkKLSAgICAgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB2bS0+ZnVuY3Rpb25Db2Rl
QmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ss
IHNjb3BlLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZz
ZXQpOworICAgICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLT5mdW5jdGlvbkNvZGVC
bG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywg
c2NvcGUsIFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNv
bHVtbk9mZnNldCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVy
RXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlOwogICAgIH0KQEAgLTY4LDggKzY4LDggQEAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sg
OiBwdWJsaWMgQ29kZUJsb2NrIHsKICAgICB9CiAKICAgICBGdW5jdGlvbkNvZGVCbG9jayhWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvbkV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2Nv
cGUqIHNjb3BlLAotICAgICAgICBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92
aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZz
ZXQpCi0gICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zmc2V0LCBm
aXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVD
b2x1bW5PZmZzZXQpCisgICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhl
Y3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVy
KSwgc291cmNlT2Zmc2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCiAgICAgewogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxDb2RlQmxvY2su
aAppbmRleCA5YWIyMjI2YjA1NjVkNmIxYmI1ZjcwMTRlYjNlOWNiNDkzZDFjMDJmLi5hYTI5Y2Nh
MzMyNDM1NzNjMjcwMGUyODc4NjZlMTliOTU4NGEyYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbENvZGVCbG9jay5oCkBAIC00NSw4ICs0NSw4IEBAIGNs
YXNzIEdsb2JhbENvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogICAgIHsKICAgICB9CiAK
LSAgICBHbG9iYWxDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3Vy
Y2VQcm92aWRlciwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpCi0gICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgc291cmNlT2Zm
c2V0LCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgR2xvYmFsQ29kZUJsb2NrKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3VyY2VPZmZz
ZXQsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBDb2RlQmxvY2so
dm0sIHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUs
IFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVtbk9m
ZnNldCkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGIzYzNiMTFlM2E0MWQx
YTU0MTM3MDRmNWFkZmQwYjkxY2RiMjJmMzcuLjYyNjc0ZWE5MjUzMWZhZmVkNjc2ZmE2YTA4OTdi
M2VlMmZmMjBjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNzIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAK
ICAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBh
c3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExp
bmVDb2x1bW5PZmZzZXQpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkK
ICAgICB7CiAgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhlYXApKQot
ICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPm1vZHVsZVByb2dyYW1D
b2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKyAgICAg
ICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT5tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrU3RydWN0dXJlLmdldCgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBz
Y29wZSwgV1RGTW92ZShzb3VyY2VQcm92aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5s
aW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0K
QEAgLTY4LDggKzY4LDggQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBH
bG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0q
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+
IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCi0gICAgICAg
IDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zm
c2V0KQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIDog
R2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRD
b2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmlyc3RMaW5lQ29s
dW1uT2Zmc2V0KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IDk0YzdhN2EzZGU5YWQ1YWEwNmZiMDRh
YzhkZmI3YjMzMTQ1ZTQ3NmMuLjg1MDRhYzRhMDUxYTA3ZTExZTNhMjU4OTQ1NDBlYjBlNGRhNDVh
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2Rl
QmxvY2suaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2sgOiBwdWJs
aWMgR2xvYmFsQ29kZUJsb2NrIHsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvZ3JhbUNvZGVCbG9j
ayogY3JlYXRlKFZNKiB2bSwgUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29w
ZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIEpTU2NvcGUqIHNjb3BlLCBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNv
bHVtbk9mZnNldCkKICAgICB7CiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhlYXApKQot
ICAgICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnByb2dyYW1Db2RlQmxvY2tTdHJ1
Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBz
b3VyY2VQcm92aWRlciwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKyAgICAgICAgICAgIFByb2dy
YW1Db2RlQmxvY2sodm0sIHZtLT5wcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBvd25l
ckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgV1RGTW92ZShzb3VyY2VQcm92
aWRlciksIGZpcnN0TGluZUNvbHVtbk9mZnNldCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hD
cmVhdGlvbigqdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTY4LDggKzY4LDggQEAgY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogICAgIH0KIAogICAg
IFByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvZ3JhbUV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywKLSAgICAgICAgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNl
UHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQp
Ci0gICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJs
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQorICAgICAgICBKU1Njb3BlKiBzY29wZSwgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisg
ICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBXVEZNb3ZlKHNvdXJjZVByb3ZpZGVyKSwgMCwgZmly
c3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCmluZGV4IDNiMDU4YmFi
ZmIxMzcxMzdmNDA1M2UwODk4NWI5NDFmNjExZGIyMDMuLjQ4ZjkzOWYxMGZkYWNhMWM3NzU3NGIx
YmQ4ODYwYjhlNzFmMDdhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcApAQCAtMTY3LDkgKzE2NywxMCBAQCBib29sIGdh
dGhlckRlYnVnZ2VyUGFyc2VEYXRhKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBE
ZWJ1Z2dlclBhcnNlRGF0YQogCiBib29sIGdhdGhlckRlYnVnZ2VyUGFyc2VEYXRhRm9yU291cmNl
KFZNJiB2bSwgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBEZWJ1Z2dlclBhcnNlRGF0YSYgZGVi
dWdnZXJQYXJzZURhdGEpCiB7CisgICAgQVNTRVJUKHByb3ZpZGVyKTsKICAgICBpbnQgc3RhcnRM
aW5lID0gcHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKICAg
ICBpbnQgc3RhcnRDb2x1bW4gPSBwcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLm9u
ZUJhc2VkSW50KCk7Ci0gICAgU291cmNlQ29kZSBjb21wbGV0ZVNvdXJjZShwcm92aWRlciwgc3Rh
cnRMaW5lLCBzdGFydENvbHVtbik7CisgICAgU291cmNlQ29kZSBjb21wbGV0ZVNvdXJjZSgqcHJv
dmlkZXIsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pOwogCiAgICAgc3dpdGNoIChwcm92aWRlci0+
c291cmNlVHlwZSgpKSB7CiAgICAgY2FzZSBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dy
YW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwCmluZGV4IGQ1N2MwMWM3MDE1MjNhZWY2ZmIxZWU1NDI5ZTBjYWI0ZGZlNDVjYzEuLjRj
OTM5NzVjNTE2YzI1N2FiYTVmNDk1MWNlZDE1N2NhMDVjZDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwCkBAIC00NCwyMSAr
NDQsMjIgQEAgdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KGNvbnN0IEJsb2NrSW5zZXJ0
aW9uJiBpbnNlcnRpb24pCiAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChpbnNlcnRpb24pOwogfQog
Ci12b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoc2l6ZV90IGluZGV4LCBQYXNzUmVmUHRy
PEJhc2ljQmxvY2s+IGJsb2NrKQordm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHNpemVf
dCBpbmRleCwgUmVmPEJhc2ljQmxvY2s+JiYgYmxvY2spCiB7Ci0gICAgaW5zZXJ0KEJsb2NrSW5z
ZXJ0aW9uKGluZGV4LCBibG9jaykpOworICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwg
V1RGTW92ZShibG9jaykpKTsKIH0KIAogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omlu
c2VydChzaXplX3QgaW5kZXgsIGZsb2F0IGV4ZWN1dGlvbkNvdW50KQogewotICAgIFJlZlB0cjxC
YXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKAorICAgIFJlZjxCYXNp
Y0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jaygKICAgICAgICAgVUlOVF9N
QVgsCiAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpLAogICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKSwKICAgICAgICAgZXhlY3V0aW9uQ291bnQpKTsKICAgICBibG9jay0+aXNS
ZWFjaGFibGUgPSB0cnVlOwotICAgIGluc2VydChpbmRleCwgYmxvY2spOwotICAgIHJldHVybiBi
bG9jay5nZXQoKTsKKyAgICBhdXRvKiByZXN1bHQgPSBibG9jay5wdHIoKTsKKyAgICBpbnNlcnQo
aW5kZXgsIFdURk1vdmUoYmxvY2spKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwg
ZmxvYXQgZXhlY3V0aW9uQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jsb2NrSW5zZXJ0aW9uU2V0LmgKaW5kZXggZWVjYzQ0Nzk5YjJkYTljOTA3YTllMDBjZDM1ZWI5
MGI0NzZlZTY5Yy4uYjViNmEwMDVjYzhlNjgwYTQ2NzQ3Y2VjZWY5NmVkYzZlYjBjNWQ1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaApA
QCAtNDEsNyArNDEsNyBAQCBjbGFzcyBCbG9ja0luc2VydGlvblNldCB7CiAgICAgfkJsb2NrSW5z
ZXJ0aW9uU2V0KCk7CiAgICAgCiAgICAgdm9pZCBpbnNlcnQoY29uc3QgQmxvY2tJbnNlcnRpb24m
KTsKLSAgICB2b2lkIGluc2VydChzaXplX3QgaW5kZXgsIFBhc3NSZWZQdHI8QmFzaWNCbG9jaz4p
OworICAgIHZvaWQgaW5zZXJ0KHNpemVfdCBpbmRleCwgUmVmPEJhc2ljQmxvY2s+JiYpOwogICAg
IEJhc2ljQmxvY2sqIGluc2VydChzaXplX3QgaW5kZXgsIGZsb2F0IGV4ZWN1dGlvbkNvdW50KTsK
ICAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBmbG9hdCBl
eGVjdXRpb25Db3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggZTU2NTFmMmI1Y2RmZWNmNjI4MDUzZmJmMmEwMWRkYWIyMWYw
MDYwNS4uNzY1YzNiNDg4ZGMyMjc0MTJiNTMxMmEwNTM1ZmViNmMxMjdkNmEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE2Mjks
NyArMTYyOSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgQVNTRVJUKGxhc3RCbG9j
ay0+dGVybWluYWwoKSk7CiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBiYXNpYyBibG9j
ayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgotICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJn
dW1lbnRzLCBtX251bUxvY2FscywgMSkpOworICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFk
b3B0UmVmKCpuZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1M
b2NhbHMsIDEpKTsKIAogICAgIC8vIExpbmsgdGhlIGVhcmx5IHJldHVybnMgdG8gdGhlIGJhc2lj
IGJsb2NrIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgewpAQCAtMTY0
MCwyMiArMTY0MCwyMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2tUb0xpbmstPnRlcm1pbmFsKCk7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgp
ID09IEp1bXApOwogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwotICAgICAg
ICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2suZ2V0KCk7CisgICAgICAgIG5vZGUtPnRhcmdl
dEJsb2NrKCkgPSBibG9jay5wdHIoKTsKICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlu
a2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJldHVybkxpbmtpbmcgPSBmYWxzZTsKICAgICAgICAg
aWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIo
YmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAoanVtcHMgdG8gcmV0dXJuKVxuIik7CiAgICAgICAg
IGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQogICAgIAotICAgIG1fY3VycmVudEJsb2Nr
ID0gYmxvY2suZ2V0KCk7CisgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICBB
U1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5p
c0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFy
Z2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKICAgICBpZiAodmVyYm9z
ZSkKLSAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIo
YmxvY2suZ2V0KCkpLCAiIChtYW55IHJldHVybnMpXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQWRk
aW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRyKCkpLCAiIChtYW55IHJl
dHVybnMpXG4iKTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1h
bExpbmtpbmcpIHsKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5r
ZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2suZ2V0KCkpKTsKLSAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxv
Y2suZ2V0KCkpOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtl
ZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOworICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9j
ay5wdHIoKSk7CiAgICAgfQotICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxvY2spOworICAgIG1f
Z3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKIH0KIApAQCAtMjAwMiw5ICsyMDAyLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5r
U3RhdHVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0
OwotICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7Ci0gICAgICAg
IG1fY3VycmVudEJsb2NrID0gYmxvY2suZ2V0KCk7Ci0gICAgICAgIG1fZ3JhcGguYXBwZW5kQmxv
Y2soYmxvY2spOworICAgICAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3
IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwor
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLnB0cigpOworICAgICAgICBtX2dyYXBoLmFw
cGVuZEJsb2NrKGJsb2NrLmNvcHlSZWYoKSk7CiAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKICAgICAgICAgCiAgICAgICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3Qo
Y2FsbGVlUmVnKTsKQEAgLTIwMTcsOSArMjAxNyw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKAogICAgICAgICBpZiAoIWlubGluaW5nUmVzdWx0KSB7CiAgICAgICAgICAg
ICAvLyBUaGF0IGZhaWxlZCBzbyB3ZSBsZXQgdGhlIGJsb2NrIGRpZS4gTm90aGluZyBpbnRlcmVz
dGluZyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvCiAgICAgICAgICAgICAvLyB0aGUgYmxvY2su
IFdlIGFsc28gZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIChsZXNzIGZyZXF1ZW50KSBj
YWxsZWVzLgotICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEJsb2NrID09IGJsb2NrLmdldCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fYmxvY2tzLmxhc3QoKSA9PSBibG9jayk7
Ci0gICAgICAgICAgICBtX2dyYXBoLmtpbGxCbG9ja0FuZEl0c0NvbnRlbnRzKGJsb2NrLmdldCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9jayA9PSBibG9jay5wdHIoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5sYXN0KCkgPT0gYmxvY2sucHRyKCkp
OworICAgICAgICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJdHNDb250ZW50cyhibG9jay5wdHIo
KSk7CiAgICAgICAgICAgICBtX2dyYXBoLm1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBpbmxpbmluZyBmYWlsZWQgbWVhbnMg
d2UgbmVlZCBhIHNsb3cgcGF0aC4KQEAgLTIwMzQsNyArMjAzNCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAgICAgQVNTRVJUKGFsbEFyZUNsb3N1cmVD
YWxscyk7CiAgICAgICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uZXhl
Y3V0YWJsZSgpOwogICAgICAgICB9Ci0gICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENh
c2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VPbiksIGJsb2NrLmdldCgpKSk7CisgICAgICAg
IGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhpbmdUb0Nhc2VP
biksIGJsb2NrLnB0cigpKSk7CiAgICAgICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsK
ICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgICAgICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgp
OyAvLyBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IGZvciBpbnRyaW5zaWNzLCBzaW5jZSBub3Jt
YWwgaW5saW5lZCBjb2RlIHdpbGwgbGVhdmUgYW4gZW1wdHkgcXVldWUuCkBAIC0yMDUyLDE3ICsy
MDUyLDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAg
ICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0sICIgYXQg
IiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8
QmFzaWNCbG9jaz4gc2xvd1BhdGhCbG9jayA9IGFkb3B0UmVmKAotICAgICAgICBuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgUmVm
PEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKKyAgICAgICAgKm5ldyBCYXNp
Y0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKICAgICBt
X2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9IHRydWU7Ci0gICAgZGF0
YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRhcmdldChzbG93UGF0aEJsb2NrLmdldCgpKTsKLSAgICBt
X2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQYXRoQmxvY2spOworICAgIGRhdGEuZmFsbFRocm91Z2gg
PSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5wdHIoKSk7CisgICAgbV9ncmFwaC5hcHBlbmRC
bG9jayhzbG93UGF0aEJsb2NrLmNvcHlSZWYoKSk7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
IGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihzbG93UGF0aEJsb2NrLmdldCgpKSwgIiBh
cyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylcbiIpOworICAgICAgICBkYXRhTG9nKCJNYXJraW5n
ICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSksICIgYXMgbGlua2VkIChzbG93IHBh
dGggYmxvY2spXG4iKTsKICAgICBzbG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CiAgICAgcHJlcGFy
ZVRvUGFyc2VCbG9jaygpOwotICAgIG1fY3VycmVudEJsb2NrID0gc2xvd1BhdGhCbG9jay5nZXQo
KTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHNsb3dQYXRoQmxvY2sucHRyKCk7CiAgICAgTm9kZSog
bXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRh
a2VTbG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKApAQCAtMjA4NiwxNyArMjA4NiwxNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgbGFuZGluZ0Jsb2Nr
cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QmFzaWNC
bG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IEJhc2ljQmxv
Y2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwotICAgIG1fZ3Jh
cGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxvY2spOworICAgIFJlZjxCYXNpY0Jsb2NrPiBj
b250aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAorICAgICAgICAqbmV3IEJhc2ljQmxvY2soVUlO
VF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOworICAgIG1fZ3JhcGguYXBw
ZW5kQmxvY2soY29udGludWF0aW9uQmxvY2suY29weVJlZigpKTsKICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29u
dGludWF0aW9uQmxvY2suZ2V0KCkpLCAiIChjb250aW51YXRpb24pXG4iKTsKLSAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVh
dGlvbkJsb2NrLmdldCgpKSk7CisgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9j
ayAiLCBSYXdQb2ludGVyKGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpKSwgIiAoY29udGludWF0aW9u
KVxuIik7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5s
aW5rZWRCbG9jayhjb250aW51YXRpb25CbG9jay5wdHIoKSkpOwogICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKLSAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOwor
ICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uQmxvY2sucHRyKCk7CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGFuZGluZ0Jsb2Nrcy5zaXplKCk7IGktLTspCi0gICAgICAgIGxh
bmRpbmdCbG9ja3NbaV0tPnRlcm1pbmFsKCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRpb25C
bG9jay5nZXQoKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nrc1tpXS0+dGVybWluYWwoKS0+dGFyZ2V0
QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpOwogICAgIAogICAgIG1fY3VycmVudElu
ZGV4ID0gb2xkT2Zmc2V0OwogICAgIG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTU4MTcsOCArNTgxNyw4
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygpOwogICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4Owog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxCYXNp
Y0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBt
X251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBibG9jay5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEJhc2lj
QmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBt
X251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBh
c3NlcnRpb24gY2hlY2tzIHR3byB0aGluZ3M6CiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIElm
IHRoZSBieXRlY29kZUJlZ2luIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50SW5kZXgsIHRoZW4gc29t
ZXRoaW5nIGhhcyBnb25lCiAgICAgICAgICAgICAgICAgICAgIC8vICAgIGhvcnJpYmx5IHdyb25n
LiBTbywgd2UncmUgcHJvYmFibHkgZ2VuZXJhdGluZyBpbmNvcnJlY3QgY29kZS4KQEAgLTU4MzEs
MTIgKzU4MzEsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsYXN0QmVnaW4sIGxhc3RCZWdpbiA9PSBVSU5UX01BWCB8fCBsYXN0QmVnaW4gPCBt
X2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9j
ayhibG9jay5nZXQoKSkpOwotICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRC
bG9jayhibG9jay5wdHIoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7CisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAgICAgICAgICBw
cmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCmluZGV4IDE0Y2QwZDAxNDJkYjJi
OGIzYTgyNGJmYzQ2ZjhjZDkwYmUxNTU2MDkuLjc5Mzc3ZTdmOWZhYTg0Y2IxN2YzM2VkNTgyMzk3
MDY4MDk1Mjg5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxERkdX
aGl0ZWxpc3QoKQogc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIFZN
JiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxv
Y2ssIENvbXBpbGF0aW9uTW9kZSBtb2RlLAogICAgIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJ
bmRleCwgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RIYW5kbGVWYWx1ZXMsCi0gICAgUGFz
c1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIFJlZjxE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFPcHRp
b25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpKQogICAgICAgICB8fCAhZW5zdXJlR2xvYmFsREZHV2hpdGVsaXN0KCku
Y29udGFpbnMoY29kZUJsb2NrKSkKQEAgLTk2LDE1ICs5NiwxNSBAQCBzdGF0aWMgQ29tcGlsYXRp
b25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQogICAgICAg
ICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJQ
cmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7CiAgICAgCi0gICAgUmVmUHRyPFBsYW4+
IHBsYW4gPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBwcm9maWxlZERG
R0NvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVz
KSk7CisgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKKyAgICAgICAgKm5ldyBQbGFuKGNv
ZGVCbG9jaywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRl
eCwgbXVzdEhhbmRsZVZhbHVlcykpOwogICAgIAotICAgIHBsYW4tPmNhbGxiYWNrID0gY2FsbGJh
Y2s7CisgICAgcGxhbi0+Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICBpZiAoT3B0
aW9uczo6dXNlQ29uY3VycmVudEpJVCgpKSB7CiAgICAgICAgIFdvcmtsaXN0JiB3b3JrbGlzdCA9
IGVuc3VyZUdsb2JhbFdvcmtsaXN0Rm9yKG1vZGUpOwogICAgICAgICBpZiAobG9nQ29tcGlsYXRp
b25DaGFuZ2VzKG1vZGUpKQogICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyaW5nIERGRyBjb21w
aWxhdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAiIHdpdGggcXVldWUgbGVuZ3RoICIsIHdvcmtsaXN0
LnF1ZXVlTGVuZ3RoKCksICIuXG4iKTsKLSAgICAgICAgd29ya2xpc3QuZW5xdWV1ZShwbGFuKTsK
KyAgICAgICAgd29ya2xpc3QuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKICAgICAgICAgcmV0dXJu
IENvbXBpbGF0aW9uRGVmZXJyZWQ7CiAgICAgfQogICAgIApAQCAtMTE0LDcgKzExNCw3IEBAIHN0
YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICNlbHNlIC8vIEVOQUJMRShERkdf
SklUKQogc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIFZNJiwgQ29k
ZUJsb2NrKiwgQ29kZUJsb2NrKiwgQ29tcGlsYXRpb25Nb2RlLCB1bnNpZ25lZCwgY29uc3QgT3Bl
cmFuZHM8SlNWYWx1ZT4mLAotICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrPikKKyAgICBSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmKQogewogICAgIHJl
dHVybiBDb21waWxhdGlvbkZhaWxlZDsKIH0KQEAgLTEyMywxMiArMTIzLDExIEBAIHN0YXRpYyBD
b21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGUo
CiAgICAgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERG
R0NvZGVCbG9jaywgQ29tcGlsYXRpb25Nb2RlIG1vZGUsCiAgICAgdW5zaWduZWQgb3NyRW50cnlC
eXRlY29kZUluZGV4LCBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVlcywK
LSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gcGFzc2VkQ2FsbGJh
Y2spCisgICAgUmVmPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsK
LSAgICBSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IHBhc3Nl
ZENhbGxiYWNrOwogICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IGNvbXBpbGVJbXBsKAog
ICAgICAgICB2bSwgY29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50
cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzLAotICAgICAgICBjYWxsYmFjayk7Cisg
ICAgICAgIGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgaWYgKHJlc3VsdCAhPSBDb21waWxhdGlv
bkRlZmVycmVkKQogICAgICAgICBjYWxsYmFjay0+Y29tcGlsYXRpb25EaWRDb21wbGV0ZShjb2Rl
QmxvY2ssIHByb2ZpbGVkREZHQ29kZUJsb2NrLCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAppbmRleCAxZDU4ZDFhOGEwOWQ4NWMz
ZDMzMWY0ZjQxNzlhMWQwMzVkZjYzMzk0Li4xYTJkMThjZTllOWFjNDdjM2I0Y2FlMDFmOWQyMmQy
N2NhYTYxN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKQEAgLTQ1LDYg
KzQ1LDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgZ2V0TnVtQ29tcGlsYXRpb25zKCk7
CiBDb21waWxhdGlvblJlc3VsdCBjb21waWxlKAogICAgIFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJs
b2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgQ29tcGlsYXRpb25Nb2RlLAogICAgIHVuc2lnbmVk
IG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RIYW5k
bGVWYWx1ZXMsCi0gICAgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+KTsK
KyAgICBSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmKTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDZkNTI0
Njk0ZGI4MmM5N2EwYzM2MGE3MmE1ZGUzZjlmMGIwZjMyOGIuLjNiMzI5MjA4NzQyOGMxNzRhYjUz
OTYxYjE2N2IxMjhkMTMxZTI2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTQ0MiwxMCArNDQyLDEwIEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5h
YmxlIHsKICAgICBCYXNpY0Jsb2NrKiBibG9jayhCbG9ja0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOyB9CiAgICAgQmFzaWNCbG9jayog
bGFzdEJsb2NrKCkgY29uc3QgeyByZXR1cm4gYmxvY2sobnVtQmxvY2tzKCkgLSAxKTsgfQogCi0g
ICAgdm9pZCBhcHBlbmRCbG9jayhQYXNzUmVmUHRyPEJhc2ljQmxvY2s+IGJhc2ljQmxvY2spCisg
ICAgdm9pZCBhcHBlbmRCbG9jayhSZWY8QmFzaWNCbG9jaz4mJiBiYXNpY0Jsb2NrKQogICAgIHsK
ICAgICAgICAgYmFzaWNCbG9jay0+aW5kZXggPSBtX2Jsb2Nrcy5zaXplKCk7Ci0gICAgICAgIG1f
YmxvY2tzLmFwcGVuZChiYXNpY0Jsb2NrKTsKKyAgICAgICAgbV9ibG9ja3MuYXBwZW5kKFdURk1v
dmUoYmFzaWNCbG9jaykpOwogICAgIH0KICAgICAKICAgICB2b2lkIGtpbGxCbG9jayhCbG9ja0lu
ZGV4IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCmluZGV4IDM1MTNiNWI5NTIyNzczMGM5M2MyMTAzZWM0ZjlmZGM0NmJlODgxNTcuLmRi
NWU1MjVmZmRhYTk1N2NkYWUwYzc3ZGQ5OTI4YzMxM2M2NWE3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwog
ICAgIAogICAgIG1fZ3JhcGgubV9wbGFuLmZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8SklU
RmluYWxpemVyPigKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwg
V1RGTW92ZShsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUu
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CiB9CiAKIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFy
aXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CiAKICAgICBt
X2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4o
Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlu
a0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0
Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVj
ayk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2VtYmxlKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFs
aXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAK
aW5kZXggNTM5MTE1OGM1ZWI1YjA1NTgyMzMzMjdmNzU2NzU5NTc3NjdmN2Q5NC4uNmI2NWVjYzc3
MjQ5ZWNhOWVhZDliMTk2YmY3MzY0Yjk1NjU4ZWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBs
YW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwgc3RkOjp1bmlxdWVfcHRyPExp
bmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVj
aykKK0pJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4sIFJlZjxKSVRDb2RlPiYm
IGppdENvZGUsIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2spCiAgICAgOiBGaW5hbGl6ZXIocGxhbikKLSAg
ICAsIG1faml0Q29kZShqaXRDb2RlKQorICAgICwgbV9qaXRDb2RlKFdURk1vdmUoaml0Q29kZSkp
CiAgICAgLCBtX2xpbmtCdWZmZXIoV1RGTW92ZShsaW5rQnVmZmVyKSkKICAgICAsIG1fd2l0aEFy
aXR5Q2hlY2sod2l0aEFyaXR5Q2hlY2spCiB7CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgSklURmlu
YWxpemVyOjpmaW5hbGl6ZSgpCiAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZm
ZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlw
ZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAotICAgIG1fcGxhbi5jb2RlQmxvY2stPnNl
dEpJVENvZGUobV9qaXRDb2RlKTsKKyAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1f
aml0Q29kZS5jb3B5UmVmKCkpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9uKCk7CiAgICAgCkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKCkKICAg
ICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmKAogICAgICAgICBGSU5BTElaRV9ERkdfQ09E
RSgqbV9saW5rQnVmZmVyLCAoIkRGRyBKSVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJs
b2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgp
KSksCiAgICAgICAgIG1fd2l0aEFyaXR5Q2hlY2spOwotICAgIG1fcGxhbi5jb2RlQmxvY2stPnNl
dEpJVENvZGUobV9qaXRDb2RlKTsKKyAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1f
aml0Q29kZS5jb3B5UmVmKCkpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9uKCk7CiAgICAgCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgSklURmluYWxpemVyOjpmaW5hbGl6ZUNvbW1vbigpCiAjZW5k
aWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgCiAgICAgaWYgKG1fcGxhbi5jb21waWxhdGlvbikK
LSAgICAgICAgbV9wbGFuLnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9u
KG1fcGxhbi5jb2RlQmxvY2ssIG1fcGxhbi5jb21waWxhdGlvbik7CisgICAgICAgIG1fcGxhbi52
bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJsb2Nr
LCAqbV9wbGFuLmNvbXBpbGF0aW9uKTsKICAgICAKICAgICBpZiAoIW1fcGxhbi53aWxsVHJ5VG9U
aWVyVXApCiAgICAgICAgIG1fcGxhbi5jb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5tX2Rp
ZEZhaWxGVExDb21waWxhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRGaW5hbGl6ZXIuaAppbmRleCAxYjIxZjhjODVjMDliY2E4OTIwYmNhNDBmOTU5MDliYTgy
M2I3OWViLi5iMWEyYmMwMzRlYmE5ZmZmZTE0YjA3MWUwYjcyYzZkNTYyNzYxYjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBKSVRGaW5hbGl6ZXIg
OiBwdWJsaWMgRmluYWxpemVyIHsKIHB1YmxpYzoKLSAgICBKSVRGaW5hbGl6ZXIoUGxhbiYsIFBh
c3NSZWZQdHI8SklUQ29kZT4sIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOworICAgIEpJVEZpbmFsaXplcihQbGFuJiwg
UmVmPEpJVENvZGU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6RW1wdHlWYWx1ZSkpOwogICAgIHZpcnR1YWwgfkpJVEZpbmFsaXplcigp
OwogICAgIAogICAgIHNpemVfdCBjb2RlU2l6ZSgpIG92ZXJyaWRlOwpAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBwdWJsaWMgRmluYWxpemVyIHsKIHByaXZhdGU6CiAgICAg
dm9pZCBmaW5hbGl6ZUNvbW1vbigpOwogICAgIAotICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENv
ZGU7CisgICAgUmVmPEpJVENvZGU+IG1faml0Q29kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlu
a0J1ZmZlcj4gbV9saW5rQnVmZmVyOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX3dpdGhB
cml0eUNoZWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
V29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAK
aW5kZXggMTE0Y2E5NTcxNDRkYjUyODA4Y2U4NTNkMzFmNzY1YmQyMmZjYWJlYi4uYWYzYjYzZTA4
MmRlOGI2OTI5Njc3NDczYjM2ZGVlYmMzOTNhZmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTIyMywxNyArMjIzLDE2IEBAIGJvb2wgV29ya2xpc3Q6
OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBXb3JrbGlzdDo6ZW5xdWV1ZShQYXNzUmVmUHRyPFBsYW4+IHBhc3NlZFBsYW4pCit2b2lkIFdv
cmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiYmIHBsYW4pCiB7Ci0gICAgUmVmUHRyPFBsYW4+IHBs
YW4gPSBwYXNzZWRQbGFuOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKSB7CiAgICAgICAgIGR1bXAobG9j
a2VyLCBXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICBkYXRhTG9nKCI6IEVucXVldWVpbmcgcGxh
biB0byBvcHRpbWl6ZSAiLCBwbGFuLT5rZXkoKSwgIlxuIik7CiAgICAgfQogICAgIEFTU0VSVCht
X3BsYW5zLmZpbmQocGxhbi0+a2V5KCkpID09IG1fcGxhbnMuZW5kKCkpOwotICAgIG1fcGxhbnMu
YWRkKHBsYW4tPmtleSgpLCBwbGFuKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChwbGFuKTsKKyAgICBt
X3BsYW5zLmFkZChwbGFuLT5rZXkoKSwgcGxhbi5jb3B5UmVmKCkpOworICAgIG1fcXVldWUuYXBw
ZW5kKFdURk1vdmUocGxhbikpOwogICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlPbmUobG9ja2Vy
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5oCmluZGV4IDM2NjFl
NmVlODNkMzU0NzdmN2JhZjg3NDhhNzI0NDU4NmEwMzkwYTUuLjI4ZDlhYmY0YTM4YTAzYWRmYWEz
MWVmYWMyZDM0NjFlNGI3MDIwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmts
aXN0LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV29ya2xpc3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXb3JrbGlzdD4gewogICAgIAogICAgIHN0YXRpYyBSZWY8V29ya2xpc3Q+IGNyZWF0ZShDU3Ry
aW5nIHdvcmtsaXN0TmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQ
cmlvcml0eSA9IDApOwogICAgIAotICAgIHZvaWQgZW5xdWV1ZShQYXNzUmVmUHRyPFBsYW4+KTsK
KyAgICB2b2lkIGVucXVldWUoUmVmPFBsYW4+JiYpOwogICAgIAogICAgIC8vIFRoaXMgaXMgZXF1
aXZhbGVudCB0bzoKICAgICAvLyB3b3JrbGlzdC0+d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFyZVJl
YWR5KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmlu
YWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNw
cAppbmRleCBkY2YzZGFkMWQwMjdkNzBjZjUxNGQyZDg3M2Y4ZWM1ZDA2NDUwNWQzLi4wMGVhNjUx
ZTFlMmJkY2RjZjY4NTNmY2U5MjMxZjU3MjQwZjVkNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCkBAIC04MSwxMCArODEsMTAgQEAgYm9vbCBK
SVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAgZHVtcERpc2Fzc2Vt
Ymx5LCAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50
IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5nKENv
ZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRh
dGEoKSwgZnVuY3Rpb24pKSk7CiAgICAgCi0gICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29k
ZShqaXRDb2RlKTsKKyAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2RlKCpqaXRDb2RlKTsK
IAogICAgIGlmIChtX3BsYW4uY29tcGlsYXRpb24pCi0gICAgICAgIG1fcGxhbi52bS0+bV9wZXJC
eXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX3BsYW4uY29kZUJsb2NrLCBtX3BsYW4u
Y29tcGlsYXRpb24pOworICAgICAgICBtX3BsYW4udm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+
YWRkQ29tcGlsYXRpb24obV9wbGFuLmNvZGVCbG9jaywgKm1fcGxhbi5jb21waWxhdGlvbik7CiAg
ICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKaW5kZXggMzFhMmFlMTVjMTcwOGNhOGQ1NTkz
MmY2ODkwOTM1ZDA2MGU2NDAyZi4uYmFiNmRlMTNiMjhhNzM5ZGEwNmZlNWJmOTQyYjAwN2Q5ZmUw
OTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1
YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogfQogCiAKLVBh
c3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPEpJVFN0
dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYmIGNvZGUsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCkBA
IC0xNDIsMTcgKzE0MiwxNyBAQCBQYXNzUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRT
dHViUm91dGluZSgKICAgICBDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUlu
ZGV4KQogewogICAgIGlmICghbWFrZXNDYWxscykKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJ
VFN0dWJSb3V0aW5lKGNvZGUpKTsKICAgICAKICAgICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9u
SGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVy
cywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwg
dm0sIG93bmVyLCBjZWxscywgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlv
bkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CiAgICAgfQogCiAgICAgaWYgKGNlbGxzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtKSk7CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXJraW5nR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25l
ciwgY2VsbHMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRleCBhMjUzZGEzNWE2OWE3
OWI2M2QyNTNjOGVhMTQ4OGVmMDIxZmFjNTU5Li41ZWUzNmNhNDYwZDEwN2E0M2U0YTg4Njg4MTll
MzA4ZTNhNDU4ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1
YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVFN0
dWJSbwogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25seSBuZWVkIHRvIHBhc3MgcG9p
bnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIHRvIEMrKyBv
ciBKUy4KIC8vIAotLy8gUGFzc1JlZlB0cjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJv
dXRpbmUoCisvLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogLy8g
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLAogLy8gICAgVk0mIHZtLAogLy8g
ICAgY29uc3QgSlNDZWxsKiBvd25lciwKQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciA6IHB1YmxpYyBNYXJraW5nR0NBd2Fy
ZUpJVFN0dWJSbwogLy8gdGhpcyBmdW5jdGlvbiB1c2luZyB2YXJhcmdzLCBJIGVuZGVkIHVwIHdp
dGggbW9yZSBjb2RlIHRoYW4gdGhpcyBzaW1wbGUKIC8vIHdheS4KIAotUGFzc1JlZlB0cjxKSVRT
dHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCitSZWY8SklUU3R1YlJvdXRpbmU+IGNy
ZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYsIFZN
JiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAogICAgIGNvbnN0IFZlY3Rv
cjxKU0NlbGwqPiYgPSB7IH0sIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9u
SGFuZGxlcnMgPSBudWxscHRyLCBDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNp
dGVJbmRleCA9IENhbGxTaXRlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNjJjMDQzNjk4OWM5MDYyNzRm
MGRjMzlkMzNmYWYzMDVlZjZmZTg3ZC4uZTc0MjE5YjYyYjQ1OGRlOTMxMjBjOWM1ZDk1ZGNjNTUx
NTA1NmUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtODI5LDcgKzgyOSw3IEBA
IENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgaWYgKG1fY29tcGlsYXRpb24pIHsK
ICAgICAgICAgaWYgKE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKQog
ICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmlsZXIobV9jb21waWxhdGlv
bi5nZXQoKSwgcGF0Y2hCdWZmZXIpOwotICAgICAgICBtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmls
ZXItPmFkZENvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCBtX2NvbXBpbGF0aW9uKTsKKyAgICAgICAg
bV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxhdGlvbihtX2NvZGVCbG9jaywg
Km1fY29tcGlsYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKQEAgLTg0NSw3ICs4NDUsNyBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KENvZGVCbG9j
azo6TGF0ZVNocmluayk7CiAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0aEFyaXR5Q2hlY2ssIEpJVENvZGU6
OkJhc2VsaW5lSklUKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUocmVz
dWx0LCB3aXRoQXJpdHlDaGVjaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKSk7CiAKICNpZiBFTkFC
TEUoSklUX1ZFUkJPU0UpCiAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAg
YXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+
c3RhcnQoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCmluZGV4IDMwNDcyMTJkNGVjNGUxOGFjMzFm
OGE4YTE0NDM5MTE0Mjk5MDBhMjcuLmViZmUyZWYyNDE4ZWMyZDg2NDZmYjVjNDcyZWI3OGFhZjZm
NTY4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRp
bmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAg
LTcwLDExICs3MCw4IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyB0aGUgY2h1cm4u
CiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlOyB9CiAgICAgCi0gICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBhc0NvZGVQ
dHIoUGFzc1JlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmUpCisgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBhc0NvZGVQdHIoUmVmPEpJVFN0dWJSb3V0aW5lPiYmIHN0dWJS
b3V0aW5lKQogICAgIHsKLSAgICAgICAgaWYgKCFzdHViUm91dGluZSkKLSAgICAgICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKLSAgICAgICAgCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKTsKICAgICAg
ICAgQVNTRVJUKCEhcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA2MGMzY2M3YTdlMWFkODkzM2MzMmFhMjBi
MWEyYWVlMDQxMzBiMzcxLi5kZTQ4ZTYyZGRhYjhlZmFmOGJlMzE4Mjg3MWJlOGQ3MDk5YjE3Yzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0xMDgsOSArMTA4
LDkgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2
bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE4KICAgICB9IGVsc2UKICAgICAgICAgZm9yQ2Fs
bCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwo
dm0sIGZ1bmN0aW9uKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAotICAgIFJlZlB0
cjxKSVRDb2RlPiBmb3JDb25zdHJ1Y3QgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25z
dHJ1Y3Qodm0pKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOworICAgIFJlZjxKSVRDb2RlPiBm
b3JDb25zdHJ1Y3QgPSBhZG9wdFJlZigqbmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSks
IEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBu
YXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwg
ZnVuY3Rpb24sIGZvckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJl
LCBuYW1lKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZl
RXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbC5yZWxlYXNlTm9uTnVsbCgpLCBmdW5jdGlv
biwgV1RGTW92ZShmb3JDb25zdHJ1Y3QpLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1
cmUsIG5hbWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3RkOjptYWtl
X3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSksIFdlYWs8TmF0aXZlRXhlY3V0YWJs
ZT4obmF0aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNw
cAppbmRleCBmNTkxOGI3MjE3MGFjNWRlNDdjMmJlZDM2Mzc5NjUzMGUwMTk1NDAxLi5mN2Q3NjFk
YzFkYWMwM2ZmMTNhMjg5OTNkZjM0YzM1OWNlNGIwNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIHN0
YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBpZiAoa2luZCA9PSBDb2Rl
Rm9yQ2FsbCkgewogICAgICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICAg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25G
b3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxs
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspKSk7CisgICAgICAgICAgICAgICAgYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHZtLmdl
dENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIHZtLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2Rl
KHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwg
dm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAgICAgICAgICAgYWRv
cHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgdm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVj
dEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkBA
IC01OSwxMiArNTksMTIgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KFZNJiB2
bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0g
ICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSks
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAg
ICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSks
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRSZWYoKm5l
dyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVm
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAogc3RhdGljIHZv
aWQgc2V0RXZhbEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTcy
LDE0ICs3MiwxNCBAQCBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKHZtLmNhblVzZUpJVCgp
KSB7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAgICAgIGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsK
KyAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKGV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKAotICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAg
IGFkb3B0UmVmKCpuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZihsbGludF9ldmFsX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBy
b2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC04NywxNCAr
ODcsMTQgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICNpZiBFTkFCTEUoSklUKQogICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkg
ewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgICAgICBhZG9wdFJlZihu
ZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9y
KSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7
CisgICAgICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihw
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZSgKLSAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSks
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwor
ICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQpAQCAtMTAyLDE0ICsxMDIsMTQgQEAgc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVu
dHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICNpZiBFTkFCTEUoSklUKQog
ICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
Ci0gICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKG1v
ZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgICAgICBhZG9wdFJlZigqbmV3
IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAgICAg
YWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVM
TEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgYWRvcHRS
ZWYoKm5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRD
b2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKIHZvaWQgc2V0RW50cnlw
b2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZUNvZGUuaAppbmRleCA4ZjRmZDM4YmFhYjgwNWIyZjIwOGIzZDhlYjg2M2Yz
ZjVjNDM4NWY4Li45MGY1NDdhMjAwMjQzNGYwMTFlMTVkOWMyYmNiN2E4MGE1MWI4YWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtNDEsMjAgKzQxLDI3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTb3Vy
Y2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyKQotICAgICAgICAgICAg
OiBVbmxpbmtlZFNvdXJjZUNvZGUocHJvdmlkZXIpCisgICAgICAgIFNvdXJjZUNvZGUoUmVmPFNv
dXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyKQorICAgICAgICAgICAgOiBVbmxpbmtlZFNvdXJjZUNv
ZGUoV1RGTW92ZShwcm92aWRlcikpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNv
dXJjZUNvZGUoUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBmaXJzdExp
bmUsIGludCBzdGFydENvbHVtbikKLSAgICAgICAgICAgIDogVW5saW5rZWRTb3VyY2VDb2RlKHBy
b3ZpZGVyKQorICAgICAgICBTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRl
ciwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQorICAgICAgICAgICAgOiBVbmxpbmtl
ZFNvdXJjZUNvZGUoV1RGTW92ZShwcm92aWRlcikpCiAgICAgICAgICAgICAsIG1fZmlyc3RMaW5l
KE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChmaXJzdExpbmUsIDEpKSkK
ICAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJ
bnQoc3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50
IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1
bW4pCi0gICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShwcm92aWRlciwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICAgICAgU291cmNlQ29kZShSZWY8U291cmNlUHJvdmlkZXI+JiYg
cHJvdmlkZXIsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgaW50IGZpcnN0TGluZSwg
aW50IHN0YXJ0Q29sdW1uKQorICAgICAgICAgICAgOiBVbmxpbmtlZFNvdXJjZUNvZGUoV1RGTW92
ZShwcm92aWRlciksIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICAgICAsIG1fZmly
c3RMaW5lKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChmaXJzdExpbmUs
IDEpKSkKKyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihPcmRpbmFsTnVtYmVyOjpmcm9tT25l
QmFzZWRJbnQoc3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKSkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgU291cmNlQ29kZShSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgcHJvdmlkZXIs
IGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0
Q29sdW1uKQorICAgICAgICAgICAgOiBVbmxpbmtlZFNvdXJjZUNvZGUoV1RGTW92ZShwcm92aWRl
ciksIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fZmlyc3RMaW5lKE9y
ZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChmaXJzdExpbmUsIDEpKSkKICAg
ICAgICAgICAgICwgbV9zdGFydENvbHVtbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQo
c3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKSkKICAgICAgICAgewpAQCAtODcsNyArOTQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VDb2RlOjpzdWJFeHBy
ZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0
TGluZSwgaW50IHN0YXJ0Q29sdW1uKQogICAgIHsKICAgICAgICAgc3RhcnRDb2x1bW4gKz0gMTsg
Ly8gQ29udmVydCB0byBiYXNlIDEuCi0gICAgICAgIHJldHVybiBTb3VyY2VDb2RlKHByb3ZpZGVy
KCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwor
ICAgICAgICByZXR1cm4gU291cmNlQ29kZShSZWZQdHI8U291cmNlUHJvdmlkZXI+IHsgcHJvdmlk
ZXIoKSB9LCBvcGVuQnJhY2UsIGNsb3NlQnJhY2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1u
KTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2RlLmgKaW5kZXggMjllY2Y1YjFlMjJmNTdmMjE2
NjgyN2E1ZGE2NWFmNjU0OWI1ZmYzNS4uZTY4Y2U4ODM4MTk2YWY4OWQ4NzI5NTY4Zjg4NThhZmU3
OTViYTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Vbmxpbmtl
ZFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2Vk
U291cmNlQ29kZS5oCkBAIC00NywxNSArNDcsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFVubGlua2VkU291cmNlQ29kZShQYXNzUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRl
cikKKyAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFJlZjxTb3VyY2VQcm92aWRlcj4mJiBwcm92
aWRlcikKKyAgICAgICAgICAgIDogbV9wcm92aWRlcihXVEZNb3ZlKHByb3ZpZGVyKSkKICAgICAg
ICAgICAgICwgbV9zdGFydE9mZnNldCgwKQogICAgICAgICAgICAgLCBtX2VuZE9mZnNldChtX3By
b3ZpZGVyLT5zb3VyY2UoKS5sZW5ndGgoKSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgVW5saW5rZWRTb3VyY2VDb2RlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVy
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCi0gICAgICAgICAgICA6IG1fcHJvdmlk
ZXIocHJvdmlkZXIpCisgICAgICAgIFVubGlua2VkU291cmNlQ29kZShSZWY8U291cmNlUHJvdmlk
ZXI+JiYgcHJvdmlkZXIsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAgICAgICAg
ICAgIDogbV9wcm92aWRlcihXVEZNb3ZlKHByb3ZpZGVyKSkKKyAgICAgICAgICAgICwgbV9zdGFy
dE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBVbmxpbmtlZFNvdXJjZUNvZGUoUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRP
ZmZzZXQpCisgICAgICAgICAgICA6IG1fcHJvdmlkZXIoV1RGTW92ZShwcm92aWRlcikpCiAgICAg
ICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fZW5k
T2Zmc2V0KGVuZE9mZnNldCkKICAgICAgICAgewpAQCAtOTEsNiArOTgsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0IC0g
bV9zdGFydE9mZnNldDsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICAvLyBGSVhNRTogTWFr
ZSBpdCBSZWY8U291cmNlUHJvdmlkaWVyPi4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODMyNQogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+IG1fcHJvdmlkZXI7CiAgICAgICAgIGludCBtX3N0YXJ0T2Zmc2V0OwogICAgICAgICBpbnQg
bV9lbmRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJEYXRhYmFzZS5jcHAKaW5kZXggOGVkOWYxODQ1ZjNlNmE1OTdmNjkzZWJmNWU4ZjJkNjc0
MGYwODMyMy4uMDFjZWZjNDQzODE4MmM1YzBlNTM4NjBiZjgyNTEzZTZmZTU4ZTNmMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNw
cApAQCAtODYsMTUgKzg2LDEzIEBAIHZvaWQgRGF0YWJhc2U6Om5vdGlmeURlc3RydWN0aW9uKENv
ZGVCbG9jayogY29kZUJsb2NrKQogICAgIG1fY29tcGlsYXRpb25NYXAucmVtb3ZlKGNvZGVCbG9j
ayk7CiB9CiAKLXZvaWQgRGF0YWJhc2U6OmFkZENvbXBpbGF0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBQYXNzUmVmUHRyPENvbXBpbGF0aW9uPiBwYXNzZWRDb21waWxhdGlvbikKK3ZvaWQgRGF0
YWJhc2U6OmFkZENvbXBpbGF0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBSZWY8Q29tcGlsYXRp
b24+JiYgY29tcGlsYXRpb24pCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAg
ICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAKLSAgICBSZWZQdHI8Q29tcGlsYXRp
b24+IGNvbXBpbGF0aW9uID0gcGFzc2VkQ29tcGlsYXRpb247Ci0gICAgCi0gICAgbV9jb21waWxh
dGlvbnMuYXBwZW5kKGNvbXBpbGF0aW9uKTsKLSAgICBtX2NvbXBpbGF0aW9uTWFwLnNldChjb2Rl
QmxvY2ssIGNvbXBpbGF0aW9uKTsKKyAgICBtX2NvbXBpbGF0aW9ucy5hcHBlbmQoY29tcGlsYXRp
b24uY29weVJlZigpKTsKKyAgICBtX2NvbXBpbGF0aW9uTWFwLnNldChjb2RlQmxvY2ssIFdURk1v
dmUoY29tcGlsYXRpb24pKTsKIH0KIAogSlNWYWx1ZSBEYXRhYmFzZTo6dG9KUyhFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJEYXRhYmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyRGF0YWJhc2UuaAppbmRleCAyMDZhYTNhYjNiNTM0MWQ1ZjA0YWQ1MTA4ZTZiYjZmMDY0ZDky
OWI3Li5iOWVmMzZjMDM5ZmI0MjFlOWRmZGVkZTE2Y2RlNTAyNDIwNTlhMzdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKQEAgLTM0
LDcgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTUyLDcgKzUxLDcgQEAgY2xhc3MgRGF0YWJhc2UgewogICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0
ZWNvZGVzRm9yKENvZGVCbG9jayopOwogICAgIHZvaWQgbm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJs
b2NrKik7CiAgICAgCi0gICAgdm9pZCBhZGRDb21waWxhdGlvbihDb2RlQmxvY2sqLCBQYXNzUmVm
UHRyPENvbXBpbGF0aW9uPik7CisgICAgdm9pZCBhZGRDb21waWxhdGlvbihDb2RlQmxvY2sqLCBS
ZWY8Q29tcGlsYXRpb24+JiYpOwogICAgIAogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhYmFzZSB0
byBhIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgaXMgc3VpdGFibGUgZm9yIEpTT04gc3RyaW5naWZp
Y2F0aW9uLgogICAgIC8vIE5vdGUgdGhhdCBpdCdzIHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIHVz
ZSBhbiBFeGVjU3RhdGUqIGFzc29jaWF0ZWQgd2l0aCBhIGdsb2JhbApAQCAtODUsOCArODQsOCBA
QCBjbGFzcyBEYXRhYmFzZSB7CiAgICAgVk0mIG1fdm07CiAgICAgU2VnbWVudGVkVmVjdG9yPEJ5
dGVjb2Rlcz4gbV9ieXRlY29kZXM7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMq
PiBtX2J5dGVjb2Rlc01hcDsKLSAgICBWZWN0b3I8UmVmUHRyPENvbXBpbGF0aW9uPj4gbV9jb21w
aWxhdGlvbnM7Ci0gICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBSZWZQdHI8Q29tcGlsYXRpb24+PiBt
X2NvbXBpbGF0aW9uTWFwOworICAgIFZlY3RvcjxSZWY8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0
aW9uczsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFJlZjxDb21waWxhdGlvbj4+IG1fY29tcGls
YXRpb25NYXA7CiAgICAgVmVjdG9yPEV2ZW50PiBtX2V2ZW50czsKICAgICBib29sIG1fc2hvdWxk
U2F2ZUF0RXhpdDsKICAgICBDU3RyaW5nIG1fYXRFeGl0U2F2ZUZpbGVuYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKaW5kZXggYTZiYWI2Nzc0
N2Y0ZTkyODMyM2NlNzU1ZTBkNTcyZTc2MjNlNDEzZS4uYzg3MWU1ZjM2YmM3MzBiMGRmZDJlYTM5
MGViNWQyOTljMDk4NDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
dmFsRXhlY3V0YWJsZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICByZXR1cm4gbV9ldmFsQ29kZUJsb2Nr
LmdldCgpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29k
ZSgpCisgICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKaW5kZXggNWQxZTBiNGI2NDRmYzYx
MThmMmU3NmJjMzk4OGIxMzQ4NmMwODc2MC4uNjI4MTZhNTk0Y2QzMjU1NDk0MmVmMjkyNzhiYjIz
YWJlOTAxYWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZUJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlQmFzZS5oCkBAIC0xMjUsMTkgKzEyNSwxOSBAQCBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1
YmxpYyBKU0NlbGwgewogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3Q7CiAKIHB1
YmxpYzoKLSAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkK
KyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1faml0Q29kZUZvckNhbGwpOwotICAgICAgICByZXR1cm4gbV9qaXRDb2RlRm9y
Q2FsbDsKKyAgICAgICAgcmV0dXJuICptX2ppdENvZGVGb3JDYWxsOwogICAgIH0KIAotICAgIFBh
c3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpCisgICAgUmVm
PEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1faml0Q29kZUZvckNvbnN0cnVjdCk7Ci0gICAgICAgIHJldHVybiBtX2ppdENvZGVG
b3JDb25zdHJ1Y3Q7CisgICAgICAgIHJldHVybiAqbV9qaXRDb2RlRm9yQ29uc3RydWN0OwogICAg
IH0KICAgICAgICAgCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVk
SklUQ29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewogICAgICAgICBp
ZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmNwcAppbmRleCBiMGM1YzNlNjcyZDBhMzI5N2UyZGEzNjk4ODQzMGM3YTY1MGI3ZGZmLi45OTI1
NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBSZWY8U3Ry
aW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgY2hhciogYykKICAgICBBU1NF
UlQoYyk7CiAgICAgQVNTRVJUKGNbMF0pOwogICAgIGlmICghY1sxXSkKLSAgICAgICAgcmV0dXJu
ICp2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChjWzBdKTsKKyAgICAg
ICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGNbMF0p
OwogCiAgICAgcmV0dXJuICpBdG9taWNTdHJpbmdJbXBsOjphZGQoYyk7CiB9CkBAIC01OCw3ICs1
OCw3IEBAIFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQ4KFZNKiB2bSwgY29uc3QgVUNo
YXIqIHMsIGludCBsZW5ndGgpCiAgICAgICAgIFVDaGFyIGMgPSBzWzBdOwogICAgICAgICBBU1NF
UlQoYyA8PSAweGZmKTsKICAgICAgICAgaWYgKGNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhj
KSkKLSAgICAgICAgICAgIHJldHVybiAqdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJT
dHJpbmdSZXAoYyk7CisgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVD
aGFyYWN0ZXJTdHJpbmdSZXAoYyk7CiAgICAgfQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmgKaW5kZXggMjVlMTZhZTM0MTdkNmQwMjY5ZmY0ZjczNjFkZDhhMjZmMjQz
Yzg2Ni4uYTk2M2I0MzMwNjE3Y2E1MzJmMjFjNDgzMmVkZjY4MDg0YTQxYmU4NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMjE4LDcgKzIxOCw3IEBA
IFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0qIHZtLCBjb25zdCBUKiBzLCBpbnQg
bGVuZ3RoKQogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBUIGMgPSBzWzBdOwogICAg
ICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpKQotICAgICAgICAgICAgcmV0
dXJuICp2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChjKTsKKyAgICAg
ICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcChj
KTsKICAgICB9CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBkZDc0NjNjNzNhN2IxMmNlYzU3ZDY5YjkyYTViMDI2MWM2ZjQ0YmM3Li5j
ZjRlMTZmYjY0NTAwZGI1NDE3YWJjMDVhMTFhNGZlNGY4YjcyNThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzYyLDE4ICsx
MzYyLDE1IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBj
b25zdAogfQogCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpz
ZXRJbnB1dEN1cnNvcihQYXNzUmVmUHRyPElucHV0Q3Vyc29yPiBwcnBDdXJzb3IpCit2b2lkIEpT
R2xvYmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcihSZWY8SW5wdXRDdXJzb3I+JiYgY3Vyc29yKQog
ewotICAgIG1faW5wdXRDdXJzb3IgPSBwcnBDdXJzb3I7Ci0gICAgQVNTRVJUKG1faW5wdXRDdXJz
b3IpOwotCi0gICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGlucHV0Q3Vyc29yKCk7CisgICAgbV9p
bnB1dEN1cnNvciA9IFdURk1vdmUoY3Vyc29yKTsKICAgICAvLyBTYXZlIG9yIHNldCB0aGUgcmFu
ZG9tIHNlZWQuIFRoaXMgcGVyZm9ybWVkIGhlcmUgcmF0aGVyIHRoYW4gdGhlIGNvbnN0cnVjdG9y
CiAgICAgLy8gdG8gYXZvaWQgdGhyZWFkaW5nIHRoZSBpbnB1dCBjdXJzb3IgdGhyb3VnaCBhbGwg
dGhlIGFic3RyYWN0aW9uIGxheWVycy4KLSAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpCi0g
ICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxTZXRSYW5kb21TZWVkPihtX3dlYWtSYW5kb20uc2Vl
ZCgpKTsKLSAgICBlbHNlIGlmIChjdXJzb3IuaXNSZXBsYXlpbmcoKSkgewotICAgICAgICBpZiAo
U2V0UmFuZG9tU2VlZCogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxTZXRSYW5kb21TZWVkPigp
KQorICAgIGlmIChtX2lucHV0Q3Vyc29yLT5pc0NhcHR1cmluZygpKQorICAgICAgICBtX2lucHV0
Q3Vyc29yLT5hcHBlbmRJbnB1dDxTZXRSYW5kb21TZWVkPihtX3dlYWtSYW5kb20uc2VlZCgpKTsK
KyAgICBlbHNlIGlmIChtX2lucHV0Q3Vyc29yLT5pc1JlcGxheWluZygpKSB7CisgICAgICAgIGlm
IChTZXRSYW5kb21TZWVkKiBpbnB1dCA9IG1faW5wdXRDdXJzb3ItPmZldGNoSW5wdXQ8U2V0UmFu
ZG9tU2VlZD4oKSkKICAgICAgICAgICAgIG1fd2Vha1JhbmRvbS5zZXRTZWVkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbnB1dC0+cmFuZG9tU2VlZCgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZjlkZTY0MWI2M2Zh
ODAwOGY4YmRmYzNjYzU0NjY0ZDE3NzUzZGRmMC4uYTkwOTY3OTY5MGVhOWU0MTFlNGE3ZDdmZGQ3
YWQyMDY1YTAxMjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNCYXNlLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBzdHJ1Y3QgT3BhcXVlSlNDbGFzczsKIHN0cnVj
dCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE7CkBAIC0zNzksNyArMzc4LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgVk0m
IG1fdm07CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLSAgICBSZWZQdHI8SW5wdXRDdXJzb3I+
IG1faW5wdXRDdXJzb3I7CisgICAgUmVmPElucHV0Q3Vyc29yPiBtX2lucHV0Q3Vyc29yOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTYxNyw4ICs2MTYsOCBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25z
dDsKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0SW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxJbnB1dEN1cnNvcj4pOwotICAgIElucHV0Q3Vyc29y
JiBpbnB1dEN1cnNvcigpIGNvbnN0IHsgcmV0dXJuICptX2lucHV0Q3Vyc29yOyB9CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRJbnB1dEN1cnNvcihSZWY8SW5wdXRDdXJzb3I+JiYpOwor
ICAgIElucHV0Q3Vyc29yJiBpbnB1dEN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRDdXJz
b3IuZ2V0KCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmNwcAppbmRleCBkZmQ5NjUxNDQ3ZDcxYjQxNDg5MjhlZjMxODQyYmIyN2Y1MDRh
MGIxLi5kNWY3MDkxMGQyMmIwZDdlZjZjODAyNDQ5YzlhMTU0ZmYxZjBlZGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5jcHAKQEAgLTM4LDE4ICszOCwxOCBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKFZNJiB2bSkKIHsKICAgICBpZiAoIXZt
LmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvci5nZXQoKSkgewogICAgICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVzKCZ2bSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyk7Ci0g
ICAgICAgIHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvciA9IFN0cm9uZzxKU0NlbGw+KHZt
LCBjcmVhdGUodm0sIDAsIDAsIDAsIHByb3BlcnR5TmFtZXMpKTsKKyAgICAgICAgdm0uZW1wdHlQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yID0gU3Ryb25nPEpTQ2VsbD4odm0sIGNyZWF0ZSh2bSwgMCwg
MCwgMCwgV1RGTW92ZShwcm9wZXJ0eU5hbWVzKSkpOwogICAgIH0KICAgICByZXR1cm4ganNDYXN0
PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcio+KHZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRv
ci5nZXQoKSk7CiB9CiAKLUpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3Qg
aW5kZXhlZExlbmd0aCwgdWludDMyX3QgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMpCitKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgsIHVpbnQzMl90IG51bWJlclN0cnVjdHVyZVByb3Bl
cnRpZXMsIFByb3BlcnR5TmFtZUFycmF5JiYgcHJvcGVydHlOYW1lcykKIHsKICAgICBTdHJ1Y3R1
cmVJRCBzdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+aWQoKSA6IDA7CiAgICAg
dWludDMyX3QgaW5saW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkgOiAwOwogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9
IG5ldyAoTm90TnVsbCwgCiAgICAgICAgIGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I+KHZtLmhlYXApKSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iodm0sIHN0cnVjdHVyZUlE
LCBpbmxpbmVDYXBhY2l0eSk7Ci0gICAgZW51bWVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0sIGlu
ZGV4ZWRMZW5ndGgsIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHByb3BlcnR5TmFtZXMuZGF0
YSgpKTsKKyAgICBlbnVtZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgaW5kZXhlZExlbmd0aCwg
bnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgcHJvcGVydHlOYW1lcy5yZWxlYXNlRGF0YSgpKTsK
ICAgICByZXR1cm4gZW51bWVyYXRvcjsKIH0KIApAQCAtNjAsMTEgKzYwLDEwIEBAIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSwgU3RydWN0
dXJlSUQgc3RydWN0dXJlCiB7CiB9CiAKLXZvaWQgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIHVpbnQzMl90IGluZGV4ZWRMZW5ndGgsIHVpbnQzMl90IGVu
ZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgsIFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRh
PiBpZGVudHMpCit2b2lkIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCB1aW50MzJfdCBpbmRleGVkTGVuZ3RoLCB1aW50MzJfdCBlbmRTdHJ1Y3R1cmVQcm9w
ZXJ0eUluZGV4LCBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiYmIGlkZW50aWZpZXJzKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKIAotICAgIFJlZlB0cjxQcm9wZXJ0eU5h
bWVBcnJheURhdGE+IGlkZW50aWZpZXJzID0gaWRlbnRzOwogICAgIFByb3BlcnR5TmFtZUFycmF5
RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiB2ZWN0b3IgPSBpZGVudGlmaWVycy0+cHJvcGVydHlO
YW1lVmVjdG9yKCk7CiAKICAgICBtX2luZGV4ZWRMZW5ndGggPSBpbmRleGVkTGVuZ3RoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAppbmRleCAzMzU2MTQzZjMxMmNlYWM2NDAwNzcxM2IxNmMyODQ3NjMyMjRiNGU0
Li41ZTEyMzU5ODVhMjg5YzQ2YmVmZGM4MGNjYmQ3NGU3YzkwNTQ1N2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAg
ICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mKTsKLSAgICBzdGF0
aWMgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50
MzJfdCwgdWludDMyX3QsIFByb3BlcnR5TmFtZUFycmF5Jik7CisgICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQz
Ml90LCBQcm9wZXJ0eU5hbWVBcnJheSYmKTsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CkBA
IC04NSw3ICs4NSw3IEBAIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcihW
TSYsIFN0cnVjdHVyZUlELCB1aW50MzJfdCk7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IHVpbnQzMl90LCB1aW50MzJfdCwgUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+KTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgdWludDMyX3QsIHVpbnQzMl90LCBSZWZQdHI8
UHJvcGVydHlOYW1lQXJyYXlEYXRhPiYmKTsKIAogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNT
dHJpbmc+PiBtX3Byb3BlcnR5TmFtZXM7CiAgICAgU3RydWN0dXJlSUQgbV9jYWNoZWRTdHJ1Y3R1
cmVJRDsKQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KiBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplYwogCiAgICAg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgc3RydWN0dXJlKTsKIAotICAgIGVudW1lcmF0
b3IgPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBpbmRl
eGVkTGVuZ3RoLCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWVzKTsKKyAg
ICBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVj
dHVyZSwgaW5kZXhlZExlbmd0aCwgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgV1RGTW92ZShw
cm9wZXJ0eU5hbWVzKSk7CiAgICAgZW51bWVyYXRvci0+c2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4o
dm0sIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpOwogICAgIGlmICghaW5kZXhlZExl
bmd0aCAmJiBzdHJ1Y3R1cmUtPmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKQogICAg
ICAgICBzdHJ1Y3R1cmUtPnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Iodm0sIGVudW1l
cmF0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggYmNi
NTQwNWZmNTcwNTBmZDZjNDNiZDM2ZWUwYjU3NjRmYzFmMzQ0NC4uM2ZjNjc3ZGE3NjNmZDU2YzA0
OGZlZWQxMDQ1MmNlNDY3OTU0ZTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCkBAIC05NywxMCArOTcsMTAgQEAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4TGVuZ3RoID0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CiAgICAgCiBwcml2YXRlOgotICAgIEpTU3RyaW5nKFZN
JiB2bSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSkKKyAgICBKU1N0cmluZyhWTSYgdm0s
IFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQogICAgICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RyaW5n
U3RydWN0dXJlLmdldCgpKQogICAgICAgICAsIG1fZmxhZ3MoMCkKLSAgICAgICAgLCBtX3ZhbHVl
KFJlZlB0cjxTdHJpbmdJbXBsPih2YWx1ZSkpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZh
bHVlKSkKICAgICB7CiAgICAgfQogCkBAIC0xMzYsMjAgKzEzNiwxOCBAQCBjbGFzcyBKU1N0cmlu
ZyA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogcHVibGljOgotICAgIHN0YXRpYyBKU1N0cmlu
ZyogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSkKKyAgICBzdGF0
aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdmFs
dWUtPmxlbmd0aCgpOwogICAgICAgICBzaXplX3QgY29zdCA9IHZhbHVlLT5jb3N0KCk7Ci0gICAg
ICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0
cmluZz4odm0uaGVhcCkpIEpTU3RyaW5nKHZtLCB2YWx1ZSk7CisgICAgICAgIEpTU3RyaW5nKiBu
ZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4odm0uaGVhcCkp
IEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNo
Q3JlYXRpb24odm0sIGxlbmd0aCwgY29zdCk7CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAg
ICAgfQotICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihWTSYgdm0sIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVI
YXNPdGhlck93bmVyKFZNJiB2bSwgUmVmPFN0cmluZ0ltcGw+JiYgdmFsdWUpCiAgICAgewotICAg
ICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmFsdWUtPmxlbmd0
aCgpOwotICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXApKSBKU1N0cmluZyh2bSwgdmFsdWUpOworICAgICAgICBK
U1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+
KHZtLmhlYXApKSBKU1N0cmluZyh2bSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBuZXdTdHJp
bmctPmZpbmlzaENyZWF0aW9uKHZtLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5n
OwogICAgIH0KQEAgLTUwNiwxOSArNTA0LDE5IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpz
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNKiB2bSwgVUNoYXIgYykKIHsKICAgICBpZiAoYyA8PSBt
YXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKLSAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgq
dm0sIFN0cmluZygmYywgMSkuaW1wbCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgq
dm0sIFN0cmluZ0ltcGw6OmNyZWF0ZSgmYywgMSkpOwogfQogCiBpbmxpbmUgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBBU1NFUlQo
cy5sZW5ndGgoKSA+IDEpOwotICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgcy5pbXBs
KCkpOworICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgKnMuaW1wbCgpKTsKIH0KIAog
aW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0qIHZtLCBTdHJpbmcmJiBzKQog
ewogICAgIEFTU0VSVChzLmxlbmd0aCgpID4gMSk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVh
dGUoKnZtLCBzLnJlbGVhc2VJbXBsKCkpOworICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2
bSwgcy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiBBTFdBWVNfSU5MSU5F
IElkZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CkBAIC01NzIsNyArNTcwLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhWTSogdm0sIGNv
bnN0IFN0cmluZyYgcykKICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KQogICAgICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGMpOwogICAgIH0KLSAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMuaW1wbCgp
KTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sICpzLmltcGwoKSk7CiB9CiAKIGlu
bGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3Ry
aW5nKiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTYzNCw3ICs2MzIs
NyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoVk0qIHZtLCBjb25zdCBTdHJpbmcm
IHMpCiAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZykKICAgICAgICAg
ICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAg
ICB9Ci0gICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCp2bSwgcy5pbXBs
KCkpOworICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sICpzLmlt
cGwoKSk7CiB9CiAKIGlubGluZSBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihWTSogdm0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuaAppbmRleCAwYzgzNGUwNWYyNzRjYzZkNGY3Y2VkNjZmMjhlYmYwNTcwYmZj
NTY3Li5mNDI0YmFkYWU1MjBmNDNhYjI0ZTY0ZmI5ZjczNWMxYTdkZDkwMGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIHJldHVybiBtX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2suZ2V0KCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBn
ZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3Bw
CmluZGV4IGI3ZGFkMmE0NjJkZGRmYzIyNzYyZmQ1Y2Q3Y2Y2YTQ2MWNkZDE4ZjYuLjBmOGQwODQ0
NDllNDU3OTc2MmFiZjg3MTVhNDkwOTc0ZmVhNjFiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCkBAIC00MCwxMSArNDAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpz
X2luZm8gPSB7ICJOYXRpdmVFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0YWJsZSkgfTsKIAotTmF0aXZlRXhlY3V0
YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5n
JiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZNJiB2
bSwgUmVmPEpJVENvZGU+JiYgY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUmVm
PEpJVENvZGU+JiYgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsK
ICAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0
YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwotICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKKyAgICBleGVjdXRhYmxlLT5m
aW5pc2hDcmVhdGlvbih2bSwgV1RGTW92ZShjYWxsVGh1bmspLCBXVEZNb3ZlKGNvbnN0cnVjdFRo
dW5rKSwgbmFtZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKQEAgLTU4LDExICs1OCwx
MSBAQCBTdHJ1Y3R1cmUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBOYXRpdmVFeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIE5hdGl2ZUV4ZWN1
dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUmVmPEpJVENvZGU+JiYgY2FsbFRodW5rLCBS
ZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBtX2ppdENvZGVGb3JDYWxsID0gY2FsbFRo
dW5rOwotICAgIG1faml0Q29kZUZvckNvbnN0cnVjdCA9IGNvbnN0cnVjdFRodW5rOworICAgIG1f
aml0Q29kZUZvckNhbGwgPSBXVEZNb3ZlKGNhbGxUaHVuayk7CisgICAgbV9qaXRDb2RlRm9yQ29u
c3RydWN0ID0gV1RGTW92ZShjb25zdHJ1Y3RUaHVuayk7CiAgICAgbV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrID0gbV9qaXRDb2RlRm9yQ2FsbC0+YWRkcmVzc0ZvckNhbGwoTXVzdENoZWNr
QXJpdHkpOwogICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gbV9qaXRD
b2RlRm9yQ29uc3RydWN0LT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSk7CiAgICAgbV9u
YW1lID0gbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaAppbmRleCBlNGQzZTA0OTQ1N2I0NWQwMjQ1N2U4ZGRhNTQ0OTBiMzcxNGFjY2Vh
Li5hYTU2Y2Y0ZGNmZDE0ZWIyYWFiYWMzNGFjM2U1MDJlYjAyMDdhZjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCkBAIC0zOSw3ICsz
OSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiwg
UGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQ
YXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1
Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYg
bmFtZSk7CisgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFJlZjxKSVRD
b2RlPiYmIGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFJlZjxKSVRDb2RlPiYm
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIH0KIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVmPEpJVENvZGU+JiYg
Y2FsbFRodW5rLCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRl
eCA4NWVjNGI1Y2E0YjFiN2Y1OGU2M2FhYTk1MjNmZWM2NTc3NmNhYmQ4Li5iNjdmZTgyYjUwYTI2
NTAzZmFlZGVlYWY0ZmFhOTFlOGQ4M2U2NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAKICAg
ICBKU09iamVjdCogY2hlY2tTeW50YXgoRXhlY1N0YXRlKik7CiAKLSAgICBQYXNzUmVmUHRyPEpJ
VENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQorICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRD
b2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oCmluZGV4IDhkMWYyODYwOGZkNDAzNGRmZTZmYTVjNzAyNDYyY2QzNGFhNDUzN2EuLmE3
YWZlNzhmNmRmYzE2NTdmNDcwM2FmZWI0YjcyMDQ0MTQyNmIwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApAQCAtNzMsOSArNzMs
OCBAQCBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7CiAgICAgSWRlbnRpZmllciYgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9
CiAgICAgY29uc3QgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CiAKLSAgICB2b2lkIHNldERh
dGEoUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IGRhdGEpIHsgbV9kYXRhID0gZGF0
YTsgfQogICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YSogZGF0YSgpIHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiByZWxlYXNlRGF0
YSgpIHsgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQorICAgIFJlZlB0cjxQcm9wZXJ0eU5hbWVB
cnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9CiAKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGZ1bmN0aW9ucy4KICAgICBib29sIGNhbkFkZEtub3du
VW5pcXVlRm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVW
ZWN0b3IoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
S2V5LmgKaW5kZXggZmQ1ZjMwZWQxZGYwNDlmMjQ5OWM5YTJlM2JiMmE3N2MwMzZjNzMyMi4uNTdh
M2YzNTliYWE5NzVmMjNkM2JiNTcxMzQ1N2NlYmE1NmM0YjgwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgKQEAgLTYzLDkgKzYzLDkgQEAgc3RydWN0IFJlZ0V4
cEtleSB7CiAgICAgewogICAgIH0KIAotICAgIFJlZ0V4cEtleShSZWdFeHBGbGFncyBmbGFncywg
Y29uc3QgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBwYXR0ZXJuKQorICAgIFJlZ0V4cEtleShSZWdF
eHBGbGFncyBmbGFncywgUmVmUHRyPFN0cmluZ0ltcGw+JiYgcGF0dGVybikKICAgICAgICAgOiBm
bGFnc1ZhbHVlKGZsYWdzKQotICAgICAgICAsIHBhdHRlcm4ocGF0dGVybikKKyAgICAgICAgLCBw
YXR0ZXJuKFdURk1vdmUocGF0dGVybikpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKaW5kZXggY2FjNWQ2OWVjZTI1NTQ2
MTY1ZWI0MzNmZTllZmU3ZTZhNzI4MzU1OS4uNjBlMjFiNmNmNDZlMTNlNDYyMzU4NDQ4ZmYyOGI3
ZGE5MTQyMmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuY3BwCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNtYWxsU3RyaW5nc1N0b3JhZ2Ugewog
cHVibGljOgogICAgIFNtYWxsU3RyaW5nc1N0b3JhZ2UoKTsKIAotICAgIFN0cmluZ0ltcGwqIHJl
cCh1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikKKyAgICBTdHJpbmdJbXBsJiByZXAodW5zaWduZWQg
Y2hhciBjaGFyYWN0ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbV9yZXBzW2NoYXJhY3Rlcl0u
Z2V0KCk7CisgICAgICAgIHJldHVybiAqbV9yZXBzW2NoYXJhY3Rlcl0uZ2V0KCk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtMTEwLDcgKzExMCw3IEBAIFNtYWxsU3RyaW5nczo6flNtYWxsU3RyaW5n
cygpCiB2b2lkIFNtYWxsU3RyaW5nczo6Y3JlYXRlRW1wdHlTdHJpbmcoVk0qIHZtKQogewogICAg
IEFTU0VSVCghbV9lbXB0eVN0cmluZyk7Ci0gICAgbV9lbXB0eVN0cmluZyA9IEpTU3RyaW5nOjpj
cmVhdGVIYXNPdGhlck93bmVyKCp2bSwgU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisgICAgbV9lbXB0
eVN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCp2bSwgKlN0cmluZ0ltcGw6
OmVtcHR5KCkpOwogICAgIEFTU0VSVChtX25lZWRzVG9CZVZpc2l0ZWQpOwogfQogCkBAIC0xMTks
MTEgKzExOSwxMSBAQCB2b2lkIFNtYWxsU3RyaW5nczo6Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKFZNKiB2bSwgdW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCiAgICAgaWYgKCFtX3N0b3JhZ2Up
CiAgICAgICAgIG1fc3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U21hbGxTdHJpbmdzU3RvcmFn
ZT4oKTsKICAgICBBU1NFUlQoIW1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdKTsK
LSAgICBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXSA9IEpTU3RyaW5nOjpjcmVh
dGVIYXNPdGhlck93bmVyKCp2bSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPihtX3N0b3JhZ2UtPnJl
cChjaGFyYWN0ZXIpKSk7CisgICAgbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0g
PSBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIG1fc3RvcmFnZS0+cmVwKGNoYXJh
Y3RlcikpOwogICAgIEFTU0VSVChtX25lZWRzVG9CZVZpc2l0ZWQpOwogfQogCi1TdHJpbmdJbXBs
KiBTbWFsbFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNo
YXJhY3RlcikKK1N0cmluZ0ltcGwmIFNtYWxsU3RyaW5nczo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5n
UmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQogewogICAgIGlmICghbV9zdG9yYWdlKQogICAg
ICAgICBtX3N0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNtYWxsU3RyaW5nc1N0b3JhZ2U+KCk7
CkBAIC0xMzIsNyArMTMyLDcgQEAgU3RyaW5nSW1wbCogU21hbGxTdHJpbmdzOjpzaW5nbGVDaGFy
YWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCiAKIHZvaWQgU21hbGxTdHJp
bmdzOjppbml0aWFsaXplKFZNKiB2bSwgSlNTdHJpbmcqJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHZh
bHVlKQogewotICAgIHN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCB2YWx1ZSkuaW1wbCgpKTsKKyAgICBzdHJpbmcgPSBKU1N0cmluZzo6Y3Jl
YXRlKCp2bSwgQXRvbWljU3RyaW5nSW1wbDo6YWRkKHZhbHVlKS5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICBBU1NFUlQobV9uZWVkc1RvQmVWaXNpdGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCAyNjNiNDI3YTA3Yjg2ODJkMjIxM2Mx
ZTYwMDM0MjEyNTMxMTUwMDhkLi5mMzFiNWNkNjZmYzI2ZWNkMzA0ZWVmMDllMjExZmVlYjUxOTg5
ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApA
QCAtNzEsNyArNzEsNyBAQCBjbGFzcyBTbWFsbFN0cmluZ3MgewogICAgICAgICByZXR1cm4gbV9z
aW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl07CiAgICAgfQogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgV1RGOjpTdHJpbmdJbXBsKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAodW5zaWdu
ZWQgY2hhciBjaGFyYWN0ZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nSW1w
bCYgc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKTsKIAog
ICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuICZtX3Npbmds
ZUNoYXJhY3RlclN0cmluZ3NbMF07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKaW5kZXggMDcyYzNiYmVhZmNiZWU5ZDYxNGQwYzdkNDY3M2U5OThkNmVj
NGNmZS4uNDQ0ODZkYjNjNTI1MTU1Yzc1MDRiYmNiMGYwY2VkNzNjNjBjYzAzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMTQzLDEwICsxMTQz
LDEwIEBAIGJvb2wgU3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8o
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFN0
cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkK
K1JlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiYXNlU2hhcGUgPSBTdHJ1Y3R1
cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBjdXJTaGFwZSA9
IGJhc2VTaGFwZTsKKyAgICBSZWY8U3RydWN0dXJlU2hhcGU+IGJhc2VTaGFwZSA9IFN0cnVjdHVy
ZVNoYXBlOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1clNoYXBlID0g
YmFzZVNoYXBlLnB0cigpOwogICAgIFN0cnVjdHVyZSogY3VyU3RydWN0dXJlID0gdGhpczsKICAg
ICBKU1ZhbHVlIGN1clZhbHVlID0gdmFsdWU7CiAgICAgd2hpbGUgKGN1clN0cnVjdHVyZSkgewpA
QCAtMTE2OCw3ICsxMTY4LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJl
Ojp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCiAKICAgICAgICAgaWYgKGN1clN0cnVj
dHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0dXJlKCkpIHsKICAgICAgICAgICAgIGF1dG8gbmV3
U2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBjdXJTaGFwZS0+
c2V0UHJvdG8obmV3U2hhcGUucHRyKCkpOworICAgICAgICAgICAgY3VyU2hhcGUtPnNldFByb3Rv
KG5ld1NoYXBlLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBjdXJTaGFwZSA9IFdURk1vdmUobmV3
U2hhcGUpOwogICAgICAgICAgICAgY3VyVmFsdWUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3Rv
dHlwZSgpOwogICAgICAgICB9CkBAIC0xMTc2LDcgKzExNzYsNyBAQCBQYXNzUmVmUHRyPFN0cnVj
dHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgY3VyU3RydWN0dXJlID0gY3VyU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVTdHJ1Y3R1
cmUoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIFdURk1vdmUoYmFzZVNoYXBlKTsKKyAgICBy
ZXR1cm4gYmFzZVNoYXBlOwogfQogCiBib29sIFN0cnVjdHVyZTo6Y2FuVXNlRm9yQWxsb2NhdGlv
bnNPZihTdHJ1Y3R1cmUqIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAppbmRleCBjMTdhMzQzNmFhMWQ3YzViYTAxODQyOTZkMTk5YWQwZWI0ODdmMmU2Li5i
MGY0M2I3MDAyODIyOTBjM2EyN2M0YjdmZWIxZGMxZGE4ZGUwMWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUg
IldlYWsuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3Rm
L0NvbXBpbGF0aW9uVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC01OTIsNyArNTkx
LDcgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHdp
bGxTdG9yZVZhbHVlU2xvdyh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkT3B0aW1pemUs
IEluZmVycmVkVHlwZVRhYmxlOjpPbGRQcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmVTaGFwZT4gdG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlKTsKKyAgICBSZWY8U3Ry
dWN0dXJlU2hhcGU+IHRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSk7CiAgICAgCiAgICAgLy8gRGV0
ZXJtaW5lcyBpZiB0aGUgdHdvIHN0cnVjdHVyZXMgbWF0Y2ggZW5vdWdoIHRoYXQgdGhpcyBvbmUg
Y291bGQgYmUgdXNlZCBmb3IgYWxsb2NhdGlvbnMKICAgICAvLyBvZiB0aGUgb3RoZXIgb25lLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2Fj
aGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUu
Y3BwCmluZGV4IDRjODA2OWE4YzBmMTgzYzgzOTViMTQwZjk1MDAxNjdkNTA5NTQxZDAuLmIyNWI0
NjZmNjQxNmNiMDhkZGY1ZjViY2JhMGYxODFlM2ZkOTRhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29s
PiBUeXBlTG9jYXRpb25DYWNoZTo6Z2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlSUQgZ2xv
YmFsVmFyaWFibGVJRCwgaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBlbmQsIFBhc3NSZWZQdHI8VHlwZVNldD4gZ2xvYmFsVHlwZVNldCwgVk0qIHZtKQorc3RkOjpw
YWlyPFR5cGVMb2NhdGlvbiosIGJvb2w+IFR5cGVMb2NhdGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRp
b24oR2xvYmFsVmFyaWFibGVJRCBnbG9iYWxWYXJpYWJsZUlELCBpbnRwdHJfdCBzb3VyY2VJRCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgUmVmUHRyPFR5cGVTZXQ+JiYgZ2xvYmFsVHlw
ZVNldCwgVk0qIHZtKQogewogICAgIExvY2F0aW9uS2V5IGtleTsKICAgICBrZXkubV9nbG9iYWxW
YXJpYWJsZUlEID0gZ2xvYmFsVmFyaWFibGVJRDsKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RkOjpwYWly
PFR5cGVMb2NhdGlvbiosIGJvb2w+IFR5cGVMb2NhdGlvbkNhY2hlOjpnZXRUeXBlTG9jYXRpb24o
R2xvYmFsVmFyaWFibGUKICAgICAgICAgbG9jYXRpb24tPm1fc291cmNlSUQgPSBzb3VyY2VJRDsK
ICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RTdGFydCA9IHN0YXJ0OwogICAgICAgICBsb2NhdGlv
bi0+bV9kaXZvdEVuZCA9IGVuZDsKLSAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCA9
IGdsb2JhbFR5cGVTZXQ7CisgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgPSBXVEZN
b3ZlKGdsb2JhbFR5cGVTZXQpOwogCiAgICAgICAgIG1fbG9jYXRpb25NYXBba2V5XSA9IGxvY2F0
aW9uOwogICAgICAgICBpc05ld0xvY2F0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5oCmluZGV4IDhlNjU0NWQ4MjM2NjQ4
NTU0Yzg3MGQyOTAzMjk2NDhjOGM5YWQwYWEuLjAwOGVmNzMyMWQ1YjRkZjRmNzVkNGUwODQ3YTcz
ZWJkZjAyODAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVMb2NhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZUxvY2F0aW9uQ2FjaGUuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBUeXBlTG9jYXRpb25DYWNo
ZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kOwogICAgIH07CiAKLSAgICBzdGQ6OnBhaXI8VHlw
ZUxvY2F0aW9uKiwgYm9vbD4gZ2V0VHlwZUxvY2F0aW9uKEdsb2JhbFZhcmlhYmxlSUQsIGludHB0
cl90LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBQYXNzUmVmUHRyPFR5cGVTZXQ+LCBW
TSopOworICAgIHN0ZDo6cGFpcjxUeXBlTG9jYXRpb24qLCBib29sPiBnZXRUeXBlTG9jYXRpb24o
R2xvYmFsVmFyaWFibGVJRCwgaW50cHRyX3QsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQs
IFJlZlB0cjxUeXBlU2V0PiYmLCBWTSopOwogcHJpdmF0ZTogICAgIAogICAgIHR5cGVkZWYgc3Rk
Ojp1bm9yZGVyZWRfbWFwPExvY2F0aW9uS2V5LCBUeXBlTG9jYXRpb24qLCBIYXNoTWV0aG9kPExv
Y2F0aW9uS2V5Pj4gTG9jYXRpb25NYXA7CiAgICAgTG9jYXRpb25NYXAgbV9sb2NhdGlvbk1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxv
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3Bw
CmluZGV4IDZkOTgzMzU4YzJkMWUyNDYzMjhjODZmM2Y3ZmQ0MDk2NWRiMTc1ZGMuLjg1YzQ5ZDA0
NmJhZmVhYzdjMmZkZWEyMTUyNThkM2M0NGVmY2QxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcApAQCAtODIsOCArODIsOCBAQCB2
b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoY29uc3QgU3RyaW5nJiByZWFz
b24pCiAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBlbnRyeS0+bG9jYXRpb247CiAg
ICAgICAgIGxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9IHR5cGU7CiAgICAgICAgIGlmIChsb2Nh
dGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlw
ZVNldC0+YWRkVHlwZUluZm9ybWF0aW9uKHR5cGUsIHNoYXBlLCBzdHJ1Y3R1cmUpOwotICAgICAg
ICBsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBl
LCBzaGFwZSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQtPmFkZFR5cGVJbmZvcm1hdGlvbih0eXBlLCBzaGFwZS5jb3B5UmVmKCksIHN0cnVjdHVyZSk7
CisgICAgICAgIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+YWRkVHlwZUluZm9ybWF0
aW9uKHR5cGUsIFdURk1vdmUoc2hhcGUpLCBzdHJ1Y3R1cmUpOwogCiAgICAgICAgIGVudHJ5Kys7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCAz
MWVhN2RmMzRmYzQwNGY5OGU1YjY0ZGE5ZWY0MjNlNjYzNDk1YzE3Li5mYjgxMTM4NDdmOTczMGEz
YTNmYWViYTExMmM4YzlmZmJkZWQ3Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcApAQCAtNDEsMTIgKzQxLDEyIEBAIFR5cGVTZXQ6OlR5cGVTZXQoKQogewog
fQogCi12b2lkIFR5cGVTZXQ6OmFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlwZSB0eXBlLCBQ
YXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBwcnBOZXdTaGFwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIAordm9pZCBUeXBlU2V0OjphZGRUeXBlSW5mb3JtYXRpb24oUnVudGltZVR5cGUgdHlwZSwg
UmVmUHRyPFN0cnVjdHVyZVNoYXBlPiYmIHBhc3NlZE5ld1NoYXBlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG5ld1NoYXBlID0gcHJwTmV3U2hh
cGU7CiAgICAgbV9zZWVuVHlwZXMgPSBtX3NlZW5UeXBlcyB8IHR5cGU7CiAKLSAgICBpZiAoc3Ry
dWN0dXJlICYmIG5ld1NoYXBlICYmICFydW50aW1lVHlwZUlzUHJpbWl0aXZlKHR5cGUpKSB7Cisg
ICAgaWYgKHN0cnVjdHVyZSAmJiBwYXNzZWROZXdTaGFwZSAmJiAhcnVudGltZVR5cGVJc1ByaW1p
dGl2ZSh0eXBlKSkgeworICAgICAgICBSZWY8U3RydWN0dXJlU2hhcGU+IG5ld1NoYXBlID0gcGFz
c2VkTmV3U2hhcGUucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZVNl
dC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAtNTYsMjYgKzU2LDIyIEBAIHZv
aWQgVHlwZVNldDo6YWRkVHlwZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBlIHR5cGUsIFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IHByCiAgICAgICAgICAgICAvLyAtIFdlIGRvbid0IGhhdmUgdHdv
IGluc3RhbmNlcyBvZiB0aGUgc2FtZSBzaGFwZS4gKFNhbWUgc2hhcGVzIG1heSBoYXZlIGRpZmZl
cmVudCBTdHJ1Y3R1cmVzKS4KICAgICAgICAgICAgIC8vIC0gV2UgZG9uJ3QgaGF2ZSB0d28gc2hh
cGVzIHRoYXQgc2hhcmUgdGhlIHNhbWUgcHJvdG90eXBlIGNoYWluLiBJZiB0aGVzZSBzaGFwZXMg
c2hhcmUgdGhlIHNhbWUgCiAgICAgICAgICAgICAvLyAgIHByb3RvdHlwZSBjaGFpbiwgdGhleSB3
aWxsIGJlIG1lcmdlZCBpbnRvIG9uZSBzaGFwZS4KLSAgICAgICAgICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKICAgICAgICAgICAgIFN0cmluZyBoYXNoID0gbmV3U2hhcGUtPnByb3BlcnR5SGFzaCgp
OwogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWVuU2hhcGUgOiBtX3N0cnVjdHVyZUhpc3Rvcnkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoc2VlblNoYXBlLT5wcm9wZXJ0eUhhc2goKSA9PSBoYXNo
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfSAKLSAgICAgICAgICAgICAgICBpZiAoc2VlblNo
YXBlLT5oYXNTYW1lUHJvdG90eXBlQ2hhaW4obmV3U2hhcGUpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHNlZW5TaGFwZSA9IFN0cnVjdHVyZVNoYXBlOjptZXJnZShzZWVuU2hhcGUsIG5ld1NoYXBl
KTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoc2VlblNoYXBlLT5wcm9wZXJ0eUhhc2goKSA9
PSBoYXNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaWYg
KHNlZW5TaGFwZS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKG5ld1NoYXBlLmdldCgpKSkgeworICAg
ICAgICAgICAgICAgICAgICBzZWVuU2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2Uoc2VlblNo
YXBlLmNvcHlSZWYoKSwgV1RGTW92ZShuZXdTaGFwZSkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAoIWZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXpl
KCkgPCAxMDApCi0gICAgICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlSGlzdG9yeS5hcHBlbmQo
bmV3U2hhcGUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFtX2lzT3ZlcmZsb3duKQotICAg
ICAgICAgICAgICAgICAgICBtX2lzT3ZlcmZsb3duID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICht
X3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpIDwgMTAwKSB7CisgICAgICAgICAgICAgICAgbV9zdHJ1
Y3R1cmVIaXN0b3J5LmFwcGVuZChXVEZNb3ZlKG5ld1NoYXBlKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2lzT3ZlcmZsb3duKQor
ICAgICAgICAgICAgICAgIG1faXNPdmVyZmxvd24gPSB0cnVlOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtMjIyLDggKzIxOCw4IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvCiB7CiAgICAgYXV0
byBkZXNjcmlwdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCk7IGkrKykKLSAg
ICAgICAgZGVzY3JpcHRpb24tPmFkZEl0ZW0obV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpLT5pbnNw
ZWN0b3JSZXByZXNlbnRhdGlvbigpKTsKKyAgICBmb3IgKGF1dG8mIHNoYXBlIDogbV9zdHJ1Y3R1
cmVIaXN0b3J5KQorICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShzaGFwZS0+aW5zcGVjdG9y
UmVwcmVzZW50YXRpb24oKSk7CiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CkBAIC0zNjcs
MzAgKzM2MywzMCBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAg
cmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIAotU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpsZWFz
dENvbW1vbkFuY2VzdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+PiBzaGFw
ZXMpCitTdHJpbmcgU3RydWN0dXJlU2hhcGU6OmxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVj
dG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+JiBzaGFwZXMpCiB7Ci0gICAgaWYgKCFzaGFwZXMuc2l6
ZSgpKQorICAgIGlmIChzaGFwZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gb3JpZ2luID0gc2hhcGVzLmF0KDAp
OworICAgIFN0cnVjdHVyZVNoYXBlKiBvcmlnaW4gPSBzaGFwZXNbMF0ucHRyKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBzaGFwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgYm9vbCBm
b3VuZExVQiA9IGZhbHNlOwogICAgICAgICB3aGlsZSAoIWZvdW5kTFVCKSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGNoZWNrID0gc2hhcGVzLmF0KGkpOworICAgICAgICAg
ICAgU3RydWN0dXJlU2hhcGUqIGNoZWNrID0gc2hhcGVzW2ldLnB0cigpOwogICAgICAgICAgICAg
U3RyaW5nIGN1ckN0b3JOYW1lID0gb3JpZ2luLT5tX2NvbnN0cnVjdG9yTmFtZTsKICAgICAgICAg
ICAgIHdoaWxlIChjaGVjaykgewogICAgICAgICAgICAgICAgIGlmIChjaGVjay0+bV9jb25zdHJ1
Y3Rvck5hbWUgPT0gY3VyQ3Rvck5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgZm91bmRMVUIg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgY2hlY2sgPSBjaGVjay0+bV9wcm90bzsKKyAgICAgICAgICAgICAgICBj
aGVjayA9IGNoZWNrLT5tX3Byb3RvLmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCFmb3VuZExVQikgewotICAgICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpbi0+bV9wcm90
bzsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVubGlrZWx5IHRvIGhhcHBlbiwgYmVjYXVz
ZSB3ZSB1c3VhbGx5IGJvdHRvbSBvdXQgYXQgIk9iamVjdCIsIGJ1dCB0aGVyZSBhcmUgc29tZSBz
ZXRzIG9mIE9iamVjdHMKICAgICAgICAgICAgICAgICAvLyB0aGF0IG1heSBjYXVzZSB0aGlzIGJl
aGF2aW9yLiBXZSBmYWxsIGJhY2sgdG8gIk9iamVjdCIgYmVjYXVzZSBpdCdzIG91ciB2ZXJzaW9u
IG9mIFRvcC4KLSAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbikKKyAgICAgICAgICAgICAgICBp
ZiAoIW9yaWdpbi0+bV9wcm90bykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiT2JqZWN0Iik7CisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLT5tX3Byb3Rv
LmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTUyOSwyNSArNTI1LDIzIEBA
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4g
U3RydWN0dXJlU2hhcGU6Omluc3BlY3RvCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKLWJvb2wgU3Ry
dWN0dXJlU2hhcGU6Omhhc1NhbWVQcm90b3R5cGVDaGFpbihQYXNzUmVmUHRyPFN0cnVjdHVyZVNo
YXBlPiBwcnBPdGhlcikKK2Jvb2wgU3RydWN0dXJlU2hhcGU6Omhhc1NhbWVQcm90b3R5cGVDaGFp
bihjb25zdCBTdHJ1Y3R1cmVTaGFwZSYgb3RoZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFN0cnVjdHVy
ZVNoYXBlPiBzZWxmID0gdGhpczsKLSAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG90aGVyID0g
cHJwT3RoZXI7CisgICAgY29uc3QgU3RydWN0dXJlU2hhcGUqIHNlbGYgPSB0aGlzOworICAgIGNv
bnN0IFN0cnVjdHVyZVNoYXBlKiBvdGhlciA9ICZvdGhlclJlZjsKICAgICB3aGlsZSAoc2VsZiAm
JiBvdGhlcikgewogICAgICAgICBpZiAoc2VsZi0+bV9jb25zdHJ1Y3Rvck5hbWUgIT0gb3RoZXIt
Pm1fY29uc3RydWN0b3JOYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBz
ZWxmID0gc2VsZi0+bV9wcm90bzsKLSAgICAgICAgb3RoZXIgPSBvdGhlci0+bV9wcm90bzsKKyAg
ICAgICAgc2VsZiA9IHNlbGYtPm1fcHJvdG8uZ2V0KCk7CisgICAgICAgIG90aGVyID0gb3RoZXIt
Pm1fcHJvdG8uZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuICFzZWxmICYmICFvdGhlcjsKIH0K
IAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNvbnN0
IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHBycEEsIGNvbnN0IFBhc3NSZWZQdHI8U3RydWN0
dXJlU2hhcGU+IHBycEIpCitSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJn
ZShSZWY8U3RydWN0dXJlU2hhcGU+JiYgYSwgUmVmPFN0cnVjdHVyZVNoYXBlPiYmIGIpCiB7Ci0g
ICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBhID0gcHJwQTsKLSAgICBSZWZQdHI8U3RydWN0dXJl
U2hhcGU+IGIgPSBwcnBCOwotICAgIEFTU0VSVChhLT5oYXNTYW1lUHJvdG90eXBlQ2hhaW4oYikp
OworICAgIEFTU0VSVChhLT5oYXNTYW1lUHJvdG90eXBlQ2hhaW4oYi5nZXQoKSkpOwogCiAgICAg
YXV0byBtZXJnZWQgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvIGZp
ZWxkIDogYS0+bV9maWVsZHMpIHsKQEAgLTU3NCwxMiArNTY4LDEyIEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVj
dHVyZVNoYXBlCiAKICAgICBpZiAoYS0+bV9wcm90bykgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VChiLT5tX3Byb3RvKTsKLSAgICAgICAgbWVyZ2VkLT5zZXRQcm90byhTdHJ1Y3R1cmVTaGFwZTo6
bWVyZ2UoYS0+bV9wcm90bywgYi0+bV9wcm90bykpOworICAgICAgICBtZXJnZWQtPnNldFByb3Rv
KFN0cnVjdHVyZVNoYXBlOjptZXJnZSgqYS0+bV9wcm90bywgKmItPm1fcHJvdG8pKTsKICAgICB9
CiAKICAgICBtZXJnZWQtPm1hcmtBc0ZpbmFsKCk7CiAKLSAgICByZXR1cm4gV1RGTW92ZShtZXJn
ZWQpOworICAgIHJldHVybiBtZXJnZWQ7CiB9CiAKIHZvaWQgU3RydWN0dXJlU2hhcGU6OmVudGVy
RGljdGlvbmFyeU1vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCmlu
ZGV4IDIyZjE3OGQzZWVmNmYzNjQyOTFlODM3N2IyOGIxZGEwNzJlZjZhZmQuLjBjMzcwMDNhNzcy
Y2QzNzZiYzgxMDU2NjQ2MzFhNGY2NTQyMjEwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmgKQEAgLTYzLDEzICs2MywxMyBAQCBjbGFzcyBTdHJ1Y3R1cmVTaGFwZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZVNoYXBlPiB7CiAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNl
bnRhdGlvbigpOwogICAgIHZvaWQgc2V0Q29uc3RydWN0b3JOYW1lKFN0cmluZyBuYW1lKSB7IG1f
Y29uc3RydWN0b3JOYW1lID0gKG5hbWUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJPYmplY3Qi
KSA6IG5hbWUpOyB9CiAgICAgU3RyaW5nIGNvbnN0cnVjdG9yTmFtZSgpIHsgcmV0dXJuIG1fY29u
c3RydWN0b3JOYW1lOyB9Ci0gICAgdm9pZCBzZXRQcm90byhQYXNzUmVmUHRyPFN0cnVjdHVyZVNo
YXBlPiBzaGFwZSkgeyBtX3Byb3RvID0gc2hhcGU7IH0KKyAgICB2b2lkIHNldFByb3RvKFJlZjxT
dHJ1Y3R1cmVTaGFwZT4mJiBzaGFwZSkgeyBtX3Byb3RvID0gV1RGTW92ZShzaGFwZSk7IH0KICAg
ICB2b2lkIGVudGVyRGljdGlvbmFyeU1vZGUoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgU3Ry
aW5nIGxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFw
ZT4+KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbWVyZ2UoY29uc3Qg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4sIGNvbnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hh
cGU+KTsKLSAgICBib29sIGhhc1NhbWVQcm90b3R5cGVDaGFpbihQYXNzUmVmUHRyPFN0cnVjdHVy
ZVNoYXBlPik7CisgICAgc3RhdGljIFN0cmluZyBsZWFzdENvbW1vbkFuY2VzdG9yKGNvbnN0IFZl
Y3RvcjxSZWY8U3RydWN0dXJlU2hhcGU+PiYpOworICAgIHN0YXRpYyBSZWY8U3RydWN0dXJlU2hh
cGU+IG1lcmdlKFJlZjxTdHJ1Y3R1cmVTaGFwZT4mJiwgUmVmPFN0cnVjdHVyZVNoYXBlPiYmKTsK
KyAgICBib29sIGhhc1NhbWVQcm90b3R5cGVDaGFpbihjb25zdCBTdHJ1Y3R1cmVTaGFwZSYpOwog
CiAgICAgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFz
aD4gbV9maWVsZHM7CiAgICAgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVu
dGlmaWVyUmVwSGFzaD4gbV9vcHRpb25hbEZpZWxkczsKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3Mg
VHlwZVNldCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUeXBlU2V0PiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxUeXBlU2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFR5cGVTZXQpOyB9CiAgICAgVHlwZVNldCgpOwotICAgIHZvaWQgYWRkVHlwZUluZm9ybWF0aW9u
KFJ1bnRpbWVUeXBlLCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiwgU3RydWN0dXJlKik7Cisg
ICAgdm9pZCBhZGRUeXBlSW5mb3JtYXRpb24oUnVudGltZVR5cGUsIFJlZlB0cjxTdHJ1Y3R1cmVT
aGFwZT4mJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKTsKICAgICBT
dHJpbmcgZHVtcFR5cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Q7
CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVHlwZVNldCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxUeXBlU2V0PiB7CiBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJmbG93bjsKICAg
ICBSdW50aW1lVHlwZU1hc2sgbV9zZWVuVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1
cmVTaGFwZT4+IG1fc3RydWN0dXJlSGlzdG9yeTsKKyAgICBWZWN0b3I8UmVmPFN0cnVjdHVyZVNo
YXBlPj4gbV9zdHJ1Y3R1cmVIaXN0b3J5OwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNl
dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5NzRjMzEwMmFh
MzA3NTcxOWRlZjQwMjIwYjY1YTMzNDY0ZDBiYTUyLi5jMjIzOWZkYmVkNzVkM2U5YzY1Y2RiY2I5
NjZlNmZhMjgzM2RkNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01
NDksOCArNTQ5LDggQEAgTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnMKICAgICBVTlVTRURfUEFSQU0o
aW50cmluc2ljKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIHJldHVybiBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGUoKnRoaXMsCi0gICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2Rl
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9j
YWxsX3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSksIGZ1bmN0aW9uLAotICAg
ICAgICBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSksIGNvbnN0cnVjdG9yLAorICAgICAgICBhZG9wdFJlZigqbmV3
IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYo
bGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwg
ZnVuY3Rpb24sCisgICAgICAgIGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY29uc3RydWN0X3Ry
YW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSksIGNvbnN0cnVjdG9yLAogICAgICAg
ICBOb0ludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKIH0KIApAQCAtODY4LDkgKzg2OCw5IEBA
IHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRhKCkKICAgICB0eXBlUHJvZmlsZXIoKS0+ZHVt
cFR5cGVQcm9maWxlckRhdGEoKnRoaXMpOwogfQogCi12b2lkIFZNOjpxdWV1ZU1pY3JvdGFzayhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4gdGFzaykK
K3ZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCBnbG9iYWxPYmplY3QsIHRhc2spKTsKKyAg
ICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0
aGlzLCBnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5N
aWNyb3Rhc2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDA4ODAwOGE5YmNi
YjdmZjYyNDEzM2RlZTlhZjVkZDYzOWI1ZjY4YTUuLjUyN2I4Zjg2M2ZkZGEwYmFlMGEyOWU1YTNi
YzQ4ODM3MGFiZTFmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTkyLDE1
ICsxOTIsMTUgQEAgY2xhc3MgUXVldWVkVGFzayB7CiBwdWJsaWM6CiAgICAgdm9pZCBydW4oKTsK
IAotICAgIFF1ZXVlZFRhc2soVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPE1pY3JvdGFzaz4gbWljcm90YXNrKQorICAgIFF1ZXVlZFRhc2soVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIG1pY3JvdGFzaykK
ICAgICAgICAgOiBtX2dsb2JhbE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0KQotICAgICAgICAsIG1f
bWljcm90YXNrKG1pY3JvdGFzaykKKyAgICAgICAgLCBtX21pY3JvdGFzayhXVEZNb3ZlKG1pY3Jv
dGFzaykpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICBTdHJvbmc8SlNHbG9iYWxPYmpl
Y3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAgIFJlZlB0cjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwor
ICAgIFJlZjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOwogfTsKIAogY2xhc3MgQ29uc2VydmF0aXZl
Um9vdHM7CkBAIC02NTksNyArNjU5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBib29s
IGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKICAgICBib29sIGRpc2FibGVDb250cm9sRmxv
d1Byb2ZpbGVyKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHF1ZXVlTWljcm90YXNr
KEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+KTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiwgUmVmPE1pY3JvdGFz
az4mJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKICAg
ICB2b2lkIHNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KGJvb2wgZ2xvYmFs
Q29uc3RSZWRlY2xhcmF0aW9uVGhyb3cpIHsgbV9nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91
bGRUaHJvdyA9IGdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblRocm93OyB9CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgY29uc3QgeyBy
ZXR1cm4gbV9nbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggMzhh
NTFjMTUxMzc5ZmY0YTRmNDdjYTcyM2ZiNjhjZTExOGRlMjYzYi4uZWY4OTQzNTkyNTQwZmRlYjIz
MzRhMWFhNGM5YjI3MDU1NWFmM2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29u
c3QgU3RyaW5nJiBuZXcKICAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQob3JpZ0hlYWRlcik7CiAg
ICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0JvZHkpOwogCi0gICAgYXV0byBuZXdQcm92aWRl
ciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlkZXJTdHIsIFNvdXJjZU9y
aWdpbiB7ICI8b3ZlcnJpZGRlbj4iIH0sICI8b3ZlcnJpZGRlbj4iKTsKKyAgICBSZWY8U291cmNl
UHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQ
cm92aWRlclN0ciwgU291cmNlT3JpZ2luIHsgIjxvdmVycmlkZGVuPiIgfSwgIjxvdmVycmlkZGVu
PiIpOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0gMTsg
Ly8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4IDI2YmM1ZjM1
YTVlYmMyODhjMmE0NmRmMGMzOWY1MTIwNDVmMDI1N2IuLjA2YThlZGM4MzFiOTNhNjBiYjQyY2U4
YThlZTRmNGJiZTBkOTU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTb3VyY2VDb2RlLmgKQEAgLTQ1LDIxICs0NSwyMSBAQCBjbGFzcyBTY3JpcHRTb3VyY2VDb2Rl
IHsKIHB1YmxpYzoKICAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBVUkwmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24g
PSBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSA9IEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICA6IG1f
cHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlNDOjpT
b3VyY2VPcmlnaW4geyB1cmwuc3RyaW5nKCkgfSwgdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9u
LCBzb3VyY2VUeXBlKSkKLSAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlciwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZElu
dCgpKQorICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLmNvcHlSZWYoKSwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZElu
dCgpKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICB7CiAgICAgfQogCiAgICAgU2NyaXB0U291
cmNlQ29kZShDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNv
dXJjZVR5cGUgc291cmNlVHlwZSwgUmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0RmV0
Y2hlcikKICAgICAgICAgOiBtX3Byb3ZpZGVyKENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpj
cmVhdGUoY2FjaGVkU2NyaXB0LCBzb3VyY2VUeXBlLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpKSkK
LSAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlcikKKyAgICAgICAgLCBtX2NvZGUobV9wcm92aWRl
ci5jb3B5UmVmKCkpCiAgICAgICAgICwgbV9jYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KQogICAg
IHsKICAgICB9CiAKICAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNv
dXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlLCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hl
cj4mJiBzY3JpcHRGZXRjaGVyKQogICAgICAgICA6IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgSlNDOjpTb3VyY2VPcmlnaW4geyB1cmwuc3RyaW5n
KCksIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikgfSwgdXJsLnN0cmluZygpLCBzdGFydFBvc2l0aW9u
LCBzb3VyY2VUeXBlKSkKLSAgICAgICAgLCBtX2NvZGUobV9wcm92aWRlciwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZElu
dCgpKQorICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLmNvcHlSZWYoKSwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZElu
dCgpKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICB7CiAgICAgfQpAQCAtNzcsNyArNzcsNyBA
QCBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlIHsKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgCiBwcml2YXRlOgotICAgIFJlZlB0cjxKU0M6OlNvdXJjZVBy
b3ZpZGVyPiBtX3Byb3ZpZGVyOworICAgIFJlZjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBtX3Byb3Zp
ZGVyOwogICAgIEpTQzo6U291cmNlQ29kZSBtX2NvZGU7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKICAgICBVUkwgbV91cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggNWViZTU4MzY3MDFmYzJm
Yzk0YzIxNTA0ODZiNTk5MTZlZDk4YjhjOC4uYmYzNThkYzZhYjQ4NTA5ODY0NTAxYTA1YjZmNzNk
OGIwYWM5OTI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNw
cApAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVOYXZpZ2F0
ZWQoRnJhbWUmIGZyYW1lKQogICAgIC8vIFdlIHN0b3JlIHRoZSBpbnB1dCBjdXJzb3IgaW4gYm90
aCBEb2N1bWVudCBhbmQgSlNET01XaW5kb3csIHNvIHRoYXQKICAgICAvLyByZXBsYXkgc3RhdGUg
aXMgYWNjZXNzaWJsZSBmcm9tIEphdmFTY3JpcHRDb3JlIGFuZCBzY3JpcHQtZnJlZSBsYXlvdXQg
Y29kZS4KICAgICBmcmFtZS5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcigqbV9hY3RpdmVDdXJz
b3IpOwotICAgIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSktPnNldElucHV0Q3Vyc29yKG1fYWN0aXZlQ3Vyc29yLmdldCgpKTsKKyAgICBmcmFtZS5z
Y3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1
cnNvcigqbV9hY3RpdmVDdXJzb3IpOwogfQogCiB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1l
RGV0YWNoZWQoRnJhbWUmIGZyYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301792</attachid>
            <date>2017-02-16 11:49:39 -0800</date>
            <delta_ts>2017-02-16 11:49:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168320-20170217044702.patch</filename>
            <type>text/plain</type>
            <size>4845</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTg1NjcxY2FlNDRkMzM0OGVmZWFiN2RkZmUxODZlMDU1MTc1ZGNhLi5hZDI1YmFhMDQwZjYzN2I1
ZWMyNjRmZjYzMDg5MTgyY2YzNGYxZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODMyMAorCisgICAgICAgIFJldmVydCB0
aGUgY2hhbmdlIGZvciBSZWY8Vk0+IHRvIGZpeCBWTSBsaWZldGltZSBpc3N1ZS4KKworICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0Q3JlYXRl
SW5Hcm91cCk6CisgICAgICAgICogQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwOgorICAgICAg
ICAodGVzdEpTT05QYXJzZSk6CisKKzIwMTctMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyIGluIGluc3Bl
Y3Rvci8KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODQyMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXgg
ZTdkYWQxOWIwMGNjN2VjOTkwMjYzNGVhZGQ1NzI4MGM3OTViZmQ2YS4uMWUyNzI1YTNhZDVmZDEy
OTNhOGRlNjlhOGE3ZTY2YmFmMGEyNDg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcApAQCAtMTMzLDEyICsxMzMsMTIgQEAgSlNHbG9iYWxDb250ZXh0UmVm
IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpT
Q2xhc3MKIHsKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBSZWY8Vk0+IHZtID0g
Z3JvdXAgPyBSZWY8Vk0+KCp0b0pTKGdyb3VwKSkgOiBWTTo6Y3JlYXRlQ29udGV4dEdyb3VwKCk7
CisgICAgUmVmUHRyPFZNPiB2bSA9IGdyb3VwID8gUmVmUHRyPFZNPih0b0pTKGdyb3VwKSkgOiBW
TTo6Y3JlYXRlQ29udGV4dEdyb3VwKCk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLnB0
cigpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKIAogICAgIGlmICghZ2xv
YmFsT2JqZWN0Q2xhc3MpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0uZ2V0KCksIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0uZ2V0KCksIGpzTnVsbCgpKSk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKCp2bSwgSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAgICAgICAgIGlmIChKU1JlbW90ZUluc3BlY3RvckdldEluc3BlY3Rpb25FbmFibGVk
QnlEZWZhdWx0KCkpCiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2lu
Z0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYg
SlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlND
bGFzcwogICAgICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKSk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUo
dm0uZ2V0KCksIGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2Jq
ZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLmdldCgpLCAwLCBqc051bGwoKSkpOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0
Pjo6Y3JlYXRlKCp2bSwgZ2xvYmFsT2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCAwLCBqc051bGwoKSkpOwogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gZ2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShleGVjKTsKICAgICBpZiAoIXBy
b3RvdHlwZSkKICAgICAgICAgcHJvdG90eXBlID0ganNOdWxsKCk7Ci0gICAgZ2xvYmFsT2JqZWN0
LT5yZXNldFByb3RvdHlwZSh2bS5nZXQoKSwgcHJvdG90eXBlKTsKKyAgICBnbG9iYWxPYmplY3Qt
PnJlc2V0UHJvdG90eXBlKCp2bSwgcHJvdG90eXBlKTsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKICAgICBpZiAoSlNSZW1vdGVJbnNwZWN0b3JHZXRJbnNwZWN0aW9uRW5hYmxlZEJ5RGVm
YXVsdCgpKQogICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05Q
YXJzZVRlc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU09OUGFyc2VU
ZXN0LmNwcAppbmRleCBhY2YwMjk3NzBhZTY5ZWFmZGUwYzZkYzA0NjU0NWE1ZGYxNzQxZjk5Li4y
Nzk3YzNjOGVhNWQxNWMxODNiZWExZTJkNGQyNTkwMTMyNzYwNjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHAKQEAgLTM4LDI3ICsz
OCwyNyBAQCBpbnQgdGVzdEpTT05QYXJzZSgpCiB7CiAgICAgYm9vbCBmYWlsZWQgPSBmYWxzZTsK
IAotICAgIHsKLSAgICAgICAgUmVmPFZNPiB2bSA9IFZNOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
Vk0+IHZtID0gVk06OmNyZWF0ZSgpOwogCi0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0u
cHRyKCkpOwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZSh2bS5nZXQoKSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bS5nZXQoKSwganNOdWxsKCkpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZSgqdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOwog
Ci0gICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwot
ICAgICAgICBKU1ZhbHVlIHYwID0gSlNPTlBhcnNlKGV4ZWMsICIiKTsKLSAgICAgICAgSlNWYWx1
ZSB2MSA9IEpTT05QYXJzZShleGVjLCAiIyQlXiIpOwotICAgICAgICBKU1ZhbHVlIHYyID0gSlNP
TlBhcnNlKGV4ZWMsIFN0cmluZygpKTsKLSAgICAgICAgVUNoYXIgZW1wdHlVQ2hhckFycmF5WzFd
ID0geyAnXDAnIH07Ci0gICAgICAgIEpTVmFsdWUgdjMgPSBKU09OUGFyc2UoZXhlYywgU3RyaW5n
KGVtcHR5VUNoYXJBcnJheSwgMCkpOwotICAgICAgICBKU1ZhbHVlIHY0OwotICAgICAgICBKU1Zh
bHVlIHY1ID0gSlNPTlBhcnNlKGV4ZWMsICIxMjMiKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIHYwID0gSlNPTlBhcnNlKGV4
ZWMsICIiKTsKKyAgICBKU1ZhbHVlIHYxID0gSlNPTlBhcnNlKGV4ZWMsICIjJCVeIik7CisgICAg
SlNWYWx1ZSB2MiA9IEpTT05QYXJzZShleGVjLCBTdHJpbmcoKSk7CisgICAgVUNoYXIgZW1wdHlV
Q2hhckFycmF5WzFdID0geyAnXDAnIH07CisgICAgSlNWYWx1ZSB2MyA9IEpTT05QYXJzZShleGVj
LCBTdHJpbmcoZW1wdHlVQ2hhckFycmF5LCAwKSk7CisgICAgSlNWYWx1ZSB2NDsKKyAgICBKU1Zh
bHVlIHY1ID0gSlNPTlBhcnNlKGV4ZWMsICIxMjMiKTsKIAotICAgICAgICBmYWlsZWQgPSBmYWls
ZWQgfHwgKHYwICE9IHYxKTsKLSAgICAgICAgZmFpbGVkID0gZmFpbGVkIHx8ICh2MSAhPSB2Mik7
Ci0gICAgICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjIgIT0gdjMpOwotICAgICAgICBmYWlsZWQg
PSBmYWlsZWQgfHwgKHYzICE9IHY0KTsKLSAgICAgICAgZmFpbGVkID0gZmFpbGVkIHx8ICh2NCA9
PSB2NSk7Ci0gICAgfQorICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjAgIT0gdjEpOworICAgIGZh
aWxlZCA9IGZhaWxlZCB8fCAodjEgIT0gdjIpOworICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjIg
IT0gdjMpOworICAgIGZhaWxlZCA9IGZhaWxlZCB8fCAodjMgIT0gdjQpOworICAgIGZhaWxlZCA9
IGZhaWxlZCB8fCAodjQgPT0gdjUpOworCisgICAgdm0gPSBudWxscHRyOwogCiAgICAgaWYgKGZh
aWxlZCkKICAgICAgICAgcHJpbnRmKCJGQUlMOiBKU09OUGFyc2UgU3RyaW5nIHRlc3QuXG4iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>