<?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>61114</bug_id>
          
          <creation_ts>2011-05-19 00:31:59 -0700</creation_ts>
          <short_desc>[Refactoring] Pass NodeRendererFactory to Node::rendererIsNeeded()</short_desc>
          <delta_ts>2011-05-23 21:11:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>525.x (Safari 3.1)</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>
          
          <blocked>61111</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>rolandsteiner</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>406274</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-19 00:31:59 -0700</bug_when>
    <thetext>This change is a preparation for Bug 61111, and other possible problems around renderer creation inside &lt;content&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406287</commentid>
    <comment_count>1</comment_count>
      <attachid>94051</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-19 01:56:02 -0700</bug_when>
    <thetext>Created attachment 94051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406291</commentid>
    <comment_count>2</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-05-19 02:05:47 -0700</bug_when>
    <thetext>(In reply to comment #1)

I like this clean-up very much! :) As a follow-up, it&apos;d be great if we could move createRenderer into the factory as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406448</commentid>
    <comment_count>3</comment_count>
      <attachid>94051</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-19 09:29:45 -0700</bug_when>
    <thetext>Comment on attachment 94051
Patch

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

I am not convinced that we should be passing NodeRendererFactory to rendererIsNeeded. This leads to awkwardness like recreating it in CharacterData. Also, a Factory that&apos;s used as a context is more of a builder. Perhaps we could separate these two instead? NodeRendererFactory holds NodeRenderingContext, which is passed to rendererIsNeeded?

&gt; Source/WebCore/ChangeLog:139
&gt; +        (WebCore::SVGViewElement::rendererIsNeeded):

If you&apos;re not putting any data here, might as well clip the long list.

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:45400
&gt; +			&lt;File

You need a change do DOMAllinOne.cpp to make this build on platform/win.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:2629
&gt; -		892CF210134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 892CF208134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h */; };
&gt; + 		892CF210134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 892CF208134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h */; };

This seems like an unrelated change. Perhaps we first need to sort the project file and then rebase this patch?

&gt; Source/WebCore/dom/CharacterData.cpp:185
&gt; +    if ((!renderer() || !rendererIsNeeded(NodeRendererFactory(this, renderer()-&gt;style()))) &amp;&amp; attached()) {

This instantiation seems unfortunate. We now do extra work where none was done before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406793</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-19 18:12:47 -0700</bug_when>
    <thetext>Roland, Dimitri, thank you for taking a look!

(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; 
&gt; I like this clean-up very much! :) As a follow-up, it&apos;d be great if we could move createRenderer into the factory as well.
createRenderer() is polymorphic so it&apos;s hard to move even it can be wrapped by the builder.
In that viewpoint, the builder might be really a builder-mediator. but the name is too long ;-)

(In reply to comment #3)
&gt; (From update of attachment 94051 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94051&amp;action=review
&gt; 
&gt; I am not convinced that we should be passing NodeRendererFactory to rendererIsNeeded. This leads to awkwardness like recreating it in CharacterData. Also, a Factory that&apos;s used as a context is more of a builder. Perhaps we could separate these two instead? NodeRendererFactory holds NodeRenderingContext, which is passed to rendererIsNeeded?
Sure. I&apos;ll make a separate context object.

For CharacterData, it&apos; been actually broken by the content-element change
because the rendererIfNeeded() depends parentNode() but it shouldn&apos;t.
That&apos;s really unfortunate. But I don&apos;t come up with the fix at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406888</commentid>
    <comment_count>5</comment_count>
      <attachid>94176</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-19 22:31:35 -0700</bug_when>
    <thetext>Created attachment 94176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406896</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-19 22:56:36 -0700</bug_when>
    <thetext>Updated patch, introducing NodeRenderingContext.

&gt; &gt; Source/WebCore/ChangeLog:139
&gt; &gt; +        (WebCore::SVGViewElement::rendererIsNeeded):
&gt; 
&gt; If you&apos;re not putting any data here, might as well clip the long list.
Makes sense. removed excepting filenames.

&gt; 
&gt; &gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:45400
&gt; &gt; +			&lt;File
&gt; 
&gt; You need a change do DOMAllinOne.cpp to make this build on platform/win.
&gt; 
Oops. Added.

&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:2629
&gt; &gt; -		892CF210134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 892CF208134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h */; };
&gt; &gt; + 		892CF210134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 892CF208134C8BB300AAEDA1 /* JSStorageInfoQuotaCallback.h */; };
&gt; 
&gt; This seems like an unrelated change. Perhaps we first need to sort the project file and then rebase this patch?
Hmm. Now its gone git rebase removed these.
 
&gt; 
&gt; &gt; Source/WebCore/dom/CharacterData.cpp:185
&gt; &gt; +    if ((!renderer() || !rendererIsNeeded(NodeRendererFactory(this, renderer()-&gt;style()))) &amp;&amp; attached()) {
&gt; 
&gt; This instantiation seems unfortunate. We now do extra work where none was done before.
Add ResolveType to skip extra work. 
I think we need some work for Bug 61111, But I believe we have some way to minimize the impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406953</commentid>
    <comment_count>7</comment_count>
      <attachid>94190</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-20 01:53:12 -0700</bug_when>
    <thetext>Created attachment 94190
updated bug description</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406957</commentid>
    <comment_count>8</comment_count>
      <attachid>94190</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-05-20 02:03:34 -0700</bug_when>
    <thetext>Comment on attachment 94190
updated bug description

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

&gt; Source/WebCore/ChangeLog:759
&gt;  
&gt; -2011-05-18  MORITA Hajime  &lt;morrita@google.com&gt;
&gt; -
&gt; -        Unreviewed attempt to fix clang build.
&gt; -
&gt; -        * rendering/InlineTextBox.h:
&gt; -
&gt;  2011-05-18  Nat Duca  &lt;nduca@chromium.org&gt;

You shouldn&apos;t remove your history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406962</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-20 02:13:31 -0700</bug_when>
    <thetext>&gt; You shouldn&apos;t remove your history.
Oops. Thanks for the catch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406963</commentid>
    <comment_count>10</comment_count>
      <attachid>94192</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-20 02:14:40 -0700</bug_when>
    <thetext>Created attachment 94192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407136</commentid>
    <comment_count>11</comment_count>
      <attachid>94192</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-20 09:03:19 -0700</bug_when>
    <thetext>Comment on attachment 94192
Patch

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

Just one more pass. This is looks awesome. Thanks for working on this!

&gt; Source/WebCore/dom/CharacterData.cpp:185
&gt; +    if ((!renderer() || !rendererIsNeeded(NodeRenderingContext(this, renderer()-&gt;style(), NodeRenderingContext::ResolveNone))) &amp;&amp; attached()) {

Looks like this is the only time you use both ResolveNone and pass style in. Maybe just have a different constructor, instead of adding another enum?

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:76
&gt; +    if (resolve == ResolveNone)
&gt; +        return;
&gt; +
&gt; +    ContainerNode* parent = m_node-&gt;parentOrHostNode();
&gt; +    if (!parent)
&gt; +        return;
&gt; +
&gt; +    if (parent-&gt;isShadowBoundary()) {
&gt; +        m_location = LocationShadowChild;
&gt; +        m_parentNodeForRenderingAndStyle = parent-&gt;shadowHost();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    m_location = LocationLightChild;
&gt; +
&gt; +    if (parent-&gt;isElementNode()) {
&gt; +        m_visualParentShadowRoot = toElement(parent)-&gt;shadowRoot();
&gt; +
&gt; +        if (m_visualParentShadowRoot) {
&gt; +            if (ContainerNode* contentContainer = m_visualParentShadowRoot-&gt;activeContentContainer()) {
&gt; +                m_phase = AttachContentForwarded;
&gt; +                m_parentNodeForRenderingAndStyle = NodeRenderingContext(contentContainer).parentNodeForRenderingAndStyle();
&gt; +                return;
&gt; +            } 
&gt; +                
&gt; +            m_phase = AttachContentLight;
&gt; +            m_parentNodeForRenderingAndStyle = parent;
&gt; +            return;
&gt; +        }
&gt; +    }
&gt; +
&gt; +    m_parentNodeForRenderingAndStyle = parent;

I expected that Context would be a dumb storage of the data, and factory would be stuffing it with the right values, but I guess we can do this in a separate pass.

&gt; Source/WebCore/dom/NodeRenderingContext.h:29
&gt; +#include &quot;Node.h&quot;

Do we need this include?

&gt; Source/WebCore/dom/NodeRenderingContext.h:50
&gt; +    Node* node() const { return m_node; }

Darin told me once before that having a method definition and declaration in the same line is bad for readability. I can&apos;t find his original comment now, but basically:

* keep the declarations free of definitions
* if you need a function inlined, put the definition right after of the class declaration, like http://codesearch.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/dom/Node.h&amp;l=727&amp;exact_package=chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407737</commentid>
    <comment_count>12</comment_count>
      <attachid>94361</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-22 21:08:53 -0700</bug_when>
    <thetext>Created attachment 94361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407738</commentid>
    <comment_count>13</comment_count>
      <attachid>94192</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-22 21:14:35 -0700</bug_when>
    <thetext>Comment on attachment 94192
Patch

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

Thank you for reviewing again, Dimitri!
Updated patch is here.

&gt;&gt; Source/WebCore/dom/CharacterData.cpp:185
&gt;&gt; +    if ((!renderer() || !rendererIsNeeded(NodeRenderingContext(this, renderer()-&gt;style(), NodeRenderingContext::ResolveNone))) &amp;&amp; attached()) {
&gt; 
&gt; Looks like this is the only time you use both ResolveNone and pass style in. Maybe just have a different constructor, instead of adding another enum?

Good poing. Splited this path out to another construtor.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:76
&gt;&gt; +    m_parentNodeForRenderingAndStyle = parent;
&gt; 
&gt; I expected that Context would be a dumb storage of the data, and factory would be stuffing it with the right values, but I guess we can do this in a separate pass.

I&apos;m not sure It might be better to hide m_phase and m_location inside the context class. In that sense, &quot;context&quot; might be &quot;resolver&quot;. But the name sounds too active.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.h:29
&gt;&gt; +#include &quot;Node.h&quot;
&gt; 
&gt; Do we need this include?

Good catch! removed.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.h:50
&gt;&gt; +    Node* node() const { return m_node; }
&gt; 
&gt; Darin told me once before that having a method definition and declaration in the same line is bad for readability. I can&apos;t find his original comment now, but basically:
&gt; 
&gt; * keep the declarations free of definitions
&gt; * if you need a function inlined, put the definition right after of the class declaration, like http://codesearch.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/dom/Node.h&amp;l=727&amp;exact_package=chromium

Hmm. So I kicked inline functions out from the class declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407852</commentid>
    <comment_count>14</comment_count>
      <attachid>94361</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-23 03:01:15 -0700</bug_when>
    <thetext>Comment on attachment 94361
Patch

Attachment 94361 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8723765</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407857</commentid>
    <comment_count>15</comment_count>
      <attachid>94395</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-23 03:42:44 -0700</bug_when>
    <thetext>Created attachment 94395
Another update to make a bot happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407991</commentid>
    <comment_count>16</comment_count>
      <attachid>94395</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-23 08:44:34 -0700</bug_when>
    <thetext>Comment on attachment 94395
Another update to make a bot happy

ok. Please make sure to let the patch cook on bots before landing. This one didn&apos;t apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408622</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-05-23 21:11:56 -0700</bug_when>
    <thetext>Committed r87125: &lt;http://trac.webkit.org/changeset/87125&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94051</attachid>
            <date>2011-05-19 01:56:02 -0700</date>
            <delta_ts>2011-05-19 22:31:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61114-20110519175600.patch</filename>
            <type>text/plain</type>
            <size>81365</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY4MTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQ1NGNj
NjhlNzIwNGZmZWYzYzYyZDM3YjY2YmUyYWUwYTdkZGY2OC4uMzk5ZjI4MzAyNDMwMjc5Yjg4MTcx
OWVlYjI5ZTkyOGM4YWM2MDMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU4NSw2ICs1ODUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBk
b20vTm9kZVJlbmRlcmVyRmFjdG9yeS5jcHAKICAgICBkb20vTm90YXRpb24uY3BwCiAgICAgZG9t
L09wdGlvbkVsZW1lbnQuY3BwCiAgICAgZG9tL09wdGlvbkdyb3VwRWxlbWVudC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkYzE4NzY2M2ZkZGFmODhkZjljMmU0ZTg5MGJmYWRiNDA0YjE4OThkLi5lZjlmODI4
ZDMxNzk5NmYxMzQwN2I3OTQ0NTExMzA3ZDk4OTY2ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQzIEBACisyMDExLTA1LTE5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3Rv
cmluZ10gUGFzcyBOb2RlUmVuZGVyZXJGYWN0b3J5IHRvIE5vZGU6OnJlbmRlcmVySXNOZWVkZWQo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjExMTQK
KworICAgICAgICAtIEV4dHJhY3RlZCBOb2RlUmVuZGVyZXJGYWN0b3J5IHRvIGl0cyBvd24gZmls
ZS4KKyAgICAgICAgLSBDaGFuZ2VkIHNpZ25hdHVyZSByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKikgCisgICAgICAgICAgdG8gcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJG
YWN0b3J5JikuCisgICAgICAgICAgVGhlIHN0eWxlIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBO
b2RlUmVuZGVyZXJGYWN0b3J5OjpzdHlsZSgpCisgICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHJl
bmRlcmVySXNOZWVkZWQoKSB0byBhY2Nlc3MgY29udGV4dHVhbAorICAgICAgICAgIGluZm9ybWF0
aW9uIGxpa2UgYXR0YWNoIHBoYXNlIGFuZCByZW5kZXJpbmctcGFyZW50LgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNoYXJhY3RlckRhdGE6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNoYXJhY3RlckRhdGE6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGRvbS9DaGFyYWN0
ZXJEYXRhLmg6CisgICAgICAgICogZG9tL0VkaXRpbmdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdUZXh0OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBkb20vRWRpdGlu
Z1RleHQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRv
bS9Ob2RlUmVuZGVyZXJGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJlckZhY3Rvcnk6On5Ob2RlUmVuZGVyZXJGYWN0b3J5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OnNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6bmV4dFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OndyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBk
b20vTm9kZVJlbmRlcmVyRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJlckZhY3Rvcnk6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5Ojpkb2N1bWVudCk6CisgICAgICAgICogZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogZG9tL1Rl
eHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBo
dG1sL0hUTUxBcHBsZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxOb1Nj
cmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOb1NjcmlwdEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1M
VmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OnJlbmRlcmVy
SXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFk
b3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNz
U2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0Rlc2NFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdEZXNjRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL1NWR0Zv
bnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHbHlwaEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9T
VkdIS2VybkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0hLZXJuRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
aXNzaW5nR2x5cGhFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
U1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICog
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6
CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RSZWZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RTcGFuRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogc3Zn
L1NWR1RTcGFuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RpdGxlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVktlcm5FbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdWS2VybkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAq
IHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQpOgorCiAyMDExLTA1LTE4ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggY2xhbmcg
YnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0NjJiOGM2ZTUwM2M0NjE1
Njc4ZGFiMzcxYzVjNDI4OGM4NDE5MjY0Li4xN2JjNTMyOWY5MmFjNmU1NDY4NGRkZWJiMTQ4NzM5
ZGVkNDYzYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTExODIsMTEgKzEx
ODIsMTMgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZp
bHRlckNvbmRpdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyZXJGYWN0b3J5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlSXRlcmF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJlckZhY3RvcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHls
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdpdGhJbmRleC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vTm90YXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5ZTEzNjgzNzA0NjEx
YWIxZjNkZWY2YWM4N2NmZDlhN2Q3NDgxY2JjLi44YzQxZGE2ZDU4OWU2MjI3MjcxZWEzZmUyN2Vl
ZTUzNGZkNTU3YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTAzLDYgKzI1MDMsOCBAQAogICAg
ICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdkb20vTm9kZUl0
ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCisgICAgICAgICAg
ICAnZG9tL05vZGVSZW5kZXJlckZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICdkb20vTm9kZVJl
bmRlcmVyRmFjdG9yeS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRlclN0eWxlLmgnLAog
ICAgICAgICAgICAgJ2RvbS9Ob2RlV2l0aEluZGV4LmgnLAogICAgICAgICAgICAgJ2RvbS9Ob3Rh
dGlvbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAzNzllYmQxM2QzY2E2ZjE0ZGQ1MjI0MzNiMTJj
MjhkZjNlODE0NmNmLi4xMTQwNTFjZjdmNjdhOTY2MGVhMWE4MTRmNDAyZjEzYzQ1ODM5OWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtNTA4LDYgKzUwOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9O
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBcCiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwIFwKICAgICBk
b20vTm9kZUl0ZXJhdG9yLmNwcCBcCisgICAgZG9tL05vZGVSZW5kZXJlckZhY3RvcnkuY3BwIFwK
ICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmNwcCBc
CiAgICAgZG9tL09wdGlvbkVsZW1lbnQuY3BwIFwKQEAgLTE0ODcsNiArMTQ4OCw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGRvbS9Ob2RlRmlsdGVyLmggXAogICAgIGRvbS9Ob2RlLmggXAogICAgIGRv
bS9Ob2RlSXRlcmF0b3IuaCBcCisgICAgZG9tL05vZGVSZW5kZXJlckZhY3RvcnkuaCBcCiAgICAg
ZG9tL05vdGF0aW9uLmggXAogICAgIGRvbS9PcHRpb25FbGVtZW50LmggXAogICAgIGRvbS9PcHRp
b25Hcm91cEVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDlmOTlmOGJlNTFhNzJhN2NkODZhM2Y1NjY4MDIwZGQwNWVjOTMxMTMu
LjFiMjNlOGRiNGRkNmJkN2YyYmVjYTI3MmEyZjYwODQwNjNiZTM4ZTMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00NTM0Miw2ICs0NTM0Miw2
MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cTm9kZVJlbmRlcmVyRmFjdG9yeS5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxOb2RlUmVuZGVyZXJGYWN0b3J5Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxO
b3RhdGlvbi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjNWY5MDZk
N2ViZGE0OTc1NTA0NGE0MzhiYTQwMDE0NDE2YjBiNmUuLmU3MmUwMzNiZTNkY2E5NTlkMzc4ZDVl
ZTBmMDg4OGQzZWU4ZWViY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2MjYsNyArMjYyNiw3IEBACiAJCTg5MkNGMjBEMTM0
QzhCQjMwMEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTJDRjIwNTEzNEM4QkIzMDBB
QUVEQTEgLyogSlNTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suY3BwICovOyB9OwogCQk4OTJDRjIw
RTEzNEM4QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MkNGMjA2MTM0QzhCQjMw
MEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjay5oICovOyB9OwogCQk4OTJDRjIw
RjEzNEM4QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkyQ0YyMDcxMzRDOEJC
MzAwQUFFREExIC8qIEpTU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmNwcCAqLzsgfTsKLQkJODky
Q0YyMTAxMzRDOEJCMzAwQUFFREExIC8qIEpTU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTJDRjIwODEzNEM4
QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2suaCAqLzsgfTsKKyAJCTg5
MkNGMjEwMTM0QzhCQjMwMEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvUXVvdGFDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkyQ0YyMDgxMzRD
OEJCMzAwQUFFREExIC8qIEpTU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmggKi87IH07CiAJCTg5
MkNGMjExMTM0QzhCQjMwMEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTJDRjIwOTEz
NEM4QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2suY3BwICovOyB9Owog
CQk4OTJDRjIxMjEzNEM4QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MkNGMjBB
MTM0QzhCQjMwMEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5oICovOyB9Owog
CQk4OTNDNDdBNzEyMzg5MDhCMDAyQjNEODYgLyogRmlsZUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdBNTEyMzg5MDhCMDAyQjNE
ODYgLyogRmlsZUNhbGxiYWNrLmggKi87IH07CkBAIC0zMjUyLDYgKzMyNTIsOCBAQAogCQlBN0RC
RjhERTEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0RCRjhEQzEyNzY5MTlDMDA2QjYw
MDggLyogVGV4dENoZWNraW5nSGVscGVyLmggKi87IH07CiAJCUE3RjMzOEEzMTFDMEVGQ0EwMEEz
MjBBNyAvKiBTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RjMzOEExMTFDMEVGQ0EwMEEzMjBBNyAvKiBTaGFkb3dFbGVtZW50
LmNwcCAqLzsgfTsKIAkJQTdGMzM4QTQxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjMzOEEy
MTFDMEVGQ0EwMEEzMjBBNyAvKiBTaGFkb3dFbGVtZW50LmggKi87IH07CisJCUE3RjVEOTRGMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyZXJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjVEOTREMTM4NEYwMkQwMEEyOUE4NyAv
KiBOb2RlUmVuZGVyZXJGYWN0b3J5LmNwcCAqLzsgfTsKKwkJQTdGNUQ5NTAxMzg0RjAyRDAwQTI5
QTg3IC8qIE5vZGVSZW5kZXJlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjVEOTRFMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVy
ZXJGYWN0b3J5LmggKi87IH07CiAJCUE4MEEzOEZFMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJu
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgw
QTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi87IH07CiAJCUE4MEQ2NzA4
MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRDY3MDcwRTlF
OURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggKi87IH07
CiAJCUE4MEU2Q0U0MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZDQkEwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAgKi87IH07CkBAIC05Nzc3LDYgKzk3NzksOCBAQAog
CQlBN0RCRjhEQzEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2luZ0hlbHBlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0YzMzhBMTExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdGMzM4QTIxMUMwRUZD
QTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Y1
RDk0RDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmVyRmFjdG9yeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlUmVuZGVyZXJGYWN0b3J5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdGNUQ5NEUxMzg0RjAyRDAwQTI5QTg3IC8qIE5v
ZGVSZW5kZXJlckZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9k
ZVJlbmRlcmVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODBBMzhG
RDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhdHRlcm5DRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4MEQ2NzA3MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODBF
NkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTcwMTUsOCArMTcwMTksNiBAQAogCQkJCTg5MkNGMjA0MTM0QzhCQjMw
MEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvLmggKi8sCiAJCQkJODkyQ0YyMDUxMzRDOEJCMzAwQUFF
REExIC8qIEpTU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrLmNwcCAqLywKIAkJCQk4OTJDRjIwNjEz
NEM4QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCAqLywKLQkJCQk4
OTJDRjIwNzEzNEM4QkIzMDBBQUVEQTEgLyogSlNTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2suY3Bw
ICovLAotCQkJCTg5MkNGMjA4MTM0QzhCQjMwMEFBRURBMSAvKiBKU1N0b3JhZ2VJbmZvUXVvdGFD
YWxsYmFjay5oICovLAogCQkJCTg5MkNGMjA5MTM0QzhCQjMwMEFBRURBMSAvKiBKU1N0b3JhZ2VJ
bmZvVXNhZ2VDYWxsYmFjay5jcHAgKi8sCiAJCQkJODkyQ0YyMEExMzRDOEJCMzAwQUFFREExIC8q
IEpTU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmggKi8sCiAJCQkpOwpAQCAtMTkzNTgsNiArMTkz
NjAsOCBAQAogCQkJCUE4MTg3MjEwMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5oICovLAog
CQkJCTg1QUNBOUZBMEE5QjYzMTAwMDY3MUU5MCAvKiBOb2RlTGlzdC5pZGwgKi8sCiAJCQkJNjMx
ODlBRTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovLAorCQkJCUE3RjVEOTRE
MTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyZXJGYWN0b3J5LmNwcCAqLywKKwkJCQlBN0Y1
RDk0RTEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmVyRmFjdG9yeS5oICovLAogCQkJCTYz
RDdCMzJDMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLywKIAkJCQk5Mzgy
QUFCMTBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovLAogCQkJCUE4RUE3RUI3
MEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5jcHAgKi8sCkBAIC0yMTkyNSw2ICsyMTkyOSw3
IEBACiAJCQkJODU0RkU3MzUwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRh
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJl
bmRlcmVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjNEN0IzMkQwRTc4Q0QzRjAwRjc2
MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkFBQjQwRDhD
Mzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
RUJFMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDgx
Niw2ICsyNDgyMSw3IEBACiAJCQkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzIwQTIyOTdCRTAwNThEN0FEIC8qIE5v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzQwQTIyOTdC
RTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Y1RDk0
RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmVyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEVBN0VCRjBBMTk0NUQwMDBBOEVGNUYgLyogTm90YXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzM1MDNDQzcxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0
aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCmluZGV4IGUxODE1ZDlkODhkMzc1NmIwYjQwNzAzODVlZGJhOGUyODEzNzlhMWYuLmZhNThk
MGMzN2NkYjc1ZDhlOTVhZjUyM2I3MTZjNDNmMmY3MTMxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0
YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJlckZhY3RvcnkuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKIApAQCAtMTgx
LDcgKzE4Miw3IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IG5ld0RhdGEsIHVuc2lnbmVkIG9mCiAKIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6dXBkYXRlUmVuZGVyZXIodW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVk
IGxlbmd0aE9mUmVwbGFjZWREYXRhKQogewotICAgIGlmICgoIXJlbmRlcmVyKCkgfHwgIXJlbmRl
cmVySXNOZWVkZWQocmVuZGVyZXIoKS0+c3R5bGUoKSkpICYmIGF0dGFjaGVkKCkpIHsKKyAgICBp
ZiAoKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcklzTmVlZGVkKE5vZGVSZW5kZXJlckZhY3Rvcnko
dGhpcywgcmVuZGVyZXIoKS0+c3R5bGUoKSkpKSAmJiBhdHRhY2hlZCgpKSB7CiAgICAgICAgIGRl
dGFjaCgpOwogICAgICAgICBhdHRhY2goKTsKICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyKCkpCkBA
IC0yMTcsMTEgKzIxOCwxMSBAQCBpbnQgQ2hhcmFjdGVyRGF0YTo6bWF4Q2hhcmFjdGVyT2Zmc2V0
KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgoKSk7CiB9CiAKLWJv
b2wgQ2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCiti
b29sIENoYXJhY3RlckRhdGE6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFj
dG9yeSYgZmFjdG9yeSkKIHsKICAgICBpZiAoIW1fZGF0YSB8fCAhbGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gTm9kZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
CisgICAgcmV0dXJuIE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSk7CiB9CiAKIGJvb2wg
Q2hhcmFjdGVyRGF0YTo6b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5oCmluZGV4IDM5YTZmYWE2YThkYWVlNjM3ZGI4YTU0ODRhYmY2ZGNhMjJhN2Y4
NWMuLjc0M2Q2ZTNmMDY3MTg5ZTM1MDQ4NTU2MzQ0NGU4ZmRiMDVlYWZmZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuaApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IEFTU0VSVCh0eXBlID09IENyZWF0ZUNvbW1lbnQgfHwgdHlwZSA9PSBDcmVhdGVUZXh0KTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3Rv
cnkmKTsKIAogICAgIHZvaWQgc2V0RGF0YUltcGwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBs
KSB7IG1fZGF0YSA9IGltcGw7IH0KICAgICB2b2lkIGRpc3BhdGNoTW9kaWZpZWRFdmVudChTdHJp
bmdJbXBsKiBvbGRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGlu
Z1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcAppbmRleCBlNDEy
YWQ2OWIzMTQxMzEzN2E2NDg0NDYwYjUwNTZhZDcyMDI1ODEwLi41MmFiN2FmNDBjNDBmNzk4ZGUy
Y2ZhYzJiMDAwMThkZWUzYWMxOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRp
dGluZ1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgUGFzc1JlZlB0cjxFZGl0aW5nVGV4dD4gRWRpdGluZ1RleHQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGEKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEVkaXRpbmdUZXh0KGRvY3VtZW50LCBkYXRhKSk7CiB9CiAKLWJvb2wgRWRpdGluZ1Rl
eHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKQorYm9vbCBFZGl0aW5nVGV4dDo6cmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmgKaW5kZXggMDgyMjNjMjE2YmQxOTM4NmMz
MzhmZDdlMjRmNjlhZTM2MmU5ZDVkZC4uZTAwY2U5ZjczYWYxMDkzY2YwMzU3YzcxMjJkMDQ2OTA1
MTQyYzJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVkaXRpbmdUZXh0PiBjcmVhdGUoRG9jdW1lbnQq
LCBjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSAqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5Jik7CiAKICAgICBFZGl0aW5nVGV4dChEb2N1bWVu
dCosIGNvbnN0IFN0cmluZyYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBkNzE3Yzg1MjU0MjU0
ZDdmODMwMDM4NjBmZTM4MzFjMjc4YTQ5YWZhLi4wZGYxMjhiZjZlNGYxZjA5OTE3OWM0MWE1MWEw
MjBkY2JhYjBlNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVk
ZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAi
Tm9kZVJhcmVEYXRhLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmVyRmFjdG9yeS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKQEAgLTc1LDcgKzc2LDYgQEAKICNpbmNsdWRlICJSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJl
bmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNj
b3BlZEV2ZW50UXVldWUuaCIKQEAgLTE0NTksMTc5ICsxNDU5LDYgQEAgTm9kZSAqTm9kZTo6bmV4
dExlYWZOb2RlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotCi1jbGFzcyBOb2RlUmVuZGVy
ZXJGYWN0b3J5IHsKLXB1YmxpYzoKLSAgICBlbnVtIFRyZWVMb2NhdGlvbiB7Ci0gICAgICAgIExv
Y2F0aW9uTm90SW5UcmVlLAotICAgICAgICBMb2NhdGlvbkxpZ2h0Q2hpbGQsCi0gICAgICAgIExv
Y2F0aW9uU2hhZG93Q2hpbGQsCi0gICAgfTsKLQotICAgIGVudW0gQXR0YWNoUGhhc2UgewotICAg
ICAgICBBdHRhY2hTdHJhaWdodCwKLSAgICAgICAgQXR0YWNoQ29udGVudExpZ2h0LAotICAgICAg
ICBBdHRhY2hDb250ZW50Rm9yd2FyZGVkLAotICAgIH07Ci0KLSAgICBleHBsaWNpdCBOb2RlUmVu
ZGVyZXJGYWN0b3J5KE5vZGUqKTsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdB
bmRTdHlsZTsgfQotICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwotCi1wcml2YXRl
OgotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsg
fQotICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVy
KCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0g
ICAgYm9vbCBzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0OwotCi0gICAgVHJlZUxvY2F0aW9u
IG1fbG9jYXRpb247Ci0gICAgQXR0YWNoUGhhc2UgbV9waGFzZTsKLSAgICBOb2RlKiBtX25vZGU7
Ci0gICAgQ29udGFpbmVyTm9kZSogbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7Ci0g
ICAgU2hhZG93Um9vdCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290OwotfTsKLQotTm9kZVJlbmRl
cmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeShOb2RlKiBub2RlKQotICAgIDogbV9sb2Nh
dGlvbihMb2NhdGlvbk5vdEluVHJlZSkKLSAgICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCi0g
ICAgLCBtX25vZGUobm9kZSkKLSAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxl
KDApCi0gICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKLXsKLSAgICBDb250YWluZXJO
b2RlKiBwYXJlbnQgPSBtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXBhcmVu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgp
KSB7Ci0gICAgICAgIG1fbG9jYXRpb24gPSBMb2NhdGlvblNoYWRvd0NoaWxkOwotICAgICAgICBt
X3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uTGlnaHRD
aGlsZDsKLQotICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBtX3Zp
c3VhbFBhcmVudFNoYWRvd1Jvb3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdCgpOwot
Ci0gICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIGlm
IChDb250YWluZXJOb2RlKiBjb250ZW50Q29udGFpbmVyID0gbV92aXN1YWxQYXJlbnRTaGFkb3dS
b290LT5hY3RpdmVDb250ZW50Q29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgICAgICBtX3BoYXNl
ID0gQXR0YWNoQ29udGVudEZvcndhcmRlZDsKLSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJlckZhY3RvcnkoY29udGVudENvbnRhaW5l
cikucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfSAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fcGhh
c2UgPSBBdHRhY2hDb250ZW50TGlnaHQ7Ci0gICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50Owot
fQotCi1ib29sIE5vZGVSZW5kZXJlckZhY3Rvcnk6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29u
c3QKLXsKLSAgICBBU1NFUlQobV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUpOwotCi0g
ICAgaWYgKG1fbG9jYXRpb24gPT0gTG9jYXRpb25Ob3RJblRyZWUgfHwgbV9waGFzZSA9PSBBdHRh
Y2hDb250ZW50TGlnaHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRlck9iamVj
dCogcGFyZW50UmVuZGVyZXIgPSBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAobV9sb2NhdGlvbiA9PSBMb2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9
PSBBdHRhY2hTdHJhaWdodCkgewotICAgICAgICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNo
aWxkcmVuKCkgaW4gYSBjYXNlIG9mIHNoYWRvdyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KLSAg
ICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQy
MwotICAgICAgICBpZiAoIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hh
ZG93Um9vdCAmJiAhbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdo
dENoaWxkUmVuZGVyZXJXaXRoU2hhZG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKCFtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihtX25vZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5Ojpj
cmVhdGVSZW5kZXJlckFuZFN0eWxlKCkKLXsKLSAgICBBU1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIo
KSk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKTsKLQot
ICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gbV9ub2RlLT5zdHlsZUZvclJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFtX25vZGUtPnJlbmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBtX25vZGUtPmNy
ZWF0ZVJlbmRlcmVyKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCksIHN0eWxlLmdldCgpKTsKLSAg
ICBpZiAoIW5ld1JlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghbV9wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCktPmlzQ2hpbGRBbGxvd2VkKG5l
d1JlbmRlcmVyLCBzdHlsZS5nZXQoKSkpIHsKLSAgICAgICAgbmV3UmVuZGVyZXItPmRlc3Ryb3ko
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgbV9ub2RlLT5zZXRSZW5kZXJlcihu
ZXdSZW5kZXJlcik7Ci0gICAgbmV3UmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShzdHlsZS5y
ZWxlYXNlKCkpOyAvLyBzZXRBbmltYXRhYmxlU3R5bGUoKSBjYW4gZGVwZW5kIG9uIHJlbmRlcmVy
KCkgYWxyZWFkeSBiZWluZyBzZXQuCi0gICAgcmV0dXJuIG5ld1JlbmRlcmVyOwotfQotCi1SZW5k
ZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rvcnk6Om5leHRSZW5kZXJlcigpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fcGhhc2UgIT0gQXR0YWNoQ29udGVudEZvcndhcmRlZCkKLSAgICAgICAgcmV0dXJu
IG1fbm9kZS0+bmV4dFJlbmRlcmVyKCk7Ci0gICAgLy8gUmV0dXJucyAwIGhlcmUgdG8gaW5zZXJ0
IHJlbmRlcmVyIGF0IHRoZSBlbmQgb2YgY2hpbGQgbGlzdC4KLSAgICAvLyBXZSBhc3N1bWUgY29u
dGVudCBjaGlsZHJlbiBhcmUgYWx3YXlzIGF0dGFjaGVkIGluIHRyZWUgb3JkZXIgYW5kCi0gICAg
Ly8gdGhlcmUgaXMgbm8gcGFydGlhbCByZW5kZXIgdHJlZSBjcmVhdGlvbi4KLSAgICByZXR1cm4g
MDsKLX0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLXN0YXRpYyBSZW5kZXJGdWxsU2Ny
ZWVuKiB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3Vt
ZW50KiBkb2N1bWVudCkKLXsKLSAgICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVy
ZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRvY3Vt
ZW50KTsKLSAgICBmdWxsc2NyZWVuUmVuZGVyZXItPnNldFN0eWxlKFJlbmRlckZ1bGxTY3JlZW46
OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpKTsKLSAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2Ug
ZmFpbGVkIHRvIGNyZWF0ZSB0aGUgbmV3IHJlbmRlciBhbmQgZW5kIHVwIHdyYXBwaW5nIG5vdGhp
bmcuCi0gICAgLy8gV2UnbGwgZW5kIHVwIGRpc3BsYXlpbmcgYSBibGFjayBzY3JlZW4sIGJ1dCBK
ZXIgc2F5cyB0aGlzIGlzIGV4cGVjdGVkLgotICAgIGlmIChvYmplY3QpCi0gICAgICAgIGZ1bGxz
Y3JlZW5SZW5kZXJlci0+YWRkQ2hpbGQob2JqZWN0KTsKLSAgICBkb2N1bWVudC0+c2V0RnVsbFNj
cmVlblJlbmRlcmVyKGZ1bGxzY3JlZW5SZW5kZXJlcik7Ci0gICAgcmV0dXJuIGZ1bGxzY3JlZW5S
ZW5kZXJlcjsKLX0KLSNlbmRpZgotCi12b2lkIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJl
bmRlcmVySWZOZWVkZWQoKQotewotICAgIGlmICghZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJl
cigpKTsKLQotICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFu
ZFN0eWxlKCk7Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3VtZW50
KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCgpID09IG1fbm9kZSkKLSAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0
aFJlbmRlckZ1bGxTY3JlZW4obmV3UmVuZGVyZXIsIGRvY3VtZW50KCkpOwotI2VuZGlmCi0KLSAg
ICAvLyBGSVhNRTogVGhpcyBzaWRlIGVmZmVjdCBzaG91bGQgYmUgdmlzaWJsZSBmcm9tIGF0dGFj
aCgpIGNvZGUuCi0gICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQotICAgICAg
ICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKLQotICAg
IGlmICghbmV3UmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE5vdGU6IEFkZGlu
ZyBuZXdSZW5kZXJlciBpbnN0ZWFkIG9mIHJlbmRlcmVyKCkuIHJlbmRlcmVyKCkgbWF5IGJlIGEg
Y2hpbGQgb2YgbmV3UmVuZGVyZXIuCi0gICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUtPnJlbmRlcmVyKCktPmFkZENoaWxkKG5ld1JlbmRlcmVyLCBuZXh0UmVuZGVyZXIoKSk7Ci19
Ci0KIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
CiB7CiAgICAgcmV0dXJuIE5vZGVSZW5kZXJlckZhY3RvcnkodGhpcykucGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlKCk7CkBAIC0xNjU1LDkgKzE0ODIsOSBAQCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBOb2RlOjpzdHlsZUZvclJlbmRlcmVyKCkKICAgICByZXR1cm4gcGFyZW50Tm9kZSgp
ICYmIHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKSA/IHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKS0+
c3R5bGUoKSA6IDA7CiB9CiAKLWJvb2wgTm9kZTo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSAqc3R5bGUpCitib29sIE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVy
RmFjdG9yeSYgZmFjdG9yeSkKIHsKLSAgICByZXR1cm4gKGRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpID09IHRoaXMpIHx8IChzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUpOworICAgIHJldHVy
biAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcykgfHwgKGZhY3Rvcnkuc3R5
bGUoKS0+ZGlzcGxheSgpICE9IE5PTkUpOwogfQogCiBSZW5kZXJPYmplY3QqIE5vZGU6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMzFm
YThiZjM3YzkwZTAxYzY0MDA5NDU2NWI2ODNiMjRiYzE3MzY2Yi4uOGE5NjljMWU0MzRjN2FkNTdl
Zjg0NzYwNmQzMjZkN2FjODg4N2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC02Miw2ICs2Miw3IEBAIGNs
YXNzIE5hbWVkTm9kZU1hcDsKIGNsYXNzIE5hbWVOb2RlTGlzdDsKIGNsYXNzIE5vZGVMaXN0Owog
Y2xhc3MgTm9kZVJhcmVEYXRhOworY2xhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeTsKIGNsYXNzIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBs
YXRmb3JtV2hlZWxFdmVudDsKQEAgLTQ1MSw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsK
ICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5Jik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJlckZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJlckZhY3Rv
cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE4Mjg0NGIwODFkZTBmODZiNjQ3YTBiOWQ1MDI3YjkxNTVkMGNl
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmVyRmFj
dG9yeS5jcHAKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJlckZhY3RvcnkuaCIKKworI2luY2x1ZGUg
IkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyRnVs
bFNjcmVlbi5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2Rl
UmVuZGVyZXJGYWN0b3J5KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKKyAgICA6IG1f
bG9jYXRpb24oTG9jYXRpb25Ob3RJblRyZWUpCisgICAgLCBtX3BoYXNlKEF0dGFjaFN0cmFpZ2h0
KQorICAgICwgbV9ub2RlKG5vZGUpCisgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSgwKQorICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCisgICAgLCBtX3N0eWxl
KHN0eWxlKQoreworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpOworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
cGFyZW50LT5pc1NoYWRvd0JvdW5kYXJ5KCkpIHsKKyAgICAgICAgbV9sb2NhdGlvbiA9IExvY2F0
aW9uU2hhZG93Q2hpbGQ7CisgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxl
ID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X2xvY2F0aW9uID0gTG9jYXRpb25MaWdodENoaWxkOworCisgICAgaWYgKHBhcmVudC0+aXNFbGVt
ZW50Tm9kZSgpKSB7CisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCA9IHRvRWxlbWVu
dChwYXJlbnQpLT5zaGFkb3dSb290KCk7CisKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hh
ZG93Um9vdCkgeworICAgICAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIGNvbnRlbnRDb250YWlu
ZXIgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmFjdGl2ZUNvbnRlbnRDb250YWluZXIoKSkg
eworICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50Rm9yd2FyZGVkOworICAg
ICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRl
cmVyRmFjdG9yeShjb250ZW50Q29udGFpbmVyKS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IAorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRMaWdodDsKKyAgICAg
ICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7Cit9CisKK05vZGVSZW5kZXJlckZhY3Rvcnk6On5Ob2Rl
UmVuZGVyZXJGYWN0b3J5KCkKK3sKK30KKworYm9vbCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpzaG91
bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlKTsKKworICAgIGlmIChtX2xvY2F0aW9uID09IExvY2F0aW9uTm90SW5U
cmVlIHx8IG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gbV9wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFwYXJlbnRSZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbG9jYXRpb24gPT0gTG9jYXRpb25M
aWdodENoaWxkICYmIG1fcGhhc2UgPT0gQXR0YWNoU3RyYWlnaHQpIHsKKyAgICAgICAgLy8gRklY
TUU6IElnbm9yaW5nIGNhbkhhdmVDaGlsZHJlbigpIGluIGEgY2FzZSBvZiBzaGFkb3cgY2hpbGRy
ZW4gbWlnaHQgYmUgd3JvbmcuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjMKKyAgICAgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2Fu
SGF2ZUNoaWxkcmVuKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgICAg
IGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QgJiYgIW1fcGFyZW50Tm9kZUZvclJlbmRlcmlu
Z0FuZFN0eWxlLT5jYW5IYXZlTGlnaHRDaGlsZFJlbmRlcmVyV2l0aFNoYWRvdygpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIobV9ub2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlbmRlck9iamVjdCog
Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpCit7CisgICAgQVNT
RVJUKCFtX25vZGUtPnJlbmRlcmVyKCkpOworICAgIEFTU0VSVChkb2N1bWVudCgpLT5zaG91bGRD
cmVhdGVSZW5kZXJlcnMoKSk7CisKKyAgICBpZiAoIXNob3VsZENyZWF0ZVJlbmRlcmVyKCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX25vZGUtPnJlbmRlcmVySXNOZWVkZWQoKnRo
aXMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIg
PSBtX25vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCksIHN0eWxl
KCkpOworICAgIGlmICghbmV3UmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KCFtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKS0+aXNDaGlsZEFs
bG93ZWQobmV3UmVuZGVyZXIsIHN0eWxlKCkpKSB7CisgICAgICAgIG5ld1JlbmRlcmVyLT5kZXN0
cm95KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFTU0VSVChtX3N0eWxlKTsK
KyAgICBtX25vZGUtPnNldFJlbmRlcmVyKG5ld1JlbmRlcmVyKTsKKyAgICBuZXdSZW5kZXJlci0+
c2V0QW5pbWF0YWJsZVN0eWxlKG1fc3R5bGUucmVsZWFzZSgpKTsgLy8gc2V0QW5pbWF0YWJsZVN0
eWxlKCkgY2FuIGRlcGVuZCBvbiByZW5kZXJlcigpIGFscmVhZHkgYmVpbmcgc2V0LgorICAgIHJl
dHVybiBuZXdSZW5kZXJlcjsKK30KKworUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5
OjpuZXh0UmVuZGVyZXIoKSBjb25zdAoreworICAgIGlmIChtX3BoYXNlICE9IEF0dGFjaENvbnRl
bnRGb3J3YXJkZWQpCisgICAgICAgIHJldHVybiBtX25vZGUtPm5leHRSZW5kZXJlcigpOworICAg
IC8vIFJldHVybnMgMCBoZXJlIHRvIGluc2VydCByZW5kZXJlciBhdCB0aGUgZW5kIG9mIGNoaWxk
IGxpc3QuCisgICAgLy8gV2UgYXNzdW1lIGNvbnRlbnQgY2hpbGRyZW4gYXJlIGFsd2F5cyBhdHRh
Y2hlZCBpbiB0cmVlIG9yZGVyIGFuZAorICAgIC8vIHRoZXJlIGlzIG5vIHBhcnRpYWwgcmVuZGVy
IHRyZWUgY3JlYXRpb24uCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCitzdGF0aWMgUmVuZGVyRnVsbFNjcmVlbiogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVu
KFJlbmRlck9iamVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVuZGVy
RnVsbFNjcmVlbiogZnVsbHNjcmVlblJlbmRlcmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJl
bmEoKSkgUmVuZGVyRnVsbFNjcmVlbihkb2N1bWVudCk7CisgICAgZnVsbHNjcmVlblJlbmRlcmVy
LT5zZXRTdHlsZShSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7Cisg
ICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdlIGZhaWxlZCB0byBjcmVhdGUgdGhlIG5ldyByZW5k
ZXIgYW5kIGVuZCB1cCB3cmFwcGluZyBub3RoaW5nLgorICAgIC8vIFdlJ2xsIGVuZCB1cCBkaXNw
bGF5aW5nIGEgYmxhY2sgc2NyZWVuLCBidXQgSmVyIHNheXMgdGhpcyBpcyBleHBlY3RlZC4KKyAg
ICBpZiAob2JqZWN0KQorICAgICAgICBmdWxsc2NyZWVuUmVuZGVyZXItPmFkZENoaWxkKG9iamVj
dCk7CisgICAgZG9jdW1lbnQtPnNldEZ1bGxTY3JlZW5SZW5kZXJlcihmdWxsc2NyZWVuUmVuZGVy
ZXIpOworICAgIHJldHVybiBmdWxsc2NyZWVuUmVuZGVyZXI7Cit9CisjZW5kaWYKKworUmVuZGVy
U3R5bGUqIE5vZGVSZW5kZXJlckZhY3Rvcnk6OnN0eWxlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
c3R5bGUpCisgICAgICAgIG1fc3R5bGUgPSBtX25vZGUtPnN0eWxlRm9yUmVuZGVyZXIoKTsKKyAg
ICByZXR1cm4gbV9zdHlsZS5nZXQoKTsKK30KKwordm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5Ojpj
cmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPnNob3VsZENy
ZWF0ZVJlbmRlcmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIW1fbm9kZS0+
cmVuZGVyZXIoKSk7CisKKyAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gY3JlYXRlUmVu
ZGVyZXJBbmRTdHlsZSgpOworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChk
b2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJraXRDdXJy
ZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBtX25vZGUpCisgICAgICAgIG5ld1JlbmRlcmVyID0g
d3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKG5ld1JlbmRlcmVyLCBkb2N1bWVudCgpKTsKKyNlbmRp
ZgorCisgICAgLy8gRklYTUU6IFRoaXMgc2lkZSBlZmZlY3Qgc2hvdWxkIGJlIHZpc2libGUgZnJv
bSBhdHRhY2goKSBjb2RlLgorICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRMaWdodCkK
KyAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7
CisKKyAgICBpZiAoIW5ld1JlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3Rl
OiBBZGRpbmcgbmV3UmVuZGVyZXIgaW5zdGVhZCBvZiByZW5kZXJlcigpLiByZW5kZXJlcigpIG1h
eSBiZSBhIGNoaWxkIG9mIG5ld1JlbmRlcmVyLgorICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmlu
Z0FuZFN0eWxlLT5yZW5kZXJlcigpLT5hZGRDaGlsZChuZXdSZW5kZXJlciwgbmV4dFJlbmRlcmVy
KCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmVy
RmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJlckZhY3RvcnkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNmZmZDE2MDgxNmEyYzllNzI2N2ViNjEzYjE4ZDQ0YWJiOWQwODU2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJlckZhY3RvcnkuaApAQCAt
MCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgTm9kZVJlbmRlcmVyRmFj
dG9yeV9oCisjZGVmaW5lIE5vZGVSZW5kZXJlckZhY3RvcnlfaAorCisjaW5jbHVkZSAiTm9kZS5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDb250YWluZXJOb2RlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBSZW5kZXJPYmplY3Q7Citj
bGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2NsYXNzIE5vZGVSZW5kZXJl
ckZhY3RvcnkgeworcHVibGljOgorICAgIGVudW0gVHJlZUxvY2F0aW9uIHsKKyAgICAgICAgTG9j
YXRpb25Ob3RJblRyZWUsCisgICAgICAgIExvY2F0aW9uTGlnaHRDaGlsZCwKKyAgICAgICAgTG9j
YXRpb25TaGFkb3dDaGlsZCwKKyAgICB9OworCisgICAgZW51bSBBdHRhY2hQaGFzZSB7CisgICAg
ICAgIEF0dGFjaFN0cmFpZ2h0LAorICAgICAgICBBdHRhY2hDb250ZW50TGlnaHQsCisgICAgICAg
IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQsCisgICAgfTsKKworICAgIGV4cGxpY2l0IE5vZGVSZW5k
ZXJlckZhY3RvcnkoTm9kZSosIFJlbmRlclN0eWxlKiA9IDApOworCisgICAgfk5vZGVSZW5kZXJl
ckZhY3RvcnkoKTsKKworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JSZW5kZXJpbmdB
bmRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxl
OyB9CisgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIoKSBjb25zdDsKKyAgICBSZW5kZXJT
dHlsZSogc3R5bGUoKSBjb25zdDsKKworICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgp
OworCitwcml2YXRlOgorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fbm9kZS0+
ZG9jdW1lbnQoKTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpOworICAgIGJvb2wgc2hvdWxkQ3JlYXRlUmVuZGVyZXIo
KSBjb25zdDsKKworICAgIFRyZWVMb2NhdGlvbiBtX2xvY2F0aW9uOworICAgIEF0dGFjaFBoYXNl
IG1fcGhhc2U7CisgICAgTm9kZSogbV9ub2RlOworICAgIENvbnRhaW5lck5vZGUqIG1fcGFyZW50
Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlOworICAgIFNoYWRvd1Jvb3QqIG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdDsKKyAgICBtdXRhYmxlIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5oCmluZGV4IDA3Yjc4Zjc2MDQ1NTJhMWZmNGZhY2QwMzFhNWEx
YjQ0MTUzYjcyYTUuLjQxMGIzMzJiYWNlYmYxMGE2ZGM1YWU5ODMzZWE0MjJhYzY2Y2ZlOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oCkBAIC01Miw3ICs1Miw3
IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
dGFnLW5hbWUgY2hlY2tpbmcgb25jZSA8Y29udGVudD4gaXMgcmVhZHkuCiAgICAgLy8gU2VlIGFs
c28gaHR0cDovL3dlYmtpdC5vcmcvYi81Njk3MwogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd0Jv
dW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApp
bmRleCBiNzEwMGZlYzQwYjY2MzUxYTY4NDMzZTdkNGY4ZTkyN2YxN2I3NGUwLi43OWVkZDdiYmMz
N2Q4MzQxNzUxNjJkYTRhYzQ2MTk2NmNkYzFmMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAjaW5jbHVkZSAiVGV4dC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIk5vZGVSZW5kZXJlckZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW5kZXJDb21i
aW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKIApAQCAtMTg5LDkgKzE5MCw5IEBA
IFBhc3NSZWZQdHI8Tm9kZT4gVGV4dDo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiAgICAgcmV0
dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBkYXRhKCkpOwogfQogCi1ib29sIFRleHQ6OnJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBUZXh0OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmIGZhY3RvcnkpCiB7Ci0gICAgaWYgKCFDaGFyYWN0
ZXJEYXRhOjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKKyAgICBpZiAoIUNoYXJhY3RlckRhdGE6
OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGJvb2wgb25seVdTID0gY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwpAQCAtMjAzLDcgKzIwNCw3
IEBAIGJvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCiAgICAg
aWYgKHBhci0+aXNUYWJsZSgpIHx8IHBhci0+aXNUYWJsZVJvdygpIHx8IHBhci0+aXNUYWJsZVNl
Y3Rpb24oKSB8fCBwYXItPmlzVGFibGVDb2woKSB8fCBwYXItPmlzRnJhbWVTZXQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChzdHlsZS0+cHJlc2VydmVOZXdsaW5lKCkp
IC8vIHByZS9wcmUtd3JhcC9wcmUtbGluZSBhbHdheXMgbWFrZSByZW5kZXJlcnMuCisgICAgaWYg
KGZhY3Rvcnkuc3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIC8vIHByZS9wcmUtd3JhcC9wcmUt
bGluZSBhbHdheXMgbWFrZSByZW5kZXJlcnMuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAgIFJlbmRlck9iamVjdCAqcHJldiA9IHByZXZpb3VzUmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmlu
ZGV4IGM5NzgzNDNkM2UxZGFjODU5YTAzZjZlNGQ3YjMyNzc0Y2IxZWY2OTcuLjYwMmNmOWVjMWU4
NDkzMjQ1NmM4NDMzNjI1YTExZDVlNWI3M2Y0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
dm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGM3OTk1YjU2YjQ5NmQ0MzdhNWJlZGMwNGIzMmVm
ZTYwNzExNzMwOGIuLmRhNTc3MzliODUzMGNiNzIyMTUwYmM4ZWE1M2M0YjUzZDlmYTJkODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC0xMDAsMTIgKzEw
MCwxMSBAQCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAg
ICBIVE1MUGx1Z0luRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1ib29sIEhU
TUxBcHBsZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jv
b2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVy
RmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoY29kZUF0dHIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBIVE1MUGx1Z0luRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKaW5kZXggMGYzYWFkODY5MDkw
NjEyNzA2MmE4MmFjYjRkMTk1YTIxNWFmNWNiNy4uYmQ4YzIxNTE2OWI0OGY2ZWFjNmRiOWYxMjZk
YmM4MDQ2OTc5ZjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaApA
QCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCmluZGV4IDQwYTlhMWJiODg2ODA3ZDQ5MmZkZTZjYWFmNzZiZWQ2MzZhZjRkZTcuLmMzNmZm
YTBiZjRjZDJjYmNjYjJkNTI4ZjkxODI5M2IzMDAyNDYxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCkBAIC03NjksNyArNzY5LDcgQEAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gSFRNTEVsZW1lbnQ6OmNoaWxkcmVuKCkKICAgICByZXR1cm4gSFRNTENvbGxlY3Rpb246OmNy
ZWF0ZSh0aGlzLCBOb2RlQ2hpbGRyZW4pOwogfQogCi1ib29sIEhUTUxFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICBpZiAo
aGFzTG9jYWxOYW1lKG5vc2NyaXB0VGFnKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpOwpAQCAtNzg1LDcgKzc4NSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogICAgICAgICBpZiAoZnJhbWUgJiYg
ZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRU
b0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJl
dHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGZhY3RvcnkpOwogfQogCiBSZW5k
ZXJPYmplY3QqIEhUTUxFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA1YTVm
ZGZiNjc0OTVhMjA2MjgwZDBlZjNiM2NlMTk2Zjg1M2JlYjVhLi44NDJjNDMzYTkyOTgyNGY5MDQ4
ZmY5YzNhZjE5ZTk5NWZhOGE0NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0
b3J5Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwCmluZGV4IGIyODBkYWQ5MDYxMWJlZWE5ODQzZmNjOWJlOGU0ZGRmOGEzMTUyOGQu
LmQwNzAxNjAxY2E3ZmZjMTVhN2Y5ZDg0NGI5MjU0OWQzZjgwMGJmNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTgzLDEwICsxODMsMTAgQEAgdm9pZCBI
VE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24gcGx1Z2lu
Q3JlYXRpb25PcHRpb24pCiAgICAgbG9hZGVyLT5yZXF1ZXN0T2JqZWN0KHRoaXMsIG1fdXJsLCBn
ZXRBdHRyaWJ1dGUobmFtZUF0dHIpLCBtX3NlcnZpY2VUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZh
bHVlcyk7CiB9CiAKLWJvb2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICBpZiAoaXNJbWFnZVR5
cGUoKSkKLSAgICAgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEhUTUxF
bWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIH0K
ICNlbmRpZgogCi0gICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGZhY3RvcnkpOwogfQogCiB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKaW5kZXgg
ODYzYzA5YmVlNGViYWU5NmQ3ZjU4NTk1MmQzMGMyNzhjYTliNjlmYi4uYTE3NTNjNWVlZDA2OTk3
ODIzY2JkNGRhZmJlNjMwYTFjMWFiZmYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFw
VG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50
cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyZXJGYWN0b3J5Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNTJiZmRhMzAw
ZWI0OWM3MmI3NGU3MTMxOTU5MjEzOTgwMTAwNGQ0Yy4uNThlOWRkMzVhZDk0ZWIyMjc4YzNkNTRj
OWUyMWMxMjlmNzJmNDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTm9kZVJlbmRlcmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKQEAg
LTEwNCwxMCArMTA1LDEwIEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojpmb3JtV291bGRIYXZlU2Vj
dXJlU3VibWlzc2lvbihjb25zdCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwodXJsKS5wcm90b2NvbElzKCJodHRwcyIpOwogfQogCi1ib29sIEhUTUxGb3Jt
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxG
b3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JiBm
YWN0b3J5KQogewogICAgIGlmICghbV93YXNEZW1vdGVkKQotICAgICAgICByZXR1cm4gSFRNTEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gSFRNTEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSk7CiAKICAgICBDb250YWluZXJOb2RlKiBub2Rl
ID0gcGFyZW50Tm9kZSgpOwogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBpZiAoIXBhcmVudElzVGFi
bGVFbGVtZW50UGFydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBFRGlzcGxheSBkaXNw
bGF5ID0gc3R5bGUtPmRpc3BsYXkoKTsKKyAgICBFRGlzcGxheSBkaXNwbGF5ID0gZmFjdG9yeS5z
dHlsZSgpLT5kaXNwbGF5KCk7CiAgICAgYm9vbCBmb3JtSXNUYWJsZVBhcnQgPSBkaXNwbGF5ID09
IFRBQkxFIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFIHx8IGRpc3BsYXkgPT0gVEFCTEVfUk9X
X0dST1VQCiAgICAgICAgIHx8IGRpc3BsYXkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IGRpc3Bs
YXkgPT0gVEFCTEVfRk9PVEVSX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfUk9XCiAgICAgICAg
IHx8IGRpc3BsYXkgPT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ09M
VU1OIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ0VMTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmgKaW5kZXggMzEwMGY2N2FkZmUxY2M2ZWFlY2FmNGFjZDA3NjYzYzc0ODI2MTRlYS4uODU3
MDMyNDEyNWY0ZTFiMzc5ZjliNDdjMjA3ZjMzM2E3MDBiZjRlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcAppbmRleCBhOGMyNjQ1OWJjYTc3NTUyNThiYTlmZGY1MmRjODExYWI5YTQ3MTJm
Li5lZWNjOWEyMzhjNTliNjRmYTg5OTRiMzUzMTMwNWJlODQwM2EzOTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUGFzc1JlZlB0
cjxIVE1MRnJhbWVFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikKIHsKICAgICAvLyBGb3IgY29tcGF0
aWJpbGl0eSwgZnJhbWVzIHJlbmRlciBldmVuIHdoZW4gZGlzcGxheTogbm9uZSBpcyBzZXQuCiAg
ICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaAppbmRleCA2NmZjY2YzMzNiYjNkNGY1ZDhhMTljN2M4MDgzNTc1OTMwZDhmZmEyLi5jM2Vl
MDI4MjBlMDcyNDY2NmUxZTJmZWQ3ZjZmMTA3MDQyODMxZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyZXJGYWN0b3J5Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyZjM3NWNiY2EyNmVkODczNzQxNDk3M2E3
ODdmYjQwMTU2YzQ3YzM0Li45ZDJmZjMyNmFhMzBlNjQwODFmYWIzYWQ0NjJhNGZkZGIxODllYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
ICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmVyRmFjdG9yeS5o
IgogI2luY2x1ZGUgIlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTE0NywxMSArMTQ4LDExIEBAIHZvaWQgSFRN
TEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLWJv
b2wgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5
bGUpCitib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSwg
ZnJhbWVzIHJlbmRlciBldmVuIHdoZW4gZGlzcGxheTogbm9uZSBpcyBzZXQuCiAgICAgLy8gSG93
ZXZlciwgd2UgZGVsYXkgY3JlYXRpbmcgYSByZW5kZXJlciB1bnRpbCBzdHlsZXNoZWV0cyBoYXZl
IGxvYWRlZC4gCi0gICAgcmV0dXJuIHN0eWxlLT5pc1N0eWxlQXZhaWxhYmxlKCk7CisgICAgcmV0
dXJuIGZhY3Rvcnkuc3R5bGUoKS0+aXNTdHlsZUF2YWlsYWJsZSgpOwogfQogCiBSZW5kZXJPYmpl
Y3QgKkhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVu
YSwgUmVuZGVyU3R5bGUgKnN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaAppbmRleCBmMmY4NDM5Nzc2ZTc4NTI3YjQwYjlmNmY3NGU2MzI5ZDMwZTBmMDc4Li5j
MjFkODg1OGQ1M2E4ZTEyNGIyN2Q3YmZjNjgzYTFlOThiNzg4NGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJlckZhY3RvcnkmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDA2YWYwOTM2Yjc4ZGNiOTlmNzI5N2I1MTNkZDE3ODA2
M2IzZTUzMzMuLjY5YzMyZWYyZDdlNGIzNGQ1NWJkOTg3YjA0OGU0MTBiMDZiYjhkYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyZXJGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiUmVuZGVySUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzMSw5ICsxMzIs
OSBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKTsKIH0KIAotYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmIGZhY3RvcnkpCiB7Ci0gICAgcmV0dXJu
IGlzVVJMQWxsb3dlZCgpICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORTsKKyAgICByZXR1cm4g
aXNVUkxBbGxvd2VkKCkgJiYgZmFjdG9yeS5zdHlsZSgpLT5kaXNwbGF5KCkgIT0gTk9ORTsKIH0K
IAogUmVuZGVyT2JqZWN0KiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgKaW5kZXggNjFjZDZiNjhlZDY0OGEzMjI1OWVmNDU3YmVlNDg4MDU3MzBmMzcyNi4u
YmQ4MjNjMjYyY2UwNTY5YzhjZjY4MDNlMjgwM2EyNGE5YzcyNjJlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0ZWYxNTZhMjMyN2JiM2ZlMmE4OWI0ZDU0
MjBjMjgyOTRjN2U0YjQ5Li44MWFkMmE4ZmQ2NjRjMjEwNGFkYzk1ZWQxNDhjMGViNWRkOGZiMjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTcyMCw5ICs3
MjAsOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAg
ICAgfQogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmIGZhY3RvcnkpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5k
ZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cmVuZGVy
ZXJJc05lZWRlZChmYWN0b3J5KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MSW5wdXRFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMTBjYTIwZTU2ZDY1YTM3
MmQ2MDc1MzY1N2Y3YWY5MDQ0YjllNjNlMy4uY2FmMGZiNTdhYjBiZjcyM2RiZGVhN2ZlYTljNTdk
NzQ4YzViMjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhdmVTZWxlY3Rpb24oKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9y
eSYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2OGQyNmEwMjNkOGIwZDc1OWM1
YzFjYjJjNmQwNzgzZTA0ZDJmZDZiLi41NDIxZWZjMzEwZGY2MmUwMzE4NzY2YjM0MWNlMjZkODRh
N2VjZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTMx
MywxNyArMzEzLDE3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICNpZiBFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBVTlVTRURfUEFSQU0oc3R5bGUpOworICAgIFVO
VVNFRF9QQVJBTShmYWN0b3J5KTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biB0cnVlOwogI2Vsc2UKLSAgICByZXR1cm4gY29udHJvbHMoKSA/IEhUTUxFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKHN0eWxlKSA6IGZhbHNlOworICAgIHJldHVybiBjb250cm9scygpID8gSFRN
TEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSkgOiBmYWxzZTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGY5ZTkzYjRjN2I0MTU0
ZGQ1YmZkZTc3OWFkNzcyMWZhNzc2ZGNhZDUuLmVjMzc5YjIzNWZhNmE4OTliYzA3YWMyNTM1NmFl
MTVjMmNjYTA2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0y
MjAsNyArMjIwLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBh
dHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyk7Ci0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5Jik7CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxO
b1NjcmlwdEVsZW1lbnQuaAppbmRleCA5YTNiOTJkMzhiZDVkMDNhZDk3ZGEzN2RkYjRiMWRmYzZm
NzNmNmM2Li5jMjkyYjk5Mjg3ZDBjNjhkM2IxYTc5YTA3NjUyYTRkODQ2NTMzMjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
YWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopIHsgIHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpIHsgIHJldHVybiB0cnVlOyB9
CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCmluZGV4IGJiNjQ4MGU2MGRlM2M3ZWFiODIxOGVlMzA0NzhkZjY1NjA3MjJhYmEuLjc1
MjIxZmMxYjE4ZmQ1NDZiOTMxNjQxNTc5ZmQ5ZjU4NzA3Y2I0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0zMDAsMTQgKzMwMCwxNCBAQCB2b2lkIEhU
TUxPYmplY3RFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24gcGx1Z2lu
Q3JlYXRpb25PcHRpb24pCiAgICAgICAgIHJlbmRlckZhbGxiYWNrQ29udGVudCgpOwogfQogCi1i
b29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHls
ZSkKK2Jvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91
bGQgbm90IGJlIG5lZWRlZCwgZGV0YWNoZWQgZG9jdW1lbnRzIG5ldmVyIHJlbmRlciEKICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIH0KIAogdm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5oCmluZGV4IDY0MWU1MGU3N2U4NGIwMTM3ZmYwMDhjZjViMjE2NWYwMmQ4OTM1NzYuLjdi
M2MzOTk3NmE4MWRjYTJiYzA4OThhZDBmM2U1YmVjOThiMGYxODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCmluZGV4IGE1OGU5NTc2ZjAyNjA5YmYz
ZThhYmFjNzE0MWNhZTdmODVjN2FiNzQuLmFiMTQ3ZGExMGU3MGFiNGJlNzA3MjI1YWU0Y2VlYWFj
MzFiN2UxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCkBA
IC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3Rvcnkm
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlclN0eWxlKFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aAppbmRleCBjMTc5MWQ3MDA5ZjIyNjg4OWNiNjA3NGFhZmYyMmZjZWU4MmFlM2U0Li5jZjg0YWJh
ODk4MDg5MjJhMjA0OTk1ZDFkODczNWViY2I4MDUxZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3Vz
YWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRSZW5kZXJTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA1YjdmNDJkZWE0NjE0ODk0MmVm
Y2E3ODgwYzUwZDJjMGNlYWEwNDhjLi4xOTM2Y2NiYjk5YTU3ZjU4NzA3OWIxODNiYzBlY2M2M2Q1
NWU3YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTU1
LDkgKzU1LDkgQEAgUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1M
VmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgCitib29s
IEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFj
dG9yeSYgZmFjdG9yeSkgCiB7Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKHN0eWxlKTsgCisgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGZh
Y3RvcnkpOyAKIH0KIAogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggNTdiNzBlYTFhYjJiYjcxYjExNmIy
M2E3NzlmMTQ3MzY2MDZkOTFiZC4uNjIzMzRiMzMzYWQ3YTE4MGZmMmFmOTAyZGMzMjU4YzA0NzI2
ZTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyZXJGYWN0b3J5Jik7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAppbmRleCAxZDhhNmU2OGVjZjE5YWNjOGY5
MzlhYWZkMzU0ZmRkOGE3OGE3YWQzLi40ZGZkMTAyYjRjYTU5OWZjZjU1OTVhZGMzNjJlZTEwY2E3
YTNiYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuY3BwCkBAIC01MSw5ICs1MSw5IEBAIFJlbmRlck9iamVjdCogRGV0YWlsc01h
cmtlckNvbnRyb2w6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRldGFpbHNNYXJrZXIodGhpcyk7CiB9CiAK
LWJvb2wgRGV0YWlsc01hcmtlckNvbnRyb2w6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKQorYm9vbCBEZXRhaWxzTWFya2VyQ29udHJvbDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyZXJGYWN0b3J5JiBmYWN0b3J5KQogewotICAgIHJldHVybiBzdW1tYXJ5RWxl
bWVudCgpLT5pc01haW5TdW1tYXJ5KCkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoc3R5bGUpOworICAgIHJldHVybiBzdW1tYXJ5RWxlbWVudCgpLT5pc01haW5TdW1tYXJ5KCkg
JiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSk7CiB9CiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgRGV0YWlsc01hcmtlckNvbnRyb2w6OnNoYWRvd1BzZXVkb0lkKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5oCmluZGV4IDNjNWIwOWRmMjQ2NDU5MTNkMTMwNGQ5YzA3YzU4ZjRmNmMwYzFhNWMuLmJkOTA3
MGFhYWUzNzQwOWRkMGY3ZTZiZmIyNTJjZTY2ZWVmZGRhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogICAgIEhUTUxTdW1tYXJ5RWxl
bWVudCogc3VtbWFyeUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGE1ZWI3MGI1ODVhOTU0YTZlM2U0YTE3ODUy
MTcxMzk4Zjc3Y2U4MmUuLjVhMjdkNzAxMjU1NjZlOWQzNjVkOGMwNTMzNTc2ZmI0MWFjYjUxY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIEhUTUxNZXRlckVsZW1lbnQqIE1ldGVyU2hhZG93RWxl
bWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1l
dGVyRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIE1ldGVyU2hhZG93RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JiBmYWN0b3J5KQogewog
ICAgIFJlbmRlck1ldGVyKiBtZXRlclJlbmRlcmVyID0gdG9SZW5kZXJNZXRlcihtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgcmV0dXJuIG1ldGVyUmVuZGVyZXIgJiYgIW1ldGVyUmVu
ZGVyZXItPnRoZW1lKCktPnN1cHBvcnRzTWV0ZXIobWV0ZXJSZW5kZXJlci0+c3R5bGUoKS0+YXBw
ZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7Cisg
ICAgcmV0dXJuIG1ldGVyUmVuZGVyZXIgJiYgIW1ldGVyUmVuZGVyZXItPnRoZW1lKCktPnN1cHBv
cnRzTWV0ZXIobWV0ZXJSZW5kZXJlci0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBNZXRlckJhckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKaW5kZXggOTM2MjZkZjVl
MjViMTdhNjZmOWU1ZDRjZDgyNWU0M2M1OWU1YWVkYy4uYjdlYzRjOTQxOTNkMDUzZjhiNWNkYTkw
M2QxNTVkNDQzZjc4NGU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWV0ZXJTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEhUTUxNZXRl
ckVsZW1lbnQqIG1ldGVyRWxlbWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpOwogfTsKIAogY2xhc3Mg
TWV0ZXJCYXJFbGVtZW50IDogcHVibGljIE1ldGVyU2hhZG93RWxlbWVudCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAppbmRl
eCAxY2VkZDBkY2ExMmYyM2RiYTRlZDE2YjhhZDM3ZmUxMTMzYmQzY2ZjLi40NTgwZDFlZWM4ZTBm
ZjQ2MzI2MGViOTI3MTY5YjMzYzcwZWM4M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKQEAgLTUyLDEwICs1MiwxMCBA
QCBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQ6OnByb2dyZXNzRWxl
bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQcm9ncmVzc0VsZW1lbnQq
Pihub2RlKTsKIH0KIAotYm9vbCBQcm9ncmVzc1NoYWRvd0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBQcm9ncmVzc1NoYWRvd0VsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHByb2dyZXNzUmVuZGVyZXIgPSBwcm9ncmVzc0VsZW1lbnQoKS0+cmVuZGVy
ZXIoKTsKLSAgICByZXR1cm4gcHJvZ3Jlc3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+
c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gcHJvZ3Jlc3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5k
ZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGZhY3RvcnkpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFByb2dyZXNzQmFy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAppbmRleCBhMTA2YmY4NzIzODY1OTQw
OTExOTgwYjljOTFiYzJmM2Y1NjA0NGE1Li43Njc5NTkyZjIyYWM4OGNiZjNmYTdjZmZjZGZhZjk1
NzhjOWNjYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVz
c1NoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVz
c1NoYWRvd0VsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgSFRNTFByb2dy
ZXNzRWxlbWVudCogcHJvZ3Jlc3NFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5Jik7CiB9OwogCiBj
bGFzcyBQcm9ncmVzc0JhckVsZW1lbnQgOiBwdWJsaWMgUHJvZ3Jlc3NTaGFkb3dFbGVtZW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmgKaW5kZXggMzJhN2FkMDIxNDQ3M2QyZjMzOTE5
ZjVhNDQ2ODQ2OTJmOWU0ZmU5NS4uZDkxZjM0MDljOGY3N2QyMWZkZWM4YzNiZTRhOWMyMmE3NGNk
YjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBTVkdEZXNjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDVlNWFi
ZjhkZTUzNzM5MGJhOGU1NmFjM2FhODAxNDBlMTYwMDQxZTEuLmZjMWFiMTVkMzkxZmYxNTY4NjU4
ZjVhM2UwZmNlZjBjNDRkYTFkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTI2LDcg
KzEyNiw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0VsZW1l
bnRJbnN0YW5jZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2
ZXJzaW9uKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCBmZTVkMDljOTliM2Ix
YThmNjE4ZjZlY2UzOTA2NDJjYTUwNWEwNDFmLi42NmFlYmQ4ZWFiZTg0MzA0MDRjZDdlNGU0N2E0
MDE2NThiZDRkZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtMTY4LDEwICsxNjgsMTAg
QEAgUmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKgogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSh0aGlzKTsKIH0KIAotYm9vbCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0
eWxlKQorYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYgZmFjdG9yeSkKIHsKICAgICBpZiAo
cGFyZW50Tm9kZSgpICYmIChwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRl
clRhZykpKQotICAgICAgICByZXR1cm4gU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGZhY3RvcnkpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmlu
ZGV4IDc5NWJjMTFhZjZjNjQyMmVkY2ZjOThmZDcxMDRiMTRkYzg1ZTk5YWUuLmYyYzliYjc4YTFj
ZGQ1MzNlNjliMGNiMDQwNTFmNmE5ZjE1NzQ5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTcw
LDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpOwogCiAgICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCiAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKaW5kZXggOTQzNWNjNzA1NGY0N2NjN2Q0YWQ4
NzU3NzI2OWZiMjMyMzM5YWZlNy4uYmYyNjdkYTZjYjdlZTc0YzgwNzE3MWExNmY2YzczY2Y1YzM2
NTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKQEAgLTcwLDcgKzcwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopIHsgcmV0dXJuIGZhbHNlOyB9ICAKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4gZmFsc2U7IH0gIAogICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAppbmRleCA5OTU1ODAwMTRiM2YzMTNmOTk3
NmQ5ZDQwMDQzMzJlZDQ0MzAwYWViLi5jZDFiZjU1N2E3ODc3N2UyMDgyNWY5NmJmMzA3MjRhMzY3
NzA1ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBSZW5kZXJPYmplY3QqIFNWR0dFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKHRoaXMpOwogfQogCi1ib29sIFNWR0dFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wgU1ZHR0VsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpCiB7CiAgICAgcmV0dXJuIHBhcmVu
dE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpOyAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmgKaW5kZXggYzMwNmY0YTZmNmU5NDY3Zjg4NDc3MDdkYWI1NDRkNTYxNWNjNjlj
NS4uMDQ2NDY1ZjAzNzJlOGZjM2E0ZTlhMmM0MDllZjI2NmM5NDRlM2FmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpOwogCiAg
ICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaEVsZW1lbnQuaAppbmRleCA5NDRhZDI3MmE0MTY5OGQwNmM4Yjc3NzA1MzUxYWY5NDU2YWMw
MzkyLi4zZjZjMmEyY2E0ZmU2YzQ5NTBiOWZiMTI3NzYzZDQ3YzRmOTg3MTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZvaWQgaW52YWxpZGF0ZUdseXBoQ2FjaGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SEtlcm5FbGVtZW50LmgKaW5kZXggMGRlZmNiYmI5N2FjM2JmZTUwMzliNmFjZWU3YTk2NjJiMDdh
ZmJiOC4uYWQ2MDIxNGFiNTEzYTUyMTk4OTg5Zjc4NTQxZmY2ZTQwOTY4NmFmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpIHsgcmV0dXJuIGZhbHNlOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaAppbmRleCAyNGNlNjI0NmQxOTczZTdjOTdhNTY3ZjdkMWViZjQyOGU0NjM1MDRiLi5m
NjRlNmQxOGQ1N2VkNTNlYTMyM2M0Zjc5YWM4YjIzMzRhMDAyZDllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5JikgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgKaW5kZXggNTI4
YzUzYzUzZGExZjQ2YTQ2ZTdiYTY5NDYxYzYxMjk5NDkwYjIxZi4uNzQwMzNlMDcyNzllNDNmY2Zi
NzJmNDQ2NTBkZWNjYWYyMGMyYWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01pc3NpbmdHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2lu
Z0dseXBoRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmVyRmFjdG9yeSYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCBlZGI1NmQ3YjZmMDBiODczZTZj
ZDQzNWY2ZTljZmE0MDFiYmRhNDVjLi5lNWE0ZGRkNzA1NjFhY2M1YWVlZjAxZDQ2MjlhMWVmMTI0
ZjBmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNiw3ICsxMzYsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHls
ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
ZXJGYWN0b3J5JiBmYWN0b3J5KSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGZhY3RvcnkpOyB9CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmlu
ZGV4IDBlNGExYmI0OTBjYzhiYjhlNDBhYjYwMzA4NTExM2MwNzg5MGQzN2UuLmJjMDUyZWYwMjM0
NWNlMzgwOTk3NjcwZjZiY2YxYzliNzZkMTg0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBTdHJpbmcgU1ZHU3R5bGVkRWxlbWVu
dDo6dGl0bGUoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotYm9vbCBTVkdTdHls
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgU1ZH
U3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyZXJGYWN0b3J5
JiBmYWN0b3J5KQogewogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9leHRlbmQuaHRt
bCNQcml2YXRlRGF0YQogICAgIC8vIFByZXZlbnQgYW55dGhpbmcgb3RoZXIgdGhhbiBTVkcgcmVu
ZGVyZXJzIGZyb20gYXBwZWFyaW5nIGluIG91ciByZW5kZXIgdHJlZQpAQCAtMTI2LDcgKzEyNiw3
IEBAIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSog
c3R5bGUpCiAgICAgLy8gd2l0aCB0aGUgU1ZHIGNvbnRlbnQuIEluIGdlbmVyYWwsIHRoZSBTVkcg
dXNlciBhZ2VudCB3aWxsIGluY2x1ZGUgdGhlIHVua25vd24KICAgICAvLyBlbGVtZW50cyBpbiB0
aGUgRE9NIGJ1dCB3aWxsIG90aGVyd2lzZSBpZ25vcmUgdW5rbm93biBlbGVtZW50cy4gCiAgICAg
aWYgKCFwYXJlbnROb2RlKCkgfHwgcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAg
ICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCmluZGV4
IDY1Yjk1MjU4MDBhZGEyYTJhYjRlYzhkNWUzZWUwZTU3MzVmOTc5ZTMuLjUzMmU3NWMxNjFlNWI5
NDU5MmEzOTgzNTg2NWY0NzU2YTJkODNhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6IAogICAgIFNWR1N0
eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCmluZGV4IDhmM2Yy
NTFlODY1NDkxMWQ5ZmMzMWIzMzg2ZDkyZWRmYzliZWFmNTUuLjNlYzVlY2Q2MjJjZjU4NjllYmNh
OWQwNzg0NDEwZTgxMDZhZTJmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
eW1ib2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYp
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAy
ODc5ZWVhNzAxOTk2ZDYwYTY5ZjkzODNlYmQ2MzQwNDRjNzBlZmY5Li45Njc1NDMxNDFkNGEzNjkw
YjEyYjQ5OWMxODg0Y2FhZmFhMTQ1ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIFNWR1RSZWZFbGVtZW50OjpjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBTVkdUUmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5
bGUpCitib29sIFNWR1RSZWZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJlckZhY3RvcnkmIGZhY3RvcnkpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKQogICAgICAgICAm
JiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKQpAQCAtMTIyLDcgKzEy
Miw3IEBAIGJvb2wgU1ZHVFJlZkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVz
Ojp0ZXh0VGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjp0ZXh0UGF0aFRhZykKICAgICAgICAgICAgIHx8IHBhcmVudE5vZGUoKS0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6dHNwYW5UYWcpKSkKLSAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5kZXggMmU3ZDAwNTcxM2FhZGNlNjVhMjNiMWQzOWZiOTk4
N2NkYTA5NDQ0Yy4uMDQwYjY3MmM5NmM4ODAxYjcwYzU4YTFhNGZlMzU4MWNjMjQ2OWMxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoTm9kZSopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmVyRmFjdG9yeSYpOwogCiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCmluZGV4IDBiOTY0NjVlYjM3Y2E3Y2Jj
MWJlZTk0NjRhMzc4YWNjN2EyNTY5MjQuLjhhZGZmMTg4ODE5MDIyOGE1YzEzZjRkYWRkOWFjNGRi
NDQwZTZhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCkBAIC01OSw3
ICs1OSw3IEBAIGJvb2wgU1ZHVFNwYW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KE5vZGUqIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUU3Bh
bkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdU
U3BhbkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYg
ZmFjdG9yeSkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2Rl
KCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgU1ZH
VFNwYW5FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAg
ICAgICAgIHx8IHBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykKICAg
ICAgICAgICAgIHx8IHBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFBhdGhU
YWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRz
cGFuVGFnKSkpCi0gICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
ZmFjdG9yeSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5F
bGVtZW50LmgKaW5kZXggYWMwMmI1N2I0ZDU4OWRjMzM3M2ZmOTkwNWYxNGI3YmE1NWIxMmQ2Yy4u
YWZjNzRiYTdkZGViMGUyMzgwYzBmNjVjYjMyOGMxMDU4OThjMTMzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUU3BhbkVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyZXJGYWN0b3J5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5jcHAKaW5kZXggYTY3ZDZjOTQ3MGM2NzUyNzdmOGI4NjIyMmVlOWU0YTg3OTZl
ZmU4OS4uZTFhMTNmNmQyZDljNDRlNmUwYmM0YWNmMmQ3MGM1MTI4NjYwOWFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTE0MCwxMiArMTQwLDEyIEBA
IGJvb2wgU1ZHVGV4dFBhdGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUq
IGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUZXh0UGF0aEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUZXh0
UGF0aEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYg
ZmFjdG9yeSkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2Rl
KCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2Rl
KCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKSkKLSAgICAgICAgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIAogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCBiNjk5ZDYxZGZl
NDE3YzU1ZjBmZTkyZmNmZDg4NWI2OTRiNjU0N2Q4Li5jZDc0YTAwZTBhZDNkOGMyZjQzNmJkYWJi
OWRhNWM0ZWJlODY4YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJlckZhY3RvcnkmKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUaXRsZUVsZW1lbnQuaAppbmRleCBjMWNlYzQ5NDUzYzEyZWE0ZmU1NTYzMmUwMGU3MTg5ZTA4
MzRlM2FjLi4yZDg0M2U4ODAzZTE2MjA3Y2FlZTlhOThmNzJlNzhmZDU0ZTEzMDJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9y
ZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9
IDApOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJlckZhY3RvcnkmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgKaW5kZXggZDhhOWQxYmM5OTYwOWVlZWE0ODI5Njkx
MTIxNTNmMGYyM2NlYTE5OS4uYzU0M2NkYzBmODA0ZWM5OTZmZTA3YzU4NmNlZDlkNGU1MDNiNWU4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmVyRmFjdG9yeSYpIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCmluZGV4IGIzNzE3NzQ4OGE2OTk4MWM1YjA5MzI4YmViZjk1ZjRjZTdl
MzE3NmEuLjFhNTJiYzgwNzVlNWZjMWRmMmM1Mjg3ODk2NWE5YWExMWQwYmFhMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmVyRmFjdG9yeSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94176</attachid>
            <date>2011-05-19 22:31:35 -0700</date>
            <delta_ts>2011-05-20 01:53:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61114-20110520143133.patch</filename>
            <type>text/plain</type>
            <size>80277</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY5MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA3YTlh
ZjQ4NmQxZDhkODc1OTQ5OWVmZmQxMjdjNWRmZmUxNWJmYy4uMmY2MzE3MjlhYmEzNzEwNmZlZGJm
MTU0N2I4NzAxNjVhOGEyODE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU4NSw2ICs1ODUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAogICAgIGRv
bS9PcHRpb25FbGVtZW50LmNwcAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggY2IxZGNkNjFiOGQ3ZjgxYjFlYjRlNmY2NmU1ZmQ2MGE2ZjU3NGVjZi4uMmY3Mzg0
ZGU0MzYzY2UwMGUwZDlkNGYzMWU0Mjc2M2Q3ZmRmNjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExNCBAQAorMjAxMS0wNS0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFBhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeSB0byBOb2RlOjpyZW5kZXJlcklzTmVlZGVk
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMTE0
CisKKyAgICAgICAgLSBFeHRyYWN0ZWQgTm9kZVJlbmRlcmluZ0NvbnRleHQgZnJvbSBOb2RlUmVu
ZGVyZXJGYWN0b3J5LCBnaXZpbmcgc2VwYXJhdGUgZmlsZXMgdG8gaXQuCisgICAgICAgIC0gQ2hh
bmdlZCBzaWduYXR1cmUgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIAorICAgICAgICAg
IHRvIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKS4KKyAgICAg
ICAgICBUaGUgc3R5bGUgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIE5vZGVSZW5kZXJlckZhY3Rv
cnk6OnN0eWxlKCkKKyAgICAgICAgICBUaGlzIHdpbGwgYWxsb3cgcmVuZGVyZXJJc05lZWRlZCgp
IHRvIGFjY2VzcyBjb250ZXh0dWFsCisgICAgICAgICAgaW5mb3JtYXRpb24gbGlrZSBhdHRhY2hp
bmcgcGhhc2UgYW5kIHJlbmRlcmluZy1wYXJlbnQuCisgICAgICAgIAorICAgICAgICBObyBuZXcg
dGVzdHMuIE5vIGJlaGF2aW91ciBjaGFuZ2UuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGFyYWN0ZXJEYXRhOjp1cGRhdGVSZW5kZXJlcik6IFBhc3MgdW5yZXNvbHZlZCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgdG8gcmVuZGVyZXJJc05lZWRlZCgpCisgICAgICAgIChXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhOjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVy
RGF0YS5oOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0Vk
aXRpbmdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdUZXh0OjpyZW5kZXJlcklz
TmVlZGVkKToKKyAgICAgICAgKiBkb20vRWRpdGluZ1RleHQuaDoKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5k
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAg
ICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6
fk5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdD
b250ZXh0OjpzZXRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cmVsZWFzZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6
OnBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdD
b250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6d3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0Ojpub2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0OjpwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJlckZhY3Rvcnk6OmNvbnRleHQpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50RWxlbWVu
dC5oOgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKiBkb20vVGV4dC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEFw
cGxldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxOb1Nj
cmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wu
Y3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmg6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdEZXNjRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdIS2VybkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHA6CisgICAgICAgICogc3Zn
L1NWR1RTcGFuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VGl0bGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZLZXJuRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorCiAyMDExLTA1LTE5ICBKdWxpZW4gQ2hhZmZyYWl4
ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgpAQCAtNTEzLDEyICs2MjQsNiBAQAogICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgogICAgICAgICAoV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKTogdXNlIGxvYWRlclJ1bkxvb3AgdG8gc2NoZWR1
bGUgc3RyZWFtcyBvbiBwbGF0Zm9ybSBXSU4KIAotMjAxMS0wNS0xOCAgTU9SSVRBIEhhamltZSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4
IGNsYW5nIGJ1aWxkLgotCi0gICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKLQog
MjAxMS0wNS0xOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCAwOWRmZmUyNDQwMmI1MjQ5NWIzNzhkZDg3MWViNzhjZDhhZDUyZWQ3Li5hNmQ2YWJhNzViYzRh
MjQxYjMxYjhkOTdjMmExOTA4ZGNmZDM2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTExODIsMTEgKzExODIsMTMgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZUZpbHRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggXAorCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlclN0eWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlV2l0aElu
ZGV4LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGFlMDVlY2QyMDgwNjgzZmQwNzgwNTk2ZDFmYTA3YjE4NjQ1MTMwNGYuLjA4YmNhYjZh
NjQ4MGYzZDZlNjk2M2NiY2M5ZjJhZjc2ZjEyZDUxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI1
MDMsNiArMjUwMyw4IEBACiAgICAgICAgICAgICAnZG9tL05vZGVJdGVyYXRvci5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVSYXJl
RGF0YS5oJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwJywKKyAg
ICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9t
L05vZGVSZW5kZXJTdHlsZS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVdpdGhJbmRleC5oJywK
ICAgICAgICAgICAgICdkb20vTm90YXRpb24uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggN2NlZTgz
MDIyMzViODBiYzkzN2UzZWQwY2Q5ZGNmZTc2MjM4NjZjZC4uMjFiNTg3NTNiNzY2MWU5YTNmZjcy
Nzc1YTZkZTUxNjJkNWZmNTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTUwOCw2ICs1MDgsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBkb20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgXAogICAgIGRvbS9O
b2RlRmlsdGVyLmNwcCBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAgXAorICAgIGRvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAgXAogICAgIGRvbS9Ob3RhdGlvbi5jcHAgXAogICAgIGRvbS9P
cHRpb25Hcm91cEVsZW1lbnQuY3BwIFwKICAgICBkb20vT3B0aW9uRWxlbWVudC5jcHAgXApAQCAt
MTQ4Niw2ICsxNDg3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL05vZGVGaWx0ZXIuaCBcCiAg
ICAgZG9tL05vZGUuaCBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5oIFwKKyAgICBkb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAogICAgIGRvbS9PcHRpb25F
bGVtZW50LmggXAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDg3YzM4NjI3NTEwNDBjYTkx
OTUxMDc2OWQwNDY3NGUyZmU2ODFmNDguLmE4YzQ5N2Q3MzYxZDc4YTBmYTVlZWVjMTkxM2UyNjFm
NjYyODkzYmMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC00NTM0Miw2ICs0NTM0Miw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlv
bnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE5vdGF0aW9uLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVD
b25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGNiMjBkOTUwMjA3ZGQzM2FhMjM0NGE2NTRlYzU4Y2FlNDUzY2Q4
NC4uNDQzMjdlN2Y1Y2M2OTRjZGQ1ZjQyMjA3ZDgxNDUwNWE0YjFmNmEzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzI0OSw2
ICszMjQ5LDggQEAKIAkJQTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hl
bHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdE
QkY4REMxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5oICovOyB9OwogCQlB
N0YzMzhBMzExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0YzMzhBMTExQzBFRkNBMDBBMzIw
QTcgLyogU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCUE3RjMzOEE0MTFDMEVGQ0EwMEEzMjBB
NyAvKiBTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0YzMzhBMjExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93RWxlbWVudC5oICov
OyB9OworCQlBN0Y1RDk0RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGNUQ5
NEQxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLzsgfTsKKwkJ
QTdGNUQ5NTAxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Y1RDk0RTEzODRGMDJE
MDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKIAkJQTgwQTM4RkUwRTUw
Q0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNH
LmNwcCAqLzsgfTsKIAkJQTgwRDY3MDgwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODBENjcwNzBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaCAqLzsgfTsKIAkJQTgwRTZDRTQwQTE5ODlDQTAwN0ZCOEM1IC8qIENT
U1ZhbHVlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAqLzsgfTsK
QEAgLTk3NzMsNiArOTc3NSw4IEBACiAJCUE3REJGOERDMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0
Q2hlY2tpbmdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENo
ZWNraW5nSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RjMzOEExMTFD
MEVGQ0EwMEEzMjBBNyAvKiBTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBN0YzMzhBMjExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93RWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3RjVEOTREMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVy
aW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RjVE
OTRFMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlUmVuZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdHRlcm5DRy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MEQ2NzA3MEU5RTlERUIwMEU0MjBGMCAv
KiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFs
dWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1
ZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzNTEsNiArMTkzNTUs
OCBAQAogCQkJCUE4MTg3MjEwMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5oICovLAogCQkJ
CTg1QUNBOUZBMEE5QjYzMTAwMDY3MUU5MCAvKiBOb2RlTGlzdC5pZGwgKi8sCiAJCQkJNjMxODlB
RTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovLAorCQkJCUE3RjVEOTREMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCisJCQkJQTdGNUQ5
NEUxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmggKi8sCiAJCQkJNjNE
N0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICovLAogCQkJCTkzODJB
QUIxMEQ4QzM4NjEwMEYzNTdBNiAvKiBOb2RlV2l0aEluZGV4LmggKi8sCiAJCQkJQThFQTdFQjcw
QTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmNwcCAqLywKQEAgLTIxOTE3LDYgKzIxOTIzLDcg
QEAKIAkJCQk4NTRGRTczNTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODE4NzIxQjA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3RjVEOTUwMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVu
ZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjNEN0IzMkQwRTc4Q0QzRjAwRjc2
MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkFBQjQwRDhD
Mzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
RUJFMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDgw
Niw2ICsyNDgxMyw3IEBACiAJCQkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzIwQTIyOTdCRTAwNThEN0FEIC8qIE5v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzQwQTIyOTdC
RTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Y1RDk0
RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThFQTdFQkYwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMzNTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNh
dGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAppbmRleCBlMTgxNWQ5ZDg4ZDM3NTZiMGI0MDcwMzg1ZWRiYThlMjgxMzc5YTFmLi5iN2Nh
MzVkOGVkZGQ3ZmQ0ZTMzNjczNjQzYTY2ZTczNWE2NDhjMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11
dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCkBAIC0x
ODEsNyArMTgyLDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gbmV3RGF0YSwgdW5zaWduZWQgb2YKIAogdm9pZCBDaGFyYWN0ZXJE
YXRhOjp1cGRhdGVSZW5kZXJlcih1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoT2ZSZXBsYWNlZERhdGEpCiB7Ci0gICAgaWYgKCghcmVuZGVyZXIoKSB8fCAhcmVu
ZGVyZXJJc05lZWRlZChyZW5kZXJlcigpLT5zdHlsZSgpKSkgJiYgYXR0YWNoZWQoKSkgeworICAg
IGlmICgoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVySXNOZWVkZWQoTm9kZVJlbmRlcmluZ0NvbnRl
eHQodGhpcywgcmVuZGVyZXIoKS0+c3R5bGUoKSwgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OlJlc29s
dmVOb25lKSkpICYmIGF0dGFjaGVkKCkpIHsKICAgICAgICAgZGV0YWNoKCk7CiAgICAgICAgIGF0
dGFjaCgpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXIoKSkKQEAgLTIxNywxMSArMjE4LDExIEBA
IGludCBDaGFyYWN0ZXJEYXRhOjptYXhDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCgpKTsKIH0KIAotYm9vbCBDaGFyYWN0ZXJEYXRhOjpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgQ2hhcmFjdGVyRGF0YTo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgZmFjdG9yeSkKIHsK
ICAgICBpZiAoIW1fZGF0YSB8fCAhbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gTm9kZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIE5vZGU6
OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSk7CiB9CiAKIGJvb2wgQ2hhcmFjdGVyRGF0YTo6b2Zm
c2V0SW5DaGFyYWN0ZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4
IDM5YTZmYWE2YThkYWVlNjM3ZGI4YTU0ODRhYmY2ZGNhMjJhN2Y4NWMuLjY2MWUxMTA2Mzc3MjJk
MzQ4ZjdmYzg1ZGE0MGY1NWUzOTI2YzEyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
aApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVCh0eXBlID09IENy
ZWF0ZUNvbW1lbnQgfHwgdHlwZSA9PSBDcmVhdGVUZXh0KTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2b2lk
IHNldERhdGFJbXBsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgeyBtX2RhdGEgPSBpbXBs
OyB9CiAgICAgdm9pZCBkaXNwYXRjaE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggZGYxMDEzOGY2NDE1M2FlMGE0YTIz
MGQxNGQzYTc4YTQ2YzRkYWMwZS4uYTIxMDQ4Yjc5ZTZmNDBkOGVhODMwZjg0YzZkMmM1ZGZhYzk3
ZDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC04OCw2ICs4OCw3IEBACiAj
aW5jbHVkZSAiTm9kZUZpbHRlci5jcHAiCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5j
cHAiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmNwcCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAiCiAjaW5jbHVkZSAiTm90YXRpb24uY3BwIgogI2luY2x1ZGUgIk9wdGlvbkVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIk9wdGlvbkdyb3VwRWxlbWVudC5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VkaXRpbmdUZXh0LmNwcAppbmRleCBlNDEyYWQ2OWIzMTQxMzEzN2E2NDg0NDYwYjUwNTZhZDcy
MDI1ODEwLi5hM2U3YTRjNTNmOWE0OWMyY2VkODkyZDlmN2QyNGRkOWRhY2Q1ZjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUGFzc1JlZlB0cjxFZGl0
aW5nVGV4dD4gRWRpdGluZ1RleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgZGEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRpbmdUZXh0KGRvY3VtZW50LCBk
YXRhKSk7CiB9CiAKLWJvb2wgRWRpdGluZ1RleHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqKQorYm9vbCBFZGl0aW5nVGV4dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWRpdGluZ1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4
dC5oCmluZGV4IDA4MjIzYzIxNmJkMTkzODZjMzM4ZmQ3ZTI0ZjY5YWUzNjJlOWQ1ZGQuLjY1MzZj
N2IzOGI0MDBhZTk2NmE5Y2U3MDQwNmUxYTk4YzZmOTA0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5n
VGV4dC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
ZGl0aW5nVGV4dD4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKik7CisgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKIAogICAgIEVkaXRpbmdUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IGQ3MTdjODUyNTQyNTRkN2Y4MzAwMzg2MGZlMzgzMWMyNzhhNDlhZmEu
LmZiN2FhYjk0YzhkOGFhOGEyOWQxZmNhZjU0ZmUzOTc5MmU2NGIwMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRl
ICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKKyNpbmNsdWRlICJO
b2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKQEAgLTc1
LDcgKzc2LDYgQEAKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCi0jaW5jbHVkZSAiUmVu
ZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKQEAgLTE0NTks
MTgyICsxNDU5LDkgQEAgTm9kZSAqTm9kZTo6bmV4dExlYWZOb2RlKCkgY29uc3QKICAgICByZXR1
cm4gMDsKIH0KIAotCi1jbGFzcyBOb2RlUmVuZGVyZXJGYWN0b3J5IHsKLXB1YmxpYzoKLSAgICBl
bnVtIFRyZWVMb2NhdGlvbiB7Ci0gICAgICAgIExvY2F0aW9uTm90SW5UcmVlLAotICAgICAgICBM
b2NhdGlvbkxpZ2h0Q2hpbGQsCi0gICAgICAgIExvY2F0aW9uU2hhZG93Q2hpbGQsCi0gICAgfTsK
LQotICAgIGVudW0gQXR0YWNoUGhhc2UgewotICAgICAgICBBdHRhY2hTdHJhaWdodCwKLSAgICAg
ICAgQXR0YWNoQ29udGVudExpZ2h0LAotICAgICAgICBBdHRhY2hDb250ZW50Rm9yd2FyZGVkLAot
ICAgIH07Ci0KLSAgICBleHBsaWNpdCBOb2RlUmVuZGVyZXJGYWN0b3J5KE5vZGUqKTsKLSAgICBD
b250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsgfQotICAgIHZvaWQgY3JlYXRl
UmVuZGVyZXJJZk5lZWRlZCgpOwotCi1wcml2YXRlOgotICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwot
ICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVSZW5kZXJl
cigpIGNvbnN0OwotCi0gICAgVHJlZUxvY2F0aW9uIG1fbG9jYXRpb247Ci0gICAgQXR0YWNoUGhh
c2UgbV9waGFzZTsKLSAgICBOb2RlKiBtX25vZGU7Ci0gICAgQ29udGFpbmVyTm9kZSogbV9wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7Ci0gICAgU2hhZG93Um9vdCogbV92aXN1YWxQYXJl
bnRTaGFkb3dSb290OwotfTsKLQotTm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFj
dG9yeShOb2RlKiBub2RlKQotICAgIDogbV9sb2NhdGlvbihMb2NhdGlvbk5vdEluVHJlZSkKLSAg
ICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCi0gICAgLCBtX25vZGUobm9kZSkKLSAgICAsIG1f
cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0gICAgLCBtX3Zpc3VhbFBhcmVudFNo
YWRvd1Jvb3QoMCkKLXsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKHBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgpKSB7Ci0gICAgICAgIG1fbG9jYXRpb24gPSBM
b2NhdGlvblNoYWRvd0NoaWxkOwotICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uTGlnaHRDaGlsZDsKLQotICAgIGlmIChwYXJlbnQtPmlz
RWxlbWVudE5vZGUoKSkgewotICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QgPSB0b0Vs
ZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdCgpOwotCi0gICAgICAgIGlmIChtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIGlmIChDb250YWluZXJOb2RlKiBjb250ZW50Q29u
dGFpbmVyID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5hY3RpdmVDb250ZW50Q29udGFpbmVy
KCkpIHsKLSAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoQ29udGVudEZvcndhcmRlZDsK
LSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVS
ZW5kZXJlckZhY3RvcnkoY29udGVudENvbnRhaW5lcikucGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfSAKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50TGlnaHQ7Ci0g
ICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fcGFyZW50Tm9kZUZv
clJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OwotfQotCi1ib29sIE5vZGVSZW5kZXJlckZhY3Rv
cnk6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9wYXJlbnRO
b2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUpOwotCi0gICAgaWYgKG1fbG9jYXRpb24gPT0gTG9jYXRp
b25Ob3RJblRyZWUgfHwgbV9waGFzZSA9PSBBdHRhY2hDb250ZW50TGlnaHQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBtX3BhcmVu
dE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXBhcmVudFJl
bmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9sb2NhdGlvbiA9PSBM
b2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9PSBBdHRhY2hTdHJhaWdodCkgewotICAgICAg
ICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNoaWxkcmVuKCkgaW4gYSBjYXNlIG9mIHNoYWRv
dyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQyMwotICAgICAgICBpZiAoIXBhcmVudFJlbmRl
cmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCAmJiAhbV9wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdodENoaWxkUmVuZGVyZXJXaXRoU2hhZG93KCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFtX3BhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihtX25vZGUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUmVuZGVy
T2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCkKLXsK
LSAgICBBU1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KCkt
PnNob3VsZENyZWF0ZVJlbmRlcmVycygpKTsKLQotICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxl
ID0gbV9ub2RlLT5zdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgaWYgKCFtX25vZGUtPnJlbmRlcmVy
SXNOZWVkZWQoc3R5bGUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlbmRlck9i
amVjdCogbmV3UmVuZGVyZXIgPSBtX25vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50KCktPnJl
bmRlckFyZW5hKCksIHN0eWxlLmdldCgpKTsKLSAgICBpZiAoIW5ld1JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIGlmICghbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUt
PnJlbmRlcmVyKCktPmlzQ2hpbGRBbGxvd2VkKG5ld1JlbmRlcmVyLCBzdHlsZS5nZXQoKSkpIHsK
LSAgICAgICAgbmV3UmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgbV9ub2RlLT5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7Ci0gICAgbmV3UmVuZGVy
ZXItPnNldEFuaW1hdGFibGVTdHlsZShzdHlsZS5yZWxlYXNlKCkpOyAvLyBzZXRBbmltYXRhYmxl
U3R5bGUoKSBjYW4gZGVwZW5kIG9uIHJlbmRlcmVyKCkgYWxyZWFkeSBiZWluZyBzZXQuCi0gICAg
cmV0dXJuIG5ld1JlbmRlcmVyOwotfQotCi1SZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rv
cnk6Om5leHRSZW5kZXJlcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGhhc2UgIT0gQXR0YWNoQ29u
dGVudEZvcndhcmRlZCkKLSAgICAgICAgcmV0dXJuIG1fbm9kZS0+bmV4dFJlbmRlcmVyKCk7Ci0g
ICAgLy8gUmV0dXJucyAwIGhlcmUgdG8gaW5zZXJ0IHJlbmRlcmVyIGF0IHRoZSBlbmQgb2YgY2hp
bGQgbGlzdC4KLSAgICAvLyBXZSBhc3N1bWUgY29udGVudCBjaGlsZHJlbiBhcmUgYWx3YXlzIGF0
dGFjaGVkIGluIHRyZWUgb3JkZXIgYW5kCi0gICAgLy8gdGhlcmUgaXMgbm8gcGFydGlhbCByZW5k
ZXIgdHJlZSBjcmVhdGlvbi4KLSAgICByZXR1cm4gMDsKLX0KLQotI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLXN0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiB3cmFwV2l0aFJlbmRlckZ1bGxTY3Jl
ZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBSZW5k
ZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJB
cmVuYSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRvY3VtZW50KTsKLSAgICBmdWxsc2NyZWVuUmVuZGVy
ZXItPnNldFN0eWxlKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpKTsK
LSAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgZmFpbGVkIHRvIGNyZWF0ZSB0aGUgbmV3IHJl
bmRlciBhbmQgZW5kIHVwIHdyYXBwaW5nIG5vdGhpbmcuCi0gICAgLy8gV2UnbGwgZW5kIHVwIGRp
c3BsYXlpbmcgYSBibGFjayBzY3JlZW4sIGJ1dCBKZXIgc2F5cyB0aGlzIGlzIGV4cGVjdGVkLgot
ICAgIGlmIChvYmplY3QpCi0gICAgICAgIGZ1bGxzY3JlZW5SZW5kZXJlci0+YWRkQ2hpbGQob2Jq
ZWN0KTsKLSAgICBkb2N1bWVudC0+c2V0RnVsbFNjcmVlblJlbmRlcmVyKGZ1bGxzY3JlZW5SZW5k
ZXJlcik7Ci0gICAgcmV0dXJuIGZ1bGxzY3JlZW5SZW5kZXJlcjsKLX0KLSNlbmRpZgotCi12b2lk
IE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQotewotICAgIGlm
ICghZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJlcigpKTsKLQotICAgIFJlbmRlck9iamVjdCog
bmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0KLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYm
IGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG1fbm9kZSkK
LSAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4obmV3UmVuZGVy
ZXIsIGRvY3VtZW50KCkpOwotI2VuZGlmCi0KLSAgICAvLyBGSVhNRTogVGhpcyBzaWRlIGVmZmVj
dCBzaG91bGQgYmUgdmlzaWJsZSBmcm9tIGF0dGFjaCgpIGNvZGUuCi0gICAgaWYgKG1fcGhhc2Ug
PT0gQXR0YWNoQ29udGVudExpZ2h0KQotICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Qt
Pmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKLQotICAgIGlmICghbmV3UmVuZGVyZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIE5vdGU6IEFkZGluZyBuZXdSZW5kZXJlciBpbnN0ZWFkIG9mIHJl
bmRlcmVyKCkuIHJlbmRlcmVyKCkgbWF5IGJlIGEgY2hpbGQgb2YgbmV3UmVuZGVyZXIuCi0gICAg
bV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCktPmFkZENoaWxkKG5l
d1JlbmRlcmVyLCBuZXh0UmVuZGVyZXIoKSk7Ci19Ci0KIENvbnRhaW5lck5vZGUqIE5vZGU6OnBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpCiB7Ci0gICAgcmV0dXJuIE5vZGVSZW5kZXJl
ckZhY3RvcnkodGhpcykucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CisgICAgcmV0
dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSgpOwogfQogCiB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQpAQCAtMTY1
NSw5ICsxNDgyLDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZTo6c3R5bGVGb3JSZW5k
ZXJlcigpCiAgICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVy
KCkgPyBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkgOiAwOwogfQogCi1ib29sIE5v
ZGU6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBOb2RlOjpyZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAg
IHJldHVybiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcykgfHwgKHN0eWxl
LT5kaXNwbGF5KCkgIT0gTk9ORSk7CisgICAgcmV0dXJuIChkb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKSA9PSB0aGlzKSB8fCAoY29udGV4dC5zdHlsZSgpLT5kaXNwbGF5KCkgIT0gTk9ORSk7
CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMWZhOGJmMzdjOTBlMDFjNjQwMDk0NTY1YjY4
M2IyNGJjMTczNjZiLi5lMzQ3YmViMDg5NDkyYjZjYWRiZDdkMmNiYzZkZDE5NjZkY2MzZTQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgTmFtZWROb2RlTWFwOwogY2xhc3Mg
TmFtZU5vZGVMaXN0OwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBOb2RlUmFyZURhdGE7CitjbGFz
cyBOb2RlUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNs
YXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKQEAgLTQ1
MSw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAg
ICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
ICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0
YzFmYTllOTZlNTNmZDM0MzFhZjhkYzM5YWFmMTkwMzc4ZDA1ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0wLDAgKzEs
MjE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgor
I2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCisjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK05vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChO
b2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlc29sdmVUeXBlIHJlc29sdmUpCisgICAg
OiBtX2xvY2F0aW9uKExvY2F0aW9uTm90SW5UcmVlKQorICAgICwgbV9waGFzZShBdHRhY2hTdHJh
aWdodCkKKyAgICAsIG1fbm9kZShub2RlKQorICAgICwgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUoMCkKKyAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCgwKQorICAgICwgbV9z
dHlsZShzdHlsZSkKK3sKKyAgICBpZiAocmVzb2x2ZSA9PSBSZXNvbHZlTm9uZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9ub2RlLT5wYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChw
YXJlbnQtPmlzU2hhZG93Qm91bmRhcnkoKSkgeworICAgICAgICBtX2xvY2F0aW9uID0gTG9jYXRp
b25TaGFkb3dDaGlsZDsKKyAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUg
PSBwYXJlbnQtPnNoYWRvd0hvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
bG9jYXRpb24gPSBMb2NhdGlvbkxpZ2h0Q2hpbGQ7CisKKyAgICBpZiAocGFyZW50LT5pc0VsZW1l
bnROb2RlKCkpIHsKKyAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50
KHBhcmVudCktPnNoYWRvd1Jvb3QoKTsKKworICAgICAgICBpZiAobV92aXN1YWxQYXJlbnRTaGFk
b3dSb290KSB7CisgICAgICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogY29udGVudENvbnRhaW5l
ciA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+YWN0aXZlQ29udGVudENvbnRhaW5lcigpKSB7
CisgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQ7CisgICAg
ICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVy
aW5nQ29udGV4dChjb250ZW50Q29udGFpbmVyKS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IAorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRMaWdodDsKKyAgICAg
ICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7Cit9CisKK05vZGVSZW5kZXJpbmdDb250ZXh0Ojp+Tm9k
ZVJlbmRlcmluZ0NvbnRleHQoKQoreworfQorCit2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpz
ZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK3sKKyAgICBtX3N0eWxlID0g
c3R5bGU7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpyZWxlYXNlU3R5bGUoKQoreworICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKK30KKwor
UmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QK
K3sKKyAgICBpZiAobV9waGFzZSAhPSBBdHRhY2hDb250ZW50Rm9yd2FyZGVkKQorICAgICAgICBy
ZXR1cm4gbV9ub2RlLT5uZXh0UmVuZGVyZXIoKTsKKyAgICAvLyBSZXR1cm5zIDAgaGVyZSB0byBp
bnNlcnQgcmVuZGVyZXIgYXQgdGhlIGVuZCBvZiBjaGlsZCBsaXN0LgorICAgIC8vIFdlIGFzc3Vt
ZSBjb250ZW50IGNoaWxkcmVuIGFyZSBhbHdheXMgYXR0YWNoZWQgaW4gdHJlZSBvcmRlciBhbmQK
KyAgICAvLyB0aGVyZSBpcyBubyBwYXJ0aWFsIHJlbmRlciB0cmVlIGNyZWF0aW9uLgorICAgIHJl
dHVybiAwOworfQorCitSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRS
ZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlLT5yZW5kZXJlcigpOworfQorCit2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0
Q2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hDb250ZW50TGln
aHQpCisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9zdENoaWxkcmVuQ2hhbmdl
ZCgpOworfQorCitib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJl
cigpIGNvbnN0Cit7CisgICAgQVNTRVJUKHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
KTsKKworICAgIGlmIChtX2xvY2F0aW9uID09IExvY2F0aW9uTm90SW5UcmVlIHx8IG1fcGhhc2Ug
PT0gQXR0YWNoQ29udGVudExpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5k
ZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXBhcmVudFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9s
b2NhdGlvbiA9PSBMb2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9PSBBdHRhY2hTdHJhaWdo
dCkgeworICAgICAgICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNoaWxkcmVuKCkgaW4gYSBj
YXNlIG9mIHNoYWRvdyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KKyAgICAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQyMworICAgICAgICBpZiAo
IXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCAmJiAhbV9w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdodENoaWxkUmVuZGVyZXJX
aXRoU2hhZG93KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KCFtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihtX25vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworCitOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJGYWN0b3J5KE5vZGUqIG5v
ZGUpCisgICAgOiBtX2NvbnRleHQobm9kZSwgMCwgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OlJlc29s
dmVDb250ZXh0KQoreworfQorCitSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNy
ZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKQoreworICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRleHQubm9k
ZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CisgICAgQVNT
RVJUKCFub2RlLT5yZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQtPnNob3VsZENyZWF0
ZVJlbmRlcmVycygpKTsKKworICAgIGlmICghbV9jb250ZXh0LnNob3VsZENyZWF0ZVJlbmRlcmVy
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9jb250ZXh0LnNldFN0eWxlKG5vZGUtPnN0
eWxlRm9yUmVuZGVyZXIoKSk7CisgICAgaWYgKCFub2RlLT5yZW5kZXJlcklzTmVlZGVkKG1fY29u
dGV4dCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJl
ciA9IG5vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpLCBtX2NvbnRl
eHQuc3R5bGUoKSk7CisgICAgaWYgKCFuZXdSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoIW1fY29udGV4dC5wYXJlbnRSZW5kZXJlcigpLT5pc0NoaWxkQWxsb3dlZChuZXdS
ZW5kZXJlciwgbV9jb250ZXh0LnN0eWxlKCkpKSB7CisgICAgICAgIG5ld1JlbmRlcmVyLT5kZXN0
cm95KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG5vZGUtPnNldFJlbmRlcmVy
KG5ld1JlbmRlcmVyKTsKKyAgICBuZXdSZW5kZXJlci0+c2V0QW5pbWF0YWJsZVN0eWxlKG1fY29u
dGV4dC5yZWxlYXNlU3R5bGUoKSk7IC8vIHNldEFuaW1hdGFibGVTdHlsZSgpIGNhbiBkZXBlbmQg
b24gcmVuZGVyZXIoKSBhbHJlYWR5IGJlaW5nIHNldC4KKyAgICByZXR1cm4gbmV3UmVuZGVyZXI7
Cit9CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitzdGF0aWMgUmVuZGVyRnVsbFNjcmVl
biogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0LCBEb2N1bWVu
dCogZG9jdW1lbnQpCit7CisgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbHNjcmVlblJlbmRlcmVy
ID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyRnVsbFNjcmVlbihkb2N1bWVu
dCk7CisgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGdWxsU2NyZWVuOjpj
cmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdlIGZh
aWxlZCB0byBjcmVhdGUgdGhlIG5ldyByZW5kZXIgYW5kIGVuZCB1cCB3cmFwcGluZyBub3RoaW5n
LgorICAgIC8vIFdlJ2xsIGVuZCB1cCBkaXNwbGF5aW5nIGEgYmxhY2sgc2NyZWVuLCBidXQgSmVy
IHNheXMgdGhpcyBpcyBleHBlY3RlZC4KKyAgICBpZiAob2JqZWN0KQorICAgICAgICBmdWxsc2Ny
ZWVuUmVuZGVyZXItPmFkZENoaWxkKG9iamVjdCk7CisgICAgZG9jdW1lbnQtPnNldEZ1bGxTY3Jl
ZW5SZW5kZXJlcihmdWxsc2NyZWVuUmVuZGVyZXIpOworICAgIHJldHVybiBmdWxsc2NyZWVuUmVu
ZGVyZXI7Cit9CisjZW5kaWYKKwordm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5k
ZXJlcklmTmVlZGVkKCkKK3sKKyAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOworCisgICAgaWYgKCFkb2N1
bWVudC0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
bmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7CisKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKGRvY3VtZW50LT53ZWJraXRJc0Z1bGxT
Y3JlZW4oKSAmJiBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0g
bm9kZSkKKyAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4obmV3
UmVuZGVyZXIsIGRvY3VtZW50KTsKKyNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoaXMgc2lkZSBl
ZmZlY3Qgc2hvdWxkIGJlIHZpc2libGUgZnJvbSBhdHRhY2goKSBjb2RlLgorICAgIG1fY29udGV4
dC5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAoIW5ld1JlbmRlcmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBOb3RlOiBBZGRpbmcgbmV3UmVuZGVyZXIgaW5zdGVhZCBvZiBy
ZW5kZXJlcigpLiByZW5kZXJlcigpIG1heSBiZSBhIGNoaWxkIG9mIG5ld1JlbmRlcmVyLgorICAg
IG1fY29udGV4dC5wYXJlbnRSZW5kZXJlcigpLT5hZGRDaGlsZChuZXdSZW5kZXJlciwgbV9jb250
ZXh0Lm5leHRSZW5kZXJlcigpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2EzNDFhZDBkZjFhNjUyMDlmNTdhMDA3ZDJhMjgz
Y2YxZGUyYTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lm
bmRlZiBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCisjZGVmaW5lIE5vZGVSZW5kZXJpbmdDb250ZXh0
X2gKKworI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIERvY3VtZW50Owor
Y2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBTaGFkb3dSb290
OworCitjbGFzcyBOb2RlUmVuZGVyaW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAgZW51bSBSZXNv
bHZlVHlwZSB7CisgICAgICAgIFJlc29sdmVOb25lLAorICAgICAgICBSZXNvbHZlQ29udGV4dCwK
KyAgICB9OworCisgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSosIFJlbmRlclN0eWxlKiA9
IDAsIFJlc29sdmVUeXBlID0gUmVzb2x2ZUNvbnRleHQpOworICAgIH5Ob2RlUmVuZGVyaW5nQ29u
dGV4dCgpOworCisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQorICAg
IENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlOyB9CisgICAgUmVuZGVyT2Jq
ZWN0KiBwYXJlbnRSZW5kZXJlcigpIGNvbnN0OworICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRl
cmVyKCkgY29uc3Q7CisKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlLmdldCgpOyB9CisgICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxl
Pik7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcmVsZWFzZVN0eWxlKCk7CisKKyAgICBi
b29sIHNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3Q7CisKKyAgICB2b2lkIGhvc3RDaGlsZHJl
bkNoYW5nZWQoKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIFRyZWVMb2NhdGlvbiB7CisgICAgICAg
IExvY2F0aW9uTm90SW5UcmVlLAorICAgICAgICBMb2NhdGlvbkxpZ2h0Q2hpbGQsCisgICAgICAg
IExvY2F0aW9uU2hhZG93Q2hpbGQsCisgICAgfTsKKworICAgIGVudW0gQXR0YWNoUGhhc2Ugewor
ICAgICAgICBBdHRhY2hTdHJhaWdodCwKKyAgICAgICAgQXR0YWNoQ29udGVudExpZ2h0LAorICAg
ICAgICBBdHRhY2hDb250ZW50Rm9yd2FyZGVkLAorICAgIH07CisKKyAgICBUcmVlTG9jYXRpb24g
bV9sb2NhdGlvbjsKKyAgICBBdHRhY2hQaGFzZSBtX3BoYXNlOworICAgIE5vZGUqIG1fbm9kZTsK
KyAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsKKyAg
ICBTaGFkb3dSb290KiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7CisgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBtX3N0eWxlOworfTsKKworY2xhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJlbmRlcmVyRmFjdG9yeSk7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTm9kZVJlbmRlcmVyRmFjdG9y
eShOb2RlKik7CisKKyAgICBjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRl
ZCgpOworCitwcml2YXRlOgorICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXJBbmRTdHls
ZSgpOworCisgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgbV9jb250ZXh0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50LmgKaW5kZXggMDdiNzhmNzYwNDU1MmExZmY0ZmFjZDAzMWE1YTFiNDQxNTNiNzJh
NS4uMDlmZGI0MjAzODljMDc4OTQ4NjQ4NDM5NjkxOGZkMjBjZGYxZDM3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0YWctbmFtZSBj
aGVja2luZyBvbmNlIDxjb250ZW50PiBpcyByZWFkeS4KICAgICAvLyBTZWUgYWxzbyBodHRwOi8v
d2Via2l0Lm9yZy9iLzU2OTczCiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBiNzEw
MGZlYzQwYjY2MzUxYTY4NDMzZTdkNGY4ZTkyN2YxN2I3NGUwLi5iOTY4ZjA1MTZhNjU4NTRjNTky
Yjc5OTA0NTk1ZjlkOTVlN2M4NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiVGV4dC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAKQEAgLTE4OSw5ICsxOTAsOSBAQCBQYXNzUmVm
UHRyPE5vZGU+IFRleHQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogICAgIHJldHVybiBjcmVh
dGUoZG9jdW1lbnQoKSwgZGF0YSgpKTsKIH0KIAotYm9vbCBUZXh0OjpyZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIUNoYXJhY3RlckRhdGE6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpKQorICAgIGlmICghQ2hhcmFjdGVyRGF0YTo6cmVuZGVy
ZXJJc05lZWRlZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBv
bmx5V1MgPSBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CkBAIC0yMDMsNyArMjA0LDcgQEAgYm9v
bCBUZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKICAgICBpZiAocGFy
LT5pc1RhYmxlKCkgfHwgcGFyLT5pc1RhYmxlUm93KCkgfHwgcGFyLT5pc1RhYmxlU2VjdGlvbigp
IHx8IHBhci0+aXNUYWJsZUNvbCgpIHx8IHBhci0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHN0eWxlLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgLy8gcHJl
L3ByZS13cmFwL3ByZS1saW5lIGFsd2F5cyBtYWtlIHJlbmRlcmVycy4KKyAgICBpZiAoY29udGV4
dC5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgLy8gcHJlL3ByZS13cmFwL3ByZS1saW5lIGFs
d2F5cyBtYWtlIHJlbmRlcmVycy4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgUmVu
ZGVyT2JqZWN0ICpwcmV2ID0gcHJldmlvdXNSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXggYzk3
ODM0M2QzZTFkYWM4NTlhMDNmNmU0ZDdiMzI3NzRjYjFlZjY5Ny4uM2NjOGM1MDJhNDNiNzBhMzNi
NWEzMDM5ZmQxZDNlMDMxYjUwNDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sIGRlZXApOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFw
cGxldEVsZW1lbnQuY3BwCmluZGV4IGM3OTk1YjU2YjQ5NmQ0MzdhNWJlZGMwNGIzMmVmZTYwNzEx
NzMwOGIuLjg1MjBjMmM3Y2E2MTlhYTIxOGZlMzM2OWQ1OTQwMDYxMjQyN2UzN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMSBA
QCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICBIVE1M
UGx1Z0luRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1ib29sIEhUTUxBcHBs
ZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgSFRN
TEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGNvZGVBdHRyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IDBmM2FhZDg2OTA5MDYxMjcw
NjJhODJhY2I0ZDE5NWEyMTVhZjVjYjcuLjg0Y2U2MTgzZjNlYTg5ZDFiMjlhZTIwYzNjMDZiZjg1
ZWJhZmU5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAgLTM2
LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggNDBhOWExYmI4ODY4MDdkNDkyZmRlNmNhYWY3NmJlZDYzNmFmNGRlNy4uNGU4YmE2ZjNm
NjRiZDJhYTNiYjFiNjVhZWUwYzRmOTlhYWU0NjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKQEAgLTc2OSw3ICs3NjksNyBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBI
VE1MRWxlbWVudDo6Y2hpbGRyZW4oKQogICAgIHJldHVybiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRl
KHRoaXMsIE5vZGVDaGlsZHJlbik7CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoaGFz
TG9jYWxOYW1lKG5vc2NyaXB0VGFnKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpOwpAQCAtNzg1LDcgKzc4NSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogICAgICAgICBpZiAoZnJhbWUgJiYgZnJh
bWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0lu
c3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
cmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVy
biBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBSZW5kZXJP
YmplY3QqIEhUTUxFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA1YTVmZGZi
Njc0OTVhMjA2MjgwZDBlZjNiM2NlMTk2Zjg1M2JlYjVhLi45YzQwN2UxOGM1MjQzODg0YTJkZmRh
NmNjOGM0ZTc5NDlhNDMxNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7
IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmNwcAppbmRleCBiMjgwZGFkOTA2MTFiZWVhOTg0M2ZjYzliZThlNGRkZjhhMzE1MjhkLi4z
OGIyNDE2MGJhZTY0OWYxZGEwM2Q4ZTViYzUxMzljZDI5YmUyMjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE4MywxMCArMTgzLDEwIEBAIHZvaWQgSFRN
TEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNy
ZWF0aW9uT3B0aW9uKQogICAgIGxvYWRlci0+cmVxdWVzdE9iamVjdCh0aGlzLCBtX3VybCwgZ2V0
QXR0cmlidXRlKG5hbWVBdHRyKSwgbV9zZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMpOwogfQogCi1ib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChpc0ltYWdlVHlw
ZSgpKQotICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgSFRNTEVt
YmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgfQog
I2VuZGlmCiAKLSAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCA4
NjNjMDliZWU0ZWJhZTk2ZDdmNTg1OTUyZDMwYzI3OGNhOWI2OWZiLi5iOWRjNzk4OTcxMTNkNzFh
OWRmMThhNjNmOWFiYTFhMGJmNTNjOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRy
eSYgcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNTJiZmRhMzAw
ZWI0OWM3MmI3NGU3MTMxOTU5MjEzOTgwMTAwNGQ0Yy4uMDZhN2Q2NTY2NTYwYTc4NTQ0MjcxNTE0
ZDI2ZThkYzEyYWJmNzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCkBA
IC0xMDQsMTAgKzEwNSwxMCBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6Zm9ybVdvdWxkSGF2ZVNl
Y3VyZVN1Ym1pc3Npb24oY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIGRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKHVybCkucHJvdG9jb2xJcygiaHR0cHMiKTsKIH0KIAotYm9vbCBIVE1MRm9y
bUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1M
Rm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3dhc0RlbW90ZWQpCi0gICAgICAgIHJldHVybiBIVE1M
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBIVE1MRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIENvbnRhaW5lck5vZGUqIG5v
ZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IG5v
ZGUtPnJlbmRlcmVyKCk7CkBAIC0xMjAsNyArMTIxLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGlmICghcGFyZW50SXNU
YWJsZUVsZW1lbnRQYXJ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVEaXNwbGF5IGRp
c3BsYXkgPSBzdHlsZS0+ZGlzcGxheSgpOworICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBjb250ZXh0
LnN0eWxlKCktPmRpc3BsYXkoKTsKICAgICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRpc3BsYXkg
PT0gVEFCTEUgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEUgfHwgZGlzcGxheSA9PSBUQUJMRV9S
T1dfR1JPVVAKICAgICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgZGlz
cGxheSA9PSBUQUJMRV9GT09URVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1cKICAgICAg
ICAgfHwgZGlzcGxheSA9PSBUQUJMRV9DT0xVTU5fR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9D
T0xVTU4gfHwgZGlzcGxheSA9PSBUQUJMRV9DRUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAppbmRleCAzMTAwZjY3YWRmZTFjYzZlYWVjYWY0YWNkMDc2NjNjNzQ4MjYxNGVhLi41
NjQ3NzJlNzNiY2Y5NmE0NDk5MzhhYTI4ZTExMjUyYzJjMWZhOWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIEhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50LmNwcAppbmRleCBhOGMyNjQ1OWJjYTc3NTUyNThiYTlmZGY1MmRjODExYWI5YTQ3
MTJmLi4zNGVkZThkZjhhMWY4ZTYyN2QzZWZkZGU5NWIzZWFhNzgzNTZhMjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUGFzc1Jl
ZlB0cjxIVE1MRnJhbWVFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgLy8gRm9yIGNv
bXBhdGliaWxpdHksIGZyYW1lcyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMgc2V0
LgogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmgKaW5kZXggNjZmY2NmMzMzYmIzZDRmNWQ4YTE5YzdjODA4MzU3NTkzMGQ4ZmZhMi4u
M2IwNzYxYTdhYjIzMTc1MTYxYmFlNTc2YjU5MmUyYmFjNGEzMWQzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDJmMzc1Y2JjYTI2ZWQ4NzM3NDE0
OTczYTc4N2ZiNDAxNTZjNDdjMzQuLjhiNzMxODQwNDJiMTkzMzQzMmUzOTZjMzE1MThhYzhlYmUx
NmU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZl
bnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTE0NywxMSArMTQ4LDExIEBAIHZv
aWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9
CiAKLWJvb2wgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSAqc3R5bGUpCitib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGli
aWxpdHksIGZyYW1lcyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMgc2V0LgogICAg
IC8vIEhvd2V2ZXIsIHdlIGRlbGF5IGNyZWF0aW5nIGEgcmVuZGVyZXIgdW50aWwgc3R5bGVzaGVl
dHMgaGF2ZSBsb2FkZWQuIAotICAgIHJldHVybiBzdHlsZS0+aXNTdHlsZUF2YWlsYWJsZSgpOwor
ICAgIHJldHVybiBjb250ZXh0LnN0eWxlKCktPmlzU3R5bGVBdmFpbGFibGUoKTsKIH0KIAogUmVu
ZGVyT2JqZWN0ICpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmgKaW5kZXggZjJmODQzOTc3NmU3ODUyN2I0MGI5ZjZmNzRlNjMyOWQzMGUw
ZjA3OC4uN2ZjNDQ1Y2E3NGEzYmI3YTA5OWNhMjU2MTJmNDk1NzViYTdmZDQ4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMDZhZjA5MzZiNzhkY2I5OWY3Mjk3YjUx
M2RkMTc4MDYzYjNlNTMzMy4uMTMzM2M4ZTk5OWEwOGU1MDNhYmMxMmIxMDk2NjdlYTEzODA4MWM0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVySUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEz
MSw5ICsxMzIsOSBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJRnJhbWVFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7Cisg
ICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIGNvbnRleHQuc3R5bGUoKS0+ZGlzcGxheSgpICE9
IE5PTkU7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5oCmluZGV4IDYxY2Q2YjY4ZWQ2NDhhMzIyNTllZjQ1N2JlZTQ4ODA1
NzMwZjM3MjYuLmRjNTIyYzU2MzUwNmI1N2JiY2E2MDlmOTc2ODhjZWViMjg0MzdkYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDk5MGZmZDNiYjI3MmRk
ZjJiODUyZWQwOGVhMGMwMDY0N2I5ZGI2MDUuLjU2YjNlMjdjYjQzNjUyNDdmZWRmMjRjN2VlNmM1
YzJhM2ViNjg0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtNzIzLDkgKzcyMyw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKICAgICB9CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMzhi
ZDZjODY1YTdjMTdmNzBkMzc2NzhiYjJiODgxNDE4ZTgyZDExZC4uZWE2MjgwOTE3ZGQ4Y2E5MGM2
YTQ0YWEyZWNiY2M5MGM5OGIwNDY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhdmVTZWxl
Y3Rpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMmFiMDhl
ZmFlYWEyNWE5NDY4YTVkMWY3OTU1MTVmYWUwZTBjYzgwNC4uYTZkMmRlZmZlNjBkMTVmYzg0YWYy
NDhjNWU4MzVjZmQ0MmU3YmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0zMTMsMTcgKzMxMywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQog
ewogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIFVOVVNFRF9QQVJBTShz
dHlsZSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiBjb250cm9scygpID8gSFRN
TEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpIDogZmFsc2U7CisgICAgcmV0dXJuIGNv
bnRyb2xzKCkgPyBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KSA6IGZhbHNl
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
ZjllOTNiNGM3YjQxNTRkZDViZmRlNzc5YWQ3NzIxZmE3NzZkY2FkNS4uN2UwYjgxZDM4ZWEwODZl
NzNkMjAxZGM5OWQwODNiYjhhNjcxMWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURl
Y2xzKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaAppbmRleCA5YTNiOTJkMzhiZDVkMDNhZDk3
ZGEzN2RkYjRiMWRmYzZmNzNmNmM2Li4wOWRlMjAzMjYwZTkwOGY0ZGVkZTI1OWFkNzY1M2ExM2Yw
NDY2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogICAgIHZpcnR1YWwgYm9vbCBj
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgIHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7
ICByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBiYjY0ODBlNjBkZTNjN2VhYjgyMThlZTMwNDc4
ZGY2NTYwNzIyYWJhLi4zYmUwMDlkNjE5MmI3ZGM0NzBkZjE3OGZiNzY1M2FjMDJhMjBmNzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzAwLDE0ICsz
MDAsMTQgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0
aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgICAgICByZW5kZXJGYWxsYmFja0Nv
bnRlbnQoKTsKIH0KIAotYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1F
OiBUaGlzIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLCBkZXRhY2hlZCBkb2N1bWVudHMgbmV2
ZXIgcmVuZGVyIQogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiB2b2lk
IEhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggNjQxZTUwZTc3ZTg0YjAxMzdmZjAwOGNmNWIy
MTY1ZjAyZDg5MzU3Ni4uMThiYzdmNTQzZTQ4YTJhODU2ZmRiZmNlNDU2MTIzYzMyYjRkNzU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzIsNyArNzIsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogCi0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCmluZGV4
IGE1OGU5NTc2ZjAyNjA5YmYzZThhYmFjNzE0MWNhZTdmODVjN2FiNzQuLmI3Nzc3YTY1MDdjMmNm
OWI5MjRiZDM5NzcxYjY2ODA2MGE2NjNhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRSZW5kZXJTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggYzE3OTFkNzAwOWYyMjY4ODljYjYwNzRhYWZmMjJm
Y2VlODJhZTNlNC4uMjJjZTFiNjJhMTcxMGI4NGFjZTNkZTQyZGQwZjFjNjJmNWY0ZWE5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlclN0eWxlKFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4
IDViN2Y0MmRlYTQ2MTQ4OTQyZWZjYTc4ODBjNTBkMmMwY2VhYTA0OGMuLjU5MDI3YTQxYzcwOTQ1
NjI3M2FjOTAwOTg5OGUyYmRmYWYwZWZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcApAQCAtNTUsOSArNTUsOSBAQCBQYXNzUmVmUHRyPEhUTUxWaWRlb0VsZW1l
bnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFZpZGVvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkpOwogfQogCi1ib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKSAKK2Jvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgCiB7Ci0gICAgcmV0dXJuIEhUTUxF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgCisgICAgcmV0dXJuIEhUTUxFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOyAKIH0KIAogI2lmICFFTkFCTEUoUExVR0lOX1BS
T1hZX0ZPUl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXgg
NTdiNzBlYTFhYjJiYjcxYjExNmIyM2E3NzlmMTQ3MzY2MDZkOTFiZC4uNDUwNDM4YTJkZmFkZTZk
MzFjM2E5ZTZlYTBmNDJhZGFiYTExODQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVmlk
ZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogI2lmICFFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKaW5k
ZXggMWQ4YTZlNjhlY2YxOWFjYzhmOTM5YWFmZDM1NGZkZDhhNzhhN2FkMy4uZDRmZGRkMzBmNzU0
MDQ4ZWFjMjcxMDUwZWM0OTU1M2Y5ZmQxODEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcApAQCAtNTEsOSArNTEsOSBAQCBS
ZW5kZXJPYmplY3QqIERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJEZXRh
aWxzTWFya2VyKHRoaXMpOwogfQogCi1ib29sIERldGFpbHNNYXJrZXJDb250cm9sOjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgRGV0YWlsc01hcmtlckNvbnRyb2w6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIHN1bW1hcnlFbGVtZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBIVE1MRGl2
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHN1bW1hcnlFbGVt
ZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb250ZXh0KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBEZXRhaWxzTWFya2VyQ29udHJv
bDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKaW5kZXggM2M1YjA5ZGYyNDY0NTkxM2QxMzA0ZDlj
MDdjNThmNGY2YzBjMWE1Yy4uMWFhMTRjYWIzZGQxNzlhYzE0YmYzMTY5YTlmYTRhNzM0Yjg2YTVm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29u
dHJvbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dDsKIAogICAgIEhUTUxTdW1tYXJ5RWxlbWVudCogc3VtbWFyeUVsZW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGE1
ZWI3MGI1ODVhOTU0YTZlM2U0YTE3ODUyMTcxMzk4Zjc3Y2U4MmUuLjYwZGM3YmY2MzBjN2Y2MzZm
ZTQ2NGY2ZWMzZWViOTM4ODkxZDA5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIEhUTUxNZXRl
ckVsZW1lbnQqIE1ldGVyU2hhZG93RWxlbWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1ldGVyRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIE1l
dGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiti
b29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZW5kZXJNZXRlciogbWV0ZXJSZW5kZXJlciA9
IHRvUmVuZGVyTWV0ZXIobWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpOwotICAgIHJldHVybiBt
ZXRlclJlbmRlcmVyICYmICFtZXRlclJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKG1l
dGVyUmVuZGVyZXItPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBtZXRlclJlbmRlcmVyICYmICFtZXRl
clJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKG1ldGVyUmVuZGVyZXItPnN0eWxlKCkt
PmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4
dCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJCYXJFbGVtZW50OjpzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRl
clNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93
RWxlbWVudC5oCmluZGV4IDkzNjI2ZGY1ZTI1YjE3YTY2ZjllNWQ0Y2Q4MjVlNDNjNTllNWFlZGMu
LmMzNmIwMWIyNDNkYjlkZjZmYTA3NWJjMWJiNmU0ZDViNjQyNzA2M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0Jik7CiB9OwogCiBjbGFzcyBNZXRlckJhckVsZW1lbnQgOiBwdWJsaWMgTWV0ZXJT
aGFkb3dFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1By
b2dyZXNzU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDFjZWRkMGRjYTEyZjIzZGJhNGVkMTZiOGFkMzdm
ZTExMzNiZDNjZmMuLmMwY2JiOTUwOGRkZWJjNzZkOTAzMDRlMjQ3YTk3ODU1MDIyNmNlYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIEhUTUxQcm9ncmVzc0VsZW1lbnQqIFByb2dyZXNz
U2hhZG93RWxlbWVudDo6cHJvZ3Jlc3NFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIFByb2dyZXNzU2hh
ZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFBy
b2dyZXNzU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZW5kZXJPYmplY3QqIHByb2dyZXNzUmVuZGVyZXIg
PSBwcm9ncmVzc0VsZW1lbnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcHJvZ3Jlc3NSZW5k
ZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmIEhU
TUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gcHJvZ3Jl
c3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
ICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIFByb2dyZXNzQmFyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1l
bnQuaAppbmRleCBhMTA2YmY4NzIzODY1OTQwOTExOTgwYjljOTFiYzJmM2Y1NjA0NGE1Li5lMTM1
YzcxZGFhNDFmOWU2ZWYzYjM2NGVmOTE4OGEzMWNkNTE3YWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaApAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jlc3NFbGVtZW50KCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpOwogfTsKIAogY2xhc3MgUHJvZ3Jlc3NCYXJFbGVtZW50IDogcHVi
bGljIFByb2dyZXNzU2hhZG93RWxlbWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVzY0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5o
CmluZGV4IDMyYTdhZDAyMTQ0NzNkMmYzMzkxOWY1YTQ0Njg0NjkyZjllNGZlOTUuLmVhZTc2N2Vk
NmM5NTNkYTJhNWJlNTM4NGQwNTlhODIzYmM1NzE4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNj
RWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRGVz
Y0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNWU1YWJmOGRlNTM3MzkwYmE4ZTU2YWMzYWE4MDE0MGUx
NjAwNDFlMS4uZTdjMTA2YmFjYzA4OGI1ZWEzNzFkNjc4N2ExMDg5NTBjZDQ1NmFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogCi0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJp
bmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcAppbmRleCBmZTVkMDljOTliM2IxYThmNjE4ZjZlY2UzOTA2NDJjYTUwNWEwNDFm
Li4zMTExM2Q2MmJmNTQ0OGM3OWY4NGFlYmNhMDRiYmZmNzI1MzU3YmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcApAQCAtMTY4LDEwICsxNjgsMTAgQEAgUmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKgog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSh0
aGlzKTsKIH0KIAotYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiAocGFyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKSkKLSAgICAgICAgcmV0dXJuIFNW
R1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4g
U1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA3OTViYzExYWY2YzY0MjJlZGNmYzk4
ZmQ3MTA0YjE0ZGM4NWU5OWFlLi40OGFmYTMyYmVjNTkzYWI0NDJiYmQ5ZDQxYWZhZTE4NjQ2N2Uy
OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1l
bnQuaAppbmRleCA5NDM1Y2M3MDU0ZjQ3Y2M3ZDRhZDg3NTc3MjY5ZmIyMzIzMzlhZmU3Li42MjI3
NjZhMzU1YTZjOWUzNGQwZTU5MmQ3MTdjZWEzMmMxZTlhNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEVsZW1lbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0gIAor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0gIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmNwcAppbmRleCA5OTU1ODAwMTRiM2YzMTNmOTk3NmQ5ZDQwMDQzMzJlZDQ0MzAwYWViLi5k
YmY3ZTlmZjExM2RiN2M1Zjg3YWU5YjBmZDUzMmI1MmRiMDkyMDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZW5kZXJPYmplY3QqIFNWR0dFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHls
ZQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
KHRoaXMpOwogfQogCi1ib29sIFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKikKK2Jvb2wgU1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKQogewogICAgIHJldHVybiBwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgp
LT5pc1NWR0VsZW1lbnQoKTsgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4IGMzMDZm
NGE2ZjZlOTQ2N2Y4ODQ3NzA3ZGFiNTQ0ZDU2MTVjYzY5YzUuLjMxOWFmMjc4MmI1MmFlZjk1ODBm
YmQ3MzMwN2RhNjUzMTU3YWMxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCmluZGV4IDk0
NGFkMjcyYTQxNjk4ZDA2YzhiNzc3MDUzNTFhZjk0NTZhYzAzOTIuLjVhZDA4OWEwYmQ2OTJiNmE0
OGY0Mjk5MjFlNjk5NTk4ZTllZjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwog
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0
ZUdseXBoQ2FjaGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtl
cm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgKaW5kZXgg
MGRlZmNiYmI5N2FjM2JmZTUwMzliNmFjZWU3YTk2NjJiMDdhZmJiOC4uYmM3YjRlODNmYzQ1ZmVk
MDRjYTEzYjFiMDc4ZmI1ZTNhYzljYWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0hLZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1l
bnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggMjRjZTYy
NDZkMTk3M2U3Yzk3YTU2N2Y3ZDFlYmY0MjhlNDYzNTA0Yi4uZmI3NmVmODRlYTJkZjlmY2E2OTUz
Y2E1Yzg5Yjk0YzhkYThhYjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAppbmRleCA1MjhjNTNjNTNkYTFmNDZhNDZlN2Jh
Njk0NjFjNjEyOTk0OTBiMjFmLi5mMmExNzZlZjg0ZWI3OWMxOWEzZmU3NDkxMWJhMzlmODgwNDQw
YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgKQEAg
LTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuaAppbmRleCBlZGI1NmQ3YjZmMDBiODczZTZjZDQzNWY2ZTljZmE0MDFiYmRh
NDVjLi5kNDFjYzA2OTJhYzBiY2IxM2UyOWM3MDg5MTc2NzU3NjYwMzMwMjczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAotICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsgfQog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCAwZTRhMWJiNDkwY2M4
YmI4ZTQwYWI2MDMwODUxMTNjMDc4OTBkMzdlLi40MzI3NjNhMDcxY2VkZTU0YzQ4ZGZiMmIwOWVm
MzgzZDYxMWIxODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBA
IC0xMTgsNyArMTE4LDcgQEAgU3RyaW5nIFNWR1N0eWxlZEVsZW1lbnQ6OnRpdGxlKCkgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1N0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2V4dGVuZC5odG1sI1ByaXZhdGVEYXRhCiAg
ICAgLy8gUHJldmVudCBhbnl0aGluZyBvdGhlciB0aGFuIFNWRyByZW5kZXJlcnMgZnJvbSBhcHBl
YXJpbmcgaW4gb3VyIHJlbmRlciB0cmVlCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBTVkdTdHls
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyB3
aXRoIHRoZSBTVkcgY29udGVudC4gSW4gZ2VuZXJhbCwgdGhlIFNWRyB1c2VyIGFnZW50IHdpbGwg
aW5jbHVkZSB0aGUgdW5rbm93bgogICAgIC8vIGVsZW1lbnRzIGluIHRoZSBET00gYnV0IHdpbGwg
b3RoZXJ3aXNlIGlnbm9yZSB1bmtub3duIGVsZW1lbnRzLiAKICAgICBpZiAoIXBhcmVudE5vZGUo
KSB8fCBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHlsZWRF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKaW5kZXggNjViOTUyNTgwMGFkYTJh
MmFiNGVjOGQ1ZTNlZTBlNTczNWY5NzllMy4uNmZlMGY0YzVlNDgyOTg3ODdmNzI4MTViNTFkMGNm
ZGIxZGMyYTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDogCiAgICAgU1ZHU3R5bGVkRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCmluZGV4IDhmM2YyNTFlODY1NDkxMWQ5ZmMz
MWIzMzg2ZDkyZWRmYzliZWFmNTUuLjk1NDNjMjdkYTM3N2NlYmZkMGFhNWMxY2JkOGRmNDc3ZmVk
OGU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaApAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjg3OWVlYTcwMTk5NmQ2
MGE2OWY5MzgzZWJkNjM0MDQ0YzcwZWZmOS4uOTFiMDM3ZDk1MDMwNDVkZjNhZTY5NjEzMmQ5YTky
M2UyN2VkMmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0xMTIs
NyArMTEyLDcgQEAgYm9vbCBTVkdUUmVmRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihOb2RlKiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU1ZHVFJl
ZkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdU
UmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2Rl
KCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBT
VkdUUmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAg
ICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCiAg
ICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRo
VGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0
c3BhblRhZykpKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuaAppbmRleCAyZTdkMDA1NzEzYWFkY2U2NWEyM2IxZDM5ZmI5OTg3Y2RhMDk0NDRjLi44
OTQyYmNkYTk3N2RlOGUzMzgwOTZhZmI2ZDkzNDc2ZTJhOWJlNjFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpOwogCiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCmluZGV4IDBiOTY0NjVlYjM3Y2E3Y2JjMWJlZTk0NjRhMzc4
YWNjN2EyNTY5MjQuLjdiNzYyZjUyMDczODk2ZGMwZWQxZjllN2MzOTY3YWE4Yjk2YzNkOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJv
b2wgU1ZHVFNwYW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNoaWxk
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUU3BhbkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKHBhcmVudE5vZGUoKQogICAgICAgICAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdO
YW1lKFNWR05hbWVzOjphVGFnKQpAQCAtNjksNyArNjksNyBAQCBib29sIFNWR1RTcGFuRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgICAgICB8fCBw
YXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCiAgICAgICAgICAgICB8
fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKQogICAgICAg
ICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykpKQot
ICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7Cisg
ICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwog
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCmlu
ZGV4IGFjMDJiNTdiNGQ1ODlkYzMzNzNmZjk5MDVmMTRiN2JhNTViMTJkNmMuLmU3MTViZGRkNjVk
Y2VkNTMwYmViZjc1MzYwMGJjMDk3NmZiMDEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5F
bGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSop
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcAppbmRleCBhNjdkNmM5NDcwYzY3NTI3N2Y4Yjg2MjIyZWU5ZTRhODc5NmVmZTg5Li43NThi
MjhiMTQzMTIzYTIzZTE2MDUwOWQ3NTRlMWE0YzhkMmVmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtMTQwLDEyICsxNDAsMTIgQEAgYm9vbCBTVkdU
ZXh0UGF0aEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNWR1RleHRQYXRoRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1RleHRQYXRoRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2RlKCktPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmFUYWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKSkKLSAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCBiNjk5ZDYxZGZlNDE3YzU1ZjBm
ZTkyZmNmZDg4NWI2OTRiNjU0N2Q4Li4xMGQ2MjM1Yjg5Mzg4NWRmZjYzMDYwMWM1OWIzMmYzYmZm
YTY4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC02Nyw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmgKaW5kZXggYzFjZWM0OTQ1M2MxMmVhNGZlNTU2MzJlMDBlNzE4OWUwODM0ZTNhYy4u
NDViYjViZjhlNzVkNGUwZmU1YjAwYTcwMmIyYTE3NjE1NjBiN2UwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUaXRsZUVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWS2VybkVsZW1lbnQuaAppbmRleCBkOGE5ZDFiYzk5NjA5ZWVlYTQ4Mjk2OTExMjE1M2Yw
ZjIzY2VhMTk5Li43N2VhMmZlNzk5Yjc0MTFjOGEwZjdjMjRhOGRkYjA2YTljMjZmY2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5oCmluZGV4IGIzNzE3NzQ4OGE2OTk4MWM1YjA5MzI4YmViZjk1ZjRjZTdlMzE3NmEu
LjZlMzc5MTU5NDI3YWFkNTY2MGE1ZjVmZmU2NDRkYzkyM2I5YTFmMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94190</attachid>
            <date>2011-05-20 01:53:12 -0700</date>
            <delta_ts>2011-05-20 02:14:32 -0700</delta_ts>
            <desc>updated bug description</desc>
            <filename>bug-61114-20110520175309.patch</filename>
            <type>text/plain</type>
            <size>80283</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY5MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA3YTlh
ZjQ4NmQxZDhkODc1OTQ5OWVmZmQxMjdjNWRmZmUxNWJmYy4uMmY2MzE3MjlhYmEzNzEwNmZlZGJm
MTU0N2I4NzAxNjVhOGEyODE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU4NSw2ICs1ODUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAogICAgIGRv
bS9PcHRpb25FbGVtZW50LmNwcAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZjNmZmI2ZTY2M2FmMWMwNzFkNDVmY2M0MzZlOTY4ZGQ0NzQwMzBjNi4uYjdmMjdm
MzBmMTU4N2YxNzRiNTk5YmJhNjQ1MWVlZmMwZThjYmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExNCBAQAorMjAxMS0wNS0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFBhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgdG8gTm9kZTo6cmVuZGVyZXJJc05lZWRl
ZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEx
NAorCisgICAgICAgIC0gRXh0cmFjdGVkIE5vZGVSZW5kZXJpbmdDb250ZXh0IGZyb20gTm9kZVJl
bmRlcmVyRmFjdG9yeSwgZ2l2aW5nIHNlcGFyYXRlIGZpbGVzIHRvIGl0LgorICAgICAgICAtIENo
YW5nZWQgc2lnbmF0dXJlIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSAKKyAgICAgICAg
ICB0byByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikuCisgICAg
ICAgICAgVGhlIHN0eWxlIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBOb2RlUmVuZGVyZXJGYWN0
b3J5OjpzdHlsZSgpCisgICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHJlbmRlcmVySXNOZWVkZWQo
KSB0byBhY2Nlc3MgY29udGV4dHVhbAorICAgICAgICAgIGluZm9ybWF0aW9uIGxpa2UgYXR0YWNo
aW5nIHBoYXNlIGFuZCByZW5kZXJpbmctcGFyZW50LgorICAgICAgICAKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhcmFjdGVyRGF0YTo6dXBkYXRlUmVuZGVyZXIpOiBQYXNzIHVucmVzb2x2ZWQgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIHRvIHJlbmRlcmVySXNOZWVkZWQoKQorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogZG9tL0NoYXJhY3Rl
ckRhdGEuaDoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9F
ZGl0aW5nVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nVGV4dDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogZG9tL0VkaXRpbmdUZXh0Lmg6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnJlbGVhc2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpwYXJlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5Ojpjb250ZXh0KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICogZG9tL1RleHQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTm9T
Y3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9s
LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSEtlcm5F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RpdGxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWS2VybkVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wNS0yMCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjg2OTIwLgpAQCAtNjQ1LDEyICs3NTYsNiBAQAogICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgogICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKTogdXNlIGxvYWRlclJ1bkxvb3AgdG8g
c2NoZWR1bGUgc3RyZWFtcyBvbiBwbGF0Zm9ybSBXSU4KIAotMjAxMS0wNS0xOCAgTU9SSVRBIEhh
amltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQg
dG8gZml4IGNsYW5nIGJ1aWxkLgotCi0gICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
aDoKLQogMjAxMS0wNS0xOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCAwOWRmZmUyNDQwMmI1MjQ5NWIzNzhkZDg3MWViNzhjZDhhZDUyZWQ3Li5hNmQ2YWJh
NzViYzRhMjQxYjMxYjhkOTdjMmExOTA4ZGNmZDM2MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTExODIsMTEgKzExODIsMTMgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZUZpbHRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3Iu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
V2l0aEluZGV4LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGFlMDVlY2QyMDgwNjgzZmQwNzgwNTk2ZDFmYTA3YjE4NjQ1MTMwNGYuLjA4
YmNhYjZhNjQ4MGYzZDZlNjk2M2NiY2M5ZjJhZjc2ZjEyZDUxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTI1MDMsNiArMjUwMyw4IEBACiAgICAgICAgICAgICAnZG9tL05vZGVJdGVyYXRvci5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuaCcsCiAgICAgICAgICAgICAnZG9tL05v
ZGVSYXJlRGF0YS5oJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
JywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCcsCiAgICAgICAgICAg
ICAnZG9tL05vZGVSZW5kZXJTdHlsZS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVdpdGhJbmRl
eC5oJywKICAgICAgICAgICAgICdkb20vTm90YXRpb24uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
N2NlZTgzMDIyMzViODBiYzkzN2UzZWQwY2Q5ZGNmZTc2MjM4NjZjZC4uMjFiNTg3NTNiNzY2MWU5
YTNmZjcyNzc1YTZkZTUxNjJkNWZmNTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTUwOCw2ICs1MDgs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgXAogICAg
IGRvbS9Ob2RlRmlsdGVyLmNwcCBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAgXAorICAgIGRv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgXAogICAgIGRvbS9Ob3RhdGlvbi5jcHAgXAogICAg
IGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuY3BwIFwKICAgICBkb20vT3B0aW9uRWxlbWVudC5jcHAg
XApAQCAtMTQ4Niw2ICsxNDg3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL05vZGVGaWx0ZXIu
aCBcCiAgICAgZG9tL05vZGUuaCBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5oIFwKKyAgICBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAogICAgIGRvbS9P
cHRpb25FbGVtZW50LmggXAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDg3YzM4NjI3NTEw
NDBjYTkxOTUxMDc2OWQwNDY3NGUyZmU2ODFmNDguLmE4YzQ5N2Q3MzYxZDc4YTBmYTVlZWVjMTkx
M2UyNjFmNjYyODkzYmMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC00NTM0Miw2ICs0NTM0Miw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
IgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJv
ZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE5vdGF0aW9uLmNwcCIKIAkJCQk+CiAJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTIwYTIyNzQxNWIwZmJjZWJmNTIxYWYyNDFkYjk5Yjg3
NTc0NzA3YS4uNjY4ZDZiZDdmMGI3NzYzNjA4N2YwMmYyYWQxZjYxMTE2MzEzOTI3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzI0OCw2ICszMjQ4LDggQEAKIAkJQTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVj
a2luZ0hlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdEQkY4REMxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5oICovOyB9
OwogCQlBN0YzMzhBMzExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0YzMzhBMTExQzBFRkNB
MDBBMzIwQTcgLyogU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCUE3RjMzOEE0MTFDMEVGQ0Ew
MEEzMjBBNyAvKiBTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0YzMzhBMjExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93RWxlbWVu
dC5oICovOyB9OworCQlBN0Y1RDk0RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdGNUQ5NEQxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLzsg
fTsKKwkJQTdGNUQ5NTAxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Y1RDk0RTEz
ODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKIAkJQTgwQTM4
RkUwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0
dGVybkNHLmNwcCAqLzsgfTsKIAkJQTgwRDY3MDgwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODBENjcwNzBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCAqLzsgfTsKIAkJQTgwRTZDRTQwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU1ZhbHVlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAq
LzsgfTsKQEAgLTk3NzEsNiArOTc3Myw4IEBACiAJCUE3REJGOERDMTI3NjkxOUMwMDZCNjAwOCAv
KiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGV4dENoZWNraW5nSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RjMz
OEExMTFDMEVGQ0EwMEEzMjBBNyAvKiBTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBN0YzMzhBMjExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RjVEOTREMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RjVEOTRFMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlUmVuZGVyaW5nQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0
dGVybkNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdHRlcm5D
Ry5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MEQ2NzA3MEU5RTlERUIwMEU0
MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTVmFsdWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
U1NWYWx1ZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzNDgsNiAr
MTkzNTIsOCBAQAogCQkJCUE4MTg3MjEwMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5oICov
LAogCQkJCTg1QUNBOUZBMEE5QjYzMTAwMDY3MUU5MCAvKiBOb2RlTGlzdC5pZGwgKi8sCiAJCQkJ
NjMxODlBRTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovLAorCQkJCUE3RjVE
OTREMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCisJCQkJ
QTdGNUQ5NEUxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmggKi8sCiAJ
CQkJNjNEN0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICovLAogCQkJ
CTkzODJBQUIxMEQ4QzM4NjEwMEYzNTdBNiAvKiBOb2RlV2l0aEluZGV4LmggKi8sCiAJCQkJQThF
QTdFQjcwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmNwcCAqLywKQEAgLTIxOTEzLDYgKzIx
OTE5LDcgQEAKIAkJCQk4NTRGRTczNTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxQjA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFy
ZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RjVEOTUwMTM4NEYwMkQwMEEyOUE4NyAvKiBO
b2RlUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjNEN0IzMkQwRTc4Q0Qz
RjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkFB
QjQwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4RUE3RUJFMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDgwMiw2ICsyNDgwOSw3IEBACiAJCQkJODU0RkU3MzAwQTIyOTdCRTAwNThEN0FEIC8qIE5v
ZGVGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzIwQTIyOTdCRTAwNThEN0FE
IC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzQw
QTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
N0Y1RDk0RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThFQTdFQkYwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMzNTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcAppbmRleCBlMTgxNWQ5ZDg4ZDM3NTZiMGI0MDcwMzg1ZWRiYThlMjgxMzc5YTFm
Li5iN2NhMzVkOGVkZGQ3ZmQ0ZTMzNjczNjQzYTY2ZTczNWE2NDhjMTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgog
CkBAIC0xODEsNyArMTgyLDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRl
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbmV3RGF0YSwgdW5zaWduZWQgb2YKIAogdm9pZCBDaGFy
YWN0ZXJEYXRhOjp1cGRhdGVSZW5kZXJlcih1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwg
dW5zaWduZWQgbGVuZ3RoT2ZSZXBsYWNlZERhdGEpCiB7Ci0gICAgaWYgKCghcmVuZGVyZXIoKSB8
fCAhcmVuZGVyZXJJc05lZWRlZChyZW5kZXJlcigpLT5zdHlsZSgpKSkgJiYgYXR0YWNoZWQoKSkg
eworICAgIGlmICgoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVySXNOZWVkZWQoTm9kZVJlbmRlcmlu
Z0NvbnRleHQodGhpcywgcmVuZGVyZXIoKS0+c3R5bGUoKSwgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
OlJlc29sdmVOb25lKSkpICYmIGF0dGFjaGVkKCkpIHsKICAgICAgICAgZGV0YWNoKCk7CiAgICAg
ICAgIGF0dGFjaCgpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXIoKSkKQEAgLTIxNywxMSArMjE4
LDExIEBAIGludCBDaGFyYWN0ZXJEYXRhOjptYXhDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCgpKTsKIH0KIAotYm9vbCBDaGFyYWN0ZXJE
YXRhOjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgQ2hhcmFjdGVy
RGF0YTo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgZmFjdG9y
eSkKIHsKICAgICBpZiAoIW1fZGF0YSB8fCAhbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gTm9kZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJu
IE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSk7CiB9CiAKIGJvb2wgQ2hhcmFjdGVyRGF0
YTo6b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5o
CmluZGV4IDM5YTZmYWE2YThkYWVlNjM3ZGI4YTU0ODRhYmY2ZGNhMjJhN2Y4NWMuLjY2MWUxMTA2
Mzc3MjJkMzQ4ZjdmYzg1ZGE0MGY1NWUzOTI2YzEyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuaApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVCh0eXBl
ID09IENyZWF0ZUNvbW1lbnQgfHwgdHlwZSA9PSBDcmVhdGVUZXh0KTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAg
ICB2b2lkIHNldERhdGFJbXBsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgeyBtX2RhdGEg
PSBpbXBsOyB9CiAgICAgdm9pZCBkaXNwYXRjaE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogb2xk
VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggZGYxMDEzOGY2NDE1M2Fl
MGE0YTIzMGQxNGQzYTc4YTQ2YzRkYWMwZS4uYTIxMDQ4Yjc5ZTZmNDBkOGVhODMwZjg0YzZkMmM1
ZGZhYzk3ZDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC04OCw2ICs4OCw3
IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5jcHAiCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRp
dGlvbi5jcHAiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmNwcCIKKyNpbmNsdWRlICJOb2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAiCiAjaW5jbHVkZSAiTm90YXRpb24uY3BwIgogI2luY2x1ZGUgIk9w
dGlvbkVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIk9wdGlvbkdyb3VwRWxlbWVudC5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VkaXRpbmdUZXh0LmNwcAppbmRleCBlNDEyYWQ2OWIzMTQxMzEzN2E2NDg0NDYwYjUw
NTZhZDcyMDI1ODEwLi5hM2U3YTRjNTNmOWE0OWMyY2VkODkyZDlmN2QyNGRkOWRhY2Q1ZjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUGFzc1JlZlB0
cjxFZGl0aW5nVGV4dD4gRWRpdGluZ1RleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZGEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRpbmdUZXh0KGRvY3Vt
ZW50LCBkYXRhKSk7CiB9CiAKLWJvb2wgRWRpdGluZ1RleHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKQorYm9vbCBFZGl0aW5nVGV4dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0
aW5nVGV4dC5oCmluZGV4IDA4MjIzYzIxNmJkMTkzODZjMzM4ZmQ3ZTI0ZjY5YWUzNjJlOWQ1ZGQu
LjY1MzZjN2IzOGI0MDBhZTk2NmE5Y2U3MDQwNmUxYTk4YzZmOTA0YzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
ZGl0aW5nVGV4dC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxFZGl0aW5nVGV4dD4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKik7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKTsKIAogICAgIEVkaXRpbmdUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IGQ3MTdjODUyNTQyNTRkN2Y4MzAwMzg2MGZlMzgzMWMyNzhh
NDlhZmEuLmZiN2FhYjk0YzhkOGFhOGEyOWQxZmNhZjU0ZmUzOTc5MmU2NGIwMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNp
bmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKKyNpbmNs
dWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
QEAgLTc1LDcgKzc2LDYgQEAKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCi0jaW5jbHVk
ZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKQEAg
LTE0NTksMTgyICsxNDU5LDkgQEAgTm9kZSAqTm9kZTo6bmV4dExlYWZOb2RlKCkgY29uc3QKICAg
ICByZXR1cm4gMDsKIH0KIAotCi1jbGFzcyBOb2RlUmVuZGVyZXJGYWN0b3J5IHsKLXB1YmxpYzoK
LSAgICBlbnVtIFRyZWVMb2NhdGlvbiB7Ci0gICAgICAgIExvY2F0aW9uTm90SW5UcmVlLAotICAg
ICAgICBMb2NhdGlvbkxpZ2h0Q2hpbGQsCi0gICAgICAgIExvY2F0aW9uU2hhZG93Q2hpbGQsCi0g
ICAgfTsKLQotICAgIGVudW0gQXR0YWNoUGhhc2UgewotICAgICAgICBBdHRhY2hTdHJhaWdodCwK
LSAgICAgICAgQXR0YWNoQ29udGVudExpZ2h0LAotICAgICAgICBBdHRhY2hDb250ZW50Rm9yd2Fy
ZGVkLAotICAgIH07Ci0KLSAgICBleHBsaWNpdCBOb2RlUmVuZGVyZXJGYWN0b3J5KE5vZGUqKTsK
LSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSBjb25z
dCB7IHJldHVybiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsgfQotICAgIHZvaWQg
Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwotCi1wcml2YXRlOgotICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQotICAgIHZvaWQgaW5pdGlhbGl6
ZSgpOwotICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVS
ZW5kZXJlcigpIGNvbnN0OwotCi0gICAgVHJlZUxvY2F0aW9uIG1fbG9jYXRpb247Ci0gICAgQXR0
YWNoUGhhc2UgbV9waGFzZTsKLSAgICBOb2RlKiBtX25vZGU7Ci0gICAgQ29udGFpbmVyTm9kZSog
bV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7Ci0gICAgU2hhZG93Um9vdCogbV92aXN1
YWxQYXJlbnRTaGFkb3dSb290OwotfTsKLQotTm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRl
cmVyRmFjdG9yeShOb2RlKiBub2RlKQotICAgIDogbV9sb2NhdGlvbihMb2NhdGlvbk5vdEluVHJl
ZSkKLSAgICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCi0gICAgLCBtX25vZGUobm9kZSkKLSAg
ICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0gICAgLCBtX3Zpc3VhbFBh
cmVudFNoYWRvd1Jvb3QoMCkKLXsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25vZGUt
PnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKHBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgpKSB7Ci0gICAgICAgIG1fbG9jYXRp
b24gPSBMb2NhdGlvblNoYWRvd0NoaWxkOwotICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uTGlnaHRDaGlsZDsKLQotICAgIGlmIChwYXJl
bnQtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Qg
PSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdCgpOwotCi0gICAgICAgIGlmIChtX3Zpc3Vh
bFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIGlmIChDb250YWluZXJOb2RlKiBjb250
ZW50Q29udGFpbmVyID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5hY3RpdmVDb250ZW50Q29u
dGFpbmVyKCkpIHsKLSAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoQ29udGVudEZvcndh
cmRlZDsKLSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9
IE5vZGVSZW5kZXJlckZhY3RvcnkoY29udGVudENvbnRhaW5lcikucGFyZW50Tm9kZUZvclJlbmRl
cmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfSAK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50TGln
aHQ7Ci0gICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVu
dDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fcGFyZW50
Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OwotfQotCi1ib29sIE5vZGVSZW5kZXJl
ckZhY3Rvcnk6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUpOwotCi0gICAgaWYgKG1fbG9jYXRpb24gPT0g
TG9jYXRpb25Ob3RJblRyZWUgfHwgbV9waGFzZSA9PSBBdHRhY2hDb250ZW50TGlnaHQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBt
X3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXBh
cmVudFJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9sb2NhdGlv
biA9PSBMb2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9PSBBdHRhY2hTdHJhaWdodCkgewot
ICAgICAgICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNoaWxkcmVuKCkgaW4gYSBjYXNlIG9m
IHNoYWRvdyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQyMwotICAgICAgICBpZiAoIXBhcmVu
dFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCAmJiAhbV9wYXJlbnRO
b2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdodENoaWxkUmVuZGVyZXJXaXRoU2hh
ZG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFtX3Bh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlciht
X25vZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
UmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxl
KCkKLXsKLSAgICBBU1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQVNTRVJUKGRvY3Vt
ZW50KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKTsKLQotICAgIGlmICghc2hvdWxkQ3JlYXRl
UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IHN0eWxlID0gbV9ub2RlLT5zdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgaWYgKCFtX25vZGUtPnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJl
bmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBtX25vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50
KCktPnJlbmRlckFyZW5hKCksIHN0eWxlLmdldCgpKTsKLSAgICBpZiAoIW5ld1JlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5k
U3R5bGUtPnJlbmRlcmVyKCktPmlzQ2hpbGRBbGxvd2VkKG5ld1JlbmRlcmVyLCBzdHlsZS5nZXQo
KSkpIHsKLSAgICAgICAgbmV3UmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgbV9ub2RlLT5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7Ci0gICAgbmV3
UmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShzdHlsZS5yZWxlYXNlKCkpOyAvLyBzZXRBbmlt
YXRhYmxlU3R5bGUoKSBjYW4gZGVwZW5kIG9uIHJlbmRlcmVyKCkgYWxyZWFkeSBiZWluZyBzZXQu
Ci0gICAgcmV0dXJuIG5ld1JlbmRlcmVyOwotfQotCi1SZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJl
ckZhY3Rvcnk6Om5leHRSZW5kZXJlcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGhhc2UgIT0gQXR0
YWNoQ29udGVudEZvcndhcmRlZCkKLSAgICAgICAgcmV0dXJuIG1fbm9kZS0+bmV4dFJlbmRlcmVy
KCk7Ci0gICAgLy8gUmV0dXJucyAwIGhlcmUgdG8gaW5zZXJ0IHJlbmRlcmVyIGF0IHRoZSBlbmQg
b2YgY2hpbGQgbGlzdC4KLSAgICAvLyBXZSBhc3N1bWUgY29udGVudCBjaGlsZHJlbiBhcmUgYWx3
YXlzIGF0dGFjaGVkIGluIHRyZWUgb3JkZXIgYW5kCi0gICAgLy8gdGhlcmUgaXMgbm8gcGFydGlh
bCByZW5kZXIgdHJlZSBjcmVhdGlvbi4KLSAgICByZXR1cm4gMDsKLX0KLQotI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLXN0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiB3cmFwV2l0aFJlbmRlckZ1
bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAg
ICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5y
ZW5kZXJBcmVuYSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRvY3VtZW50KTsKLSAgICBmdWxsc2NyZWVu
UmVuZGVyZXItPnNldFN0eWxlKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZUZ1bGxTY3JlZW5TdHls
ZSgpKTsKLSAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgZmFpbGVkIHRvIGNyZWF0ZSB0aGUg
bmV3IHJlbmRlciBhbmQgZW5kIHVwIHdyYXBwaW5nIG5vdGhpbmcuCi0gICAgLy8gV2UnbGwgZW5k
IHVwIGRpc3BsYXlpbmcgYSBibGFjayBzY3JlZW4sIGJ1dCBKZXIgc2F5cyB0aGlzIGlzIGV4cGVj
dGVkLgotICAgIGlmIChvYmplY3QpCi0gICAgICAgIGZ1bGxzY3JlZW5SZW5kZXJlci0+YWRkQ2hp
bGQob2JqZWN0KTsKLSAgICBkb2N1bWVudC0+c2V0RnVsbFNjcmVlblJlbmRlcmVyKGZ1bGxzY3Jl
ZW5SZW5kZXJlcik7Ci0gICAgcmV0dXJuIGZ1bGxzY3JlZW5SZW5kZXJlcjsKLX0KLSNlbmRpZgot
Ci12b2lkIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQotewot
ICAgIGlmICghZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJlcigpKTsKLQotICAgIFJlbmRlck9i
amVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0KLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVl
bigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG1f
bm9kZSkKLSAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4obmV3
UmVuZGVyZXIsIGRvY3VtZW50KCkpOwotI2VuZGlmCi0KLSAgICAvLyBGSVhNRTogVGhpcyBzaWRl
IGVmZmVjdCBzaG91bGQgYmUgdmlzaWJsZSBmcm9tIGF0dGFjaCgpIGNvZGUuCi0gICAgaWYgKG1f
cGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQotICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRv
d1Jvb3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKLQotICAgIGlmICghbmV3UmVuZGVyZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIE5vdGU6IEFkZGluZyBuZXdSZW5kZXJlciBpbnN0ZWFk
IG9mIHJlbmRlcmVyKCkuIHJlbmRlcmVyKCkgbWF5IGJlIGEgY2hpbGQgb2YgbmV3UmVuZGVyZXIu
Ci0gICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCktPmFkZENo
aWxkKG5ld1JlbmRlcmVyLCBuZXh0UmVuZGVyZXIoKSk7Ci19Ci0KIENvbnRhaW5lck5vZGUqIE5v
ZGU6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpCiB7Ci0gICAgcmV0dXJuIE5vZGVS
ZW5kZXJlckZhY3RvcnkodGhpcykucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7Cisg
ICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMpLnBhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSgpOwogfQogCiB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQpA
QCAtMTY1NSw5ICsxNDgyLDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZTo6c3R5bGVG
b3JSZW5kZXJlcigpCiAgICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJl
bmRlcmVyKCkgPyBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkgOiAwOwogfQogCi1i
b29sIE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBOb2Rl
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIHJldHVybiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcykgfHwg
KHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSk7CisgICAgcmV0dXJuIChkb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSA9PSB0aGlzKSB8fCAoY29udGV4dC5zdHlsZSgpLT5kaXNwbGF5KCkgIT0g
Tk9ORSk7CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMWZhOGJmMzdjOTBlMDFjNjQwMDk0
NTY1YjY4M2IyNGJjMTczNjZiLi5lMzQ3YmViMDg5NDkyYjZjYWRiZDdkMmNiYzZkZDE5NjZkY2Mz
ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgTmFtZWROb2RlTWFwOwog
Y2xhc3MgTmFtZU5vZGVMaXN0OwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBOb2RlUmFyZURhdGE7
CitjbGFzcyBOb2RlUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsK
QEAgLTQ1MSw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUo
KTsKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKICAgICBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBzdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE0YzFmYTllOTZlNTNmZDM0MzFhZjhkYzM5YWFmMTkwMzc4ZDA1ZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0w
LDAgKzEsMjE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQ29udGFpbmVyTm9k
ZS5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCisj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK05vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29u
dGV4dChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlc29sdmVUeXBlIHJlc29sdmUp
CisgICAgOiBtX2xvY2F0aW9uKExvY2F0aW9uTm90SW5UcmVlKQorICAgICwgbV9waGFzZShBdHRh
Y2hTdHJhaWdodCkKKyAgICAsIG1fbm9kZShub2RlKQorICAgICwgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUoMCkKKyAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCgwKQorICAg
ICwgbV9zdHlsZShzdHlsZSkKK3sKKyAgICBpZiAocmVzb2x2ZSA9PSBSZXNvbHZlTm9uZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9ub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChwYXJlbnQtPmlzU2hhZG93Qm91bmRhcnkoKSkgeworICAgICAgICBtX2xvY2F0aW9uID0g
TG9jYXRpb25TaGFkb3dDaGlsZDsKKyAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5k
U3R5bGUgPSBwYXJlbnQtPnNoYWRvd0hvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fbG9jYXRpb24gPSBMb2NhdGlvbkxpZ2h0Q2hpbGQ7CisKKyAgICBpZiAocGFyZW50LT5p
c0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290ID0gdG9F
bGVtZW50KHBhcmVudCktPnNoYWRvd1Jvb3QoKTsKKworICAgICAgICBpZiAobV92aXN1YWxQYXJl
bnRTaGFkb3dSb290KSB7CisgICAgICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogY29udGVudENv
bnRhaW5lciA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+YWN0aXZlQ29udGVudENvbnRhaW5l
cigpKSB7CisgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQ7
CisgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2Rl
UmVuZGVyaW5nQ29udGV4dChjb250ZW50Q29udGFpbmVyKS5wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IAorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRMaWdodDsK
KyAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50Owor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgbV9wYXJlbnROb2Rl
Rm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7Cit9CisKK05vZGVSZW5kZXJpbmdDb250ZXh0
Ojp+Tm9kZVJlbmRlcmluZ0NvbnRleHQoKQoreworfQorCit2b2lkIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK3sKKyAgICBtX3N0
eWxlID0gc3R5bGU7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpyZWxlYXNlU3R5bGUoKQoreworICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsK
K30KKworUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9waGFzZSAhPSBBdHRhY2hDb250ZW50Rm9yd2FyZGVkKQorICAg
ICAgICByZXR1cm4gbV9ub2RlLT5uZXh0UmVuZGVyZXIoKTsKKyAgICAvLyBSZXR1cm5zIDAgaGVy
ZSB0byBpbnNlcnQgcmVuZGVyZXIgYXQgdGhlIGVuZCBvZiBjaGlsZCBsaXN0LgorICAgIC8vIFdl
IGFzc3VtZSBjb250ZW50IGNoaWxkcmVuIGFyZSBhbHdheXMgYXR0YWNoZWQgaW4gdHJlZSBvcmRl
ciBhbmQKKyAgICAvLyB0aGVyZSBpcyBubyBwYXJ0aWFsIHJlbmRlciB0cmVlIGNyZWF0aW9uLgor
ICAgIHJldHVybiAwOworfQorCitSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpw
YXJlbnRSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRl
cmluZ0FuZFN0eWxlLT5yZW5kZXJlcigpOworfQorCit2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0
Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hDb250
ZW50TGlnaHQpCisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9zdENoaWxkcmVu
Q2hhbmdlZCgpOworfQorCitib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVS
ZW5kZXJlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSgpKTsKKworICAgIGlmIChtX2xvY2F0aW9uID09IExvY2F0aW9uTm90SW5UcmVlIHx8IG1f
cGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsK
KyAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAobV9sb2NhdGlvbiA9PSBMb2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9PSBBdHRhY2hT
dHJhaWdodCkgeworICAgICAgICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNoaWxkcmVuKCkg
aW4gYSBjYXNlIG9mIHNoYWRvdyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KKyAgICAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQyMworICAgICAg
ICBpZiAoIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCAm
JiAhbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdodENoaWxkUmVu
ZGVyZXJXaXRoU2hhZG93KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKCFtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihtX25vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworCitOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJGYWN0b3J5KE5v
ZGUqIG5vZGUpCisgICAgOiBtX2NvbnRleHQobm9kZSwgMCwgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
OlJlc29sdmVDb250ZXh0KQoreworfQorCitSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rv
cnk6OmNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKQoreworICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRl
eHQubm9kZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7Cisg
ICAgQVNTRVJUKCFub2RlLT5yZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQtPnNob3Vs
ZENyZWF0ZVJlbmRlcmVycygpKTsKKworICAgIGlmICghbV9jb250ZXh0LnNob3VsZENyZWF0ZVJl
bmRlcmVyKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9jb250ZXh0LnNldFN0eWxlKG5v
ZGUtPnN0eWxlRm9yUmVuZGVyZXIoKSk7CisgICAgaWYgKCFub2RlLT5yZW5kZXJlcklzTmVlZGVk
KG1fY29udGV4dCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVyT2JqZWN0KiBuZXdS
ZW5kZXJlciA9IG5vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpLCBt
X2NvbnRleHQuc3R5bGUoKSk7CisgICAgaWYgKCFuZXdSZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAoIW1fY29udGV4dC5wYXJlbnRSZW5kZXJlcigpLT5pc0NoaWxkQWxsb3dl
ZChuZXdSZW5kZXJlciwgbV9jb250ZXh0LnN0eWxlKCkpKSB7CisgICAgICAgIG5ld1JlbmRlcmVy
LT5kZXN0cm95KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG5vZGUtPnNldFJl
bmRlcmVyKG5ld1JlbmRlcmVyKTsKKyAgICBuZXdSZW5kZXJlci0+c2V0QW5pbWF0YWJsZVN0eWxl
KG1fY29udGV4dC5yZWxlYXNlU3R5bGUoKSk7IC8vIHNldEFuaW1hdGFibGVTdHlsZSgpIGNhbiBk
ZXBlbmQgb24gcmVuZGVyZXIoKSBhbHJlYWR5IGJlaW5nIHNldC4KKyAgICByZXR1cm4gbmV3UmVu
ZGVyZXI7Cit9CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitzdGF0aWMgUmVuZGVyRnVs
bFNjcmVlbiogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0LCBE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbHNjcmVlblJl
bmRlcmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyRnVsbFNjcmVlbihk
b2N1bWVudCk7CisgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGdWxsU2Ny
ZWVuOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0
IHdlIGZhaWxlZCB0byBjcmVhdGUgdGhlIG5ldyByZW5kZXIgYW5kIGVuZCB1cCB3cmFwcGluZyBu
b3RoaW5nLgorICAgIC8vIFdlJ2xsIGVuZCB1cCBkaXNwbGF5aW5nIGEgYmxhY2sgc2NyZWVuLCBi
dXQgSmVyIHNheXMgdGhpcyBpcyBleHBlY3RlZC4KKyAgICBpZiAob2JqZWN0KQorICAgICAgICBm
dWxsc2NyZWVuUmVuZGVyZXItPmFkZENoaWxkKG9iamVjdCk7CisgICAgZG9jdW1lbnQtPnNldEZ1
bGxTY3JlZW5SZW5kZXJlcihmdWxsc2NyZWVuUmVuZGVyZXIpOworICAgIHJldHVybiBmdWxsc2Ny
ZWVuUmVuZGVyZXI7Cit9CisjZW5kaWYKKwordm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVh
dGVSZW5kZXJlcklmTmVlZGVkKCkKK3sKKyAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUo
KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOworCisgICAgaWYg
KCFkb2N1bWVudC0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7
CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKGRvY3VtZW50LT53ZWJraXRJ
c0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
KCkgPT0gbm9kZSkKKyAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3Jl
ZW4obmV3UmVuZGVyZXIsIGRvY3VtZW50KTsKKyNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoaXMg
c2lkZSBlZmZlY3Qgc2hvdWxkIGJlIHZpc2libGUgZnJvbSBhdHRhY2goKSBjb2RlLgorICAgIG1f
Y29udGV4dC5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAoIW5ld1JlbmRlcmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3RlOiBBZGRpbmcgbmV3UmVuZGVyZXIgaW5zdGVh
ZCBvZiByZW5kZXJlcigpLiByZW5kZXJlcigpIG1heSBiZSBhIGNoaWxkIG9mIG5ld1JlbmRlcmVy
LgorICAgIG1fY29udGV4dC5wYXJlbnRSZW5kZXJlcigpLT5hZGRDaGlsZChuZXdSZW5kZXJlciwg
bV9jb250ZXh0Lm5leHRSZW5kZXJlcigpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2EzNDFhZDBkZjFhNjUyMDlmNTdhMDA3
ZDJhMjgzY2YxZGUyYTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmbmRlZiBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCisjZGVmaW5lIE5vZGVSZW5kZXJpbmdD
b250ZXh0X2gKKworI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIERvY3Vt
ZW50OworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBTaGFk
b3dSb290OworCitjbGFzcyBOb2RlUmVuZGVyaW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAgZW51
bSBSZXNvbHZlVHlwZSB7CisgICAgICAgIFJlc29sdmVOb25lLAorICAgICAgICBSZXNvbHZlQ29u
dGV4dCwKKyAgICB9OworCisgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSosIFJlbmRlclN0
eWxlKiA9IDAsIFJlc29sdmVUeXBlID0gUmVzb2x2ZUNvbnRleHQpOworICAgIH5Ob2RlUmVuZGVy
aW5nQ29udGV4dCgpOworCisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsg
fQorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlOyB9CisgICAgUmVu
ZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlcigpIGNvbnN0OworICAgIFJlbmRlck9iamVjdCogbmV4
dFJlbmRlcmVyKCkgY29uc3Q7CisKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0eWxlLmdldCgpOyB9CisgICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPik7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcmVsZWFzZVN0eWxlKCk7CisK
KyAgICBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3Q7CisKKyAgICB2b2lkIGhvc3RD
aGlsZHJlbkNoYW5nZWQoKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIFRyZWVMb2NhdGlvbiB7Cisg
ICAgICAgIExvY2F0aW9uTm90SW5UcmVlLAorICAgICAgICBMb2NhdGlvbkxpZ2h0Q2hpbGQsCisg
ICAgICAgIExvY2F0aW9uU2hhZG93Q2hpbGQsCisgICAgfTsKKworICAgIGVudW0gQXR0YWNoUGhh
c2UgeworICAgICAgICBBdHRhY2hTdHJhaWdodCwKKyAgICAgICAgQXR0YWNoQ29udGVudExpZ2h0
LAorICAgICAgICBBdHRhY2hDb250ZW50Rm9yd2FyZGVkLAorICAgIH07CisKKyAgICBUcmVlTG9j
YXRpb24gbV9sb2NhdGlvbjsKKyAgICBBdHRhY2hQaGFzZSBtX3BoYXNlOworICAgIE5vZGUqIG1f
bm9kZTsKKyAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHls
ZTsKKyAgICBTaGFkb3dSb290KiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7CisgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBtX3N0eWxlOworfTsKKworY2xhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJlbmRlcmVyRmFjdG9yeSk7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTm9kZVJlbmRlcmVy
RmFjdG9yeShOb2RlKik7CisKKyAgICBjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJ
Zk5lZWRlZCgpOworCitwcml2YXRlOgorICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXJB
bmRTdHlsZSgpOworCisgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgbV9jb250ZXh0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d0NvbnRlbnRFbGVtZW50LmgKaW5kZXggMDdiNzhmNzYwNDU1MmExZmY0ZmFjZDAzMWE1YTFiNDQx
NTNiNzJhNS4uMDlmZGI0MjAzODljMDc4OTQ4NjQ4NDM5NjkxOGZkMjBjZGYxZDM3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0YWct
bmFtZSBjaGVja2luZyBvbmNlIDxjb250ZW50PiBpcyByZWFkeS4KICAgICAvLyBTZWUgYWxzbyBo
dHRwOi8vd2Via2l0Lm9yZy9iLzU2OTczCiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Qm91bmRh
cnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRl
eCBiNzEwMGZlYzQwYjY2MzUxYTY4NDMzZTdkNGY4ZTkyN2YxN2I3NGUwLi5iOTY4ZjA1MTZhNjU4
NTRjNTkyYjc5OTA0NTk1ZjlkOTVlN2M4NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMyw2ICsy
Myw3IEBACiAjaW5jbHVkZSAiVGV4dC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmlu
ZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAKQEAgLTE4OSw5ICsxOTAsOSBAQCBQ
YXNzUmVmUHRyPE5vZGU+IFRleHQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogICAgIHJldHVy
biBjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YSgpKTsKIH0KIAotYm9vbCBUZXh0OjpyZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIUNoYXJhY3Rl
ckRhdGE6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpKQorICAgIGlmICghQ2hhcmFjdGVyRGF0YTo6
cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ym9vbCBvbmx5V1MgPSBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CkBAIC0yMDMsNyArMjA0LDcg
QEAgYm9vbCBUZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKICAgICBp
ZiAocGFyLT5pc1RhYmxlKCkgfHwgcGFyLT5pc1RhYmxlUm93KCkgfHwgcGFyLT5pc1RhYmxlU2Vj
dGlvbigpIHx8IHBhci0+aXNUYWJsZUNvbCgpIHx8IHBhci0+aXNGcmFtZVNldCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHN0eWxlLT5wcmVzZXJ2ZU5ld2xpbmUoKSkg
Ly8gcHJlL3ByZS13cmFwL3ByZS1saW5lIGFsd2F5cyBtYWtlIHJlbmRlcmVycy4KKyAgICBpZiAo
Y29udGV4dC5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgLy8gcHJlL3ByZS13cmFwL3ByZS1s
aW5lIGFsd2F5cyBtYWtlIHJlbmRlcmVycy4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAg
ICAgUmVuZGVyT2JqZWN0ICpwcmV2ID0gcHJldmlvdXNSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5k
ZXggYzk3ODM0M2QzZTFkYWM4NTlhMDNmNmU0ZDdiMzI3NzRjYjFlZjY5Ny4uM2NjOGM1MDJhNDNi
NzBhMzNiNWEzMDM5ZmQxZDNlMDMxYjUwNDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC01NSw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
dm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGM3OTk1YjU2YjQ5NmQ0MzdhNWJlZGMwNGIzMmVm
ZTYwNzExNzMwOGIuLjg1MjBjMmM3Y2E2MTlhYTIxOGZlMzM2OWQ1OTQwMDYxMjQyN2UzN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC0xMDAsMTIgKzEw
MCwxMSBAQCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAg
ICBIVE1MUGx1Z0luRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1ib29sIEhU
TUxBcHBsZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jv
b2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGNvZGVBdHRy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTEFwcGxl
dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IDBmM2FhZDg2OTA5
MDYxMjcwNjJhODJhY2I0ZDE5NWEyMTVhZjVjYjcuLjg0Y2U2MTgzZjNlYTg5ZDFiMjlhZTIwYzNj
MDZiZjg1ZWJhZmU5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgK
QEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggNDBhOWExYmI4ODY4MDdkNDkyZmRlNmNhYWY3NmJlZDYzNmFmNGRlNy4uNGU4
YmE2ZjNmNjRiZDJhYTNiYjFiNjVhZWUwYzRmOTlhYWU0NjJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTc2OSw3ICs3NjksNyBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBIVE1MRWxlbWVudDo6Y2hpbGRyZW4oKQogICAgIHJldHVybiBIVE1MQ29sbGVjdGlvbjo6
Y3JlYXRlKHRoaXMsIE5vZGVDaGlsZHJlbik7CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoaGFzTG9jYWxOYW1lKG5vc2NyaXB0VGFnKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBk
b2N1bWVudCgpLT5mcmFtZSgpOwpAQCAtNzg1LDcgKzc4NSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogICAgICAgICBpZiAoZnJhbWUg
JiYgZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJv
dXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAg
IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBS
ZW5kZXJPYmplY3QqIEhUTUxFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA1
YTVmZGZiNjc0OTVhMjA2MjgwZDBlZjNiM2NlMTk2Zjg1M2JlYjVhLi45YzQwN2UxOGM1MjQzODg0
YTJkZmRhNmNjOGM0ZTc5NDlhNDMxNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBj
b25zdCB7IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcAppbmRleCBiMjgwZGFkOTA2MTFiZWVhOTg0M2ZjYzliZThlNGRkZjhhMzE1
MjhkLi4zOGIyNDE2MGJhZTY0OWYxZGEwM2Q4ZTViYzUxMzljZDI5YmUyMjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE4MywxMCArMTgzLDEwIEBAIHZv
aWQgSFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBs
dWdpbkNyZWF0aW9uT3B0aW9uKQogICAgIGxvYWRlci0+cmVxdWVzdE9iamVjdCh0aGlzLCBtX3Vy
bCwgZ2V0QXR0cmlidXRlKG5hbWVBdHRyKSwgbV9zZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMpOwogfQogCi1ib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChpc0lt
YWdlVHlwZSgpKQotICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wg
SFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAg
ICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApp
bmRleCA4NjNjMDliZWU0ZWJhZTk2ZDdmNTg1OTUyZDMwYzI3OGNhOWI2OWZiLi5iOWRjNzk4OTcx
MTNkNzFhOWRmMThhNjNmOWFiYTFhMGJmNTNjOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3Vt
ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMg
PSBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNTJi
ZmRhMzAwZWI0OWM3MmI3NGU3MTMxOTU5MjEzOTgwMTAwNGQ0Yy4uMDZhN2Q2NTY2NTYwYTc4NTQ0
MjcxNTE0ZDI2ZThkYzEyYWJmNzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVy
LmgiCkBAIC0xMDQsMTAgKzEwNSwxMCBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6Zm9ybVdvdWxk
SGF2ZVNlY3VyZVN1Ym1pc3Npb24oY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHVybCkucHJvdG9jb2xJcygiaHR0cHMiKTsKIH0KIAotYm9vbCBI
VE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9v
bCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3dhc0RlbW90ZWQpCi0gICAgICAgIHJldHVy
biBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIENvbnRhaW5lck5v
ZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCk7CkBAIC0xMjAsNyArMTIxLDcgQEAgYm9vbCBIVE1MRm9ybUVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGlmICghcGFy
ZW50SXNUYWJsZUVsZW1lbnRQYXJ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVEaXNw
bGF5IGRpc3BsYXkgPSBzdHlsZS0+ZGlzcGxheSgpOworICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBj
b250ZXh0LnN0eWxlKCktPmRpc3BsYXkoKTsKICAgICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRp
c3BsYXkgPT0gVEFCTEUgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEUgfHwgZGlzcGxheSA9PSBU
QUJMRV9ST1dfR1JPVVAKICAgICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9IRUFERVJfR1JPVVAg
fHwgZGlzcGxheSA9PSBUQUJMRV9GT09URVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1cK
ICAgICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9DT0xVTU5fR1JPVVAgfHwgZGlzcGxheSA9PSBU
QUJMRV9DT0xVTU4gfHwgZGlzcGxheSA9PSBUQUJMRV9DRUxMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaAppbmRleCAzMTAwZjY3YWRmZTFjYzZlYWVjYWY0YWNkMDc2NjNjNzQ4MjYx
NGVhLi41NjQ3NzJlNzNiY2Y5NmE0NDk5MzhhYTI4ZTExMjUyYzJjMWZhOWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCBhOGMyNjQ1OWJjYTc3NTUyNThiYTlmZGY1MmRjODEx
YWI5YTQ3MTJmLi4zNGVkZThkZjhhMWY4ZTYyN2QzZWZkZGU5NWIzZWFhNzgzNTZhMjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
UGFzc1JlZlB0cjxIVE1MRnJhbWVFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFt
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wgSFRNTEZyYW1lRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgLy8g
Rm9yIGNvbXBhdGliaWxpdHksIGZyYW1lcyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUg
aXMgc2V0LgogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmgKaW5kZXggNjZmY2NmMzMzYmIzZDRmNWQ4YTE5YzdjODA4MzU3NTkzMGQ4
ZmZhMi4uM2IwNzYxYTdhYjIzMTc1MTYxYmFlNTc2YjU5MmUyYmFjNGEzMWQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDJmMzc1Y2JjYTI2ZWQ4
NzM3NDE0OTczYTc4N2ZiNDAxNTZjNDdjMzQuLjhiNzMxODQwNDJiMTkzMzQzMmUzOTZjMzE1MThh
YzhlYmUxNmU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
Ikxlbmd0aC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVy
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTE0NywxMSArMTQ4LDEx
IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CiAKLWJvb2wgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSAqc3R5bGUpCitib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRm9yIGNv
bXBhdGliaWxpdHksIGZyYW1lcyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMgc2V0
LgogICAgIC8vIEhvd2V2ZXIsIHdlIGRlbGF5IGNyZWF0aW5nIGEgcmVuZGVyZXIgdW50aWwgc3R5
bGVzaGVldHMgaGF2ZSBsb2FkZWQuIAotICAgIHJldHVybiBzdHlsZS0+aXNTdHlsZUF2YWlsYWJs
ZSgpOworICAgIHJldHVybiBjb250ZXh0LnN0eWxlKCktPmlzU3R5bGVBdmFpbGFibGUoKTsKIH0K
IAogUmVuZGVyT2JqZWN0ICpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZjJmODQzOTc3NmU3ODUyN2I0MGI5ZjZmNzRlNjMy
OWQzMGUwZjA3OC4uN2ZjNDQ1Y2E3NGEzYmI3YTA5OWNhMjU2MTJmNDk1NzViYTdmZDQ4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMDZhZjA5MzZiNzhkY2I5OWY3
Mjk3YjUxM2RkMTc4MDYzYjNlNTMzMy4uMTMzM2M4ZTk5OWEwOGU1MDNhYmMxMmIxMDk2NjdlYTEz
ODA4MWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVySUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEzMSw5ICsxMzIsOSBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJRnJhbWVFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5P
TkU7CisgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIGNvbnRleHQuc3R5bGUoKS0+ZGlzcGxh
eSgpICE9IE5PTkU7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCmluZGV4IDYxY2Q2YjY4ZWQ2NDhhMzIyNTllZjQ1N2Jl
ZTQ4ODA1NzMwZjM3MjYuLmRjNTIyYzU2MzUwNmI1N2JiY2E2MDlmOTc2ODhjZWViMjg0MzdkYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIAotICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDI1NjJmYzZl
M2UxMDYyYzFmZGVjOWM3ZjEyNzRhNzRiMTk1NTE4MjEuLmI5ZGMxMmI3NmExYzdmN2U1MDg1YTg3
NzcyMmUyNTE0MTEzOWVmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtNzIzLDkgKzcyMyw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuKCkKICAgICB9CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJu
IG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogUmVuZGVyT2JqZWN0
KiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5k
ZXggMzhiZDZjODY1YTdjMTdmNzBkMzc2NzhiYjJiODgxNDE4ZTgyZDExZC4uZWE2MjgwOTE3ZGQ4
Y2E5MGM2YTQ0YWEyZWNiY2M5MGM5OGIwNDY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhh
dmVTZWxlY3Rpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MmFiMDhlZmFlYWEyNWE5NDY4YTVkMWY3OTU1MTVmYWUwZTBjYzgwNC4uYTZkMmRlZmZlNjBkMTVm
Yzg0YWYyNDhjNWU4MzVjZmQ0MmU3YmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0zMTMsMTcgKzMxMywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250
ZXh0KQogewogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIFVOVVNFRF9Q
QVJBTShzdHlsZSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEZyYW1lKiBmcmFt
ZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiBjb250cm9scygp
ID8gSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpIDogZmFsc2U7CisgICAgcmV0
dXJuIGNvbnRyb2xzKCkgPyBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KSA6
IGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggZjllOTNiNGM3YjQxNTRkZDViZmRlNzc5YWQ3NzIxZmE3NzZkY2FkNS4uN2UwYjgxZDM4
ZWEwODZlNzNkMjAxZGM5OWQwODNiYjhhNjcxMWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVz
ZXJ2ZURlY2xzKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaAppbmRleCA5YTNiOTJkMzhiZDVk
MDNhZDk3ZGEzN2RkYjRiMWRmYzZmNzNmNmM2Li4wOWRlMjAzMjYwZTkwOGY0ZGVkZTI1OWFkNzY1
M2ExM2YwNDY2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1Njcmlw
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQu
aApAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgIHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKSB7ICByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBiYjY0ODBlNjBkZTNjN2VhYjgyMThl
ZTMwNDc4ZGY2NTYwNzIyYWJhLi4zYmUwMDlkNjE5MmI3ZGM0NzBkZjE3OGZiNzY1M2FjMDJhMjBm
Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzAw
LDE0ICszMDAsMTQgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdp
bkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgICAgICByZW5kZXJGYWxs
YmFja0NvbnRlbnQoKTsKIH0KIAotYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8v
IEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLCBkZXRhY2hlZCBkb2N1bWVu
dHMgbmV2ZXIgcmVuZGVyIQogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVy
biBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQog
CiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggNjQxZTUwZTc3ZTg0YjAxMzdmZjAw
OGNmNWIyMTY1ZjAyZDg5MzU3Ni4uMThiYzdmNTQzZTQ4YTJhODU2ZmRiZmNlNDU2MTIzYzMyYjRk
NzU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wg
ZGVlcCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogCi0g
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5o
CmluZGV4IGE1OGU5NTc2ZjAyNjA5YmYzZThhYmFjNzE0MWNhZTdmODVjN2FiNzQuLmI3Nzc3YTY1
MDdjMmNmOWI5MjRiZDM5NzcxYjY2ODA2MGE2NjNhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1
c2FibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRSZW5kZXJTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggYzE3OTFkNzAwOWYyMjY4ODljYjYwNzRh
YWZmMjJmY2VlODJhZTNlNC4uMjJjZTFiNjJhMTcxMGI4NGFjZTNkZTQyZGQwZjFjNjJmNWY0ZWE5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNjgsNyArNjgs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlclN0eWxlKFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CmluZGV4IDViN2Y0MmRlYTQ2MTQ4OTQyZWZjYTc4ODBjNTBkMmMwY2VhYTA0OGMuLjU5MDI3YTQx
YzcwOTQ1NjI3M2FjOTAwOTg5OGUyYmRmYWYwZWZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcApAQCAtNTUsOSArNTUsOSBAQCBQYXNzUmVmUHRyPEhUTUxWaWRl
b0VsZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFZpZGVvRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKSAKK2Jvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgCiB7Ci0gICAgcmV0dXJu
IEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgCisgICAgcmV0dXJuIEhUTUxF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOyAKIH0KIAogI2lmICFFTkFCTEUoUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
aW5kZXggNTdiNzBlYTFhYjJiYjcxYjExNmIyM2E3NzlmMTQ3MzY2MDZkOTFiZC4uNDUwNDM4YTJk
ZmFkZTZkMzFjM2E5ZTZlYTBmNDJhZGFiYTExODQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5j
cHAKaW5kZXggMWQ4YTZlNjhlY2YxOWFjYzhmOTM5YWFmZDM1NGZkZDhhNzhhN2FkMy4uZDRmZGRk
MzBmNzU0MDQ4ZWFjMjcxMDUwZWM0OTU1M2Y5ZmQxODEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcApAQCAtNTEsOSArNTEs
OSBAQCBSZW5kZXJPYmplY3QqIERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJEZXRhaWxzTWFya2VyKHRoaXMpOwogfQogCi1ib29sIERldGFpbHNNYXJrZXJDb250cm9sOjpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgRGV0YWlsc01hcmtlckNv
bnRyb2w6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIHN1bW1hcnlFbGVtZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBI
VE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHN1bW1h
cnlFbGVtZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb250ZXh0KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBEZXRhaWxzTWFya2Vy
Q29udHJvbDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKaW5kZXggM2M1YjA5ZGYyNDY0NTkxM2Qx
MzA0ZDljMDdjNThmNGY2YzBjMWE1Yy4uMWFhMTRjYWIzZGQxNzlhYzE0YmYzMTY5YTlmYTRhNzM0
Yjg2YTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdDsKIAogICAgIEhUTUxTdW1tYXJ5RWxlbWVudCogc3VtbWFyeUVsZW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmlu
ZGV4IGE1ZWI3MGI1ODVhOTU0YTZlM2U0YTE3ODUyMTcxMzk4Zjc3Y2U4MmUuLjYwZGM3YmY2MzBj
N2Y2MzZmZTQ2NGY2ZWMzZWViOTM4ODkxZDA5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIEhU
TUxNZXRlckVsZW1lbnQqIE1ldGVyU2hhZG93RWxlbWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1ldGVyRWxlbWVudCo+KG5vZGUpOwogfQogCi1i
b29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5
bGUpCitib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZW5kZXJNZXRlciogbWV0ZXJSZW5k
ZXJlciA9IHRvUmVuZGVyTWV0ZXIobWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpOwotICAgIHJl
dHVybiBtZXRlclJlbmRlcmVyICYmICFtZXRlclJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01l
dGVyKG1ldGVyUmVuZGVyZXItPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBtZXRlclJlbmRlcmVyICYm
ICFtZXRlclJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKG1ldGVyUmVuZGVyZXItPnN0
eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29udGV4dCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJCYXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVy
U2hhZG93RWxlbWVudC5oCmluZGV4IDkzNjI2ZGY1ZTI1YjE3YTY2ZjllNWQ0Y2Q4MjVlNDNjNTll
NWFlZGMuLmMzNmIwMWIyNDNkYjlkZjZmYTA3NWJjMWJiNmU0ZDViNjQyNzA2M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0Jik7CiB9OwogCiBjbGFzcyBNZXRlckJhckVsZW1lbnQgOiBwdWJsaWMg
TWV0ZXJTaGFkb3dFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDFjZWRkMGRjYTEyZjIzZGJhNGVkMTZi
OGFkMzdmZTExMzNiZDNjZmMuLmMwY2JiOTUwOGRkZWJjNzZkOTAzMDRlMjQ3YTk3ODU1MDIyNmNl
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFk
b3dFbGVtZW50LmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIEhUTUxQcm9ncmVzc0VsZW1lbnQqIFBy
b2dyZXNzU2hhZG93RWxlbWVudDo6cHJvZ3Jlc3NFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIFByb2dy
ZXNzU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiti
b29sIFByb2dyZXNzU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZW5kZXJPYmplY3QqIHByb2dyZXNzUmVu
ZGVyZXIgPSBwcm9ncmVzc0VsZW1lbnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcHJvZ3Jl
c3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
ICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4g
cHJvZ3Jlc3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFy
YW5jZSgpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFByb2dyZXNzQmFyRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NT
aGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaAppbmRleCBhMTA2YmY4NzIzODY1OTQwOTExOTgwYjljOTFiYzJmM2Y1NjA0NGE1
Li5lMTM1YzcxZGFhNDFmOWU2ZWYzYjM2NGVmOTE4OGEzMWNkNTE3YWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaApAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jlc3NFbGVt
ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogfTsKIAogY2xhc3MgUHJvZ3Jlc3NCYXJFbGVtZW50
IDogcHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxl
bWVudC5oCmluZGV4IDMyYTdhZDAyMTQ0NzNkMmYzMzkxOWY1YTQ0Njg0NjkyZjllNGZlOTUuLmVh
ZTc2N2VkNmM5NTNkYTJhNWJlNTM4NGQwNTlhODIzYmM1NzE4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEZXNjRWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U1ZHRGVzY0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNWU1YWJmOGRlNTM3MzkwYmE4ZTU2YWMzYWE4
MDE0MGUxNjAwNDFlMS4uZTdjMTA2YmFjYzA4OGI1ZWEzNzFkNjc4N2ExMDg5NTBjZDQ1NmFmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogCi0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRl
ZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcAppbmRleCBmZTVkMDljOTliM2IxYThmNjE4ZjZlY2UzOTA2NDJjYTUw
NWEwNDFmLi4zMTExM2Q2MmJmNTQ0OGM3OWY4NGFlYmNhMDRiYmZmNzI1MzU3YmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcApAQCAtMTY4LDEwICsxNjgsMTAgQEAgUmVuZGVyT2JqZWN0KiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKgogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZSh0aGlzKTsKIH0KIAotYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiAocGFy
ZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKSkKLSAgICAgICAgcmV0
dXJuIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICBy
ZXR1cm4gU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA3OTViYzExYWY2YzY0MjJl
ZGNmYzk4ZmQ3MTA0YjE0ZGM4NWU5OWFlLi40OGFmYTMyYmVjNTkzYWI0NDJiYmQ5ZDQxYWZhZTE4
NjQ2N2UyOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEVsZW1lbnQuaAppbmRleCA5NDM1Y2M3MDU0ZjQ3Y2M3ZDRhZDg3NTc3MjY5ZmIyMzIzMzlhZmU3
Li42MjI3NjZhMzU1YTZjOWUzNGQwZTU5MmQ3MTdjZWEzMmMxZTlhNzEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEVsZW1lbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIFNWR0Zv
bnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7
IH0gIAorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0gIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmNwcAppbmRleCA5OTU1ODAwMTRiM2YzMTNmOTk3NmQ5ZDQwMDQzMzJlZDQ0MzAw
YWViLi5kYmY3ZTlmZjExM2RiN2M1Zjg3YWU5YjBmZDUzMmI1MmRiMDkyMDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZW5kZXJPYmplY3QqIFNW
R0dFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KiBzdHlsZQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyKHRoaXMpOwogfQogCi1ib29sIFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKikKK2Jvb2wgU1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKQogewogICAgIHJldHVybiBwYXJlbnROb2RlKCkgJiYgcGFyZW50
Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKTsgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4
IGMzMDZmNGE2ZjZlOTQ2N2Y4ODQ3NzA3ZGFiNTQ0ZDU2MTVjYzY5YzUuLjMxOWFmMjc4MmI1MmFl
Zjk1ODBmYmQ3MzMwN2RhNjUzMTU3YWMxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBA
IC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCmlu
ZGV4IDk0NGFkMjcyYTQxNjk4ZDA2YzhiNzc3MDUzNTFhZjk0NTZhYzAzOTIuLjVhZDA4OWEwYmQ2
OTJiNmE0OGY0Mjk5MjFlNjk5NTk4ZTllZjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVu
dCgpOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaW52
YWxpZGF0ZUdseXBoQ2FjaGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSEtlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgK
aW5kZXggMGRlZmNiYmI5N2FjM2JmZTUwMzliNmFjZWU3YTk2NjJiMDdhZmJiOC4uYmM3YjRlODNm
YzQ1ZmVkMDRjYTEzYjFiMDc4ZmI1ZTNhYzljYWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2Vy
bkVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3Vt
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSop
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXgg
MjRjZTYyNDZkMTk3M2U3Yzk3YTU2N2Y3ZDFlYmY0MjhlNDYzNTA0Yi4uZmI3NmVmODRlYTJkZjlm
Y2E2OTUzY2E1Yzg5Yjk0YzhkYThhYjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAppbmRleCA1MjhjNTNjNTNkYTFmNDZh
NDZlN2JhNjk0NjFjNjEyOTk0OTBiMjFmLi5mMmExNzZlZjg0ZWI3OWMxOWEzZmU3NDkxMWJhMzlm
ODgwNDQwYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBo
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50
LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCBlZGI1NmQ3YjZmMDBiODczZTZjZDQzNWY2ZTljZmE0
MDFiYmRhNDVjLi5kNDFjYzA2OTJhYzBiY2IxM2UyOWM3MDg5MTc2NzU3NjYwMzMwMjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
IAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkg
eyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0
KTsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCAwZTRhMWJi
NDkwY2M4YmI4ZTQwYWI2MDMwODUxMTNjMDc4OTBkMzdlLi40MzI3NjNhMDcxY2VkZTU0YzQ4ZGZi
MmIwOWVmMzgzZDYxMWIxODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgU3RyaW5nIFNWR1N0eWxlZEVsZW1lbnQ6OnRpdGxlKCkg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1N0eWxlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2V4dGVuZC5odG1sI1ByaXZhdGVE
YXRhCiAgICAgLy8gUHJldmVudCBhbnl0aGluZyBvdGhlciB0aGFuIFNWRyByZW5kZXJlcnMgZnJv
bSBhcHBlYXJpbmcgaW4gb3VyIHJlbmRlciB0cmVlCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBT
VkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAg
ICAvLyB3aXRoIHRoZSBTVkcgY29udGVudC4gSW4gZ2VuZXJhbCwgdGhlIFNWRyB1c2VyIGFnZW50
IHdpbGwgaW5jbHVkZSB0aGUgdW5rbm93bgogICAgIC8vIGVsZW1lbnRzIGluIHRoZSBET00gYnV0
IHdpbGwgb3RoZXJ3aXNlIGlnbm9yZSB1bmtub3duIGVsZW1lbnRzLiAKICAgICBpZiAoIXBhcmVu
dE5vZGUoKSB8fCBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4g
U3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBT
dHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZh
bHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKaW5kZXggNjViOTUyNTgw
MGFkYTJhMmFiNGVjOGQ1ZTNlZTBlNTczNWY5NzllMy4uNmZlMGY0YzVlNDgyOTg3ODdmNzI4MTVi
NTFkMGNmZGIxZGMyYTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDogCiAgICAgU1ZHU3R5bGVkRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCmluZGV4IDhmM2YyNTFlODY1NDkx
MWQ5ZmMzMWIzMzg2ZDkyZWRmYzliZWFmNTUuLjk1NDNjMjdkYTM3N2NlYmZkMGFhNWMxY2JkOGRm
NDc3ZmVkOGU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjg3OWVlYTcw
MTk5NmQ2MGE2OWY5MzgzZWJkNjM0MDQ0YzcwZWZmOS4uOTFiMDM3ZDk1MDMwNDVkZjNhZTY5NjEz
MmQ5YTkyM2UyN2VkMmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgYm9vbCBTVkdUUmVmRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
U1ZHVFJlZkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9v
bCBTVkdUUmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJl
bnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCkBAIC0xMjIsNyArMTIyLDcgQEAg
Ym9vbCBTVkdUUmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUp
CiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRU
YWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRl
eHRQYXRoVGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjp0c3BhblRhZykpKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuaAppbmRleCAyZTdkMDA1NzEzYWFkY2U2NWEyM2IxZDM5ZmI5OTg3Y2RhMDk0
NDRjLi44OTQyYmNkYTk3N2RlOGUzMzgwOTZhZmI2ZDkzNDc2ZTJhOWJlNjFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2Rl
KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYpOwogCiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCmluZGV4IDBiOTY0NjVlYjM3Y2E3Y2JjMWJlZTk0
NjRhMzc4YWNjN2EyNTY5MjQuLjdiNzYyZjUyMDczODk2ZGMwZWQxZjllN2MzOTY3YWE4Yjk2YzNk
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIGJvb2wgU1ZHVFNwYW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUq
IGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUU3BhbkVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUU3BhbkVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKQogICAgICAgICAmJiAocGFyZW50Tm9kZSgpLT5o
YXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKQpAQCAtNjksNyArNjksNyBAQCBib29sIFNWR1RTcGFu
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgICAg
ICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCiAgICAgICAg
ICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKQog
ICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRh
ZykpKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHls
ZSk7CisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRl
eHQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVu
dC5oCmluZGV4IGFjMDJiNTdiNGQ1ODlkYzMzNzNmZjk5MDVmMTRiN2JhNTViMTJkNmMuLmU3MTVi
ZGRkNjVkY2VkNTMwYmViZjc1MzYwMGJjMDk3NmZiMDEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFNwYW5FbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Tm9kZSopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmNwcAppbmRleCBhNjdkNmM5NDcwYzY3NTI3N2Y4Yjg2MjIyZWU5ZTRhODc5NmVmZTg5
Li43NThiMjhiMTQzMTIzYTIzZTE2MDUwOWQ3NTRlMWE0YzhkMmVmZWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtMTQwLDEyICsxNDAsMTIgQEAgYm9v
bCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hp
bGQpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNWR1RleHRQYXRoRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1RleHRQYXRo
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2RlKCkt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCkt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKSkKLSAgICAgICAgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCBiNjk5ZDYxZGZlNDE3
YzU1ZjBmZTkyZmNmZDg4NWI2OTRiNjU0N2Q4Li4xMGQ2MjM1Yjg5Mzg4NWRmZjYzMDYwMWM1OWIz
MmYzYmZmYTY4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGl0bGVFbGVtZW50LmgKaW5kZXggYzFjZWM0OTQ1M2MxMmVhNGZlNTU2MzJlMDBlNzE4OWUwODM0
ZTNhYy4uNDViYjViZjhlNzVkNGUwZmU1YjAwYTcwMmIyYTE3NjE1NjBiN2UwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVD
aGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAw
KTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaAppbmRleCBkOGE5ZDFiYzk5NjA5ZWVlYTQ4Mjk2OTEx
MjE1M2YwZjIzY2VhMTk5Li43N2VhMmZlNzk5Yjc0MTFjOGEwZjdjMjRhOGRkYjA2YTljMjZmY2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCmluZGV4IGIzNzE3NzQ4OGE2OTk4MWM1YjA5MzI4YmViZjk1ZjRjZTdl
MzE3NmEuLjZlMzc5MTU5NDI3YWFkNTY2MGE1ZjVmZmU2NDRkYzkyM2I5YTFmMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94192</attachid>
            <date>2011-05-20 02:14:40 -0700</date>
            <delta_ts>2011-05-22 21:14:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61114-20110520181438.patch</filename>
            <type>text/plain</type>
            <size>79867</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY5MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA3YTlh
ZjQ4NmQxZDhkODc1OTQ5OWVmZmQxMjdjNWRmZmUxNWJmYy4uMmY2MzE3MjlhYmEzNzEwNmZlZGJm
MTU0N2I4NzAxNjVhOGEyODE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU4NSw2ICs1ODUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAogICAgIGRv
bS9PcHRpb25FbGVtZW50LmNwcAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZjNmZmI2ZTY2M2FmMWMwNzFkNDVmY2M0MzZlOTY4ZGQ0NzQwMzBjNi4uNmNkZmI1
OWE2MmM2Y2ZjOGFkNmQwYmE0YmM5Y2NhYWViNGQ2OTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExNCBAQAorMjAxMS0wNS0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFBhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgdG8gTm9kZTo6cmVuZGVyZXJJc05lZWRl
ZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEx
NAorCisgICAgICAgIC0gRXh0cmFjdGVkIE5vZGVSZW5kZXJpbmdDb250ZXh0IGZyb20gTm9kZVJl
bmRlcmVyRmFjdG9yeSwgZ2l2aW5nIHNlcGFyYXRlIGZpbGVzIHRvIGl0LgorICAgICAgICAtIENo
YW5nZWQgc2lnbmF0dXJlIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSAKKyAgICAgICAg
ICB0byByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikuCisgICAg
ICAgICAgVGhlIHN0eWxlIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBOb2RlUmVuZGVyZXJGYWN0
b3J5OjpzdHlsZSgpCisgICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHJlbmRlcmVySXNOZWVkZWQo
KSB0byBhY2Nlc3MgY29udGV4dHVhbAorICAgICAgICAgIGluZm9ybWF0aW9uIGxpa2UgYXR0YWNo
aW5nIHBoYXNlIGFuZCByZW5kZXJpbmctcGFyZW50LgorICAgICAgICAKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhcmFjdGVyRGF0YTo6dXBkYXRlUmVuZGVyZXIpOiBQYXNzIHVucmVzb2x2ZWQgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIHRvIHJlbmRlcmVySXNOZWVkZWQoKQorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogZG9tL0NoYXJhY3Rl
ckRhdGEuaDoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9F
ZGl0aW5nVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nVGV4dDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogZG9tL0VkaXRpbmdUZXh0Lmg6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnJlbGVhc2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpwYXJlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5Ojpjb250ZXh0KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICogZG9tL1RleHQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTm9T
Y3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9s
LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSEtlcm5F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RpdGxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWS2VybkVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wNS0yMCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjg2OTIwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDlkZmZlMjQ0
MDJiNTI0OTViMzc4ZGQ4NzFlYjc4Y2Q4YWQ1MmVkNy4uYTZkNmFiYTc1YmM0YTI0MWIzMWI4ZDk3
YzJhMTkwOGRjZmQzNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMTgy
LDExICsxMTgyLDEzIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L05vZGVGaWx0ZXJDb25kaXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL05vZGVJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJTdHlsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdpdGhJbmRleC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhZTA1
ZWNkMjA4MDY4M2ZkMDc4MDU5NmQxZmEwN2IxODY0NTEzMDRmLi4wOGJjYWI2YTY0ODBmM2Q2ZTY5
NjNjYmNjOWYyYWY3NmYxMmQ1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTAzLDYgKzI1MDMs
OCBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdk
b20vTm9kZUl0ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCisg
ICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAn
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVy
U3R5bGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVXaXRoSW5kZXguaCcsCiAgICAgICAgICAg
ICAnZG9tL05vdGF0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDdjZWU4MzAyMjM1YjgwYmM5
MzdlM2VkMGNkOWRjZmU3NjIzODY2Y2QuLjIxYjU4NzUzYjc2NjFlOWEzZmY3Mjc3NWE2ZGU1MTYy
ZDVmZjUwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01MDgsNiArNTA4LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIFwKICAgICBkb20vTm9kZUZpbHRlci5j
cHAgXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwIFwKKyAgICBkb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIFwKICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBF
bGVtZW50LmNwcCBcCiAgICAgZG9tL09wdGlvbkVsZW1lbnQuY3BwIFwKQEAgLTE0ODYsNiArMTQ4
Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9Ob2RlRmlsdGVyLmggXAogICAgIGRvbS9Ob2Rl
LmggXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuaCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vT3B0aW9uRWxlbWVudC5oIFwK
ICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4N2MzODYyNzUxMDQwY2E5MTk1MTA3NjlkMDQ2
NzRlMmZlNjgxZjQ4Li5hOGM0OTdkNzM2MWQ3OGEwZmE1ZWVlYzE5MTNlMjYxZjY2Mjg5M2JjIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDUz
NDIsNiArNDUzNDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCIKKwkJCQk+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxOb3RhdGlvbi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDEyMGEyMjc0MTViMGZiY2ViZjUyMWFmMjQxZGI5OWI4NzU3NDcwN2EuLjY2OGQ2YmQ3
ZjBiNzc2MzYwODdmMDJmMmFkMWY2MTExNjMxMzkyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNDgsNiArMzI0OCw4IEBA
CiAJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3REJGOERDMTI3Njkx
OUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCAqLzsgfTsKIAkJQTdGMzM4QTMxMUMw
RUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMzM4QTExMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRv
d0VsZW1lbnQuY3BwICovOyB9OwogCQlBN0YzMzhBNDExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdGMzM4QTIxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKKwkJQTdG
NUQ5NEYxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjVEOTREMTM4NEYwMkQw
MEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CisJCUE3RjVEOTUwMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGNUQ5NEUxMzg0RjAyRDAwQTI5QTg3IC8q
IE5vZGVSZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJCUE4MEEzOEZFMEU1MENDODIwMEEyNUVC
QyAvKiBQYXR0ZXJuQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi87IH07
CiAJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgwRDY3MDcwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZUNHLmggKi87IH07CiAJCUE4MEU2Q0U0MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZD
QkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAgKi87IH07CkBAIC05NzcxLDYg
Kzk3NzMsOCBAQAogCQlBN0RCRjhEQzEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVs
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2luZ0hlbHBl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0YzMzhBMTExQzBFRkNBMDBBMzIw
QTcgLyogU2hhZG93RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFkb3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdG
MzM4QTIxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Y1RDk0RDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Y1RDk0RTEzODRGMDJE
MDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTm9kZVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXR0ZXJuQ0cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODBENjcwNzBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTgwRTZDQkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVmFsdWVMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzQ4LDYgKzE5MzUyLDggQEAKIAkJCQlB
ODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKIAkJCQk4NUFDQTlGQTBB
OUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAogCQkJCTYzMTg5QUUyMEU4M0EzMzMw
MDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLywKKwkJCQlBN0Y1RDk0RDEzODRGMDJEMDBBMjlB
ODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwICovLAorCQkJCUE3RjVEOTRFMTM4NEYwMkQw
MEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICovLAogCQkJCTYzRDdCMzJDMEU3OENE
M0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLywKIAkJCQk5MzgyQUFCMTBEOEMzODYx
MDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovLAogCQkJCUE4RUE3RUI3MEExOTQ1RDAwMEE4
RUY1RiAvKiBOb3RhdGlvbi5jcHAgKi8sCkBAIC0yMTkxMyw2ICsyMTkxOSw3IEBACiAJCQkJODU0
RkU3MzUwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2Rl
UmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJBQUI0MEQ4QzM4NjEwMEYzNTdB
NiAvKiBOb2RlV2l0aEluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0VCRTBBMTk0NUQw
MDBBOEVGNUYgLyogTm90YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ4MDIsNiArMjQ4MDks
NyBAQAogCQkJCTg1NEZFNzMwMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg1NEZFNzMyMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM0MEEyMjk3QkUwMDU4RDdBRCAv
KiBOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdGNUQ5NEYxMzg0RjAyRDAw
QTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
RUE3RUJGMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMzUwM0NDNzEwMTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXgg
ZTE4MTVkOWQ4OGQzNzU2YjBiNDA3MDM4NWVkYmE4ZTI4MTM3OWExZi4uYjdjYTM1ZDhlZGRkN2Zk
NGUzMzY3MzY0M2E2NmU3MzVhNjQ4YzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50
LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKIApAQCAtMTgxLDcgKzE4Miw3
IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IG5ld0RhdGEsIHVuc2lnbmVkIG9mCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6dXBkYXRl
UmVuZGVyZXIodW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIGxlbmd0aE9m
UmVwbGFjZWREYXRhKQogewotICAgIGlmICgoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVySXNOZWVk
ZWQocmVuZGVyZXIoKS0+c3R5bGUoKSkpICYmIGF0dGFjaGVkKCkpIHsKKyAgICBpZiAoKCFyZW5k
ZXJlcigpIHx8ICFyZW5kZXJlcklzTmVlZGVkKE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMsIHJl
bmRlcmVyKCktPnN0eWxlKCksIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpSZXNvbHZlTm9uZSkpKSAm
JiBhdHRhY2hlZCgpKSB7CiAgICAgICAgIGRldGFjaCgpOwogICAgICAgICBhdHRhY2goKTsKICAg
ICB9IGVsc2UgaWYgKHJlbmRlcmVyKCkpCkBAIC0yMTcsMTEgKzIxOCwxMSBAQCBpbnQgQ2hhcmFj
dGVyRGF0YTo6bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihsZW5ndGgoKSk7CiB9CiAKLWJvb2wgQ2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCitib29sIENoYXJhY3RlckRhdGE6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGZhY3RvcnkpCiB7CiAgICAgaWYgKCFt
X2RhdGEgfHwgIWxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIE5v
ZGU6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBOb2RlOjpyZW5kZXJlcklz
TmVlZGVkKGZhY3RvcnkpOwogfQogCiBib29sIENoYXJhY3RlckRhdGE6Om9mZnNldEluQ2hhcmFj
dGVycygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCAzOWE2ZmFhNmE4
ZGFlZTYzN2RiOGE1NDg0YWJmNmRjYTIyYTdmODVjLi42NjFlMTEwNjM3NzIyZDM0OGY3ZmM4NWRh
NDBmNTVlMzkyNmMxMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKQEAgLTU0LDcg
KzU0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBBU1NFUlQodHlwZSA9PSBDcmVhdGVDb21tZW50
IHx8IHR5cGUgPT0gQ3JlYXRlVGV4dCk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXREYXRhSW1w
bChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIHsgbV9kYXRhID0gaW1wbDsgfQogICAgIHZv
aWQgZGlzcGF0Y2hNb2RpZmllZEV2ZW50KFN0cmluZ0ltcGwqIG9sZFZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IGRmMTAxMzhmNjQxNTNhZTBhNGEyMzBkMTRkM2E3OGE0
NmM0ZGFjMGUuLmEyMTA0OGI3OWU2ZjQwZDhlYTgzMGY4NGM2ZDJjNWRmYWM5N2QyYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgIk5v
ZGVGaWx0ZXIuY3BwIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIgogI2luY2x1
ZGUgIk5vZGVJdGVyYXRvci5jcHAiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
IgogI2luY2x1ZGUgIk5vdGF0aW9uLmNwcCIKICNpbmNsdWRlICJPcHRpb25FbGVtZW50LmNwcCIK
ICNpbmNsdWRlICJPcHRpb25Hcm91cEVsZW1lbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4
dC5jcHAKaW5kZXggZTQxMmFkNjliMzE0MTMxMzdhNjQ4NDQ2MGI1MDU2YWQ3MjAyNTgxMC4uYTNl
N2E0YzUzZjlhNDljMmNlZDg5MmQ5ZjdkMjRkZDlkYWNkNWYyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWRp
dGluZ1RleHQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFBhc3NSZWZQdHI8RWRpdGluZ1RleHQ+IEVk
aXRpbmdUZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFZGl0aW5nVGV4dChkb2N1bWVudCwgZGF0YSkpOwogfQog
Ci1ib29sIEVkaXRpbmdUZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wg
RWRpdGluZ1RleHQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KQogewogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VkaXRpbmdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuaAppbmRleCAw
ODIyM2MyMTZiZDE5Mzg2YzMzOGZkN2UyNGY2OWFlMzYyZTlkNWRkLi42NTM2YzdiMzhiNDAwYWU5
NjZhOWNlNzA0MDZlMWE5OGM2ZjkwNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWRpdGluZ1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuaApAQCAt
MzAsNyArMzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdGluZ1RleHQ+
IGNyZWF0ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICopOworICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICBF
ZGl0aW5nVGV4dChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCBkNzE3Yzg1MjU0MjU0ZDdmODMwMDM4NjBmZTM4MzFjMjc4YTQ5YWZhLi5mYjdhYWI5NGM4
ZDhhYThhMjlkMWZjYWY1NGZlMzk3OTJlNjRiMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02Nyw2
ICs2Nyw3IEBACiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmFtZWROb2Rl
TWFwLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCkBAIC03NSw3ICs3Niw2IEBA
CiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgotI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3Jl
ZW4uaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCkBAIC0xNDU5LDE4MiArMTQ1OSw5
IEBAIE5vZGUgKk5vZGU6Om5leHRMZWFmTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAK
LQotY2xhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBUcmVlTG9j
YXRpb24gewotICAgICAgICBMb2NhdGlvbk5vdEluVHJlZSwKLSAgICAgICAgTG9jYXRpb25MaWdo
dENoaWxkLAotICAgICAgICBMb2NhdGlvblNoYWRvd0NoaWxkLAotICAgIH07Ci0KLSAgICBlbnVt
IEF0dGFjaFBoYXNlIHsKLSAgICAgICAgQXR0YWNoU3RyYWlnaHQsCi0gICAgICAgIEF0dGFjaENv
bnRlbnRMaWdodCwKLSAgICAgICAgQXR0YWNoQ29udGVudEZvcndhcmRlZCwKLSAgICB9OwotCi0g
ICAgZXhwbGljaXQgTm9kZVJlbmRlcmVyRmFjdG9yeShOb2RlKik7Ci0gICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7IH0KLSAgICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZO
ZWVkZWQoKTsKLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBt
X25vZGUtPmRvY3VtZW50KCk7IH0KLSAgICB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBSZW5kZXJP
YmplY3QqIG5leHRSZW5kZXJlcigpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXJBbmRTdHlsZSgpOwotICAgIGJvb2wgc2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdDsK
LQotICAgIFRyZWVMb2NhdGlvbiBtX2xvY2F0aW9uOwotICAgIEF0dGFjaFBoYXNlIG1fcGhhc2U7
Ci0gICAgTm9kZSogbV9ub2RlOwotICAgIENvbnRhaW5lck5vZGUqIG1fcGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlOwotICAgIFNoYWRvd1Jvb3QqIG1fdmlzdWFsUGFyZW50U2hhZG93Um9v
dDsKLX07Ci0KLU5vZGVSZW5kZXJlckZhY3Rvcnk6Ok5vZGVSZW5kZXJlckZhY3RvcnkoTm9kZSog
bm9kZSkKLSAgICA6IG1fbG9jYXRpb24oTG9jYXRpb25Ob3RJblRyZWUpCi0gICAgLCBtX3BoYXNl
KEF0dGFjaFN0cmFpZ2h0KQotICAgICwgbV9ub2RlKG5vZGUpCi0gICAgLCBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSgwKQotICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDAp
Ci17Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9ub2RlLT5wYXJlbnRPckhvc3ROb2Rl
KCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChwYXJlbnQt
PmlzU2hhZG93Qm91bmRhcnkoKSkgewotICAgICAgICBtX2xvY2F0aW9uID0gTG9jYXRpb25TaGFk
b3dDaGlsZDsKLSAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJl
bnQtPnNoYWRvd0hvc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbG9jYXRp
b24gPSBMb2NhdGlvbkxpZ2h0Q2hpbGQ7Ci0KLSAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2Rl
KCkpIHsKLSAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVu
dCktPnNoYWRvd1Jvb3QoKTsKLQotICAgICAgICBpZiAobV92aXN1YWxQYXJlbnRTaGFkb3dSb290
KSB7Ci0gICAgICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogY29udGVudENvbnRhaW5lciA9IG1f
dmlzdWFsUGFyZW50U2hhZG93Um9vdC0+YWN0aXZlQ29udGVudENvbnRhaW5lcigpKSB7Ci0gICAg
ICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQ7Ci0gICAgICAgICAg
ICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyZXJGYWN0
b3J5KGNvbnRlbnRDb250YWluZXIpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0gCi0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoQ29udGVudExpZ2h0OwotICAgICAgICAgICAg
bV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdB
bmRTdHlsZSA9IHBhcmVudDsKLX0KLQotYm9vbCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpzaG91bGRD
cmVhdGVSZW5kZXJlcigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fcGFyZW50Tm9kZUZvclJlbmRl
cmluZ0FuZFN0eWxlKTsKLQotICAgIGlmIChtX2xvY2F0aW9uID09IExvY2F0aW9uTm90SW5UcmVl
IHx8IG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fbG9jYXRpb24gPT0gTG9jYXRpb25MaWdo
dENoaWxkICYmIG1fcGhhc2UgPT0gQXR0YWNoU3RyYWlnaHQpIHsKLSAgICAgICAgLy8gRklYTUU6
IElnbm9yaW5nIGNhbkhhdmVDaGlsZHJlbigpIGluIGEgY2FzZSBvZiBzaGFkb3cgY2hpbGRyZW4g
bWlnaHQgYmUgd3JvbmcuCi0gICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI0MjMKLSAgICAgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2
ZUNoaWxkcmVuKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgICAgIGlm
IChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QgJiYgIW1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlLT5jYW5IYXZlTGlnaHRDaGlsZFJlbmRlcmVyV2l0aFNoYWRvdygpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghbV9wYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIobV9ub2RlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVJlbmRlck9iamVjdCogTm9k
ZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpCi17Ci0gICAgQVNTRVJU
KCFtX25vZGUtPnJlbmRlcmVyKCkpOwotICAgIEFTU0VSVChkb2N1bWVudCgpLT5zaG91bGRDcmVh
dGVSZW5kZXJlcnMoKSk7Ci0KLSAgICBpZiAoIXNob3VsZENyZWF0ZVJlbmRlcmVyKCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IG1fbm9kZS0+
c3R5bGVGb3JSZW5kZXJlcigpOwotICAgIGlmICghbV9ub2RlLT5yZW5kZXJlcklzTmVlZGVkKHN0
eWxlLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZW5kZXJPYmplY3QqIG5ld1Jl
bmRlcmVyID0gbV9ub2RlLT5jcmVhdGVSZW5kZXJlcihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgp
LCBzdHlsZS5nZXQoKSk7Ci0gICAgaWYgKCFuZXdSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBpZiAoIW1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5yZW5kZXJlcigp
LT5pc0NoaWxkQWxsb3dlZChuZXdSZW5kZXJlciwgc3R5bGUuZ2V0KCkpKSB7Ci0gICAgICAgIG5l
d1JlbmRlcmVyLT5kZXN0cm95KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG1f
bm9kZS0+c2V0UmVuZGVyZXIobmV3UmVuZGVyZXIpOwotICAgIG5ld1JlbmRlcmVyLT5zZXRBbmlt
YXRhYmxlU3R5bGUoc3R5bGUucmVsZWFzZSgpKTsgLy8gc2V0QW5pbWF0YWJsZVN0eWxlKCkgY2Fu
IGRlcGVuZCBvbiByZW5kZXJlcigpIGFscmVhZHkgYmVpbmcgc2V0LgotICAgIHJldHVybiBuZXdS
ZW5kZXJlcjsKLX0KLQotUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpuZXh0UmVu
ZGVyZXIoKSBjb25zdAotewotICAgIGlmIChtX3BoYXNlICE9IEF0dGFjaENvbnRlbnRGb3J3YXJk
ZWQpCi0gICAgICAgIHJldHVybiBtX25vZGUtPm5leHRSZW5kZXJlcigpOwotICAgIC8vIFJldHVy
bnMgMCBoZXJlIHRvIGluc2VydCByZW5kZXJlciBhdCB0aGUgZW5kIG9mIGNoaWxkIGxpc3QuCi0g
ICAgLy8gV2UgYXNzdW1lIGNvbnRlbnQgY2hpbGRyZW4gYXJlIGFsd2F5cyBhdHRhY2hlZCBpbiB0
cmVlIG9yZGVyIGFuZAotICAgIC8vIHRoZXJlIGlzIG5vIHBhcnRpYWwgcmVuZGVyIHRyZWUgY3Jl
YXRpb24uCi0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi1z
dGF0aWMgUmVuZGVyRnVsbFNjcmVlbiogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9i
amVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgUmVuZGVyRnVsbFNjcmVl
biogZnVsbHNjcmVlblJlbmRlcmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVu
ZGVyRnVsbFNjcmVlbihkb2N1bWVudCk7Ci0gICAgZnVsbHNjcmVlblJlbmRlcmVyLT5zZXRTdHls
ZShSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7Ci0gICAgLy8gSXQn
cyBwb3NzaWJsZSB0aGF0IHdlIGZhaWxlZCB0byBjcmVhdGUgdGhlIG5ldyByZW5kZXIgYW5kIGVu
ZCB1cCB3cmFwcGluZyBub3RoaW5nLgotICAgIC8vIFdlJ2xsIGVuZCB1cCBkaXNwbGF5aW5nIGEg
YmxhY2sgc2NyZWVuLCBidXQgSmVyIHNheXMgdGhpcyBpcyBleHBlY3RlZC4KLSAgICBpZiAob2Jq
ZWN0KQotICAgICAgICBmdWxsc2NyZWVuUmVuZGVyZXItPmFkZENoaWxkKG9iamVjdCk7Ci0gICAg
ZG9jdW1lbnQtPnNldEZ1bGxTY3JlZW5SZW5kZXJlcihmdWxsc2NyZWVuUmVuZGVyZXIpOwotICAg
IHJldHVybiBmdWxsc2NyZWVuUmVuZGVyZXI7Ci19Ci0jZW5kaWYKLQotdm9pZCBOb2RlUmVuZGVy
ZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKLXsKLSAgICBpZiAoIWRvY3VtZW50
KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NF
UlQoIW1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVy
ID0gY3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpOwotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgp
LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBtX25vZGUpCi0gICAgICAgIG5l
d1JlbmRlcmVyID0gd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKG5ld1JlbmRlcmVyLCBkb2N1bWVu
dCgpKTsKLSNlbmRpZgotCi0gICAgLy8gRklYTUU6IFRoaXMgc2lkZSBlZmZlY3Qgc2hvdWxkIGJl
IHZpc2libGUgZnJvbSBhdHRhY2goKSBjb2RlLgotICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENv
bnRlbnRMaWdodCkKLSAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5ob3N0Q2hpbGRy
ZW5DaGFuZ2VkKCk7Ci0KLSAgICBpZiAoIW5ld1JlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBOb3RlOiBBZGRpbmcgbmV3UmVuZGVyZXIgaW5zdGVhZCBvZiByZW5kZXJlcigpLiBy
ZW5kZXJlcigpIG1heSBiZSBhIGNoaWxkIG9mIG5ld1JlbmRlcmVyLgotICAgIG1fcGFyZW50Tm9k
ZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5yZW5kZXJlcigpLT5hZGRDaGlsZChuZXdSZW5kZXJlciwg
bmV4dFJlbmRlcmVyKCkpOwotfQotCiBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKQogewotICAgIHJldHVybiBOb2RlUmVuZGVyZXJGYWN0b3J5KHRo
aXMpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOworICAgIHJldHVybiBOb2RlUmVu
ZGVyaW5nQ29udGV4dCh0aGlzKS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKIH0K
IAogdm9pZCBOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKQEAgLTE2NTUsOSArMTQ4Miw5
IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGU6OnN0eWxlRm9yUmVuZGVyZXIoKQogICAg
IHJldHVybiBwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpID8gcGFyZW50
Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpIDogMDsKIH0KIAotYm9vbCBOb2RlOjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgTm9kZTo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gKGRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IHRoaXMpIHx8IChzdHlsZS0+ZGlzcGxheSgp
ICE9IE5PTkUpOworICAgIHJldHVybiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0g
dGhpcykgfHwgKGNvbnRleHQuc3R5bGUoKS0+ZGlzcGxheSgpICE9IE5PTkUpOwogfQogCiBSZW5k
ZXJPYmplY3QqIE5vZGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKaW5kZXggMzFmYThiZjM3YzkwZTAxYzY0MDA5NDU2NWI2ODNiMjRiYzE3MzY2
Yi4uZTM0N2JlYjA4OTQ5MmI2Y2FkYmQ3ZDJjYmM2ZGQxOTY2ZGNjM2U0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIE5hbWVkTm9kZU1hcDsKIGNsYXNzIE5hbWVOb2RlTGlz
dDsKIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgTm9kZVJhcmVEYXRhOworY2xhc3MgTm9kZVJlbmRl
cmluZ0NvbnRleHQ7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CkBAIC00NTEsNyArNDUyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CiAgICAgdm9pZCBjcmVh
dGVSZW5kZXJlcklmTmVlZGVkKCk7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVG
b3JSZW5kZXJlcigpOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihOb2RlKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGMxZmE5ZTk2ZTUz
ZmQzNDMxYWY4ZGMzOWFhZjE5MDM3OGQwNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMCwwICsxLDIxNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAg
ICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlICJO
b2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgorI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZXNvbHZlVHlwZSByZXNvbHZlKQorICAgIDogbV9sb2NhdGlv
bihMb2NhdGlvbk5vdEluVHJlZSkKKyAgICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCisgICAg
LCBtX25vZGUobm9kZSkKKyAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDAp
CisgICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fc3R5bGUoc3R5bGUp
Cit7CisgICAgaWYgKHJlc29sdmUgPT0gUmVzb2x2ZU5vbmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwor
ICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFyZW50LT5pc1No
YWRvd0JvdW5kYXJ5KCkpIHsKKyAgICAgICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uU2hhZG93Q2hp
bGQ7CisgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5z
aGFkb3dIb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xvY2F0aW9uID0g
TG9jYXRpb25MaWdodENoaWxkOworCisgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7
CisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCA9IHRvRWxlbWVudChwYXJlbnQpLT5z
aGFkb3dSb290KCk7CisKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCkgewor
ICAgICAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIGNvbnRlbnRDb250YWluZXIgPSBtX3Zpc3Vh
bFBhcmVudFNoYWRvd1Jvb3QtPmFjdGl2ZUNvbnRlbnRDb250YWluZXIoKSkgeworICAgICAgICAg
ICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50Rm9yd2FyZGVkOworICAgICAgICAgICAgICAg
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQo
Y29udGVudENvbnRhaW5lcikucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50TGlnaHQ7CisgICAgICAgICAgICBtX3Bh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlID0gcGFyZW50OworfQorCitOb2RlUmVuZGVyaW5nQ29udGV4dDo6fk5vZGVSZW5kZXJpbmdD
b250ZXh0KCkKK3sKK30KKwordm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2V0U3R5bGUoUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7CisgICAgbV9zdHlsZSA9IHN0eWxlOworfQor
CitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0
eWxlKCkKK3sKKyAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7Cit9CisKK1JlbmRlck9iamVj
dCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgaWYg
KG1fcGhhc2UgIT0gQXR0YWNoQ29udGVudEZvcndhcmRlZCkKKyAgICAgICAgcmV0dXJuIG1fbm9k
ZS0+bmV4dFJlbmRlcmVyKCk7CisgICAgLy8gUmV0dXJucyAwIGhlcmUgdG8gaW5zZXJ0IHJlbmRl
cmVyIGF0IHRoZSBlbmQgb2YgY2hpbGQgbGlzdC4KKyAgICAvLyBXZSBhc3N1bWUgY29udGVudCBj
aGlsZHJlbiBhcmUgYWx3YXlzIGF0dGFjaGVkIGluIHRyZWUgb3JkZXIgYW5kCisgICAgLy8gdGhl
cmUgaXMgbm8gcGFydGlhbCByZW5kZXIgdHJlZSBjcmVhdGlvbi4KKyAgICByZXR1cm4gMDsKK30K
KworUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVu
ZGVyZXIoKTsKK30KKwordm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aG9zdENoaWxkcmVuQ2hh
bmdlZCgpCit7CisgICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQorICAgICAg
ICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKK30KKwor
Ym9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAor
eworICAgIEFTU0VSVChwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSk7CisKKyAgICBp
ZiAobV9sb2NhdGlvbiA9PSBMb2NhdGlvbk5vdEluVHJlZSB8fCBtX3BoYXNlID09IEF0dGFjaENv
bnRlbnRMaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyT2JqZWN0KiBw
YXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFwYXJlbnRS
ZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbG9jYXRpb24gPT0g
TG9jYXRpb25MaWdodENoaWxkICYmIG1fcGhhc2UgPT0gQXR0YWNoU3RyYWlnaHQpIHsKKyAgICAg
ICAgLy8gRklYTUU6IElnbm9yaW5nIGNhbkhhdmVDaGlsZHJlbigpIGluIGEgY2FzZSBvZiBzaGFk
b3cgY2hpbGRyZW4gbWlnaHQgYmUgd3JvbmcuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjMKKyAgICAgICAgaWYgKCFwYXJlbnRSZW5k
ZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QgJiYgIW1fcGFyZW50Tm9kZUZv
clJlbmRlcmluZ0FuZFN0eWxlLT5jYW5IYXZlTGlnaHRDaGlsZFJlbmRlcmVyV2l0aFNoYWRvdygp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9wYXJlbnRO
b2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIobV9ub2Rl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKworTm9k
ZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeShOb2RlKiBub2RlKQorICAgIDog
bV9jb250ZXh0KG5vZGUsIDAsIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpSZXNvbHZlQ29udGV4dCkK
K3sKK30KKworUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJl
ckFuZFN0eWxlKCkKK3sKKyAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOworICAgIEFTU0VSVCghbm9kZS0+
cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKGRvY3VtZW50LT5zaG91bGRDcmVhdGVSZW5kZXJlcnMo
KSk7CisKKyAgICBpZiAoIW1fY29udGV4dC5zaG91bGRDcmVhdGVSZW5kZXJlcigpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIG1fY29udGV4dC5zZXRTdHlsZShub2RlLT5zdHlsZUZvclJlbmRl
cmVyKCkpOworICAgIGlmICghbm9kZS0+cmVuZGVyZXJJc05lZWRlZChtX2NvbnRleHQpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBub2RlLT5j
cmVhdGVSZW5kZXJlcihkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSwgbV9jb250ZXh0LnN0eWxlKCkp
OworICAgIGlmICghbmV3UmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFt
X2NvbnRleHQucGFyZW50UmVuZGVyZXIoKS0+aXNDaGlsZEFsbG93ZWQobmV3UmVuZGVyZXIsIG1f
Y29udGV4dC5zdHlsZSgpKSkgeworICAgICAgICBuZXdSZW5kZXJlci0+ZGVzdHJveSgpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBub2RlLT5zZXRSZW5kZXJlcihuZXdSZW5kZXJl
cik7CisgICAgbmV3UmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShtX2NvbnRleHQucmVsZWFz
ZVN0eWxlKCkpOyAvLyBzZXRBbmltYXRhYmxlU3R5bGUoKSBjYW4gZGVwZW5kIG9uIHJlbmRlcmVy
KCkgYWxyZWFkeSBiZWluZyBzZXQuCisgICAgcmV0dXJuIG5ld1JlbmRlcmVyOworfQorCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorc3RhdGljIFJlbmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRo
UmVuZGVyRnVsbFNjcmVlbihSZW5kZXJPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50
KQoreworICAgIFJlbmRlckZ1bGxTY3JlZW4qIGZ1bGxzY3JlZW5SZW5kZXJlciA9IG5ldyAoZG9j
dW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW4oZG9jdW1lbnQpOworICAgIGZ1
bGxzY3JlZW5SZW5kZXJlci0+c2V0U3R5bGUoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlRnVsbFNj
cmVlblN0eWxlKCkpOworICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBmYWlsZWQgdG8gY3Jl
YXRlIHRoZSBuZXcgcmVuZGVyIGFuZCBlbmQgdXAgd3JhcHBpbmcgbm90aGluZy4KKyAgICAvLyBX
ZSdsbCBlbmQgdXAgZGlzcGxheWluZyBhIGJsYWNrIHNjcmVlbiwgYnV0IEplciBzYXlzIHRoaXMg
aXMgZXhwZWN0ZWQuCisgICAgaWYgKG9iamVjdCkKKyAgICAgICAgZnVsbHNjcmVlblJlbmRlcmVy
LT5hZGRDaGlsZChvYmplY3QpOworICAgIGRvY3VtZW50LT5zZXRGdWxsU2NyZWVuUmVuZGVyZXIo
ZnVsbHNjcmVlblJlbmRlcmVyKTsKKyAgICByZXR1cm4gZnVsbHNjcmVlblJlbmRlcmVyOworfQor
I2VuZGlmCisKK3ZvaWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRl
ZCgpCit7CisgICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbm9kZS0+ZG9jdW1lbnQoKTsKKworICAgIGlmICghZG9jdW1lbnQtPnNob3Vs
ZENyZWF0ZVJlbmRlcmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJPYmplY3Qq
IG5ld1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpOworCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgIGlmIChkb2N1bWVudC0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYg
ZG9jdW1lbnQtPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG5vZGUpCisgICAg
ICAgIG5ld1JlbmRlcmVyID0gd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKG5ld1JlbmRlcmVyLCBk
b2N1bWVudCk7CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBUaGlzIHNpZGUgZWZmZWN0IHNob3Vs
ZCBiZSB2aXNpYmxlIGZyb20gYXR0YWNoKCkgY29kZS4KKyAgICBtX2NvbnRleHQuaG9zdENoaWxk
cmVuQ2hhbmdlZCgpOworCisgICAgaWYgKCFuZXdSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gTm90ZTogQWRkaW5nIG5ld1JlbmRlcmVyIGluc3RlYWQgb2YgcmVuZGVyZXIoKS4g
cmVuZGVyZXIoKSBtYXkgYmUgYSBjaGlsZCBvZiBuZXdSZW5kZXJlci4KKyAgICBtX2NvbnRleHQu
cGFyZW50UmVuZGVyZXIoKS0+YWRkQ2hpbGQobmV3UmVuZGVyZXIsIG1fY29udGV4dC5uZXh0UmVu
ZGVyZXIoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjNhMzQxYWQwZGYxYTY1MjA5ZjU3YTAwN2QyYTI4M2NmMWRlMmEzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgTm9kZVJl
bmRlcmluZ0NvbnRleHRfaAorI2RlZmluZSBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCisKKyNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENvbnRhaW5lck5vZGU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFJlbmRl
ck9iamVjdDsKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2hhZG93Um9vdDsKKworY2xhc3Mg
Tm9kZVJlbmRlcmluZ0NvbnRleHQgeworcHVibGljOgorICAgIGVudW0gUmVzb2x2ZVR5cGUgewor
ICAgICAgICBSZXNvbHZlTm9uZSwKKyAgICAgICAgUmVzb2x2ZUNvbnRleHQsCisgICAgfTsKKwor
ICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqLCBSZW5kZXJTdHlsZSogPSAwLCBSZXNvbHZl
VHlwZSA9IFJlc29sdmVDb250ZXh0KTsKKyAgICB+Tm9kZVJlbmRlcmluZ0NvbnRleHQoKTsKKwor
ICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KKyAgICBDb250YWluZXJO
b2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsgfQorICAgIFJlbmRlck9iamVjdCogcGFyZW50
UmVuZGVyZXIoKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlcigpIGNvbnN0
OworCisgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQo
KTsgfQorICAgIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOworICAgIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IHJlbGVhc2VTdHlsZSgpOworCisgICAgYm9vbCBzaG91bGRD
cmVhdGVSZW5kZXJlcigpIGNvbnN0OworCisgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7
CisKK3ByaXZhdGU6CisgICAgZW51bSBUcmVlTG9jYXRpb24geworICAgICAgICBMb2NhdGlvbk5v
dEluVHJlZSwKKyAgICAgICAgTG9jYXRpb25MaWdodENoaWxkLAorICAgICAgICBMb2NhdGlvblNo
YWRvd0NoaWxkLAorICAgIH07CisKKyAgICBlbnVtIEF0dGFjaFBoYXNlIHsKKyAgICAgICAgQXR0
YWNoU3RyYWlnaHQsCisgICAgICAgIEF0dGFjaENvbnRlbnRMaWdodCwKKyAgICAgICAgQXR0YWNo
Q29udGVudEZvcndhcmRlZCwKKyAgICB9OworCisgICAgVHJlZUxvY2F0aW9uIG1fbG9jYXRpb247
CisgICAgQXR0YWNoUGhhc2UgbV9waGFzZTsKKyAgICBOb2RlKiBtX25vZGU7CisgICAgQ29udGFp
bmVyTm9kZSogbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7CisgICAgU2hhZG93Um9v
dCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290OworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9z
dHlsZTsKK307CisKK2NsYXNzIE5vZGVSZW5kZXJlckZhY3RvcnkgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE5vZGVSZW5kZXJlckZhY3RvcnkpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IE5vZGVSZW5kZXJlckZhY3RvcnkoTm9kZSopOwor
CisgICAgY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHQ7IH0KKyAgICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKKworcHJp
dmF0ZToKKyAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKTsKKworICAg
IE5vZGVSZW5kZXJpbmdDb250ZXh0IG1fY29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29u
dGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5o
CmluZGV4IDA3Yjc4Zjc2MDQ1NTJhMWZmNGZhY2QwMzFhNWExYjQ0MTUzYjcyYTUuLjA5ZmRiNDIw
Mzg5YzA3ODk0ODY0ODQzOTY5MThmZDIwY2RmMWQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGFnLW5hbWUgY2hlY2tpbmcgb25j
ZSA8Y29udGVudD4gaXMgcmVhZHkuCiAgICAgLy8gU2VlIGFsc28gaHR0cDovL3dlYmtpdC5vcmcv
Yi81Njk3MwogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KSB7IHJldHVybiAwOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggYjcxMDBmZWM0MGI2NjM1
MWE2ODQzM2U3ZDRmOGU5MjdmMTdiNzRlMC4uYjk2OGYwNTE2YTY1ODU0YzU5MmI3OTkwNDU5NWY5
ZDk1ZTdjODYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
IlRleHQuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJOb2RlUmVu
ZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dC5oIgogCkBAIC0xODksOSArMTkwLDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBU
ZXh0OjpjbG9uZU5vZGUoYm9vbCAvKmRlZXAqLykKICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50
KCksIGRhdGEoKSk7CiB9CiAKLWJvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSAqc3R5bGUpCitib29sIFRleHQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFDaGFyYWN0ZXJEYXRhOjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKSkKKyAgICBpZiAoIUNoYXJhY3RlckRhdGE6OnJlbmRlcmVySXNOZWVkZWQo
Y29udGV4dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgb25seVdTID0gY29u
dGFpbnNPbmx5V2hpdGVzcGFjZSgpOwpAQCAtMjAzLDcgKzIwNCw3IEBAIGJvb2wgVGV4dDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCiAgICAgaWYgKHBhci0+aXNUYWJsZSgp
IHx8IHBhci0+aXNUYWJsZVJvdygpIHx8IHBhci0+aXNUYWJsZVNlY3Rpb24oKSB8fCBwYXItPmlz
VGFibGVDb2woKSB8fCBwYXItPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgIGlmIChzdHlsZS0+cHJlc2VydmVOZXdsaW5lKCkpIC8vIHByZS9wcmUtd3JhcC9w
cmUtbGluZSBhbHdheXMgbWFrZSByZW5kZXJlcnMuCisgICAgaWYgKGNvbnRleHQuc3R5bGUoKS0+
cHJlc2VydmVOZXdsaW5lKCkpIC8vIHByZS9wcmUtd3JhcC9wcmUtbGluZSBhbHdheXMgbWFrZSBy
ZW5kZXJlcnMuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIFJlbmRlck9iamVjdCAq
cHJldiA9IHByZXZpb3VzUmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IGM5NzgzNDNkM2UxZGFj
ODU5YTAzZjZlNGQ3YjMyNzc0Y2IxZWY2OTcuLjNjYzhjNTAyYTQzYjcwYTMzYjVhMzAzOWZkMWQz
ZTAzMWI1MDQ1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBu
b2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUo
Ym9vbCBkZWVwKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUo
U3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93
ZWQoTm9kZVR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcAppbmRleCBjNzk5NWI1NmI0OTZkNDM3YTViZWRjMDRiMzJlZmU2MDcxMTczMDhiLi44NTIw
YzJjN2NhNjE5YWEyMThmZTMzNjlkNTk0MDA2MTI0MjdlMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApAQCAtMTAwLDEyICsxMDAsMTEgQEAgdm9pZCBIVE1M
QXBwbGV0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAgSFRNTFBsdWdJbkVsZW1l
bnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0KIAotYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxBcHBsZXRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0
KQogewogICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShjb2RlQXR0cikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBIVE1MUGx1Z0luRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7CisgICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnRleHQpOwogfQogCiBSZW5kZXJPYmplY3QqIEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFwcGxldEVsZW1lbnQuaAppbmRleCAwZjNhYWQ4NjkwOTA2MTI3MDYyYTgyYWNiNGQx
OTVhMjE1YWY1Y2I3Li44NGNlNjE4M2YzZWE4OWQxYjI5YWUyMGMzYzA2YmY4NWViYWZlOWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNp
bmdDaGlsZHJlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDQwYTlh
MWJiODg2ODA3ZDQ5MmZkZTZjYWFmNzZiZWQ2MzZhZjRkZTcuLjRlOGJhNmYzZjY0YmQyYWEzYmIx
YjY1YWVlMGM0Zjk5YWFlNDYyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC03NjksNyArNzY5LDcgQEAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEVsZW1lbnQ6
OmNoaWxkcmVuKCkKICAgICByZXR1cm4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBOb2Rl
Q2hpbGRyZW4pOwogfQogCi1ib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlICpzdHlsZSkKK2Jvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGhhc0xvY2FsTmFtZShu
b3NjcmlwdFRhZykpIHsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUo
KTsKQEAgLTc4NSw3ICs3ODUsNyBAQCBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlICpzdHlsZSkKICAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIo
KS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBs
dWdpbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBTdHls
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1M
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSog
c3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggNWE1ZmRmYjY3NDk1YTIwNjI4
MGQwZWYzYjNjZTE5NmY4NTNiZWI1YS4uOWM0MDdlMThjNTI0Mzg4NGEyZGZkYTZjYzhjNGU3OTQ5
YTQzMTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGllRm9yYmlkc0luc2VydEhUTUwoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmly
dHVhbEZvcm0oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5k
ZXggYjI4MGRhZDkwNjExYmVlYTk4NDNmY2M5YmU4ZTRkZGY4YTMxNTI4ZC4uMzhiMjQxNjBiYWU2
NDlmMWRhMDNkOGU1YmM1MTM5Y2QyOWJlMjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwCkBAIC0xODMsMTAgKzE4MywxMCBAQCB2b2lkIEhUTUxFbWJlZEVsZW1l
bnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlv
bikKICAgICBsb2FkZXItPnJlcXVlc3RPYmplY3QodGhpcywgbV91cmwsIGdldEF0dHJpYnV0ZShu
YW1lQXR0ciksIG1fc2VydmljZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKIH0KIAot
Ym9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHls
ZSkKK2Jvb2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoaXNJbWFnZVR5cGUoKSkKLSAgICAg
ICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUp
OworICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb250ZXh0KTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEhUTUxFbWJlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUp
OworICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnRleHQpOwogfQogCiB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKaW5kZXggODYzYzA5YmVlNGVi
YWU5NmQ3ZjU4NTk1MmQzMGMyNzhjYTliNjlmYi4uYjlkYzc5ODk3MTEzZDcxYTlkZjE4YTYzZjlh
YmExYTBiZjUzYzk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDUyYmZkYTMwMGViNDljNzJiNzRl
NzEzMTk1OTIxMzk4MDEwMDRkNGMuLjA2YTdkNjU2NjU2MGE3ODU0NDI3MTUxNGQyNmU4ZGMxMmFi
ZjcwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgpAQCAtMTA0LDEwICsx
MDUsMTAgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1Xb3VsZEhhdmVTZWN1cmVTdWJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVS
TCh1cmwpLnByb3RvY29sSXMoImh0dHBzIik7CiB9CiAKLWJvb2wgSFRNTEZvcm1FbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgSFRNTEZvcm1FbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmICghbV93YXNEZW1vdGVkKQotICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29udGV4dCk7CiAKICAgICBDb250YWluZXJOb2RlKiBub2RlID0gcGFyZW50
Tm9kZSgpOwogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBpZiAoIXBhcmVudElzVGFibGVFbGVtZW50
UGFydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBFRGlzcGxheSBkaXNwbGF5ID0gc3R5
bGUtPmRpc3BsYXkoKTsKKyAgICBFRGlzcGxheSBkaXNwbGF5ID0gY29udGV4dC5zdHlsZSgpLT5k
aXNwbGF5KCk7CiAgICAgYm9vbCBmb3JtSXNUYWJsZVBhcnQgPSBkaXNwbGF5ID09IFRBQkxFIHx8
IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFIHx8IGRpc3BsYXkgPT0gVEFCTEVfUk9XX0dST1VQCiAg
ICAgICAgIHx8IGRpc3BsYXkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFC
TEVfRk9PVEVSX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfUk9XCiAgICAgICAgIHx8IGRpc3Bs
YXkgPT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ09MVU1OIHx8IGRp
c3BsYXkgPT0gVEFCTEVfQ0VMTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5k
ZXggMzEwMGY2N2FkZmUxY2M2ZWFlY2FmNGFjZDA3NjYzYzc0ODI2MTRlYS4uNTY0NzcyZTczYmNm
OTZhNDQ5OTM4YWEyOGUxMTI1MmMyYzFmYTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1M
Rm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmly
dHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5j
cHAKaW5kZXggYThjMjY0NTliY2E3NzU1MjU4YmE5ZmRmNTJkYzgxMWFiOWE0NzEyZi4uMzRlZGU4
ZGY4YTFmOGU2MjdkM2VmZGRlOTViM2VhYTc4MzU2YTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFBhc3NSZWZQdHI8SFRNTEZy
YW1lRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRnJhbWVFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopCitib29sIEhUTUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKQogewogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5
LCBmcmFtZXMgcmVuZGVyIGV2ZW4gd2hlbiBkaXNwbGF5OiBub25lIGlzIHNldC4KICAgICByZXR1
cm4gaXNVUkxBbGxvd2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCmlu
ZGV4IDY2ZmNjZjMzM2JiM2Q0ZjVkOGExOWM3YzgwODM1NzU5MzBkOGZmYTIuLjNiMDc2MWE3YWIy
MzE3NTE2MWJhZTU3NmI1OTJlMmJhYzRhMzFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyZjM3NWNiY2EyNmVkODczNzQxNDk3M2E3ODdmYjQw
MTU2YzQ3YzM0Li44YjczMTg0MDQyYjE5MzM0MzJlMzk2YzMxNTE4YWM4ZWJlMTZlNmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJSZW5kZXJGcmFtZVNldC5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xNDcsMTEgKzE0OCwxMSBAQCB2b2lkIEhUTUxGcmFt
ZVNldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1ib29sIEhU
TUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQor
Ym9vbCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5LCBmcmFt
ZXMgcmVuZGVyIGV2ZW4gd2hlbiBkaXNwbGF5OiBub25lIGlzIHNldC4KICAgICAvLyBIb3dldmVy
LCB3ZSBkZWxheSBjcmVhdGluZyBhIHJlbmRlcmVyIHVudGlsIHN0eWxlc2hlZXRzIGhhdmUgbG9h
ZGVkLiAKLSAgICByZXR1cm4gc3R5bGUtPmlzU3R5bGVBdmFpbGFibGUoKTsKKyAgICByZXR1cm4g
Y29udGV4dC5zdHlsZSgpLT5pc1N0eWxlQXZhaWxhYmxlKCk7CiB9CiAKIFJlbmRlck9iamVjdCAq
SFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBS
ZW5kZXJTdHlsZSAqc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oCmluZGV4IGYyZjg0Mzk3NzZlNzg1MjdiNDBiOWY2Zjc0ZTYzMjlkMzBlMGYwNzguLjdmYzQ0
NWNhNzRhM2JiN2EwOTljYTI1NjEyZjQ5NTc1YmE3ZmQ0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCmluZGV4IDA2YWYwOTM2Yjc4ZGNiOTlmNzI5N2I1MTNkZDE3ODA2M2Iz
ZTUzMzMuLjEzMzNjOGU5OTlhMDhlNTAzYWJjMTJiMTA5NjY3ZWExMzgwODFjNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlbmRlcklGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzEsOSArMTMyLDkg
QEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CiAKLWJvb2wgSFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
aXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOworICAgIHJldHVybiBp
c1VSTEFsbG93ZWQoKSAmJiBjb250ZXh0LnN0eWxlKCktPmRpc3BsYXkoKSAhPSBOT05FOwogfQog
CiBSZW5kZXJPYmplY3QqIEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaAppbmRleCA2MWNkNmI2OGVkNjQ4YTMyMjU5ZWY0NTdiZWU0ODgwNTczMGYzNzI2Li5k
YzUyMmM1NjM1MDZiNTdiYmNhNjA5Zjk3Njg4Y2VlYjI4NDM3ZGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAyNTYyZmM2ZTNlMTA2MmMxZmRlYzljN2Yx
Mjc0YTc0YjE5NTUxODIxLi5iOWRjMTJiNzZhMWM3ZjdlNTA4NWE4Nzc3MjJlMjUxNDExMzllZmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTcyMyw5ICs3
MjMsOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAg
ICAgfQogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBtX2lucHV0
VHlwZS0+cmVuZGVyZXJJc05lZWRlZCgpICYmIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGU6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmVu
ZGVyZXJJc05lZWRlZCgpICYmIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnJlbmRl
cmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDM4YmQ2Yzg2NWE3YzE3
ZjcwZDM3Njc4YmIyYjg4MTQxOGU4MmQxMWQuLmVhNjI4MDkxN2RkOGNhOTBjNmE0NGFhMmVjYmNj
OTBjOThiMDQ2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0x
NTcsNyArMTU3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5IYXZlU2VsZWN0aW9uKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDJhYjA4ZWZhZWFhMjVhOTQ2
OGE1ZDFmNzk1NTE1ZmFlMGUwY2M4MDQuLmE2ZDJkZWZmZTYwZDE1ZmM4NGFmMjQ4YzVlODM1Y2Zk
NDJlN2JmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
MzEzLDE3ICszMTMsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBVTlVTRURfUEFSQU0oc3R5bGUpOworICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiB0cnVlOwogI2Vsc2UKLSAgICByZXR1cm4gY29udHJvbHMoKSA/IEhUTUxFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKSA6IGZhbHNlOworICAgIHJldHVybiBjb250cm9scygpID8g
SFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCkgOiBmYWxzZTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGY5ZTkzYjRjN2I0
MTU0ZGQ1YmZkZTc3OWFkNzcyMWZhNzc2ZGNhZDUuLjdlMGI4MWQzOGVhMDg2ZTczZDIwMWRjOTlk
MDgzYmI4YTY3MTFhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0yMjAsNyArMjIwLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyk7Ci0gICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTm9TY3JpcHRFbGVtZW50LmgKaW5kZXggOWEzYjkyZDM4YmQ1ZDAzYWQ5N2RhMzdkZGI0YjFk
ZmM2ZjczZjZjNi4uMDlkZTIwMzI2MGU5MDhmNGRlZGUyNTlhZDc2NTNhMTNmMDQ2NjYyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lk
IHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqKSB7ICByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyAgcmV0dXJuIHRy
dWU7IH0KIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKaW5kZXggYmI2NDgwZTYwZGUzYzdlYWI4MjE4ZWUzMDQ3OGRmNjU2MDcyMmFi
YS4uM2JlMDA5ZDYxOTJiN2RjNDcwZGYxNzhmYjc2NTNhYzAyYTIwZjc3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTMwMCwxNCArMzAwLDE0IEBAIHZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbiBw
bHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICAgICAgcmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiB9
CiAKLWJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKQorYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVj
ayBzaG91bGQgbm90IGJlIG5lZWRlZCwgZGV0YWNoZWQgZG9jdW1lbnRzIG5ldmVyIHJlbmRlciEK
ICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogdm9pZCBIVE1MT2JqZWN0
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCmluZGV4IDY0MWU1MGU3N2U4NGIwMTM3ZmYwMDhjZjViMjE2NWYwMmQ4OTM1
NzYuLjE4YmM3ZjU0M2U0OGEyYTg1NmZkYmZjZTQ1NjEyM2MzMmI0ZDc1NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKIAotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQg
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAppbmRleCBhNThlOTU3NmYw
MjYwOWJmM2U4YWJhYzcxNDFjYWU3Zjg1YzdhYjc0Li5iNzc3N2E2NTA3YzJjZjliOTI0YmQzOTc3
MWI2NjgwNjBhNjYzYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyU3R5
bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5oCmluZGV4IGMxNzkxZDcwMDlmMjI2ODg5Y2I2MDc0YWFmZjIyZmNlZTgyYWUzZTQu
LjIyY2UxYjYyYTE3MTBiODRhY2UzZGU0MmRkMGYxYzYyZjVmNGVhOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzRm9jdXNhYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA1YjdmNDJkZWE0
NjE0ODk0MmVmY2E3ODgwYzUwZDJjMGNlYWEwNDhjLi41OTAyN2E0MWM3MDk0NTYyNzNhYzkwMDk4
OThlMmJkZmFmMGVmZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTU1LDkgKzU1LDkgQEAgUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlk
ZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
Ym9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHls
ZSkgCitib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIAogewotICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7IAorICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb250ZXh0KTsgCiB9CiAKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDU3YjcwZWExYWIy
YmI3MWIxMTZiMjNhNzc5ZjE0NzM2NjA2ZDkxYmQuLjQ1MDQzOGEyZGZhZGU2ZDMxYzNhOWU2ZWEw
ZjQyYWRhYmExMTg0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFZpZGVvRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICNpZiAhRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCmluZGV4IDFkOGE2ZTY4
ZWNmMTlhY2M4ZjkzOWFhZmQzNTRmZGQ4YTc4YTdhZDMuLmQ0ZmRkZDMwZjc1NDA0OGVhYzI3MTA1
MGVjNDk1NTNmOWZkMTgxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgUmVuZGVyT2JqZWN0
KiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHkKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRGV0YWlsc01hcmtlcih0
aGlzKTsKIH0KIAotYm9vbCBEZXRhaWxzTWFya2VyQ29udHJvbDo6cmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSogc3R5bGUpCitib29sIERldGFpbHNNYXJrZXJDb250cm9sOjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVy
biBzdW1tYXJ5RWxlbWVudCgpLT5pc01haW5TdW1tYXJ5KCkgJiYgSFRNTERpdkVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBzdW1tYXJ5RWxlbWVudCgpLT5pc01h
aW5TdW1tYXJ5KCkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRGV0YWlsc01hcmtlckNvbnRyb2w6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rl
dGFpbHNNYXJrZXJDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxz
TWFya2VyQ29udHJvbC5oCmluZGV4IDNjNWIwOWRmMjQ2NDU5MTNkMTMwNGQ5YzA3YzU4ZjRmNmMw
YzFhNWMuLjFhYTE0Y2FiM2RkMTc5YWMxNGJmMzE2OWE5ZmE0YTczNGI4NmE1ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICBI
VE1MU3VtbWFyeUVsZW1lbnQqIHN1bW1hcnlFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAppbmRleCBhNWViNzBiNTg1YTk1
NGE2ZTNlNGExNzg1MjE3MTM5OGY3N2NlODJlLi42MGRjN2JmNjMwYzdmNjM2ZmU0NjRmNmVjM2Vl
YjkzODg5MWQwOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRl
clNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVy
U2hhZG93RWxlbWVudC5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCBIVE1MTWV0ZXJFbGVtZW50KiBN
ZXRlclNoYWRvd0VsZW1lbnQ6Om1ldGVyRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxNZXRlckVsZW1lbnQqPihub2RlKTsKIH0KIAotYm9vbCBNZXRlclNoYWRvd0Vs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBNZXRlclNo
YWRvd0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgUmVuZGVyTWV0ZXIqIG1ldGVyUmVuZGVyZXIgPSB0b1JlbmRlck1l
dGVyKG1ldGVyRWxlbWVudCgpLT5yZW5kZXJlcigpKTsKLSAgICByZXR1cm4gbWV0ZXJSZW5kZXJl
ciAmJiAhbWV0ZXJSZW5kZXJlci0+dGhlbWUoKS0+c3VwcG9ydHNNZXRlcihtZXRlclJlbmRlcmVy
LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gbWV0ZXJSZW5kZXJlciAmJiAhbWV0ZXJSZW5kZXJlci0+
dGhlbWUoKS0+c3VwcG9ydHNNZXRlcihtZXRlclJlbmRlcmVyLT5zdHlsZSgpLT5hcHBlYXJhbmNl
KCkpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE1ldGVyQmFyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApp
bmRleCA5MzYyNmRmNWUyNWIxN2E2NmY5ZTVkNGNkODI1ZTQzYzU5ZTVhZWRjLi5jMzZiMDFiMjQz
ZGI5ZGY2ZmEwNzViYzFiYjZlNGQ1YjY0MjcwNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgSFRNTE1ldGVyRWxlbWVudCogbWV0ZXJFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogfTsKIAogY2xhc3MgTWV0ZXJCYXJFbGVtZW50IDogcHVibGljIE1ldGVyU2hhZG93RWxlbWVu
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dF
bGVtZW50LmNwcAppbmRleCAxY2VkZDBkY2ExMmYyM2RiYTRlZDE2YjhhZDM3ZmUxMTMzYmQzY2Zj
Li5jMGNiYjk1MDhkZGViYzc2ZDkwMzA0ZTI0N2E5Nzg1NTAyMjZjZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKQEAg
LTUyLDEwICs1MiwxMCBAQCBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBQcm9ncmVzc1NoYWRvd0VsZW1l
bnQ6OnByb2dyZXNzRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQ
cm9ncmVzc0VsZW1lbnQqPihub2RlKTsKIH0KIAotYm9vbCBQcm9ncmVzc1NoYWRvd0VsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBQcm9ncmVzc1NoYWRv
d0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBwcm9ncmVzc1JlbmRlcmVyID0gcHJvZ3Jlc3NF
bGVtZW50KCktPnJlbmRlcmVyKCk7Ci0gICAgcmV0dXJuIHByb2dyZXNzUmVuZGVyZXIgJiYgIXBy
b2dyZXNzUmVuZGVyZXItPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSAmJiBIVE1MRGl2RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHByb2dyZXNzUmVuZGVyZXIg
JiYgIXByb2dyZXNzUmVuZGVyZXItPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSAmJiBIVE1MRGl2
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBQcm9ncmVzc0JhckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKaW5kZXgg
YTEwNmJmODcyMzg2NTk0MDkxMTk4MGI5YzkxYmMyZjNmNTYwNDRhNS4uZTEzNWM3MWRhYTQxZjll
NmVmM2IzNjRlZjkxODhhMzFjZDUxN2FhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGlj
OgogICAgIEhUTUxQcm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzRWxlbWVudCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKTsKIH07CiAKIGNsYXNzIFByb2dyZXNzQmFyRWxlbWVudCA6IHB1YmxpYyBQcm9ncmVz
c1NoYWRvd0VsZW1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rlc2NF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaAppbmRleCAzMmE3
YWQwMjE0NDczZDJmMzM5MTlmNWE0NDY4NDY5MmY5ZTRmZTk1Li5lYWU3NjdlZDZjOTUzZGEyYTVi
ZTUzODRkMDU5YTgyM2JjNTcxOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RGVzY0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaApA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0Rlc2NFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1
cm4gZmFsc2U7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCmluZGV4IDVlNWFiZjhkZTUzNzM5MGJhOGU1NmFjM2FhODAxNDBlMTYwMDQxZTEuLmU3
YzEwNmJhY2MwODhiNWVhMzcxZDY3ODdhMTA4OTUwY2Q0NTZhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWQoU3RyaW5nSW1wbCogZmVh
dHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAK
aW5kZXggZmU1ZDA5Yzk5YjNiMWE4ZjYxOGY2ZWNlMzkwNjQyY2E1MDVhMDQxZi4uMzExMTNkNjJi
ZjU0NDhjNzlmODRhZWJjYTA0YmJmZjcyNTM1N2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAK
QEAgLTE2OCwxMCArMTY4LDEwIEBAIFJlbmRlck9iamVjdCogU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSoKICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUodGhpcyk7CiB9CiAK
LWJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpyZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0KQogewogICAgIGlmIChwYXJlbnROb2RlKCkgJiYgKHBhcmVudE5vZGUoKS0+aGFzVGFn
TmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkpCi0gICAgICAgIHJldHVybiBTVkdTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIFNWR1N0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggNzk1YmMxMWFmNmM2NDIyZWRjZmM5OGZkNzEwNGIxNGRj
ODVlOTlhZS4uNDhhZmEzMmJlYzU5M2FiNDQyYmJkOWQ0MWFmYWUxODY0NjdlMjk0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc0ZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWCwgeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKaW5kZXgg
OTQzNWNjNzA1NGY0N2NjN2Q0YWQ4NzU3NzI2OWZiMjMyMzM5YWZlNy4uNjIyNzY2YTM1NWE2Yzll
MzRkMGU1OTJkNzE3Y2VhMzJjMWU5YTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9ICAKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0
dXJuIGZhbHNlOyB9ICAKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5k
ZXggOTk1NTgwMDE0YjNmMzEzZjk5NzZkOWQ0MDA0MzMyZWQ0NDMwMGFlYi4uZGJmN2U5ZmYxMTNk
YjdjNWY4N2FlOWIwZmQ1MzJiNTJkYjA5MjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQu
Y3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdHRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcih0aGlzKTsKIH0K
IAotYm9vbCBTVkdHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopCitib29s
IFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JikKIHsKICAgICByZXR1cm4gcGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVt
ZW50KCk7IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAppbmRleCBjMzA2ZjRhNmY2ZTk0Njdm
ODg0NzcwN2RhYjU0NGQ1NjE1Y2M2OWM1Li4zMTlhZjI3ODJiNTJhZWY5NTgwZmJkNzMzMDdkYTY1
MzE1N2FjMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAppbmRleCA5NDRhZDI3MmE0MTY5
OGQwNmM4Yjc3NzA1MzUxYWY5NDU2YWMwMzkyLi41YWQwODlhMGJkNjkyYjZhNDhmNDI5OTIxZTY5
OTU5OGU5ZWYxMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVHbHlwaENhY2hl
KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCmluZGV4IDBkZWZjYmJiOTdh
YzNiZmU1MDM5YjZhY2VlN2E5NjYyYjA3YWZiYjguLmJjN2I0ZTgzZmM0NWZlZDA0Y2ExM2IxYjA3
OGZiNWUzYWM5Y2FiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCi0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCmluZGV4IDI0Y2U2MjQ2ZDE5NzNlN2M5
N2E1NjdmN2QxZWJmNDI4ZTQ2MzUwNGIuLmZiNzZlZjg0ZWEyZGY5ZmNhNjk1M2NhNWM4OWI5NGM4
ZGE4YWIyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0
ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNz
aW5nR2x5cGhFbGVtZW50LmgKaW5kZXggNTI4YzUzYzUzZGExZjQ2YTQ2ZTdiYTY5NDYxYzYxMjk5
NDkwYjIxZi4uZjJhMTc2ZWY4NGViNzljMTlhM2ZlNzQ5MTFiYTM5Zjg4MDQ0MGFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmgKaW5kZXggZWRiNTZkN2I2ZjAwYjg3M2U2Y2Q0MzVmNmU5Y2ZhNDAxYmJkYTQ1Yy4uZDQxY2Mw
NjkyYWMwYmNiMTNlMjljNzA4OTE3Njc1NzY2MDMzMDI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJu
IFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7IH0KICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMGU0YTFiYjQ5MGNjOGJiOGU0MGFiNjAz
MDg1MTEzYzA3ODkwZDM3ZS4uNDMyNzYzYTA3MWNlZGU1NGM0OGRmYjJiMDllZjM4M2Q2MTFiMTgx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtMTE4LDcgKzEx
OCw3IEBAIFN0cmluZyBTVkdTdHlsZWRFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi1ib29sIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL1NWRy9leHRlbmQuaHRtbCNQcml2YXRlRGF0YQogICAgIC8vIFByZXZl
bnQgYW55dGhpbmcgb3RoZXIgdGhhbiBTVkcgcmVuZGVyZXJzIGZyb20gYXBwZWFyaW5nIGluIG91
ciByZW5kZXIgdHJlZQpAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgLy8gd2l0aCB0aGUgU1ZH
IGNvbnRlbnQuIEluIGdlbmVyYWwsIHRoZSBTVkcgdXNlciBhZ2VudCB3aWxsIGluY2x1ZGUgdGhl
IHVua25vd24KICAgICAvLyBlbGVtZW50cyBpbiB0aGUgRE9NIGJ1dCB3aWxsIG90aGVyd2lzZSBp
Z25vcmUgdW5rbm93biBlbGVtZW50cy4gCiAgICAgaWYgKCFwYXJlbnROb2RlKCkgfHwgcGFyZW50
Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCmluZGV4IDY1Yjk1MjU4MDBhZGEyYTJhYjRlYzhkNWUz
ZWUwZTU3MzVmOTc5ZTMuLjZmZTBmNGM1ZTQ4Mjk4Nzg3ZjcyODE1YjUxZDBjZmRiMWRjMmE3ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaApAQCAtNjMsNyArNjMsNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6IAogICAgIFNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25z
dCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuaAppbmRleCA4ZjNmMjUxZTg2NTQ5MTFkOWZjMzFiMzM4NmQ5MmVk
ZmM5YmVhZjU1Li45NTQzYzI3ZGEzNzdjZWJmZDBhYTVjMWNiZDhkZjQ3N2ZlZDhlNTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IDI4NzllZWE3MDE5OTZkNjBhNjlmOTM4M2Vi
ZDYzNDA0NGM3MGVmZjkuLjkxYjAzN2Q5NTAzMDQ1ZGYzYWU2OTYxMzJkOWE5MjNlMjdlZDJkYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBA
IGJvb2wgU1ZHVFJlZkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hp
bGQpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNWR1RSZWZFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgU1ZHVFJlZkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKHBhcmVudE5vZGUoKQogICAgICAgICAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdO
YW1lKFNWR05hbWVzOjphVGFnKQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgU1ZHVFJlZkVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICAgICAgICAgfHwg
cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKQogICAgICAgICAgICAg
fHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0UGF0aFRhZykKICAgICAg
ICAgICAgIHx8IHBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dHNwYW5UYWcpKSkK
LSAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwor
ICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5k
ZXggMmU3ZDAwNTcxM2FhZGNlNjVhMjNiMWQzOWZiOTk4N2NkYTA5NDQ0Yy4uODk0MmJjZGE5Nzdk
ZThlMzM4MDk2YWZiNmQ5MzQ3NmUyYTliZTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAg
IHZvaWQgdXBkYXRlUmVmZXJlbmNlZFRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5F
bGVtZW50LmNwcAppbmRleCAwYjk2NDY1ZWIzN2NhN2NiYzFiZWU5NDY0YTM3OGFjYzdhMjU2OTI0
Li43Yjc2MmY1MjA3Mzg5NmRjMGVkMWY5ZTdjMzk2N2FhOGI5NmMzZDliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcApAQCAtNTksNyArNTksNyBAQCBib29sIFNWR1RTcGFu
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU1ZHVFNwYW5FbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgU1ZHVFNwYW5FbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChw
YXJlbnROb2RlKCkKICAgICAgICAgJiYgKHBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1l
czo6YVRhZykKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgp
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0UGF0aFRhZykKICAgICAgICAgICAgIHx8IHBh
cmVudE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dHNwYW5UYWcpKSkKLSAgICAgICAgcmV0
dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAppbmRleCBhYzAyYjU3
YjRkNTg5ZGMzMzczZmY5OTA1ZjE0YjdiYTU1YjEyZDZjLi5lNzE1YmRkZDY1ZGNlZDUzMGJlYmY3
NTM2MDBiYzA5NzZmYjAxMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNw
YW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCkBA
IC0zNSw3ICszNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXgg
YTY3ZDZjOTQ3MGM2NzUyNzdmOGI4NjIyMmVlOWU0YTg3OTZlZmU4OS4uNzU4YjI4YjE0MzEyM2Ey
M2UxNjA1MDlkNzU0ZTFhNGM4ZDJlZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5jcHAKQEAgLTE0MCwxMiArMTQwLDEyIEBAIGJvb2wgU1ZHVGV4dFBhdGhFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNoaWxkKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYg
KHBhcmVudE5vZGUoKQogICAgICAgICAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjphVGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05h
bWVzOjp0ZXh0VGFnKSkpCi0gICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29udGV4dCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBhdGhFbGVtZW50LmgKaW5kZXggYjY5OWQ2MWRmZTQxN2M1NWYwZmU5MmZjZmQ4ODVi
Njk0YjY1NDdkOC4uMTBkNjIzNWI4OTM4ODVkZmY2MzA2MDFjNTliMzJmM2JmZmE2OGE5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaApAQCAtNjcsNyArNjcsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihOb2RlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RpdGxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCmlu
ZGV4IGMxY2VjNDk0NTNjMTJlYTRmZTU1NjMyZTAwZTcxODllMDgzNGUzYWMuLjQ1YmI1YmY4ZTc1
ZDRlMGZlNWIwMGE3MDJiMmExNzYxNTYwYjdlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSog
YWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5F
bGVtZW50LmgKaW5kZXggZDhhOWQxYmM5OTYwOWVlZWE0ODI5NjkxMTIxNTNmMGYyM2NlYTE5OS4u
NzdlYTJmZTc5OWI3NDExYzhhMGY3YzI0YThkZGIwNmE5YzI2ZmNlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWS2VybkVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
RnJvbURvY3VtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaApp
bmRleCBiMzcxNzc0ODhhNjk5ODFjNWIwOTMyOGJlYmY5NWY0Y2U3ZTMxNzZhLi42ZTM3OTE1OTQy
N2FhZDU2NjBhNWY1ZmZlNjQ0ZGM5MjNiOWExZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0Vs
ZW1lbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94361</attachid>
            <date>2011-05-22 21:08:53 -0700</date>
            <delta_ts>2011-05-23 03:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61114-20110523130851.patch</filename>
            <type>text/plain</type>
            <size>79917</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY5MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA3YTlh
ZjQ4NmQxZDhkODc1OTQ5OWVmZmQxMjdjNWRmZmUxNWJmYy4uMmY2MzE3MjlhYmEzNzEwNmZlZGJm
MTU0N2I4NzAxNjVhOGEyODE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU4NSw2ICs1ODUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAogICAgIGRv
bS9PcHRpb25FbGVtZW50LmNwcAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZjNmZmI2ZTY2M2FmMWMwNzFkNDVmY2M0MzZlOTY4ZGQ0NzQwMzBjNi4uNmNkZmI1
OWE2MmM2Y2ZjOGFkNmQwYmE0YmM5Y2NhYWViNGQ2OTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExNCBAQAorMjAxMS0wNS0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFBhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgdG8gTm9kZTo6cmVuZGVyZXJJc05lZWRl
ZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEx
NAorCisgICAgICAgIC0gRXh0cmFjdGVkIE5vZGVSZW5kZXJpbmdDb250ZXh0IGZyb20gTm9kZVJl
bmRlcmVyRmFjdG9yeSwgZ2l2aW5nIHNlcGFyYXRlIGZpbGVzIHRvIGl0LgorICAgICAgICAtIENo
YW5nZWQgc2lnbmF0dXJlIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSAKKyAgICAgICAg
ICB0byByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikuCisgICAg
ICAgICAgVGhlIHN0eWxlIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBOb2RlUmVuZGVyZXJGYWN0
b3J5OjpzdHlsZSgpCisgICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHJlbmRlcmVySXNOZWVkZWQo
KSB0byBhY2Nlc3MgY29udGV4dHVhbAorICAgICAgICAgIGluZm9ybWF0aW9uIGxpa2UgYXR0YWNo
aW5nIHBoYXNlIGFuZCByZW5kZXJpbmctcGFyZW50LgorICAgICAgICAKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhcmFjdGVyRGF0YTo6dXBkYXRlUmVuZGVyZXIpOiBQYXNzIHVucmVzb2x2ZWQgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIHRvIHJlbmRlcmVySXNOZWVkZWQoKQorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogZG9tL0NoYXJhY3Rl
ckRhdGEuaDoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9F
ZGl0aW5nVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nVGV4dDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogZG9tL0VkaXRpbmdUZXh0Lmg6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnJlbGVhc2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpwYXJlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5Ojpjb250ZXh0KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICogZG9tL1RleHQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTm9T
Y3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9s
LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSEtlcm5F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RpdGxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWS2VybkVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wNS0yMCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjg2OTIwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDlkZmZlMjQ0
MDJiNTI0OTViMzc4ZGQ4NzFlYjc4Y2Q4YWQ1MmVkNy4uYTZkNmFiYTc1YmM0YTI0MWIzMWI4ZDk3
YzJhMTkwOGRjZmQzNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMTgy
LDExICsxMTgyLDEzIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L05vZGVGaWx0ZXJDb25kaXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL05vZGVJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJTdHlsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdpdGhJbmRleC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhZTA1
ZWNkMjA4MDY4M2ZkMDc4MDU5NmQxZmEwN2IxODY0NTEzMDRmLi4wOGJjYWI2YTY0ODBmM2Q2ZTY5
NjNjYmNjOWYyYWY3NmYxMmQ1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTAzLDYgKzI1MDMs
OCBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdk
b20vTm9kZUl0ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCisg
ICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAn
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVy
U3R5bGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVXaXRoSW5kZXguaCcsCiAgICAgICAgICAg
ICAnZG9tL05vdGF0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDdjZWU4MzAyMjM1YjgwYmM5
MzdlM2VkMGNkOWRjZmU3NjIzODY2Y2QuLjIxYjU4NzUzYjc2NjFlOWEzZmY3Mjc3NWE2ZGU1MTYy
ZDVmZjUwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01MDgsNiArNTA4LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIFwKICAgICBkb20vTm9kZUZpbHRlci5j
cHAgXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwIFwKKyAgICBkb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIFwKICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBF
bGVtZW50LmNwcCBcCiAgICAgZG9tL09wdGlvbkVsZW1lbnQuY3BwIFwKQEAgLTE0ODYsNiArMTQ4
Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9Ob2RlRmlsdGVyLmggXAogICAgIGRvbS9Ob2Rl
LmggXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuaCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vT3B0aW9uRWxlbWVudC5oIFwK
ICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4N2MzODYyNzUxMDQwY2E5MTk1MTA3NjlkMDQ2
NzRlMmZlNjgxZjQ4Li5hOGM0OTdkNzM2MWQ3OGEwZmE1ZWVlYzE5MTNlMjYxZjY2Mjg5M2JjIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDUz
NDIsNiArNDUzNDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCIKKwkJCQk+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxOb3RhdGlvbi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDEyMGEyMjc0MTViMGZiY2ViZjUyMWFmMjQxZGI5OWI4NzU3NDcwN2EuLjY2OGQ2YmQ3
ZjBiNzc2MzYwODdmMDJmMmFkMWY2MTExNjMxMzkyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNDgsNiArMzI0OCw4IEBA
CiAJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3REJGOERDMTI3Njkx
OUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCAqLzsgfTsKIAkJQTdGMzM4QTMxMUMw
RUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMzM4QTExMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRv
d0VsZW1lbnQuY3BwICovOyB9OwogCQlBN0YzMzhBNDExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdGMzM4QTIxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKKwkJQTdG
NUQ5NEYxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjVEOTREMTM4NEYwMkQw
MEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CisJCUE3RjVEOTUwMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGNUQ5NEUxMzg0RjAyRDAwQTI5QTg3IC8q
IE5vZGVSZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJCUE4MEEzOEZFMEU1MENDODIwMEEyNUVC
QyAvKiBQYXR0ZXJuQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi87IH07
CiAJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgwRDY3MDcwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZUNHLmggKi87IH07CiAJCUE4MEU2Q0U0MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZD
QkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAgKi87IH07CkBAIC05NzcxLDYg
Kzk3NzMsOCBAQAogCQlBN0RCRjhEQzEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVs
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2luZ0hlbHBl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0YzMzhBMTExQzBFRkNBMDBBMzIw
QTcgLyogU2hhZG93RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFkb3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdG
MzM4QTIxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Y1RDk0RDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Y1RDk0RTEzODRGMDJE
MDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTm9kZVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXR0ZXJuQ0cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODBENjcwNzBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTgwRTZDQkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVmFsdWVMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzQ4LDYgKzE5MzUyLDggQEAKIAkJCQlB
ODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKIAkJCQk4NUFDQTlGQTBB
OUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAogCQkJCTYzMTg5QUUyMEU4M0EzMzMw
MDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLywKKwkJCQlBN0Y1RDk0RDEzODRGMDJEMDBBMjlB
ODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwICovLAorCQkJCUE3RjVEOTRFMTM4NEYwMkQw
MEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICovLAogCQkJCTYzRDdCMzJDMEU3OENE
M0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLywKIAkJCQk5MzgyQUFCMTBEOEMzODYx
MDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovLAogCQkJCUE4RUE3RUI3MEExOTQ1RDAwMEE4
RUY1RiAvKiBOb3RhdGlvbi5jcHAgKi8sCkBAIC0yMTkxMyw2ICsyMTkxOSw3IEBACiAJCQkJODU0
RkU3MzUwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2Rl
UmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJBQUI0MEQ4QzM4NjEwMEYzNTdB
NiAvKiBOb2RlV2l0aEluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0VCRTBBMTk0NUQw
MDBBOEVGNUYgLyogTm90YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ4MDIsNiArMjQ4MDks
NyBAQAogCQkJCTg1NEZFNzMwMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg1NEZFNzMyMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM0MEEyMjk3QkUwMDU4RDdBRCAv
KiBOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdGNUQ5NEYxMzg0RjAyRDAw
QTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
RUE3RUJGMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMzUwM0NDNzEwMTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXgg
ZTE4MTVkOWQ4OGQzNzU2YjBiNDA3MDM4NWVkYmE4ZTI4MTM3OWExZi4uYTA4OGY0MjRjNzkyMDcw
YmI2ZTdkNTJlMWE3YzUyODE3Nzg1MTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50
LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKIApAQCAtMTgxLDcgKzE4Miw3
IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IG5ld0RhdGEsIHVuc2lnbmVkIG9mCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6dXBkYXRl
UmVuZGVyZXIodW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIGxlbmd0aE9m
UmVwbGFjZWREYXRhKQogewotICAgIGlmICgoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVySXNOZWVk
ZWQocmVuZGVyZXIoKS0+c3R5bGUoKSkpICYmIGF0dGFjaGVkKCkpIHsKKyAgICBpZiAoIXJlbmRl
cmVyKCkgfHwgIXJlbmRlcmVySXNOZWVkZWQoTm9kZVJlbmRlcmluZ0NvbnRleHQodGhpcywgcmVu
ZGVyZXIoKS0+c3R5bGUoKSkpICYmIGF0dGFjaGVkKCkpIHsKICAgICAgICAgZGV0YWNoKCk7CiAg
ICAgICAgIGF0dGFjaCgpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXIoKSkKQEAgLTIxNywxMSAr
MjE4LDExIEBAIGludCBDaGFyYWN0ZXJEYXRhOjptYXhDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCgpKTsKIH0KIAotYm9vbCBDaGFyYWN0
ZXJEYXRhOjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgQ2hhcmFj
dGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgZmFj
dG9yeSkKIHsKICAgICBpZiAoIW1fZGF0YSB8fCAhbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gTm9kZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0
dXJuIE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoZmFjdG9yeSk7CiB9CiAKIGJvb2wgQ2hhcmFjdGVy
RGF0YTo6b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IDM5YTZmYWE2YThkYWVlNjM3ZGI4YTU0ODRhYmY2ZGNhMjJhN2Y4NWMuLjY2MWUx
MTA2Mzc3MjJkMzQ4ZjdmYzg1ZGE0MGY1NWUzOTI2YzEyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVCh0
eXBlID09IENyZWF0ZUNvbW1lbnQgfHwgdHlwZSA9PSBDcmVhdGVUZXh0KTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAK
ICAgICB2b2lkIHNldERhdGFJbXBsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgeyBtX2Rh
dGEgPSBpbXBsOyB9CiAgICAgdm9pZCBkaXNwYXRjaE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCog
b2xkVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggZGYxMDEzOGY2NDE1
M2FlMGE0YTIzMGQxNGQzYTc4YTQ2YzRkYWMwZS4uYTIxMDQ4Yjc5ZTZmNDBkOGVhODMwZjg0YzZk
MmM1ZGZhYzk3ZDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC04OCw2ICs4
OCw3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5jcHAiCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmNwcCIKKyNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAiCiAjaW5jbHVkZSAiTm90YXRpb24uY3BwIgogI2luY2x1ZGUg
Ik9wdGlvbkVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIk9wdGlvbkdyb3VwRWxlbWVudC5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcAppbmRleCBlNDEyYWQ2OWIzMTQxMzEzN2E2NDg0NDYw
YjUwNTZhZDcyMDI1ODEwLi5hM2U3YTRjNTNmOWE0OWMyY2VkODkyZDlmN2QyNGRkOWRhY2Q1ZjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUGFzc1Jl
ZlB0cjxFZGl0aW5nVGV4dD4gRWRpdGluZ1RleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZGEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRpbmdUZXh0KGRv
Y3VtZW50LCBkYXRhKSk7CiB9CiAKLWJvb2wgRWRpdGluZ1RleHQ6OnJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKQorYm9vbCBFZGl0aW5nVGV4dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
ZGl0aW5nVGV4dC5oCmluZGV4IDA4MjIzYzIxNmJkMTkzODZjMzM4ZmQ3ZTI0ZjY5YWUzNjJlOWQ1
ZGQuLjY1MzZjN2IzOGI0MDBhZTk2NmE5Y2U3MDQwNmUxYTk4YzZmOTA0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FZGl0aW5nVGV4dC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFZGl0aW5nVGV4dD4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUg
Kik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKTsKIAogICAgIEVkaXRpbmdUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGQ3MTdjODUyNTQyNTRkN2Y4MzAwMzg2MGZlMzgzMWMy
NzhhNDlhZmEuLmZiN2FhYjk0YzhkOGFhOGEyOWQxZmNhZjU0ZmUzOTc5MmU2NGIwMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKKyNp
bmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKQEAgLTc1LDcgKzc2LDYgQEAKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCi0jaW5j
bHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIK
QEAgLTE0NTksMTgyICsxNDU5LDkgQEAgTm9kZSAqTm9kZTo6bmV4dExlYWZOb2RlKCkgY29uc3QK
ICAgICByZXR1cm4gMDsKIH0KIAotCi1jbGFzcyBOb2RlUmVuZGVyZXJGYWN0b3J5IHsKLXB1Ymxp
YzoKLSAgICBlbnVtIFRyZWVMb2NhdGlvbiB7Ci0gICAgICAgIExvY2F0aW9uTm90SW5UcmVlLAot
ICAgICAgICBMb2NhdGlvbkxpZ2h0Q2hpbGQsCi0gICAgICAgIExvY2F0aW9uU2hhZG93Q2hpbGQs
Ci0gICAgfTsKLQotICAgIGVudW0gQXR0YWNoUGhhc2UgewotICAgICAgICBBdHRhY2hTdHJhaWdo
dCwKLSAgICAgICAgQXR0YWNoQ29udGVudExpZ2h0LAotICAgICAgICBBdHRhY2hDb250ZW50Rm9y
d2FyZGVkLAotICAgIH07Ci0KLSAgICBleHBsaWNpdCBOb2RlUmVuZGVyZXJGYWN0b3J5KE5vZGUq
KTsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSBj
b25zdCB7IHJldHVybiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsgfQotICAgIHZv
aWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwotCi1wcml2YXRlOgotICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQotICAgIHZvaWQgaW5pdGlh
bGl6ZSgpOwotICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0gICAgYm9vbCBzaG91bGRDcmVh
dGVSZW5kZXJlcigpIGNvbnN0OwotCi0gICAgVHJlZUxvY2F0aW9uIG1fbG9jYXRpb247Ci0gICAg
QXR0YWNoUGhhc2UgbV9waGFzZTsKLSAgICBOb2RlKiBtX25vZGU7Ci0gICAgQ29udGFpbmVyTm9k
ZSogbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7Ci0gICAgU2hhZG93Um9vdCogbV92
aXN1YWxQYXJlbnRTaGFkb3dSb290OwotfTsKLQotTm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJl
bmRlcmVyRmFjdG9yeShOb2RlKiBub2RlKQotICAgIDogbV9sb2NhdGlvbihMb2NhdGlvbk5vdElu
VHJlZSkKLSAgICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCi0gICAgLCBtX25vZGUobm9kZSkK
LSAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0gICAgLCBtX3Zpc3Vh
bFBhcmVudFNoYWRvd1Jvb3QoMCkKLXsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgpKSB7Ci0gICAgICAgIG1fbG9j
YXRpb24gPSBMb2NhdGlvblNoYWRvd0NoaWxkOwotICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uTGlnaHRDaGlsZDsKLQotICAgIGlmIChw
YXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdCgpOwotCi0gICAgICAgIGlmIChtX3Zp
c3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIGlmIChDb250YWluZXJOb2RlKiBj
b250ZW50Q29udGFpbmVyID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5hY3RpdmVDb250ZW50
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoQ29udGVudEZv
cndhcmRlZDsKLSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHls
ZSA9IE5vZGVSZW5kZXJlckZhY3RvcnkoY29udGVudENvbnRhaW5lcikucGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fSAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50
TGlnaHQ7Ci0gICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBh
cmVudDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fcGFy
ZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OwotfQotCi1ib29sIE5vZGVSZW5k
ZXJlckZhY3Rvcnk6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUpOwotCi0gICAgaWYgKG1fbG9jYXRpb24g
PT0gTG9jYXRpb25Ob3RJblRyZWUgfHwgbV9waGFzZSA9PSBBdHRhY2hDb250ZW50TGlnaHQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAo
IXBhcmVudFJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9sb2Nh
dGlvbiA9PSBMb2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9PSBBdHRhY2hTdHJhaWdodCkg
ewotICAgICAgICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNoaWxkcmVuKCkgaW4gYSBjYXNl
IG9mIHNoYWRvdyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KLSAgICAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQyMwotICAgICAgICBpZiAoIXBh
cmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCAmJiAhbV9wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdodENoaWxkUmVuZGVyZXJXaXRo
U2hhZG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFt
X3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihtX25vZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0
eWxlKCkKLXsKLSAgICBBU1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgQVNTRVJUKGRv
Y3VtZW50KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKTsKLQotICAgIGlmICghc2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IHN0eWxlID0gbV9ub2RlLT5zdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgaWYgKCFtX25vZGUt
PnJlbmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBtX25vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3Vt
ZW50KCktPnJlbmRlckFyZW5hKCksIHN0eWxlLmdldCgpKTsKLSAgICBpZiAoIW5ld1JlbmRlcmVy
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUtPnJlbmRlcmVyKCktPmlzQ2hpbGRBbGxvd2VkKG5ld1JlbmRlcmVyLCBzdHlsZS5n
ZXQoKSkpIHsKLSAgICAgICAgbmV3UmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotCi0gICAgbV9ub2RlLT5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7Ci0gICAg
bmV3UmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShzdHlsZS5yZWxlYXNlKCkpOyAvLyBzZXRB
bmltYXRhYmxlU3R5bGUoKSBjYW4gZGVwZW5kIG9uIHJlbmRlcmVyKCkgYWxyZWFkeSBiZWluZyBz
ZXQuCi0gICAgcmV0dXJuIG5ld1JlbmRlcmVyOwotfQotCi1SZW5kZXJPYmplY3QqIE5vZGVSZW5k
ZXJlckZhY3Rvcnk6Om5leHRSZW5kZXJlcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGhhc2UgIT0g
QXR0YWNoQ29udGVudEZvcndhcmRlZCkKLSAgICAgICAgcmV0dXJuIG1fbm9kZS0+bmV4dFJlbmRl
cmVyKCk7Ci0gICAgLy8gUmV0dXJucyAwIGhlcmUgdG8gaW5zZXJ0IHJlbmRlcmVyIGF0IHRoZSBl
bmQgb2YgY2hpbGQgbGlzdC4KLSAgICAvLyBXZSBhc3N1bWUgY29udGVudCBjaGlsZHJlbiBhcmUg
YWx3YXlzIGF0dGFjaGVkIGluIHRyZWUgb3JkZXIgYW5kCi0gICAgLy8gdGhlcmUgaXMgbm8gcGFy
dGlhbCByZW5kZXIgdHJlZSBjcmVhdGlvbi4KLSAgICByZXR1cm4gMDsKLX0KLQotI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLXN0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiB3cmFwV2l0aFJlbmRl
ckZ1bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKLXsK
LSAgICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50
LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRvY3VtZW50KTsKLSAgICBmdWxsc2Ny
ZWVuUmVuZGVyZXItPnNldFN0eWxlKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZUZ1bGxTY3JlZW5T
dHlsZSgpKTsKLSAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgZmFpbGVkIHRvIGNyZWF0ZSB0
aGUgbmV3IHJlbmRlciBhbmQgZW5kIHVwIHdyYXBwaW5nIG5vdGhpbmcuCi0gICAgLy8gV2UnbGwg
ZW5kIHVwIGRpc3BsYXlpbmcgYSBibGFjayBzY3JlZW4sIGJ1dCBKZXIgc2F5cyB0aGlzIGlzIGV4
cGVjdGVkLgotICAgIGlmIChvYmplY3QpCi0gICAgICAgIGZ1bGxzY3JlZW5SZW5kZXJlci0+YWRk
Q2hpbGQob2JqZWN0KTsKLSAgICBkb2N1bWVudC0+c2V0RnVsbFNjcmVlblJlbmRlcmVyKGZ1bGxz
Y3JlZW5SZW5kZXJlcik7Ci0gICAgcmV0dXJuIGZ1bGxzY3JlZW5SZW5kZXJlcjsKLX0KLSNlbmRp
ZgotCi12b2lkIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQot
ewotICAgIGlmICghZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJlcigpKTsKLQotICAgIFJlbmRl
ck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCk7Ci0KLSNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNj
cmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09
IG1fbm9kZSkKLSAgICAgICAgbmV3UmVuZGVyZXIgPSB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4o
bmV3UmVuZGVyZXIsIGRvY3VtZW50KCkpOwotI2VuZGlmCi0KLSAgICAvLyBGSVhNRTogVGhpcyBz
aWRlIGVmZmVjdCBzaG91bGQgYmUgdmlzaWJsZSBmcm9tIGF0dGFjaCgpIGNvZGUuCi0gICAgaWYg
KG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQotICAgICAgICBtX3Zpc3VhbFBhcmVudFNo
YWRvd1Jvb3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKLQotICAgIGlmICghbmV3UmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE5vdGU6IEFkZGluZyBuZXdSZW5kZXJlciBpbnN0
ZWFkIG9mIHJlbmRlcmVyKCkuIHJlbmRlcmVyKCkgbWF5IGJlIGEgY2hpbGQgb2YgbmV3UmVuZGVy
ZXIuCi0gICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPnJlbmRlcmVyKCktPmFk
ZENoaWxkKG5ld1JlbmRlcmVyLCBuZXh0UmVuZGVyZXIoKSk7Ci19Ci0KIENvbnRhaW5lck5vZGUq
IE5vZGU6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpCiB7Ci0gICAgcmV0dXJuIE5v
ZGVSZW5kZXJlckZhY3RvcnkodGhpcykucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7
CisgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMpLnBhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSgpOwogfQogCiB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQo
KQpAQCAtMTY1NSw5ICsxNDgyLDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZTo6c3R5
bGVGb3JSZW5kZXJlcigpCiAgICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCkt
PnJlbmRlcmVyKCkgPyBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkgOiAwOwogfQog
Ci1ib29sIE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBO
b2RlOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIHJldHVybiAoZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcykg
fHwgKHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSk7CisgICAgcmV0dXJuIChkb2N1bWVudCgpLT5k
b2N1bWVudEVsZW1lbnQoKSA9PSB0aGlzKSB8fCAoY29udGV4dC5zdHlsZSgpLT5kaXNwbGF5KCkg
IT0gTk9ORSk7CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMWZhOGJmMzdjOTBlMDFjNjQw
MDk0NTY1YjY4M2IyNGJjMTczNjZiLi5lMzQ3YmViMDg5NDkyYjZjYWRiZDdkMmNiYzZkZDE5NjZk
Y2MzZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgTmFtZWROb2RlTWFw
OwogY2xhc3MgTmFtZU5vZGVMaXN0OwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBOb2RlUmFyZURh
dGE7CitjbGFzcyBOb2RlUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVu
dDsKQEAgLTQ1MSw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1v
dmUoKTsKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKICAgICBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZUZvclJlbmRlcmVyKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE5Yjk2ZWM3Y2NiMjRlMmM3ZTNjZTMyZWU5YTVjNGMzMmNkMmMwOGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgi
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK05vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5n
Q29udGV4dChOb2RlKiBub2RlKQorICAgIDogbV9sb2NhdGlvbihMb2NhdGlvbk5vdEluVHJlZSkK
KyAgICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCisgICAgLCBtX25vZGUobm9kZSkKKyAgICAs
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCisgICAgLCBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fc3R5bGUoMCkKK3sKKyAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dCb3VuZGFyeSgpKSB7Cisg
ICAgICAgIG1fbG9jYXRpb24gPSBMb2NhdGlvblNoYWRvd0NoaWxkOworICAgICAgICBtX3BhcmVu
dE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uTGlnaHRDaGlsZDsK
KworICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBtX3Zpc3VhbFBh
cmVudFNoYWRvd1Jvb3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdCgpOworCisgICAg
ICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKKyAgICAgICAgICAgIGlmIChDb250
YWluZXJOb2RlKiBjb250ZW50Q29udGFpbmVyID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5h
Y3RpdmVDb250ZW50Q29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0
YWNoQ29udGVudEZvcndhcmRlZDsKKyAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KGNvbnRlbnRDb250YWluZXIpLnBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBtX3BoYXNlID0g
QXR0YWNoQ29udGVudExpZ2h0OworICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUgPSBwYXJlbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsKK30KKwor
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJl
bmRlclN0eWxlKiBzdHlsZSkKKyAgICA6IG1fbG9jYXRpb24oTG9jYXRpb25Ob3RJblRyZWUpCisg
ICAgLCBtX3BoYXNlKEF0dGFjaFN0cmFpZ2h0KQorICAgICwgbV9ub2RlKG5vZGUpCisgICAgLCBt
X3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgwKQorICAgICwgbV92aXN1YWxQYXJlbnRT
aGFkb3dSb290KDApCisgICAgLCBtX3N0eWxlKHN0eWxlKQoreworfQorCitOb2RlUmVuZGVyaW5n
Q29udGV4dDo6fk5vZGVSZW5kZXJpbmdDb250ZXh0KCkKK3sKK30KKwordm9pZCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7Cisg
ICAgbV9zdHlsZSA9IHN0eWxlOworfQorCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkKK3sKKyAgICByZXR1cm4gbV9zdHlsZS5yZWxl
YXNlKCk7Cit9CisKK1JlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5k
ZXJlcigpIGNvbnN0Cit7CisgICAgaWYgKG1fcGhhc2UgIT0gQXR0YWNoQ29udGVudEZvcndhcmRl
ZCkKKyAgICAgICAgcmV0dXJuIG1fbm9kZS0+bmV4dFJlbmRlcmVyKCk7CisgICAgLy8gUmV0dXJu
cyAwIGhlcmUgdG8gaW5zZXJ0IHJlbmRlcmVyIGF0IHRoZSBlbmQgb2YgY2hpbGQgbGlzdC4KKyAg
ICAvLyBXZSBhc3N1bWUgY29udGVudCBjaGlsZHJlbiBhcmUgYWx3YXlzIGF0dGFjaGVkIGluIHRy
ZWUgb3JkZXIgYW5kCisgICAgLy8gdGhlcmUgaXMgbm8gcGFydGlhbCByZW5kZXIgdHJlZSBjcmVh
dGlvbi4KKyAgICByZXR1cm4gMDsKK30KKworUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZW50UmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKTsKK30KKwordm9pZCBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fcGhhc2UgPT0gQXR0
YWNoQ29udGVudExpZ2h0KQorICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmhvc3RD
aGlsZHJlbkNoYW5nZWQoKTsKK30KKworYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxk
Q3JlYXRlUmVuZGVyZXIoKSBjb25zdAoreworICAgIEFTU0VSVChwYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUoKSk7CisKKyAgICBpZiAobV9sb2NhdGlvbiA9PSBMb2NhdGlvbk5vdEluVHJl
ZSB8fCBtX3BoYXNlID09IEF0dGFjaENvbnRlbnRMaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRl
cmVyKCk7CisgICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKG1fbG9jYXRpb24gPT0gTG9jYXRpb25MaWdodENoaWxkICYmIG1fcGhhc2UgPT0g
QXR0YWNoU3RyYWlnaHQpIHsKKyAgICAgICAgLy8gRklYTUU6IElnbm9yaW5nIGNhbkhhdmVDaGls
ZHJlbigpIGluIGEgY2FzZSBvZiBzaGFkb3cgY2hpbGRyZW4gbWlnaHQgYmUgd3JvbmcuCisgICAg
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjMK
KyAgICAgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRv
d1Jvb3QgJiYgIW1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5jYW5IYXZlTGlnaHRD
aGlsZFJlbmRlcmVyV2l0aFNoYWRvdygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIobV9ub2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKworTm9kZVJlbmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFj
dG9yeShOb2RlKiBub2RlKQorICAgIDogbV9jb250ZXh0KG5vZGUpCit7Cit9CisKK1JlbmRlck9i
amVjdCogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpCit7Cisg
ICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbm9kZS0+ZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoIW5vZGUtPnJlbmRlcmVyKCkpOworICAg
IEFTU0VSVChkb2N1bWVudC0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpOworCisgICAgaWYgKCFt
X2NvbnRleHQuc2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBtX2NvbnRleHQuc2V0U3R5bGUobm9kZS0+c3R5bGVGb3JSZW5kZXJlcigpKTsKKyAgICBpZiAo
IW5vZGUtPnJlbmRlcmVySXNOZWVkZWQobV9jb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gbm9kZS0+Y3JlYXRlUmVuZGVyZXIoZG9j
dW1lbnQtPnJlbmRlckFyZW5hKCksIG1fY29udGV4dC5zdHlsZSgpKTsKKyAgICBpZiAoIW5ld1Jl
bmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9jb250ZXh0LnBhcmVudFJl
bmRlcmVyKCktPmlzQ2hpbGRBbGxvd2VkKG5ld1JlbmRlcmVyLCBtX2NvbnRleHQuc3R5bGUoKSkp
IHsKKyAgICAgICAgbmV3UmVuZGVyZXItPmRlc3Ryb3koKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgbm9kZS0+c2V0UmVuZGVyZXIobmV3UmVuZGVyZXIpOworICAgIG5ld1JlbmRl
cmVyLT5zZXRBbmltYXRhYmxlU3R5bGUobV9jb250ZXh0LnJlbGVhc2VTdHlsZSgpKTsgLy8gc2V0
QW5pbWF0YWJsZVN0eWxlKCkgY2FuIGRlcGVuZCBvbiByZW5kZXJlcigpIGFscmVhZHkgYmVpbmcg
c2V0LgorICAgIHJldHVybiBuZXdSZW5kZXJlcjsKK30KKworI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKK3N0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4o
UmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZW5kZXJG
dWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJBcmVu
YSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRvY3VtZW50KTsKKyAgICBmdWxsc2NyZWVuUmVuZGVyZXIt
PnNldFN0eWxlKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpKTsKKyAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgZmFpbGVkIHRvIGNyZWF0ZSB0aGUgbmV3IHJlbmRl
ciBhbmQgZW5kIHVwIHdyYXBwaW5nIG5vdGhpbmcuCisgICAgLy8gV2UnbGwgZW5kIHVwIGRpc3Bs
YXlpbmcgYSBibGFjayBzY3JlZW4sIGJ1dCBKZXIgc2F5cyB0aGlzIGlzIGV4cGVjdGVkLgorICAg
IGlmIChvYmplY3QpCisgICAgICAgIGZ1bGxzY3JlZW5SZW5kZXJlci0+YWRkQ2hpbGQob2JqZWN0
KTsKKyAgICBkb2N1bWVudC0+c2V0RnVsbFNjcmVlblJlbmRlcmVyKGZ1bGxzY3JlZW5SZW5kZXJl
cik7CisgICAgcmV0dXJuIGZ1bGxzY3JlZW5SZW5kZXJlcjsKK30KKyNlbmRpZgorCit2b2lkIE5v
ZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQoreworICAgIE5vZGUq
IG5vZGUgPSBtX2NvbnRleHQubm9kZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUt
PmRvY3VtZW50KCk7CisKKyAgICBpZiAoIWRvY3VtZW50LT5zaG91bGRDcmVhdGVSZW5kZXJlcnMo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNy
ZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKTsKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICBpZiAoZG9jdW1lbnQtPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50LT53ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBub2RlKQorICAgICAgICBuZXdSZW5kZXJlciA9
IHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihuZXdSZW5kZXJlciwgZG9jdW1lbnQpOworI2VuZGlm
CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaWRlIGVmZmVjdCBzaG91bGQgYmUgdmlzaWJsZSBmcm9t
IGF0dGFjaCgpIGNvZGUuCisgICAgbV9jb250ZXh0Lmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKKwor
ICAgIGlmICghbmV3UmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGU6IEFk
ZGluZyBuZXdSZW5kZXJlciBpbnN0ZWFkIG9mIHJlbmRlcmVyKCkuIHJlbmRlcmVyKCkgbWF5IGJl
IGEgY2hpbGQgb2YgbmV3UmVuZGVyZXIuCisgICAgbV9jb250ZXh0LnBhcmVudFJlbmRlcmVyKCkt
PmFkZENoaWxkKG5ld1JlbmRlcmVyLCBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCkpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5
MWRkM2FmMGFhMWQ2MDFlZDE5M2NiNTE4NDA0NDAyZTUxMjU4ZmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMCwwICsxLDk5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgTm9kZVJlbmRlcmluZ0NvbnRleHRfaAor
I2RlZmluZSBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9kZTsKK2NsYXNz
IFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2hhZG93Um9vdDsKKwor
Y2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgeworcHVibGljOgorCisgICAgZXhwbGljaXQgTm9k
ZVJlbmRlcmluZ0NvbnRleHQoTm9kZSopOworICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUq
LCBSZW5kZXJTdHlsZSopOworICAgIH5Ob2RlUmVuZGVyaW5nQ29udGV4dCgpOworCisgICAgTm9k
ZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQorICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Tm9k
ZUZvclJlbmRlcmluZ0FuZFN0eWxlOyB9CisgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJl
cigpIGNvbnN0OworICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyKCkgY29uc3Q7CisKKyAg
ICBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CisgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gcmVsZWFzZVN0eWxlKCk7CisKKyAgICBib29sIHNob3VsZENyZWF0ZVJl
bmRlcmVyKCkgY29uc3Q7CisKKyAgICB2b2lkIGhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKKworcHJp
dmF0ZToKKyAgICBlbnVtIFRyZWVMb2NhdGlvbiB7CisgICAgICAgIExvY2F0aW9uTm90SW5UcmVl
LAorICAgICAgICBMb2NhdGlvbkxpZ2h0Q2hpbGQsCisgICAgICAgIExvY2F0aW9uU2hhZG93Q2hp
bGQsCisgICAgfTsKKworICAgIGVudW0gQXR0YWNoUGhhc2UgeworICAgICAgICBBdHRhY2hTdHJh
aWdodCwKKyAgICAgICAgQXR0YWNoQ29udGVudExpZ2h0LAorICAgICAgICBBdHRhY2hDb250ZW50
Rm9yd2FyZGVkLAorICAgIH07CisKKyAgICBUcmVlTG9jYXRpb24gbV9sb2NhdGlvbjsKKyAgICBB
dHRhY2hQaGFzZSBtX3BoYXNlOworICAgIE5vZGUqIG1fbm9kZTsKKyAgICBDb250YWluZXJOb2Rl
KiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsKKyAgICBTaGFkb3dSb290KiBtX3Zp
c3VhbFBhcmVudFNoYWRvd1Jvb3Q7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwor
fTsKKworY2xhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTm9kZVJlbmRlcmVyRmFjdG9yeSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgTm9kZVJlbmRlcmVyRmFjdG9yeShOb2RlKik7CisKKyAgICBj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dDsgfQorICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOworCitwcml2YXRlOgor
ICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpOworCisgICAgTm9kZVJl
bmRlcmluZ0NvbnRleHQgbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXgg
MDdiNzhmNzYwNDU1MmExZmY0ZmFjZDAzMWE1YTFiNDQxNTNiNzJhNS4uMDlmZGI0MjAzODljMDc4
OTQ4NjQ4NDM5NjkxOGZkMjBjZGYxZDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0YWctbmFtZSBjaGVja2luZyBvbmNlIDxjb250
ZW50PiBpcyByZWFkeS4KICAgICAvLyBTZWUgYWxzbyBodHRwOi8vd2Via2l0Lm9yZy9iLzU2OTcz
CiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIHsgcmV0
dXJuIDA7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBiNzEwMGZlYzQwYjY2MzUxYTY4NDMz
ZTdkNGY4ZTkyN2YxN2I3NGUwLi5iOTY4ZjA1MTZhNjU4NTRjNTkyYjc5OTA0NTk1ZjlkOTVlN2M4
NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiVGV4dC5o
IgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0LmgiCiAKQEAgLTE4OSw5ICsxOTAsOSBAQCBQYXNzUmVmUHRyPE5vZGU+IFRleHQ6OmNs
b25lTm9kZShib29sIC8qZGVlcCovKQogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgZGF0
YSgpKTsKIH0KIAotYm9vbCBUZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHls
ZSkKK2Jvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIUNoYXJhY3RlckRhdGE6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpKQorICAgIGlmICghQ2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBvbmx5V1MgPSBjb250YWluc09u
bHlXaGl0ZXNwYWNlKCk7CkBAIC0yMDMsNyArMjA0LDcgQEAgYm9vbCBUZXh0OjpyZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKICAgICBpZiAocGFyLT5pc1RhYmxlKCkgfHwgcGFy
LT5pc1RhYmxlUm93KCkgfHwgcGFyLT5pc1RhYmxlU2VjdGlvbigpIHx8IHBhci0+aXNUYWJsZUNv
bCgpIHx8IHBhci0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgaWYgKHN0eWxlLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgLy8gcHJlL3ByZS13cmFwL3ByZS1saW5l
IGFsd2F5cyBtYWtlIHJlbmRlcmVycy4KKyAgICBpZiAoY29udGV4dC5zdHlsZSgpLT5wcmVzZXJ2
ZU5ld2xpbmUoKSkgLy8gcHJlL3ByZS13cmFwL3ByZS1saW5lIGFsd2F5cyBtYWtlIHJlbmRlcmVy
cy4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0ICpwcmV2ID0g
cHJldmlvdXNSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXggYzk3ODM0M2QzZTFkYWM4NTlhMDNm
NmU0ZDdiMzI3NzRjYjFlZjY5Ny4uM2NjOGM1MDJhNDNiNzBhMzNiNWEzMDM5ZmQxZDNlMDMxYjUw
NDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2Rl
VHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCmlu
ZGV4IGM3OTk1YjU2YjQ5NmQ0MzdhNWJlZGMwNGIzMmVmZTYwNzExNzMwOGIuLjg1MjBjMmM3Y2E2
MTlhYTIxOGZlMzM2OWQ1OTQwMDYxMjQyN2UzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFwcGxldEVsZW1lbnQuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMSBAQCB2b2lkIEhUTUxBcHBsZXRF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICBIVE1MUGx1Z0luRWxlbWVudDo6cmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1ib29sIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGNvZGVBdHRyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxl
KTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4
dCk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5oCmluZGV4IDBmM2FhZDg2OTA5MDYxMjcwNjJhODJhY2I0ZDE5NWEyMTVh
ZjVjYjcuLjg0Y2U2MTgzZjNlYTg5ZDFiMjlhZTIwYzNjMDZiZjg1ZWJhZmU5YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxk
cmVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNDBhOWExYmI4ODY4
MDdkNDkyZmRlNmNhYWY3NmJlZDYzNmFmNGRlNy4uNGU4YmE2ZjNmNjRiZDJhYTNiYjFiNjVhZWUw
YzRmOTlhYWU0NjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTc2OSw3
ICs3NjksNyBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRWxlbWVudDo6Y2hpbGRy
ZW4oKQogICAgIHJldHVybiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIE5vZGVDaGlsZHJl
bik7CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUg
KnN0eWxlKQorYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKG5vc2NyaXB0
VGFnKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwpAQCAt
Nzg1LDcgKzc4NSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUgKnN0eWxlKQogICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLT5zdWJm
cmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIFN0eWxlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBSZW5kZXJPYmplY3QqIEhUTUxFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA1YTVmZGZiNjc0OTVhMjA2MjgwZDBlZjNi
M2NlMTk2Zjg1M2JlYjVhLi45YzQwN2UxOGM1MjQzODg0YTJkZmRhNmNjOGM0ZTc5NDlhNDMxNDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsRm9y
bSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCBiMjgw
ZGFkOTA2MTFiZWVhOTg0M2ZjYzliZThlNGRkZjhhMzE1MjhkLi4zOGIyNDE2MGJhZTY0OWYxZGEw
M2Q4ZTViYzUxMzljZDI5YmUyMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKQEAgLTE4MywxMCArMTgzLDEwIEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6dXBk
YXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAg
IGxvYWRlci0+cmVxdWVzdE9iamVjdCh0aGlzLCBtX3VybCwgZ2V0QXR0cmlidXRlKG5hbWVBdHRy
KSwgbV9zZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogfQogCi1ib29sIEhU
TUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9v
bCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChpc0ltYWdlVHlwZSgpKQotICAgICAgICByZXR1
cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAg
ICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRl
eHQpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1
cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAg
cmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7
CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCA4NjNjMDliZWU0ZWJhZTk2ZDdm
NTg1OTUyZDMwYzI3OGNhOWI2OWZiLi5iOWRjNzk4OTcxMTNkNzFhOWRmMThhNjNmOWFiYTFhMGJm
NTNjOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtMzcsNyAr
MzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNTJiZmRhMzAwZWI0OWM3MmI3NGU3MTMxOTU5
MjEzOTgwMTAwNGQ0Yy4uMDZhN2Q2NTY2NTYwYTc4NTQ0MjcxNTE0ZDI2ZThkYzEyYWJmNzAxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wu
aCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCkBAIC0xMDQsMTAgKzEwNSwxMCBA
QCBib29sIEhUTUxGb3JtRWxlbWVudDo6Zm9ybVdvdWxkSGF2ZVNlY3VyZVN1Ym1pc3Npb24oY29u
c3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCku
cHJvdG9jb2xJcygiaHR0cHMiKTsKIH0KIAotYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKCFtX3dhc0RlbW90ZWQpCi0gICAgICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb250ZXh0KTsKIAogICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7
CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CkBA
IC0xMjAsNyArMTIxLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGlmICghcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdHlsZS0+ZGlz
cGxheSgpOworICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBjb250ZXh0LnN0eWxlKCktPmRpc3BsYXko
KTsKICAgICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRpc3BsYXkgPT0gVEFCTEUgfHwgZGlzcGxh
eSA9PSBJTkxJTkVfVEFCTEUgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1dfR1JPVVAKICAgICAgICAg
fHwgZGlzcGxheSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9GT09U
RVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1cKICAgICAgICAgfHwgZGlzcGxheSA9PSBU
QUJMRV9DT0xVTU5fR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9DT0xVTU4gfHwgZGlzcGxheSA9
PSBUQUJMRV9DRUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCAzMTAw
ZjY3YWRmZTFjYzZlYWVjYWY0YWNkMDc2NjNjNzQ4MjYxNGVhLi41NjQ3NzJlNzNiY2Y5NmE0NDk5
MzhhYTI4ZTExMjUyYzJjMWZhOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxGb3JtRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21E
b2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRl
eCBhOGMyNjQ1OWJjYTc3NTUyNThiYTlmZGY1MmRjODExYWI5YTQ3MTJmLi4zNGVkZThkZjhhMWY4
ZTYyN2QzZWZkZGU5NWIzZWFhNzgzNTZhMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUGFzc1JlZlB0cjxIVE1MRnJhbWVFbGVt
ZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKikKK2Jvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHksIGZyYW1l
cyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMgc2V0LgogICAgIHJldHVybiBpc1VS
TEFsbG93ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKaW5kZXggNjZm
Y2NmMzMzYmIzZDRmNWQ4YTE5YzdjODA4MzU3NTkzMGQ4ZmZhMi4uM2IwNzYxYTdhYjIzMTc1MTYx
YmFlNTc2YjU5MmUyYmFjNGEzMWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCmluZGV4IDJmMzc1Y2JjYTI2ZWQ4NzM3NDE0OTczYTc4N2ZiNDAxNTZjNDdj
MzQuLjhiNzMxODQwNDJiMTkzMzQzMmUzOTZjMzE1MThhYzhlYmUxNmU2ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIlRleHQuaCIKQEAgLTE0NywxMSArMTQ4LDExIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBIVE1M
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLWJvb2wgSFRNTEZyYW1l
U2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCitib29sIEhU
TUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHksIGZyYW1lcyByZW5k
ZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMgc2V0LgogICAgIC8vIEhvd2V2ZXIsIHdlIGRl
bGF5IGNyZWF0aW5nIGEgcmVuZGVyZXIgdW50aWwgc3R5bGVzaGVldHMgaGF2ZSBsb2FkZWQuIAot
ICAgIHJldHVybiBzdHlsZS0+aXNTdHlsZUF2YWlsYWJsZSgpOworICAgIHJldHVybiBjb250ZXh0
LnN0eWxlKCktPmlzU3R5bGVBdmFpbGFibGUoKTsKIH0KIAogUmVuZGVyT2JqZWN0ICpIVE1MRnJh
bWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0
eWxlICpzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5k
ZXggZjJmODQzOTc3NmU3ODUyN2I0MGI5ZjZmNzRlNjMyOWQzMGUwZjA3OC4uN2ZjNDQ1Y2E3NGEz
YmI3YTA5OWNhMjU2MTJmNDk1NzViYTdmZDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKaW5kZXggMDZhZjA5MzZiNzhkY2I5OWY3Mjk3YjUxM2RkMTc4MDYzYjNlNTMzMy4u
MTMzM2M4ZTk5OWEwOGU1MDNhYmMxMmIxMDk2NjdlYTEzODA4MWM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
SUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzMSw5ICsxMzIsOSBAQCB2b2lk
IEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
CiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIAotYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSogc3R5bGUpCitib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBpc1VSTEFs
bG93ZWQoKSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7CisgICAgcmV0dXJuIGlzVVJMQWxs
b3dlZCgpICYmIGNvbnRleHQuc3R5bGUoKS0+ZGlzcGxheSgpICE9IE5PTkU7CiB9CiAKIFJlbmRl
ck9iamVjdCogSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5o
CmluZGV4IDYxY2Q2YjY4ZWQ2NDhhMzIyNTllZjQ1N2JlZTQ4ODA1NzMwZjM3MjYuLmRjNTIyYzU2
MzUwNmI1N2JiY2E2MDlmOTc2ODhjZWViMjg0MzdkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b21Eb2N1bWVudCgpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDI1NjJmYzZlM2UxMDYyYzFmZGVjOWM3ZjEyNzRhNzRi
MTk1NTE4MjEuLmI5ZGMxMmI3NmExYzdmN2U1MDg1YTg3NzcyMmUyNTE0MTEzOWVmYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNzIzLDkgKzcyMyw5IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICB9CiB9
CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSog
c3R5bGUpCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5y
ZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklz
TmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cmVuZGVyZXJJc05l
ZWRlZChjb250ZXh0KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBIVE1MSW5wdXRFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMzhiZDZjODY1YTdjMTdmNzBkMzc2
NzhiYjJiODgxNDE4ZTgyZDExZC4uZWE2MjgwOTE3ZGQ4Y2E5MGM2YTQ0YWEyZWNiY2M5MGM5OGIw
NDY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhdmVTZWxlY3Rpb24oKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMmFiMDhlZmFlYWEyNWE5NDY4YTVkMWY3
OTU1MTVmYWUwZTBjYzgwNC4uYTZkMmRlZmZlNjBkMTVmYzg0YWYyNDhjNWU4MzVjZmQ0MmU3YmYz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTMsMTcg
KzMxMywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogI2lmIEVOQUJMRShQTFVH
SU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7CisgICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CiAjZWxzZQotICAgIHJldHVybiBjb250cm9scygpID8gSFRNTEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoc3R5bGUpIDogZmFsc2U7CisgICAgcmV0dXJuIGNvbnRyb2xzKCkgPyBIVE1MRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KSA6IGZhbHNlOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZjllOTNiNGM3YjQxNTRkZDVi
ZmRlNzc5YWQ3NzIxZmE3NzZkY2FkNS4uN2UwYjgxZDM4ZWEwODZlNzNkMjAxZGM5OWQwODNiYjhh
NjcxMWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTIyMCw3
ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGF0dHJp
YnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1Nj
cmlwdEVsZW1lbnQuaAppbmRleCA5YTNiOTJkMzhiZDVkMDNhZDk3ZGEzN2RkYjRiMWRmYzZmNzNm
NmM2Li4wOWRlMjAzMjYwZTkwOGY0ZGVkZTI1OWFkNzY1M2ExM2YwNDY2NjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxj
U3R5bGUoU3R5bGVDaGFuZ2UpOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSopIHsgIHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7ICByZXR1cm4gdHJ1ZTsgfQog
fTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAppbmRleCBiYjY0ODBlNjBkZTNjN2VhYjgyMThlZTMwNDc4ZGY2NTYwNzIyYWJhLi4zYmUw
MDlkNjE5MmI3ZGM0NzBkZjE3OGZiNzY1M2FjMDJhMjBmNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzAwLDE0ICszMDAsMTQgQEAgdm9pZCBIVE1M
T2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNy
ZWF0aW9uT3B0aW9uKQogICAgICAgICByZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsKIH0KIAotYm9v
bCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUp
Citib29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3Vs
ZCBub3QgYmUgbmVlZGVkLCBkZXRhY2hlZCBkb2N1bWVudHMgbmV2ZXIgcmVuZGVyIQogICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgKaW5kZXggNjQxZTUwZTc3ZTg0YjAxMzdmZjAwOGNmNWIyMTY1ZjAyZDg5MzU3Ni4uMThi
YzdmNTQzZTQ4YTJhODU2ZmRiZmNlNDU2MTIzYzMyYjRkNzU3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCmluZGV4IGE1OGU5NTc2ZjAyNjA5YmYz
ZThhYmFjNzE0MWNhZTdmODVjN2FiNzQuLmI3Nzc3YTY1MDdjMmNmOWI5MjRiZDM5NzcxYjY2ODA2
MGE2NjNhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCkBA
IC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJTdHlsZShQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmgKaW5kZXggYzE3OTFkNzAwOWYyMjY4ODljYjYwNzRhYWZmMjJmY2VlODJhZTNlNC4uMjJjZTFi
NjJhMTcxMGI4NGFjZTNkZTQyZGQwZjFjNjJmNWY0ZWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1
c2FibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFJlbmRlclN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDViN2Y0MmRlYTQ2MTQ4OTQy
ZWZjYTc4ODBjNTBkMmMwY2VhYTA0OGMuLjU5MDI3YTQxYzcwOTQ1NjI3M2FjOTAwOTg5OGUyYmRm
YWYwZWZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
NTUsOSArNTUsOSBAQCBQYXNzUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IEhUTUxWaWRlb0VsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTFZpZGVvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhU
TUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSAKK2Jv
b2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCkgCiB7Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKTsgCisgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnRleHQpOyAKIH0KIAogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggNTdiNzBlYTFhYjJiYjcxYjEx
NmIyM2E3NzlmMTQ3MzY2MDZkOTFiZC4uNDUwNDM4YTJkZmFkZTZkMzFjM2E5ZTZlYTBmNDJhZGFi
YTExODQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKaW5kZXggMWQ4YTZlNjhlY2YxOWFj
YzhmOTM5YWFmZDM1NGZkZDhhNzhhN2FkMy4uZDRmZGRkMzBmNzU0MDQ4ZWFjMjcxMDUwZWM0OTU1
M2Y5ZmQxODEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWls
c01hcmtlckNvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFp
bHNNYXJrZXJDb250cm9sLmNwcApAQCAtNTEsOSArNTEsOSBAQCBSZW5kZXJPYmplY3QqIERldGFp
bHNNYXJrZXJDb250cm9sOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJEZXRhaWxzTWFya2VyKHRoaXMpOwog
fQogCi1ib29sIERldGFpbHNNYXJrZXJDb250cm9sOjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKiBzdHlsZSkKK2Jvb2wgRGV0YWlsc01hcmtlckNvbnRyb2w6OnJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIHN1bW1h
cnlFbGVtZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHN1bW1hcnlFbGVtZW50KCktPmlzTWFpblN1bW1h
cnkoKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBEZXRhaWxzTWFya2VyQ29udHJvbDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmgKaW5kZXggM2M1YjA5ZGYyNDY0NTkxM2QxMzA0ZDljMDdjNThmNGY2YzBjMWE1Yy4u
MWFhMTRjYWIzZGQxNzlhYzE0YmYzMTY5YTlmYTRhNzM0Yjg2YTVmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogICAgIEhUTUxTdW1t
YXJ5RWxlbWVudCogc3VtbWFyeUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGE1ZWI3MGI1ODVhOTU0YTZlM2U0
YTE3ODUyMTcxMzk4Zjc3Y2U4MmUuLjYwZGM3YmY2MzBjN2Y2MzZmZTQ2NGY2ZWMzZWViOTM4ODkx
ZDA5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dF
bGVtZW50LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIEhUTUxNZXRlckVsZW1lbnQqIE1ldGVyU2hh
ZG93RWxlbWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTE1ldGVyRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIE1ldGVyU2hhZG93RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIE1ldGVyU2hhZG93RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBSZW5kZXJNZXRlciogbWV0ZXJSZW5kZXJlciA9IHRvUmVuZGVyTWV0ZXIobWV0
ZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpOwotICAgIHJldHVybiBtZXRlclJlbmRlcmVyICYmICFt
ZXRlclJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKG1ldGVyUmVuZGVyZXItPnN0eWxl
KCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5
bGUpOworICAgIHJldHVybiBtZXRlclJlbmRlcmVyICYmICFtZXRlclJlbmRlcmVyLT50aGVtZSgp
LT5zdXBwb3J0c01ldGVyKG1ldGVyUmVuZGVyZXItPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYg
SFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgTWV0ZXJCYXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCmluZGV4IDkz
NjI2ZGY1ZTI1YjE3YTY2ZjllNWQ0Y2Q4MjVlNDNjNTllNWFlZGMuLmMzNmIwMWIyNDNkYjlkZjZm
YTA3NWJjMWJiNmU0ZDViNjQyNzA2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01ldGVyU2hhZG93RWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBI
VE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiB9Owog
CiBjbGFzcyBNZXRlckJhckVsZW1lbnQgOiBwdWJsaWMgTWV0ZXJTaGFkb3dFbGVtZW50IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
Y3BwCmluZGV4IDFjZWRkMGRjYTEyZjIzZGJhNGVkMTZiOGFkMzdmZTExMzNiZDNjZmMuLmMwY2Ji
OTUwOGRkZWJjNzZkOTAzMDRlMjQ3YTk3ODU1MDIyNmNlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcApAQCAtNTIsMTAg
KzUyLDEwIEBAIEhUTUxQcm9ncmVzc0VsZW1lbnQqIFByb2dyZXNzU2hhZG93RWxlbWVudDo6cHJv
Z3Jlc3NFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFByb2dyZXNz
RWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIFByb2dyZXNzU2hhZG93RWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFByb2dyZXNzU2hhZG93RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICBSZW5kZXJPYmplY3QqIHByb2dyZXNzUmVuZGVyZXIgPSBwcm9ncmVzc0VsZW1lbnQo
KS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcHJvZ3Jlc3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NS
ZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gcHJvZ3Jlc3NSZW5kZXJlciAmJiAhcHJv
Z3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmIEhUTUxEaXZFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFBy
b2dyZXNzQmFyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAppbmRleCBhMTA2YmY4
NzIzODY1OTQwOTExOTgwYjljOTFiYzJmM2Y1NjA0NGE1Li5lMTM1YzcxZGFhNDFmOWU2ZWYzYjM2
NGVmOTE4OGEzMWNkNTE3YWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
SFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jlc3NFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogfTsKIAogY2xhc3MgUHJvZ3Jlc3NCYXJFbGVtZW50IDogcHVibGljIFByb2dyZXNzU2hhZG93
RWxlbWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCmluZGV4IDMyYTdhZDAyMTQ0
NzNkMmYzMzkxOWY1YTQ0Njg0NjkyZjllNGZlOTUuLmVhZTc2N2VkNmM5NTNkYTJhNWJlNTM4NGQw
NTlhODIzYmM1NzE4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRGVzY0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxz
ZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
aW5kZXggNWU1YWJmOGRlNTM3MzkwYmE4ZTU2YWMzYWE4MDE0MGUxNjAwNDFlMS4uZTdjMTA2YmFj
YzA4OGI1ZWEzNzFkNjc4N2ExMDg5NTBjZDQ1NmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgU1ZHRWxlbWVudEluc3RhbmNlOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBT
dHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCBm
ZTVkMDljOTliM2IxYThmNjE4ZjZlY2UzOTA2NDJjYTUwNWEwNDFmLi4zMTExM2Q2MmJmNTQ0OGM3
OWY4NGFlYmNhMDRiYmZmNzI1MzU3YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtMTY4
LDEwICsxNjgsMTAgQEAgUmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKgogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSh0aGlzKTsKIH0KIAotYm9vbCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpmaWx0ZXJUYWcpKSkKLSAgICAgICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU1ZHU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaAppbmRleCA3OTViYzExYWY2YzY0MjJlZGNmYzk4ZmQ3MTA0YjE0ZGM4NWU5OWFl
Li40OGFmYTMyYmVjNTkzYWI0NDJiYmQ5ZDQxYWZhZTE4NjQ2N2UyOTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzRmls
dGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCA5NDM1Y2M3
MDU0ZjQ3Y2M3ZDRhZDg3NTc3MjY5ZmIyMzIzMzlhZmU3Li42MjI3NjZhMzU1YTZjOWUzNGQwZTU5
MmQ3MTdjZWEzMmMxZTlhNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAt
NzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0gIAorICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFs
c2U7IH0gIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAppbmRleCA5OTU1
ODAwMTRiM2YzMTNmOTk3NmQ5ZDQwMDQzMzJlZDQ0MzAwYWViLi5kYmY3ZTlmZjExM2RiN2M1Zjg3
YWU5YjBmZDUzMmI1MmRiMDkyMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQCBSZW5kZXJPYmplY3QqIFNWR0dFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZQogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKHRoaXMpOwogfQogCi1ib29s
IFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wgU1ZHR0Vs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKQogewog
ICAgIHJldHVybiBwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKTsg
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4IGMzMDZmNGE2ZjZlOTQ2N2Y4ODQ3NzA3
ZGFiNTQ0ZDU2MTVjYzY5YzUuLjMxOWFmMjc4MmI1MmFlZjk1ODBmYmQ3MzMwN2RhNjUzMTU3YWMx
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCmluZGV4IDk0NGFkMjcyYTQxNjk4ZDA2Yzhi
Nzc3MDUzNTFhZjk0NTZhYzAzOTIuLjVhZDA4OWEwYmQ2OTJiNmE0OGY0Mjk5MjFlNjk5NTk4ZTll
ZjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCi0gICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jikg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZUdseXBoQ2FjaGUoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgKaW5kZXggMGRlZmNiYmI5N2FjM2JmZTUw
MzliNmFjZWU3YTk2NjJiMDdhZmJiOC4uYmM3YjRlODNmYzQ1ZmVkMDRjYTEzYjFiMDc4ZmI1ZTNh
YzljYWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuaApAQCAtMzksNyArMzks
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggMjRjZTYyNDZkMTk3M2U3Yzk3YTU2N2Y3
ZDFlYmY0MjhlNDYzNTA0Yi4uZmI3NmVmODRlYTJkZjlmY2E2OTUzY2E1Yzg5Yjk0YzhkYThhYjJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC03Miw3ICs3Miw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWlzc2luZ0dseXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlw
aEVsZW1lbnQuaAppbmRleCA1MjhjNTNjNTNkYTFmNDZhNDZlN2JhNjk0NjFjNjEyOTk0OTBiMjFm
Li5mMmExNzZlZjg0ZWI3OWMxOWEzZmU3NDkxMWJhMzlmODgwNDQwYWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRl
eCBlZGI1NmQ3YjZmMDBiODczZTZjZDQzNWY2ZTljZmE0MDFiYmRhNDVjLi5kNDFjYzA2OTJhYzBi
Y2IxM2UyOWM3MDg5MTc2NzU3NjYwMzMwMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsgfQogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCAwZTRhMWJiNDkwY2M4YmI4ZTQwYWI2MDMwODUxMTNj
MDc4OTBkMzdlLi40MzI3NjNhMDcxY2VkZTU0YzQ4ZGZiMmIwOWVmMzgzZDYxMWIxODFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAg
U3RyaW5nIFNWR1N0eWxlZEVsZW1lbnQ6OnRpdGxlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLWJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSogc3R5bGUpCitib29sIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHL2V4dGVuZC5odG1sI1ByaXZhdGVEYXRhCiAgICAgLy8gUHJldmVudCBhbnl0
aGluZyBvdGhlciB0aGFuIFNWRyByZW5kZXJlcnMgZnJvbSBhcHBlYXJpbmcgaW4gb3VyIHJlbmRl
ciB0cmVlCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAvLyB3aXRoIHRoZSBTVkcgY29udGVu
dC4gSW4gZ2VuZXJhbCwgdGhlIFNWRyB1c2VyIGFnZW50IHdpbGwgaW5jbHVkZSB0aGUgdW5rbm93
bgogICAgIC8vIGVsZW1lbnRzIGluIHRoZSBET00gYnV0IHdpbGwgb3RoZXJ3aXNlIGlnbm9yZSB1
bmtub3duIGVsZW1lbnRzLiAKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCBwYXJlbnROb2RlKCkt
PmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmgKaW5kZXggNjViOTUyNTgwMGFkYTJhMmFiNGVjOGQ1ZTNlZTBlNTcz
NWY5NzllMy4uNmZlMGY0YzVlNDgyOTg3ODdmNzI4MTViNTFkMGNmZGIxZGMyYTdmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDogCiAgICAgU1ZHU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oCmluZGV4IDhmM2YyNTFlODY1NDkxMWQ5ZmMzMWIzMzg2ZDkyZWRmYzliZWFm
NTUuLjk1NDNjMjdkYTM3N2NlYmZkMGFhNWMxY2JkOGRmNDc3ZmVkOGU1ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSop
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVh
bCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjg3OWVlYTcwMTk5NmQ2MGE2OWY5MzgzZWJkNjM0MDQ0
YzcwZWZmOS4uOTFiMDM3ZDk1MDMwNDVkZjNhZTY5NjEzMmQ5YTkyM2UyN2VkMmRiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBT
VkdUUmVmRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU1ZHVFJlZkVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUUmVmRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmFUYWcpCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBTVkdUUmVmRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgICAgICB8fCBwYXJlbnRO
b2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCiAgICAgICAgICAgICB8fCBwYXJl
bnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKQogICAgICAgICAgICAg
fHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykpKQotICAgICAg
ICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAg
IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAppbmRleCAyZTdk
MDA1NzEzYWFkY2U2NWEyM2IxZDM5ZmI5OTg3Y2RhMDk0NDRjLi44OTQyYmNkYTk3N2RlOGUzMzgw
OTZhZmI2ZDkzNDc2ZTJhOWJlNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaApA
QCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgdm9pZCB1
cGRhdGVSZWZlcmVuY2VkVGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFNwYW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQu
Y3BwCmluZGV4IDBiOTY0NjVlYjM3Y2E3Y2JjMWJlZTk0NjRhMzc4YWNjN2EyNTY5MjQuLjdiNzYy
ZjUyMDczODk2ZGMwZWQxZjllN2MzOTY3YWE4Yjk2YzNkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUU3BhbkVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgU1ZHVFNwYW5FbGVtZW50
OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNoaWxkKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHBhcmVudE5v
ZGUoKQogICAgICAgICAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjphVGFn
KQpAQCAtNjksNyArNjksNyBAQCBib29sIFNWR1RTcGFuRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykpKQotICAgICAgICByZXR1cm4gU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHls
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCmluZGV4IGFjMDJiNTdiNGQ1ODlk
YzMzNzNmZjk5MDVmMTRiN2JhNTViMTJkNmMuLmU3MTViZGRkNjVkY2VkNTMwYmViZjc1MzYwMGJj
MDk3NmZiMDEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKQEAgLTM1LDcg
KzM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBhNjdkNmM5
NDcwYzY3NTI3N2Y4Yjg2MjIyZWU5ZTRhODc5NmVmZTg5Li43NThiMjhiMTQzMTIzYTIzZTE2MDUw
OWQ3NTRlMWE0YzhkMmVmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmNwcApAQCAtMTQwLDEyICsxNDAsMTIgQEAgYm9vbCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFNWR1RleHRQYXRoRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1RleHRQYXRoRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAocGFyZW50
Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFU
YWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRl
eHRUYWcpKSkKLSAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuaAppbmRleCBiNjk5ZDYxZGZlNDE3YzU1ZjBmZTkyZmNmZDg4NWI2OTRiNjU0
N2Q4Li4xMGQ2MjM1Yjg5Mzg4NWRmZjYzMDYwMWM1OWIzMmYzYmZmYTY4YTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgKaW5kZXggYzFj
ZWM0OTQ1M2MxMmVhNGZlNTU2MzJlMDBlNzE4OWUwODM0ZTNhYy4uNDViYjViZjhlNzVkNGUwZmU1
YjAwYTcwMmIyYTE3NjE1NjBiN2UwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQu
aApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNo
YW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWS2VybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQu
aAppbmRleCBkOGE5ZDFiYzk5NjA5ZWVlYTQ4Mjk2OTExMjE1M2YwZjIzY2VhMTk5Li43N2VhMmZl
Nzk5Yjc0MTFjOGEwZjdjMjRhOGRkYjA2YTljMjZmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZL
ZXJuRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCmluZGV4IGIz
NzE3NzQ4OGE2OTk4MWM1YjA5MzI4YmViZjk1ZjRjZTdlMzE3NmEuLjZlMzc5MTU5NDI3YWFkNTY2
MGE1ZjVmZmU2NDRkYzkyM2I5YTFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5o
CkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94395</attachid>
            <date>2011-05-23 03:42:44 -0700</date>
            <delta_ts>2011-05-23 08:44:34 -0700</delta_ts>
            <desc>Another update to make a bot happy</desc>
            <filename>bug-61114-20110523194242.patch</filename>
            <type>text/plain</type>
            <size>80223</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY5MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA3YTlh
ZjQ4NmQxZDhkODc1OTQ5OWVmZmQxMjdjNWRmZmUxNWJmYy4uMmY2MzE3MjlhYmEzNzEwNmZlZGJm
MTU0N2I4NzAxNjVhOGEyODE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU4NSw2ICs1ODUs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CiAgICAgZG9tL05vZGVGaWx0ZXIuY3BwCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKKyAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAogICAgIGRv
bS9PcHRpb25FbGVtZW50LmNwcAogICAgIGRvbS9PcHRpb25Hcm91cEVsZW1lbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZjNmZmI2ZTY2M2FmMWMwNzFkNDVmY2M0MzZlOTY4ZGQ0NzQwMzBjNi4uNmNkZmI1
OWE2MmM2Y2ZjOGFkNmQwYmE0YmM5Y2NhYWViNGQ2OTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExNCBAQAorMjAxMS0wNS0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFBhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgdG8gTm9kZTo6cmVuZGVyZXJJc05lZWRl
ZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEx
NAorCisgICAgICAgIC0gRXh0cmFjdGVkIE5vZGVSZW5kZXJpbmdDb250ZXh0IGZyb20gTm9kZVJl
bmRlcmVyRmFjdG9yeSwgZ2l2aW5nIHNlcGFyYXRlIGZpbGVzIHRvIGl0LgorICAgICAgICAtIENo
YW5nZWQgc2lnbmF0dXJlIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSAKKyAgICAgICAg
ICB0byByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikuCisgICAg
ICAgICAgVGhlIHN0eWxlIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBOb2RlUmVuZGVyZXJGYWN0
b3J5OjpzdHlsZSgpCisgICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHJlbmRlcmVySXNOZWVkZWQo
KSB0byBhY2Nlc3MgY29udGV4dHVhbAorICAgICAgICAgIGluZm9ybWF0aW9uIGxpa2UgYXR0YWNo
aW5nIHBoYXNlIGFuZCByZW5kZXJpbmctcGFyZW50LgorICAgICAgICAKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhcmFjdGVyRGF0YTo6dXBkYXRlUmVuZGVyZXIpOiBQYXNzIHVucmVzb2x2ZWQgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIHRvIHJlbmRlcmVySXNOZWVkZWQoKQorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVyRGF0YTo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogZG9tL0NoYXJhY3Rl
ckRhdGEuaDoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9F
ZGl0aW5nVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nVGV4dDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogZG9tL0VkaXRpbmdUZXh0Lmg6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVySXNOZWVkZWQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnJlbGVhc2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpwYXJlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6aG9zdENoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmVyRmFjdG9yeTo6Tm9kZVJlbmRlcmVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5Ojpjb250ZXh0KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICogZG9tL1RleHQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTm9T
Y3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9s
LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRGVzY0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSEtlcm5F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RpdGxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWS2VybkVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wNS0yMCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjg2OTIwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDlkZmZlMjQ0
MDJiNTI0OTViMzc4ZGQ4NzFlYjc4Y2Q4YWQ1MmVkNy4uYTZkNmFiYTc1YmM0YTI0MWIzMWI4ZDk3
YzJhMTkwOGRjZmQzNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMTgy
LDExICsxMTgyLDEzIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L05vZGVGaWx0ZXJDb25kaXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL05vZGVJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJTdHlsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdpdGhJbmRleC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhZTA1
ZWNkMjA4MDY4M2ZkMDc4MDU5NmQxZmEwN2IxODY0NTEzMDRmLi4wOGJjYWI2YTY0ODBmM2Q2ZTY5
NjNjYmNjOWYyYWY3NmYxMmQ1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTAzLDYgKzI1MDMs
OCBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlSXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdk
b20vTm9kZUl0ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCisg
ICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAn
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVy
U3R5bGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVXaXRoSW5kZXguaCcsCiAgICAgICAgICAg
ICAnZG9tL05vdGF0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDdjZWU4MzAyMjM1YjgwYmM5
MzdlM2VkMGNkOWRjZmU3NjIzODY2Y2QuLjIxYjU4NzUzYjc2NjFlOWEzZmY3Mjc3NWE2ZGU1MTYy
ZDVmZjUwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01MDgsNiArNTA4LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIFwKICAgICBkb20vTm9kZUZpbHRlci5j
cHAgXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwIFwKKyAgICBkb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIFwKICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vT3B0aW9uR3JvdXBF
bGVtZW50LmNwcCBcCiAgICAgZG9tL09wdGlvbkVsZW1lbnQuY3BwIFwKQEAgLTE0ODYsNiArMTQ4
Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9Ob2RlRmlsdGVyLmggXAogICAgIGRvbS9Ob2Rl
LmggXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuaCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vT3B0aW9uRWxlbWVudC5oIFwK
ICAgICBkb20vT3B0aW9uR3JvdXBFbGVtZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4N2MzODYyNzUxMDQwY2E5MTk1MTA3NjlkMDQ2
NzRlMmZlNjgxZjQ4Li5hOGM0OTdkNzM2MWQ3OGEwZmE1ZWVlYzE5MTNlMjYxZjY2Mjg5M2JjIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDUz
NDIsNiArNDUzNDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCIKKwkJCQk+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxOb3RhdGlvbi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDEyMGEyMjc0MTViMGZiY2ViZjUyMWFmMjQxZGI5OWI4NzU3NDcwN2EuLjY2OGQ2YmQ3
ZjBiNzc2MzYwODdmMDJmMmFkMWY2MTExNjMxMzkyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNDgsNiArMzI0OCw4IEBA
CiAJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3REJGOERDMTI3Njkx
OUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuaCAqLzsgfTsKIAkJQTdGMzM4QTMxMUMw
RUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMzM4QTExMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRv
d0VsZW1lbnQuY3BwICovOyB9OwogCQlBN0YzMzhBNDExQzBFRkNBMDBBMzIwQTcgLyogU2hhZG93
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdGMzM4QTIxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKKwkJQTdG
NUQ5NEYxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjVEOTREMTM4NEYwMkQw
MEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CisJCUE3RjVEOTUwMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGNUQ5NEUxMzg0RjAyRDAwQTI5QTg3IC8q
IE5vZGVSZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJCUE4MEEzOEZFMEU1MENDODIwMEEyNUVC
QyAvKiBQYXR0ZXJuQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi87IH07
CiAJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgwRDY3MDcwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZUNHLmggKi87IH07CiAJCUE4MEU2Q0U0MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZD
QkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAgKi87IH07CkBAIC05NzcxLDYg
Kzk3NzMsOCBAQAogCQlBN0RCRjhEQzEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVs
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2luZ0hlbHBl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0YzMzhBMTExQzBFRkNBMDBBMzIw
QTcgLyogU2hhZG93RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFkb3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdG
MzM4QTIxMUMwRUZDQTAwQTMyMEE3IC8qIFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Y1RDk0RDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Y1RDk0RTEzODRGMDJE
MDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTm9kZVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXR0ZXJuQ0cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODBENjcwNzBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTgwRTZDQkEwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVmFsdWVMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzQ4LDYgKzE5MzUyLDggQEAKIAkJCQlB
ODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCAqLywKIAkJCQk4NUFDQTlGQTBB
OUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovLAogCQkJCTYzMTg5QUUyMEU4M0EzMzMw
MDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLywKKwkJCQlBN0Y1RDk0RDEzODRGMDJEMDBBMjlB
ODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwICovLAorCQkJCUE3RjVEOTRFMTM4NEYwMkQw
MEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICovLAogCQkJCTYzRDdCMzJDMEU3OENE
M0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLywKIAkJCQk5MzgyQUFCMTBEOEMzODYx
MDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oICovLAogCQkJCUE4RUE3RUI3MEExOTQ1RDAwMEE4
RUY1RiAvKiBOb3RhdGlvbi5jcHAgKi8sCkBAIC0yMTkxMyw2ICsyMTkxOSw3IEBACiAJCQkJODU0
RkU3MzUwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2Rl
UmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJBQUI0MEQ4QzM4NjEwMEYzNTdB
NiAvKiBOb2RlV2l0aEluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0VCRTBBMTk0NUQw
MDBBOEVGNUYgLyogTm90YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ4MDIsNiArMjQ4MDks
NyBAQAogCQkJCTg1NEZFNzMwMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg1NEZFNzMyMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29u
ZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzM0MEEyMjk3QkUwMDU4RDdBRCAv
KiBOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdGNUQ5NEYxMzg0RjAyRDAw
QTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
RUE3RUJGMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMzUwM0NDNzEwMTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXgg
ZTE4MTVkOWQ4OGQzNzU2YjBiNDA3MDM4NWVkYmE4ZTI4MTM3OWExZi4uMzRhNzg0MDhmYjVjOTYz
MGZlNGQ1NmIwZTUxZGYyNTEzZTZjMDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50
LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKIApAQCAtMTgxLDcgKzE4Miw3
IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IG5ld0RhdGEsIHVuc2lnbmVkIG9mCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6dXBkYXRl
UmVuZGVyZXIodW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIGxlbmd0aE9m
UmVwbGFjZWREYXRhKQogewotICAgIGlmICgoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVySXNOZWVk
ZWQocmVuZGVyZXIoKS0+c3R5bGUoKSkpICYmIGF0dGFjaGVkKCkpIHsKKyAgICBpZiAoKCFyZW5k
ZXJlcigpIHx8ICFyZW5kZXJlcklzTmVlZGVkKE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMsIHJl
bmRlcmVyKCktPnN0eWxlKCkpKSkgJiYgYXR0YWNoZWQoKSkgewogICAgICAgICBkZXRhY2goKTsK
ICAgICAgICAgYXR0YWNoKCk7CiAgICAgfSBlbHNlIGlmIChyZW5kZXJlcigpKQpAQCAtMjE3LDEx
ICsyMTgsMTEgQEAgaW50IENoYXJhY3RlckRhdGE6Om1heENoYXJhY3Rlck9mZnNldCgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obGVuZ3RoKCkpOwogfQogCi1ib29sIENoYXJh
Y3RlckRhdGE6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBDaGFy
YWN0ZXJEYXRhOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBm
YWN0b3J5KQogewogICAgIGlmICghbV9kYXRhIHx8ICFsZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBOb2RlOjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICBy
ZXR1cm4gTm9kZTo6cmVuZGVyZXJJc05lZWRlZChmYWN0b3J5KTsKIH0KIAogYm9vbCBDaGFyYWN0
ZXJEYXRhOjpvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmgKaW5kZXggMzlhNmZhYTZhOGRhZWU2MzdkYjhhNTQ4NGFiZjZkY2EyMmE3Zjg1Yy4uNjYx
ZTExMDYzNzcyMmQzNDhmN2ZjODVkYTQwZjU1ZTM5MjZjMTIyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5oCkBAIC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJU
KHR5cGUgPT0gQ3JlYXRlQ29tbWVudCB8fCB0eXBlID09IENyZWF0ZVRleHQpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsK
IAogICAgIHZvaWQgc2V0RGF0YUltcGwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSB7IG1f
ZGF0YSA9IGltcGw7IH0KICAgICB2b2lkIGRpc3BhdGNoTW9kaWZpZWRFdmVudChTdHJpbmdJbXBs
KiBvbGRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBkZjEwMTM4ZjY0
MTUzYWUwYTRhMjMwZDE0ZDNhNzhhNDZjNGRhYzBlLi5hMjEwNDhiNzllNmY0MGQ4ZWE4MzBmODRj
NmQyYzVkZmFjOTdkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5P
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTg4LDYg
Kzg4LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmNwcCIKICNpbmNsdWRlICJOb2RlRmlsdGVy
Q29uZGl0aW9uLmNwcCIKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuY3BwIgorI2luY2x1ZGUgIk5v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcCIKICNpbmNsdWRlICJOb3RhdGlvbi5jcHAiCiAjaW5jbHVk
ZSAiT3B0aW9uRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiT3B0aW9uR3JvdXBFbGVtZW50LmNwcCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwCmluZGV4IGU0MTJhZDY5YjMxNDEzMTM3YTY0ODQ0
NjBiNTA1NmFkNzIwMjU4MTAuLmEzZTdhNGM1M2Y5YTQ5YzJjZWQ4OTJkOWY3ZDI0ZGQ5ZGFjZDVm
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBQYXNz
UmVmUHRyPEVkaXRpbmdUZXh0PiBFZGl0aW5nVGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWRpdGluZ1RleHQo
ZG9jdW1lbnQsIGRhdGEpKTsKIH0KIAotYm9vbCBFZGl0aW5nVGV4dDo6cmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSopCitib29sIEVkaXRpbmdUZXh0OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VkaXRpbmdUZXh0LmgKaW5kZXggMDgyMjNjMjE2YmQxOTM4NmMzMzhmZDdlMjRmNjlhZTM2MmU5
ZDVkZC4uNjUzNmM3YjM4YjQwMGFlOTY2YTljZTcwNDA2ZTFhOThjNmY5MDRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VkaXRpbmdUZXh0LmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEVkaXRpbmdUZXh0PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHls
ZSAqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpOwogCiAgICAgRWRpdGluZ1RleHQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcm
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZDcxN2M4NTI1NDI1NGQ3ZjgzMDAzODYwZmUzODMx
YzI3OGE0OWFmYS4uZmI3YWFiOTRjOGQ4YWE4YTI5ZDFmY2FmNTRmZTM5NzkyZTY0YjAzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5o
IgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgor
I2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgpAQCAtNzUsNyArNzYsNiBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKLSNp
bmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5o
IgpAQCAtMTQ1OSwxODIgKzE0NTksOSBAQCBOb2RlICpOb2RlOjpuZXh0TGVhZk5vZGUoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCi0KLWNsYXNzIE5vZGVSZW5kZXJlckZhY3RvcnkgewotcHVi
bGljOgotICAgIGVudW0gVHJlZUxvY2F0aW9uIHsKLSAgICAgICAgTG9jYXRpb25Ob3RJblRyZWUs
Ci0gICAgICAgIExvY2F0aW9uTGlnaHRDaGlsZCwKLSAgICAgICAgTG9jYXRpb25TaGFkb3dDaGls
ZCwKLSAgICB9OwotCi0gICAgZW51bSBBdHRhY2hQaGFzZSB7Ci0gICAgICAgIEF0dGFjaFN0cmFp
Z2h0LAotICAgICAgICBBdHRhY2hDb250ZW50TGlnaHQsCi0gICAgICAgIEF0dGFjaENvbnRlbnRG
b3J3YXJkZWQsCi0gICAgfTsKLQotICAgIGV4cGxpY2l0IE5vZGVSZW5kZXJlckZhY3RvcnkoTm9k
ZSopOwotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlOyB9Ci0gICAg
dm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9Ci0gICAgdm9pZCBpbml0
aWFsaXplKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIoKSBjb25zdDsKLSAgICBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKTsKLSAgICBib29sIHNob3VsZENy
ZWF0ZVJlbmRlcmVyKCkgY29uc3Q7Ci0KLSAgICBUcmVlTG9jYXRpb24gbV9sb2NhdGlvbjsKLSAg
ICBBdHRhY2hQaGFzZSBtX3BoYXNlOwotICAgIE5vZGUqIG1fbm9kZTsKLSAgICBDb250YWluZXJO
b2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsKLSAgICBTaGFkb3dSb290KiBt
X3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Q7Ci19OwotCi1Ob2RlUmVuZGVyZXJGYWN0b3J5OjpOb2Rl
UmVuZGVyZXJGYWN0b3J5KE5vZGUqIG5vZGUpCi0gICAgOiBtX2xvY2F0aW9uKExvY2F0aW9uTm90
SW5UcmVlKQotICAgICwgbV9waGFzZShBdHRhY2hTdHJhaWdodCkKLSAgICAsIG1fbm9kZShub2Rl
KQotICAgICwgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoMCkKLSAgICAsIG1fdmlz
dWFsUGFyZW50U2hhZG93Um9vdCgwKQotewotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1f
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAocGFyZW50LT5pc1NoYWRvd0JvdW5kYXJ5KCkpIHsKLSAgICAgICAgbV9s
b2NhdGlvbiA9IExvY2F0aW9uU2hhZG93Q2hpbGQ7Ci0gICAgICAgIG1fcGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBtX2xvY2F0aW9uID0gTG9jYXRpb25MaWdodENoaWxkOwotCi0gICAgaWYg
KHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93
Um9vdCA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dSb290KCk7Ci0KLSAgICAgICAgaWYgKG1f
dmlzdWFsUGFyZW50U2hhZG93Um9vdCkgewotICAgICAgICAgICAgaWYgKENvbnRhaW5lck5vZGUq
IGNvbnRlbnRDb250YWluZXIgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmFjdGl2ZUNvbnRl
bnRDb250YWluZXIoKSkgewotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hDb250ZW50
Rm9yd2FyZGVkOwotICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlID0gTm9kZVJlbmRlcmVyRmFjdG9yeShjb250ZW50Q29udGFpbmVyKS5wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9IAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRl
bnRMaWdodDsKLSAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0g
cGFyZW50OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7Ci19Ci0KLWJvb2wgTm9kZVJl
bmRlcmVyRmFjdG9yeTo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAotewotICAgIEFTU0VS
VChtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSk7Ci0KLSAgICBpZiAobV9sb2NhdGlv
biA9PSBMb2NhdGlvbk5vdEluVHJlZSB8fCBtX3BoYXNlID09IEF0dGFjaENvbnRlbnRMaWdodCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJl
ciA9IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5yZW5kZXJlcigpOwotICAgIGlm
ICghcGFyZW50UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX2xv
Y2F0aW9uID09IExvY2F0aW9uTGlnaHRDaGlsZCAmJiBtX3BoYXNlID09IEF0dGFjaFN0cmFpZ2h0
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZ25vcmluZyBjYW5IYXZlQ2hpbGRyZW4oKSBpbiBhIGNh
c2Ugb2Ygc2hhZG93IGNoaWxkcmVuIG1pZ2h0IGJlIHdyb25nLgotICAgICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDIzCi0gICAgICAgIGlmICgh
cGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgICAgICBpZiAobV92aXN1YWxQYXJlbnRTaGFkb3dSb290ICYmICFtX3Bh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2FuSGF2ZUxpZ2h0Q2hpbGRSZW5kZXJlcldp
dGhTaGFkb3coKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
IW1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5jaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKG1fbm9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1SZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVyQW5k
U3R5bGUoKQotewotICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJlcigpKTsKLSAgICBBU1NFUlQo
ZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpOwotCi0gICAgaWYgKCFzaG91bGRD
cmVhdGVSZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gc3R5bGUgPSBtX25vZGUtPnN0eWxlRm9yUmVuZGVyZXIoKTsKLSAgICBpZiAoIW1fbm9k
ZS0+cmVuZGVyZXJJc05lZWRlZChzdHlsZS5nZXQoKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IG1fbm9kZS0+Y3JlYXRlUmVuZGVyZXIoZG9j
dW1lbnQoKS0+cmVuZGVyQXJlbmEoKSwgc3R5bGUuZ2V0KCkpOwotICAgIGlmICghbmV3UmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKCFtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZS0+cmVuZGVyZXIoKS0+aXNDaGlsZEFsbG93ZWQobmV3UmVuZGVyZXIsIHN0eWxl
LmdldCgpKSkgewotICAgICAgICBuZXdSZW5kZXJlci0+ZGVzdHJveSgpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBtX25vZGUtPnNldFJlbmRlcmVyKG5ld1JlbmRlcmVyKTsKLSAg
ICBuZXdSZW5kZXJlci0+c2V0QW5pbWF0YWJsZVN0eWxlKHN0eWxlLnJlbGVhc2UoKSk7IC8vIHNl
dEFuaW1hdGFibGVTdHlsZSgpIGNhbiBkZXBlbmQgb24gcmVuZGVyZXIoKSBhbHJlYWR5IGJlaW5n
IHNldC4KLSAgICByZXR1cm4gbmV3UmVuZGVyZXI7Ci19Ci0KLVJlbmRlck9iamVjdCogTm9kZVJl
bmRlcmVyRmFjdG9yeTo6bmV4dFJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9waGFzZSAh
PSBBdHRhY2hDb250ZW50Rm9yd2FyZGVkKQotICAgICAgICByZXR1cm4gbV9ub2RlLT5uZXh0UmVu
ZGVyZXIoKTsKLSAgICAvLyBSZXR1cm5zIDAgaGVyZSB0byBpbnNlcnQgcmVuZGVyZXIgYXQgdGhl
IGVuZCBvZiBjaGlsZCBsaXN0LgotICAgIC8vIFdlIGFzc3VtZSBjb250ZW50IGNoaWxkcmVuIGFy
ZSBhbHdheXMgYXR0YWNoZWQgaW4gdHJlZSBvcmRlciBhbmQKLSAgICAvLyB0aGVyZSBpcyBubyBw
YXJ0aWFsIHJlbmRlciB0cmVlIGNyZWF0aW9uLgotICAgIHJldHVybiAwOwotfQotCi0jaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotc3RhdGljIFJlbmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRoUmVu
ZGVyRnVsbFNjcmVlbihSZW5kZXJPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50KQot
ewotICAgIFJlbmRlckZ1bGxTY3JlZW4qIGZ1bGxzY3JlZW5SZW5kZXJlciA9IG5ldyAoZG9jdW1l
bnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW4oZG9jdW1lbnQpOwotICAgIGZ1bGxz
Y3JlZW5SZW5kZXJlci0+c2V0U3R5bGUoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlRnVsbFNjcmVl
blN0eWxlKCkpOwotICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBmYWlsZWQgdG8gY3JlYXRl
IHRoZSBuZXcgcmVuZGVyIGFuZCBlbmQgdXAgd3JhcHBpbmcgbm90aGluZy4KLSAgICAvLyBXZSds
bCBlbmQgdXAgZGlzcGxheWluZyBhIGJsYWNrIHNjcmVlbiwgYnV0IEplciBzYXlzIHRoaXMgaXMg
ZXhwZWN0ZWQuCi0gICAgaWYgKG9iamVjdCkKLSAgICAgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5h
ZGRDaGlsZChvYmplY3QpOwotICAgIGRvY3VtZW50LT5zZXRGdWxsU2NyZWVuUmVuZGVyZXIoZnVs
bHNjcmVlblJlbmRlcmVyKTsKLSAgICByZXR1cm4gZnVsbHNjcmVlblJlbmRlcmVyOwotfQotI2Vu
ZGlmCi0KLXZvaWQgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgp
Ci17Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKCFtX25vZGUtPnJlbmRlcmVyKCkpOwotCi0gICAgUmVu
ZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKTsKLQotI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxs
U2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkg
PT0gbV9ub2RlKQotICAgICAgICBuZXdSZW5kZXJlciA9IHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVl
bihuZXdSZW5kZXJlciwgZG9jdW1lbnQoKSk7Ci0jZW5kaWYKLQotICAgIC8vIEZJWE1FOiBUaGlz
IHNpZGUgZWZmZWN0IHNob3VsZCBiZSB2aXNpYmxlIGZyb20gYXR0YWNoKCkgY29kZS4KLSAgICBp
ZiAobV9waGFzZSA9PSBBdHRhY2hDb250ZW50TGlnaHQpCi0gICAgICAgIG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdC0+aG9zdENoaWxkcmVuQ2hhbmdlZCgpOwotCi0gICAgaWYgKCFuZXdSZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gTm90ZTogQWRkaW5nIG5ld1JlbmRlcmVyIGlu
c3RlYWQgb2YgcmVuZGVyZXIoKS4gcmVuZGVyZXIoKSBtYXkgYmUgYSBjaGlsZCBvZiBuZXdSZW5k
ZXJlci4KLSAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+cmVuZGVyZXIoKS0+
YWRkQ2hpbGQobmV3UmVuZGVyZXIsIG5leHRSZW5kZXJlcigpKTsKLX0KLQogQ29udGFpbmVyTm9k
ZSogTm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCkKIHsKLSAgICByZXR1cm4g
Tm9kZVJlbmRlcmVyRmFjdG9yeSh0aGlzKS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUo
KTsKKyAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQodGhpcykucGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlKCk7CiB9CiAKIHZvaWQgTm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRl
ZCgpCkBAIC0xNjU1LDkgKzE0ODIsOSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlOjpz
dHlsZUZvclJlbmRlcmVyKCkKICAgICByZXR1cm4gcGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUo
KS0+cmVuZGVyZXIoKSA/IHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IDA7CiB9
CiAKLWJvb2wgTm9kZTo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCitib29s
IE5vZGU6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgcmV0dXJuIChkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSB0aGlz
KSB8fCAoc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FKTsKKyAgICByZXR1cm4gKGRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpID09IHRoaXMpIHx8IChjb250ZXh0LnN0eWxlKCktPmRpc3BsYXko
KSAhPSBOT05FKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlOjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDMxZmE4YmYzN2M5MGUwMWM2
NDAwOTQ1NjViNjgzYjI0YmMxNzM2NmIuLmUzNDdiZWIwODk0OTJiNmNhZGJkN2QyY2JjNmRkMTk2
NmRjYzNlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBOYW1lZE5vZGVN
YXA7CiBjbGFzcyBOYW1lTm9kZUxpc3Q7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIE5vZGVSYXJl
RGF0YTsKK2NsYXNzIE5vZGVSZW5kZXJpbmdDb250ZXh0OwogY2xhc3MgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xhc3MgUGxhdGZvcm1XaGVlbEV2
ZW50OwpAQCAtNDUxLDcgKzQ1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJl
bW92ZSgpOwogICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwogICAgIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUmVuZGVyZXIoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTliOTZlYzdjY2IyNGUyYzdlM2NlMzJlZTlhNWM0YzMyY2QyYzA4YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCisKKyNpbmNsdWRlICJDb250YWlu
ZXJOb2RlLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4u
aCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0KE5vZGUqIG5vZGUpCisgICAgOiBtX2xvY2F0aW9uKExvY2F0aW9uTm90SW5UcmVl
KQorICAgICwgbV9waGFzZShBdHRhY2hTdHJhaWdodCkKKyAgICAsIG1fbm9kZShub2RlKQorICAg
ICwgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoMCkKKyAgICAsIG1fdmlzdWFsUGFy
ZW50U2hhZG93Um9vdCgwKQorICAgICwgbV9zdHlsZSgwKQoreworICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmICghcGFyZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFyZW50LT5pc1NoYWRvd0JvdW5kYXJ5KCkpIHsK
KyAgICAgICAgbV9sb2NhdGlvbiA9IExvY2F0aW9uU2hhZG93Q2hpbGQ7CisgICAgICAgIG1fcGFy
ZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xvY2F0aW9uID0gTG9jYXRpb25MaWdodENoaWxk
OworCisgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdCA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dSb290KCk7CisKKyAg
ICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCkgeworICAgICAgICAgICAgaWYgKENv
bnRhaW5lck5vZGUqIGNvbnRlbnRDb250YWluZXIgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Qt
PmFjdGl2ZUNvbnRlbnRDb250YWluZXIoKSkgeworICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBB
dHRhY2hDb250ZW50Rm9yd2FyZGVkOworICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQoY29udGVudENvbnRhaW5lciku
cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fcGhhc2Ug
PSBBdHRhY2hDb250ZW50TGlnaHQ7CisgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSA9IHBhcmVudDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OworfQor
CitOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDogbV9sb2NhdGlvbihMb2NhdGlvbk5vdEluVHJlZSkK
KyAgICAsIG1fcGhhc2UoQXR0YWNoU3RyYWlnaHQpCisgICAgLCBtX25vZGUobm9kZSkKKyAgICAs
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCisgICAgLCBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fc3R5bGUoc3R5bGUpCit7Cit9CisKK05vZGVSZW5kZXJp
bmdDb250ZXh0Ojp+Tm9kZVJlbmRlcmluZ0NvbnRleHQoKQoreworfQorCit2b2lkIE5vZGVSZW5k
ZXJpbmdDb250ZXh0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK3sK
KyAgICBtX3N0eWxlID0gc3R5bGU7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpyZWxlYXNlU3R5bGUoKQoreworICAgIHJldHVybiBtX3N0eWxlLnJl
bGVhc2UoKTsKK30KKworUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9waGFzZSAhPSBBdHRhY2hDb250ZW50Rm9yd2Fy
ZGVkKQorICAgICAgICByZXR1cm4gbV9ub2RlLT5uZXh0UmVuZGVyZXIoKTsKKyAgICAvLyBSZXR1
cm5zIDAgaGVyZSB0byBpbnNlcnQgcmVuZGVyZXIgYXQgdGhlIGVuZCBvZiBjaGlsZCBsaXN0Lgor
ICAgIC8vIFdlIGFzc3VtZSBjb250ZW50IGNoaWxkcmVuIGFyZSBhbHdheXMgYXR0YWNoZWQgaW4g
dHJlZSBvcmRlciBhbmQKKyAgICAvLyB0aGVyZSBpcyBubyBwYXJ0aWFsIHJlbmRlciB0cmVlIGNy
ZWF0aW9uLgorICAgIHJldHVybiAwOworfQorCitSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyZW50Tm9k
ZUZvclJlbmRlcmluZ0FuZFN0eWxlLT5yZW5kZXJlcigpOworfQorCit2b2lkIE5vZGVSZW5kZXJp
bmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9waGFzZSA9PSBB
dHRhY2hDb250ZW50TGlnaHQpCisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9z
dENoaWxkcmVuQ2hhbmdlZCgpOworfQorCitib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91
bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKHBhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSgpKTsKKworICAgIGlmIChtX2xvY2F0aW9uID09IExvY2F0aW9uTm90SW5U
cmVlIHx8IG1fcGhhc2UgPT0gQXR0YWNoQ29udGVudExpZ2h0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVu
ZGVyZXIoKTsKKyAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAobV9sb2NhdGlvbiA9PSBMb2NhdGlvbkxpZ2h0Q2hpbGQgJiYgbV9waGFzZSA9
PSBBdHRhY2hTdHJhaWdodCkgeworICAgICAgICAvLyBGSVhNRTogSWdub3JpbmcgY2FuSGF2ZUNo
aWxkcmVuKCkgaW4gYSBjYXNlIG9mIHNoYWRvdyBjaGlsZHJlbiBtaWdodCBiZSB3cm9uZy4KKyAg
ICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQy
MworICAgICAgICBpZiAoIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hh
ZG93Um9vdCAmJiAhbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUtPmNhbkhhdmVMaWdo
dENoaWxkUmVuZGVyZXJXaXRoU2hhZG93KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKCFtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZS0+Y2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihtX25vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworCitOb2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVyZXJG
YWN0b3J5KE5vZGUqIG5vZGUpCisgICAgOiBtX2NvbnRleHQobm9kZSkKK3sKK30KKworUmVuZGVy
T2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlckFuZFN0eWxlKCkKK3sK
KyAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0Lm5vZGUoKTsKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBub2RlLT5kb2N1bWVudCgpOworICAgIEFTU0VSVCghbm9kZS0+cmVuZGVyZXIoKSk7Cisg
ICAgQVNTRVJUKGRvY3VtZW50LT5zaG91bGRDcmVhdGVSZW5kZXJlcnMoKSk7CisKKyAgICBpZiAo
IW1fY29udGV4dC5zaG91bGRDcmVhdGVSZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIG1fY29udGV4dC5zZXRTdHlsZShub2RlLT5zdHlsZUZvclJlbmRlcmVyKCkpOworICAgIGlm
ICghbm9kZS0+cmVuZGVyZXJJc05lZWRlZChtX2NvbnRleHQpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBub2RlLT5jcmVhdGVSZW5kZXJlcihk
b2N1bWVudC0+cmVuZGVyQXJlbmEoKSwgbV9jb250ZXh0LnN0eWxlKCkpOworICAgIGlmICghbmV3
UmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2NvbnRleHQucGFyZW50
UmVuZGVyZXIoKS0+aXNDaGlsZEFsbG93ZWQobmV3UmVuZGVyZXIsIG1fY29udGV4dC5zdHlsZSgp
KSkgeworICAgICAgICBuZXdSZW5kZXJlci0+ZGVzdHJveSgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBub2RlLT5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7CisgICAgbmV3UmVu
ZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShtX2NvbnRleHQucmVsZWFzZVN0eWxlKCkpOyAvLyBz
ZXRBbmltYXRhYmxlU3R5bGUoKSBjYW4gZGVwZW5kIG9uIHJlbmRlcmVyKCkgYWxyZWFkeSBiZWlu
ZyBzZXQuCisgICAgcmV0dXJuIG5ld1JlbmRlcmVyOworfQorCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorc3RhdGljIFJlbmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVl
bihSZW5kZXJPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlbmRl
ckZ1bGxTY3JlZW4qIGZ1bGxzY3JlZW5SZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFy
ZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW4oZG9jdW1lbnQpOworICAgIGZ1bGxzY3JlZW5SZW5kZXJl
ci0+c2V0U3R5bGUoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlRnVsbFNjcmVlblN0eWxlKCkpOwor
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBmYWlsZWQgdG8gY3JlYXRlIHRoZSBuZXcgcmVu
ZGVyIGFuZCBlbmQgdXAgd3JhcHBpbmcgbm90aGluZy4KKyAgICAvLyBXZSdsbCBlbmQgdXAgZGlz
cGxheWluZyBhIGJsYWNrIHNjcmVlbiwgYnV0IEplciBzYXlzIHRoaXMgaXMgZXhwZWN0ZWQuCisg
ICAgaWYgKG9iamVjdCkKKyAgICAgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5hZGRDaGlsZChvYmpl
Y3QpOworICAgIGRvY3VtZW50LT5zZXRGdWxsU2NyZWVuUmVuZGVyZXIoZnVsbHNjcmVlblJlbmRl
cmVyKTsKKyAgICByZXR1cm4gZnVsbHNjcmVlblJlbmRlcmVyOworfQorI2VuZGlmCisKK3ZvaWQg
Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCit7CisgICAgTm9k
ZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbm9k
ZS0+ZG9jdW1lbnQoKTsKKworICAgIGlmICghZG9jdW1lbnQtPnNob3VsZENyZWF0ZVJlbmRlcmVy
cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0g
Y3JlYXRlUmVuZGVyZXJBbmRTdHlsZSgpOworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIGlmIChkb2N1bWVudC0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQtPndlYmtp
dEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG5vZGUpCisgICAgICAgIG5ld1JlbmRlcmVy
ID0gd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKG5ld1JlbmRlcmVyLCBkb2N1bWVudCk7CisjZW5k
aWYKKworICAgIC8vIEZJWE1FOiBUaGlzIHNpZGUgZWZmZWN0IHNob3VsZCBiZSB2aXNpYmxlIGZy
b20gYXR0YWNoKCkgY29kZS4KKyAgICBtX2NvbnRleHQuaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwor
CisgICAgaWYgKCFuZXdSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTm90ZTog
QWRkaW5nIG5ld1JlbmRlcmVyIGluc3RlYWQgb2YgcmVuZGVyZXIoKS4gcmVuZGVyZXIoKSBtYXkg
YmUgYSBjaGlsZCBvZiBuZXdSZW5kZXJlci4KKyAgICBtX2NvbnRleHQucGFyZW50UmVuZGVyZXIo
KS0+YWRkQ2hpbGQobmV3UmVuZGVyZXIsIG1fY29udGV4dC5uZXh0UmVuZGVyZXIoKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWM2YTVkYzQxN2Q4MDFmODNhY2EyMjg5M2U1ZjA1MTJiOGE2NzU5MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgTm9kZVJlbmRlcmluZ0NvbnRleHRf
aAorI2RlZmluZSBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9kZTsKK2Ns
YXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2hhZG93Um9vdDsK
KworY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRleHQgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqKTsKKyAgICBOb2RlUmVuZGVyaW5nQ29udGV4dChOb2Rl
KiwgUmVuZGVyU3R5bGUqKTsKKyAgICB+Tm9kZVJlbmRlcmluZ0NvbnRleHQoKTsKKworICAgIE5v
ZGUqIG5vZGUoKSBjb25zdDsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUoKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyKCkg
Y29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIoKSBjb25zdDsKKworICAgIFJl
bmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4pOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHJlbGVhc2VTdHlsZSgp
OworCisgICAgYm9vbCBzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0OworCisgICAgdm9pZCBo
b3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgZW51bSBUcmVlTG9jYXRpb24g
eworICAgICAgICBMb2NhdGlvbk5vdEluVHJlZSwKKyAgICAgICAgTG9jYXRpb25MaWdodENoaWxk
LAorICAgICAgICBMb2NhdGlvblNoYWRvd0NoaWxkLAorICAgIH07CisKKyAgICBlbnVtIEF0dGFj
aFBoYXNlIHsKKyAgICAgICAgQXR0YWNoU3RyYWlnaHQsCisgICAgICAgIEF0dGFjaENvbnRlbnRM
aWdodCwKKyAgICAgICAgQXR0YWNoQ29udGVudEZvcndhcmRlZCwKKyAgICB9OworCisgICAgVHJl
ZUxvY2F0aW9uIG1fbG9jYXRpb247CisgICAgQXR0YWNoUGhhc2UgbV9waGFzZTsKKyAgICBOb2Rl
KiBtX25vZGU7CisgICAgQ29udGFpbmVyTm9kZSogbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5k
U3R5bGU7CisgICAgU2hhZG93Um9vdCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290OworICAgIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKK307CisKK2lubGluZSBOb2RlKiBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6bm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbm9kZTsKK30KKworaW5s
aW5lIENvbnRhaW5lck5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZTsKK30KKworaW5saW5lIFJlbmRlclN0eWxlKiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6c3R5bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0eWxlLmdldCgpOworfQorCisK
K2NsYXNzIE5vZGVSZW5kZXJlckZhY3RvcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5v
ZGVSZW5kZXJlckZhY3RvcnkpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IE5vZGVSZW5kZXJlckZhY3RvcnkoTm9kZSopOworCisgICAgY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZVJl
bmRlcmVySWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyQW5kU3R5bGUoKTsKKworICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0IG1fY29udGV4dDsK
K307CisKK2lubGluZSBjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgTm9kZVJlbmRlcmVyRmFj
dG9yeTo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmgKaW5kZXggMDdiNzhmNzYwNDU1MmExZmY0ZmFjZDAzMWE1YTFiNDQxNTNi
NzJhNS4uMDlmZGI0MjAzODljMDc4OTQ4NjQ4NDM5NjkxOGZkMjBjZGYxZDM3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0YWctbmFt
ZSBjaGVja2luZyBvbmNlIDxjb250ZW50PiBpcyByZWFkeS4KICAgICAvLyBTZWUgYWxzbyBodHRw
Oi8vd2Via2l0Lm9yZy9iLzU2OTczCiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Qm91bmRhcnko
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBi
NzEwMGZlYzQwYjY2MzUxYTY4NDMzZTdkNGY4ZTkyN2YxN2I3NGUwLi5iOTY4ZjA1MTZhNjU4NTRj
NTkyYjc5OTA0NTk1ZjlkOTVlN2M4NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMyw2ICsyMyw3
IEBACiAjaW5jbHVkZSAiVGV4dC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRl
eHQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAKQEAgLTE4OSw5ICsxOTAsOSBAQCBQYXNz
UmVmUHRyPE5vZGU+IFRleHQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogICAgIHJldHVybiBj
cmVhdGUoZG9jdW1lbnQoKSwgZGF0YSgpKTsKIH0KIAotYm9vbCBUZXh0OjpyZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKK2Jvb2wgVGV4dDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIUNoYXJhY3RlckRh
dGE6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpKQorICAgIGlmICghQ2hhcmFjdGVyRGF0YTo6cmVu
ZGVyZXJJc05lZWRlZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9v
bCBvbmx5V1MgPSBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CkBAIC0yMDMsNyArMjA0LDcgQEAg
Ym9vbCBUZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKICAgICBpZiAo
cGFyLT5pc1RhYmxlKCkgfHwgcGFyLT5pc1RhYmxlUm93KCkgfHwgcGFyLT5pc1RhYmxlU2VjdGlv
bigpIHx8IHBhci0+aXNUYWJsZUNvbCgpIHx8IHBhci0+aXNGcmFtZVNldCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHN0eWxlLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgLy8g
cHJlL3ByZS13cmFwL3ByZS1saW5lIGFsd2F5cyBtYWtlIHJlbmRlcmVycy4KKyAgICBpZiAoY29u
dGV4dC5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgLy8gcHJlL3ByZS13cmFwL3ByZS1saW5l
IGFsd2F5cyBtYWtlIHJlbmRlcmVycy4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAg
UmVuZGVyT2JqZWN0ICpwcmV2ID0gcHJldmlvdXNSZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXgg
Yzk3ODM0M2QzZTFkYWM4NTlhMDNmNmU0ZDdiMzI3NzRjYjFlZjY5Ny4uM2NjOGM1MDJhNDNiNzBh
MzNiNWEzMDM5ZmQxZDNlMDMxYjUwNDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC01NSw3ICs1NSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5v
ZGU+IGNsb25lTm9kZShib29sIGRlZXApOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGM3OTk1YjU2YjQ5NmQ0MzdhNWJlZGMwNGIzMmVmZTYw
NzExNzMwOGIuLjg1MjBjMmM3Y2E2MTlhYTIxOGZlMzM2OWQ1OTQwMDYxMjQyN2UzN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC0xMDAsMTIgKzEwMCwx
MSBAQCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICBI
VE1MUGx1Z0luRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1ib29sIEhUTUxB
cHBsZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wg
SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGNvZGVBdHRyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IDBmM2FhZDg2OTA5MDYx
MjcwNjJhODJhY2I0ZDE5NWEyMTVhZjVjYjcuLjg0Y2U2MTgzZjNlYTg5ZDFiMjlhZTIwYzNjMDZi
Zjg1ZWJhZmU5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAg
LTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKaW5kZXggNDBhOWExYmI4ODY4MDdkNDkyZmRlNmNhYWY3NmJlZDYzNmFmNGRlNy4uNGU4YmE2
ZjNmNjRiZDJhYTNiYjFiNjVhZWUwYzRmOTlhYWU0NjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKQEAgLTc2OSw3ICs3NjksNyBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBIVE1MRWxlbWVudDo6Y2hpbGRyZW4oKQogICAgIHJldHVybiBIVE1MQ29sbGVjdGlvbjo6Y3Jl
YXRlKHRoaXMsIE5vZGVDaGlsZHJlbik7CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQorYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAo
aGFzTG9jYWxOYW1lKG5vc2NyaXB0VGFnKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpOwpAQCAtNzg1LDcgKzc4NSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogICAgICAgICBpZiAoZnJhbWUgJiYg
ZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRU
b0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJl
dHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBSZW5k
ZXJPYmplY3QqIEhUTUxFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCA1YTVm
ZGZiNjc0OTVhMjA2MjgwZDBlZjNiM2NlMTk2Zjg1M2JlYjVhLi45YzQwN2UxOGM1MjQzODg0YTJk
ZmRhNmNjOGM0ZTc5NDlhNDMxNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAppbmRleCBiMjgwZGFkOTA2MTFiZWVhOTg0M2ZjYzliZThlNGRkZjhhMzE1Mjhk
Li4zOGIyNDE2MGJhZTY0OWYxZGEwM2Q4ZTViYzUxMzljZDI5YmUyMjUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE4MywxMCArMTgzLDEwIEBAIHZvaWQg
SFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdp
bkNyZWF0aW9uT3B0aW9uKQogICAgIGxvYWRlci0+cmVxdWVzdE9iamVjdCh0aGlzLCBtX3VybCwg
Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSwgbV9zZXJ2aWNlVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1W
YWx1ZXMpOwogfQogCi1ib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChpc0ltYWdl
VHlwZSgpKQotICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgSFRN
TEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAg
fQogI2VuZGlmCiAKLSAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRl
eCA4NjNjMDliZWU0ZWJhZTk2ZDdmNTg1OTUyZDMwYzI3OGNhOWI2OWZiLi5iOWRjNzk4OTcxMTNk
NzFhOWRmMThhNjNmOWFiYTFhMGJmNTNjOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBt
YXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVF
bnRyeSYgcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNTJiZmRh
MzAwZWI0OWM3MmI3NGU3MTMxOTU5MjEzOTgwMTAwNGQ0Yy4uMDZhN2Q2NTY2NTYwYTc4NTQ0Mjcx
NTE0ZDI2ZThkYzEyYWJmNzAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgi
CkBAIC0xMDQsMTAgKzEwNSwxMCBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6Zm9ybVdvdWxkSGF2
ZVNlY3VyZVN1Ym1pc3Npb24oY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIGRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKHVybCkucHJvdG9jb2xJcygiaHR0cHMiKTsKIH0KIAotYm9vbCBIVE1M
Rm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBI
VE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3dhc0RlbW90ZWQpCi0gICAgICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBIVE1M
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIENvbnRhaW5lck5vZGUq
IG5vZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CkBAIC0xMjAsNyArMTIxLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGlmICghcGFyZW50
SXNUYWJsZUVsZW1lbnRQYXJ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVEaXNwbGF5
IGRpc3BsYXkgPSBzdHlsZS0+ZGlzcGxheSgpOworICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBjb250
ZXh0LnN0eWxlKCktPmRpc3BsYXkoKTsKICAgICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRpc3Bs
YXkgPT0gVEFCTEUgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEUgfHwgZGlzcGxheSA9PSBUQUJM
RV9ST1dfR1JPVVAKICAgICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwg
ZGlzcGxheSA9PSBUQUJMRV9GT09URVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1cKICAg
ICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9DT0xVTU5fR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJM
RV9DT0xVTU4gfHwgZGlzcGxheSA9PSBUQUJMRV9DRUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaAppbmRleCAzMTAwZjY3YWRmZTFjYzZlYWVjYWY0YWNkMDc2NjNjNzQ4MjYxNGVh
Li41NjQ3NzJlNzNiY2Y5NmE0NDk5MzhhYTI4ZTExMjUyYzJjMWZhOWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcAppbmRleCBhOGMyNjQ1OWJjYTc3NTUyNThiYTlmZGY1MmRjODExYWI5
YTQ3MTJmLi4zNGVkZThkZjhhMWY4ZTYyN2QzZWZkZGU5NWIzZWFhNzgzNTZhMjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUGFz
c1JlZlB0cjxIVE1MRnJhbWVFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKK2Jvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgLy8gRm9y
IGNvbXBhdGliaWxpdHksIGZyYW1lcyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMg
c2V0LgogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50LmgKaW5kZXggNjZmY2NmMzMzYmIzZDRmNWQ4YTE5YzdjODA4MzU3NTkzMGQ4ZmZh
Mi4uM2IwNzYxYTdhYjIzMTc1MTYxYmFlNTc2YjU5MmUyYmFjNGEzMWQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDJmMzc1Y2JjYTI2ZWQ4NzM3
NDE0OTczYTc4N2ZiNDAxNTZjNDdjMzQuLjhiNzMxODQwNDJiMTkzMzQzMmUzOTZjMzE1MThhYzhl
YmUxNmU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxl
bmd0aC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTE0NywxMSArMTQ4LDExIEBA
IHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKLWJvb2wgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSAqc3R5bGUpCitib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRm9yIGNvbXBh
dGliaWxpdHksIGZyYW1lcyByZW5kZXIgZXZlbiB3aGVuIGRpc3BsYXk6IG5vbmUgaXMgc2V0Lgog
ICAgIC8vIEhvd2V2ZXIsIHdlIGRlbGF5IGNyZWF0aW5nIGEgcmVuZGVyZXIgdW50aWwgc3R5bGVz
aGVldHMgaGF2ZSBsb2FkZWQuIAotICAgIHJldHVybiBzdHlsZS0+aXNTdHlsZUF2YWlsYWJsZSgp
OworICAgIHJldHVybiBjb250ZXh0LnN0eWxlKCktPmlzU3R5bGVBdmFpbGFibGUoKTsKIH0KIAog
UmVuZGVyT2JqZWN0ICpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZjJmODQzOTc3NmU3ODUyN2I0MGI5ZjZmNzRlNjMyOWQz
MGUwZjA3OC4uN2ZjNDQ1Y2E3NGEzYmI3YTA5OWNhMjU2MTJmNDk1NzViYTdmZDQ4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMDZhZjA5MzZiNzhkY2I5OWY3Mjk3
YjUxM2RkMTc4MDYzYjNlNTMzMy4uMTMzM2M4ZTk5OWEwOGU1MDNhYmMxMmIxMDk2NjdlYTEzODA4
MWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVuZGVySUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTEzMSw5ICsxMzIsOSBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJRnJhbWVFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7
CisgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIGNvbnRleHQuc3R5bGUoKS0+ZGlzcGxheSgp
ICE9IE5PTkU7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5oCmluZGV4IDYxY2Q2YjY4ZWQ2NDhhMzIyNTllZjQ1N2JlZTQ4
ODA1NzMwZjM3MjYuLmRjNTIyYzU2MzUwNmI1N2JiY2E2MDlmOTc2ODhjZWViMjg0MzdkYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIAotICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDI1NjJmYzZlM2Ux
MDYyYzFmZGVjOWM3ZjEyNzRhNzRiMTk1NTE4MjEuLmI5ZGMxMmI3NmExYzdmN2U1MDg1YTg3Nzcy
MmUyNTE0MTEzOWVmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtNzIzLDkgKzcyMyw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkKICAgICB9CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZTo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogUmVuZGVyT2JqZWN0KiBI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXgg
MzhiZDZjODY1YTdjMTdmNzBkMzc2NzhiYjJiODgxNDE4ZTgyZDExZC4uZWE2MjgwOTE3ZGQ4Y2E5
MGM2YTQ0YWEyZWNiY2M5MGM5OGIwNDY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhdmVT
ZWxlY3Rpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMmFi
MDhlZmFlYWEyNWE5NDY4YTVkMWY3OTU1MTVmYWUwZTBjYzgwNC4uYTZkMmRlZmZlNjBkMTVmYzg0
YWYyNDhjNWU4MzVjZmQ0MmU3YmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0zMTMsMTcgKzMxMywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgSFRNTEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0
KQogewogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIFVOVVNFRF9QQVJB
TShzdHlsZSk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiBjb250cm9scygpID8g
SFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpIDogZmFsc2U7CisgICAgcmV0dXJu
IGNvbnRyb2xzKCkgPyBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KSA6IGZh
bHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggZjllOTNiNGM3YjQxNTRkZDViZmRlNzc5YWQ3NzIxZmE3NzZkY2FkNS4uN2UwYjgxZDM4ZWEw
ODZlNzNkMjAxZGM5OWQwODNiYjhhNjcxMWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2
ZURlY2xzKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSop
OworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0Jik7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaAppbmRleCA5YTNiOTJkMzhiZDVkMDNh
ZDk3ZGEzN2RkYjRiMWRmYzZmNzNmNmM2Li4wOWRlMjAzMjYwZTkwOGY0ZGVkZTI1OWFkNzY1M2Ex
M2YwNDY2NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaApA
QCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgIHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KSB7ICByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBiYjY0ODBlNjBkZTNjN2VhYjgyMThlZTMw
NDc4ZGY2NTYwNzIyYWJhLi4zYmUwMDlkNjE5MmI3ZGM0NzBkZjE3OGZiNzY1M2FjMDJhMjBmNzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzAwLDE0
ICszMDAsMTQgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNy
ZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgICAgICByZW5kZXJGYWxsYmFj
a0NvbnRlbnQoKTsKIH0KIAotYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLCBkZXRhY2hlZCBkb2N1bWVudHMg
bmV2ZXIgcmVuZGVyIQogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiB2
b2lkIEhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggNjQxZTUwZTc3ZTg0YjAxMzdmZjAwOGNm
NWIyMTY1ZjAyZDg5MzU3Ni4uMThiYzdmNTQzZTQ4YTJhODU2ZmRiZmNlNDU2MTIzYzMyYjRkNzU3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzIsNyArNzIs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVl
cCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogCi0gICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCmlu
ZGV4IGE1OGU5NTc2ZjAyNjA5YmYzZThhYmFjNzE0MWNhZTdmODVjN2FiNzQuLmI3Nzc3YTY1MDdj
MmNmOWI5MjRiZDM5NzcxYjY2ODA2MGE2NjNhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdEdyb3VwRWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2Fi
bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRSZW5kZXJTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggYzE3OTFkNzAwOWYyMjY4ODljYjYwNzRhYWZm
MjJmY2VlODJhZTNlNC4uMjJjZTFiNjJhMTcxMGI4NGFjZTNkZTQyZGQwZjFjNjJmNWY0ZWE5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNjgsNyArNjgsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbmRlclN0eWxlKFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmlu
ZGV4IDViN2Y0MmRlYTQ2MTQ4OTQyZWZjYTc4ODBjNTBkMmMwY2VhYTA0OGMuLjU5MDI3YTQxYzcw
OTQ1NjI3M2FjOTAwOTg5OGUyYmRmYWYwZWZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcApAQCAtNTUsOSArNTUsOSBAQCBQYXNzUmVmUHRyPEhUTUxWaWRlb0Vs
ZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFZpZGVvRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi1ib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqIHN0eWxlKSAKK2Jvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgCiB7Ci0gICAgcmV0dXJuIEhU
TUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgCisgICAgcmV0dXJuIEhUTUxFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOyAKIH0KIAogI2lmICFFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5k
ZXggNTdiNzBlYTFhYjJiYjcxYjExNmIyM2E3NzlmMTQ3MzY2MDZkOTFiZC4uNDUwNDM4YTJkZmFk
ZTZkMzFjM2E5ZTZlYTBmNDJhZGFiYTExODQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1M
VmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogI2lmICFF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAK
aW5kZXggMWQ4YTZlNjhlY2YxOWFjYzhmOTM5YWFmZDM1NGZkZDhhNzhhN2FkMy4uZDRmZGRkMzBm
NzU0MDQ4ZWFjMjcxMDUwZWM0OTU1M2Y5ZmQxODEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcApAQCAtNTEsOSArNTEsOSBA
QCBSZW5kZXJPYmplY3QqIERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJE
ZXRhaWxzTWFya2VyKHRoaXMpOwogfQogCi1ib29sIERldGFpbHNNYXJrZXJDb250cm9sOjpyZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKK2Jvb2wgRGV0YWlsc01hcmtlckNvbnRy
b2w6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIHN1bW1hcnlFbGVtZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBIVE1M
RGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgcmV0dXJuIHN1bW1hcnlF
bGVtZW50KCktPmlzTWFpblN1bW1hcnkoKSAmJiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb250ZXh0KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBEZXRhaWxzTWFya2VyQ29u
dHJvbDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKaW5kZXggM2M1YjA5ZGYyNDY0NTkxM2QxMzA0
ZDljMDdjNThmNGY2YzBjMWE1Yy4uMWFhMTRjYWIzZGQxNzlhYzE0YmYzMTY5YTlmYTRhNzM0Yjg2
YTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtl
ckNvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2Vy
Q29udHJvbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKIAogICAgIEhUTUxTdW1tYXJ5RWxlbWVudCogc3VtbWFyeUVsZW1lbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4
IGE1ZWI3MGI1ODVhOTU0YTZlM2U0YTE3ODUyMTcxMzk4Zjc3Y2U4MmUuLjYwZGM3YmY2MzBjN2Y2
MzZmZTQ2NGY2ZWMzZWViOTM4ODkxZDA5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIEhUTUxN
ZXRlckVsZW1lbnQqIE1ldGVyU2hhZG93RWxlbWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1ldGVyRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29s
IE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUp
Citib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZW5kZXJNZXRlciogbWV0ZXJSZW5kZXJl
ciA9IHRvUmVuZGVyTWV0ZXIobWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpOwotICAgIHJldHVy
biBtZXRlclJlbmRlcmVyICYmICFtZXRlclJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01ldGVy
KG1ldGVyUmVuZGVyZXItPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgIHJldHVybiBtZXRlclJlbmRlcmVyICYmICFt
ZXRlclJlbmRlcmVyLT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKG1ldGVyUmVuZGVyZXItPnN0eWxl
KCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29u
dGV4dCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWV0ZXJCYXJFbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZXRlclNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5oCmluZGV4IDkzNjI2ZGY1ZTI1YjE3YTY2ZjllNWQ0Y2Q4MjVlNDNjNTllNWFl
ZGMuLmMzNmIwMWIyNDNkYjlkZjZmYTA3NWJjMWJiNmU0ZDViNjQyNzA2M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCkBAIC00NCw3ICs0
NCw3IEBAIHB1YmxpYzoKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiB9OwogCiBjbGFzcyBNZXRlckJhckVsZW1lbnQgOiBwdWJsaWMgTWV0
ZXJTaGFkb3dFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Q
cm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDFjZWRkMGRjYTEyZjIzZGJhNGVkMTZiOGFk
MzdmZTExMzNiZDNjZmMuLmMwY2JiOTUwOGRkZWJjNzZkOTAzMDRlMjQ3YTk3ODU1MDIyNmNlYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dF
bGVtZW50LmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIEhUTUxQcm9ncmVzc0VsZW1lbnQqIFByb2dy
ZXNzU2hhZG93RWxlbWVudDo6cHJvZ3Jlc3NFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KG5vZGUpOwogfQogCi1ib29sIFByb2dyZXNz
U2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29s
IFByb2dyZXNzU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZW5kZXJPYmplY3QqIHByb2dyZXNzUmVuZGVy
ZXIgPSBwcm9ncmVzc0VsZW1lbnQoKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcHJvZ3Jlc3NS
ZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYm
IEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKKyAgICByZXR1cm4gcHJv
Z3Jlc3NSZW5kZXJlciAmJiAhcHJvZ3Jlc3NSZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5j
ZSgpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFByb2dyZXNzQmFyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFk
b3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0Vs
ZW1lbnQuaAppbmRleCBhMTA2YmY4NzIzODY1OTQwOTExOTgwYjljOTFiYzJmM2Y1NjA0NGE1Li5l
MTM1YzcxZGFhNDFmOWU2ZWYzYjM2NGVmOTE4OGEzMWNkNTE3YWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaApAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jlc3NFbGVtZW50
KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
UmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYpOwogfTsKIAogY2xhc3MgUHJvZ3Jlc3NCYXJFbGVtZW50IDog
cHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVu
dC5oCmluZGV4IDMyYTdhZDAyMTQ0NzNkMmYzMzkxOWY1YTQ0Njg0NjkyZjllNGZlOTUuLmVhZTc2
N2VkNmM5NTNkYTJhNWJlNTM4NGQwNTlhODIzYmM1NzE4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
ZXNjRWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
RGVzY0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNWU1YWJmOGRlNTM3MzkwYmE4ZTU2YWMzYWE4MDE0
MGUxNjAwNDFlMS4uZTdjMTA2YmFjYzA4OGI1ZWEzNzFkNjc4N2ExMDg5NTBjZDQ1NmFmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVjdGVkOgogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogCi0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChT
dHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAppbmRleCBmZTVkMDljOTliM2IxYThmNjE4ZjZlY2UzOTA2NDJjYTUwNWEw
NDFmLi4zMTExM2Q2MmJmNTQ0OGM3OWY4NGFlYmNhMDRiYmZmNzI1MzU3YmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcApAQCAtMTY4LDEwICsxNjgsMTAgQEAgUmVuZGVyT2JqZWN0KiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KgogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZSh0aGlzKTsKIH0KIAotYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiAocGFyZW50
Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKSkKLSAgICAgICAgcmV0dXJu
IFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1
cm4gU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA3OTViYzExYWY2YzY0MjJlZGNm
Yzk4ZmQ3MTA0YjE0ZGM4NWU5OWFlLi40OGFmYTMyYmVjNTkzYWI0NDJiYmQ5ZDQxYWZhZTE4NjQ2
N2UyOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVs
ZW1lbnQuaAppbmRleCA5NDM1Y2M3MDU0ZjQ3Y2M3ZDRhZDg3NTc3MjY5ZmIyMzIzMzlhZmU3Li42
MjI3NjZhMzU1YTZjOWUzNGQwZTU5MmQ3MTdjZWEzMmMxZTlhNzEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEVsZW1lbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0g
IAorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0gIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dF
bGVtZW50LmNwcAppbmRleCA5OTU1ODAwMTRiM2YzMTNmOTk3NmQ5ZDQwMDQzMzJlZDQ0MzAwYWVi
Li5kYmY3ZTlmZjExM2RiN2M1Zjg3YWU5YjBmZDUzMmI1MmRiMDkyMDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZW5kZXJPYmplY3QqIFNWR0dF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBz
dHlsZQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyKHRoaXMpOwogfQogCi1ib29sIFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKikKK2Jvb2wgU1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKQogewogICAgIHJldHVybiBwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9k
ZSgpLT5pc1NWR0VsZW1lbnQoKTsgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4IGMz
MDZmNGE2ZjZlOTQ2N2Y4ODQ3NzA3ZGFiNTQ0ZDU2MTVjYzY5YzUuLjMxOWFmMjc4MmI1MmFlZjk1
ODBmYmQ3MzMwN2RhNjUzMTU3YWMxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC01
Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCmluZGV4
IDk0NGFkMjcyYTQxNjk4ZDA2YzhiNzc3MDUzNTFhZjk0NTZhYzAzOTIuLjVhZDA4OWEwYmQ2OTJi
NmE0OGY0Mjk5MjFlNjk5NTk4ZTllZjExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVt
ZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgp
OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaW52YWxp
ZGF0ZUdseXBoQ2FjaGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SEtlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmgKaW5k
ZXggMGRlZmNiYmI5N2FjM2JmZTUwMzliNmFjZWU3YTk2NjJiMDdhZmJiOC4uYmM3YjRlODNmYzQ1
ZmVkMDRjYTEzYjFiMDc4ZmI1ZTNhYzljYWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0hLZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVs
ZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggMjRj
ZTYyNDZkMTk3M2U3Yzk3YTU2N2Y3ZDFlYmY0MjhlNDYzNTA0Yi4uZmI3NmVmODRlYTJkZjlmY2E2
OTUzY2E1Yzg5Yjk0YzhkYThhYjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hcmtlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAppbmRleCA1MjhjNTNjNTNkYTFmNDZhNDZl
N2JhNjk0NjFjNjEyOTk0OTBiMjFmLi5mMmExNzZlZjg0ZWI3OWMxOWEzZmU3NDkxMWJhMzlmODgw
NDQwYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgK
QEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsg
cmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuaAppbmRleCBlZGI1NmQ3YjZmMDBiODczZTZjZDQzNWY2ZTljZmE0MDFi
YmRhNDVjLi5kNDFjYzA2OTJhYzBiY2IxM2UyOWM3MDg5MTc2NzU3NjYwMzMwMjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsg
fQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCAwZTRhMWJiNDkw
Y2M4YmI4ZTQwYWI2MDMwODUxMTNjMDc4OTBkMzdlLi40MzI3NjNhMDcxY2VkZTU0YzQ4ZGZiMmIw
OWVmMzgzZDYxMWIxODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CkBAIC0xMTgsNyArMTE4LDcgQEAgU3RyaW5nIFNWR1N0eWxlZEVsZW1lbnQ6OnRpdGxlKCkgY29u
c3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1N0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2V4dGVuZC5odG1sI1ByaXZhdGVEYXRh
CiAgICAgLy8gUHJldmVudCBhbnl0aGluZyBvdGhlciB0aGFuIFNWRyByZW5kZXJlcnMgZnJvbSBh
cHBlYXJpbmcgaW4gb3VyIHJlbmRlciB0cmVlCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBTVkdT
dHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICAv
LyB3aXRoIHRoZSBTVkcgY29udGVudC4gSW4gZ2VuZXJhbCwgdGhlIFNWRyB1c2VyIGFnZW50IHdp
bGwgaW5jbHVkZSB0aGUgdW5rbm93bgogICAgIC8vIGVsZW1lbnRzIGluIHRoZSBET00gYnV0IHdp
bGwgb3RoZXJ3aXNlIGlnbm9yZSB1bmtub3duIGVsZW1lbnRzLiAKICAgICBpZiAoIXBhcmVudE5v
ZGUoKSB8fCBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHls
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKaW5kZXggNjViOTUyNTgwMGFk
YTJhMmFiNGVjOGQ1ZTNlZTBlNTczNWY5NzllMy4uNmZlMGY0YzVlNDgyOTg3ODdmNzI4MTViNTFk
MGNmZGIxZGMyYTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDogCiAgICAgU1ZHU3R5bGVkRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBt
YXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCmluZGV4IDhmM2YyNTFlODY1NDkxMWQ5
ZmMzMWIzMzg2ZDkyZWRmYzliZWFmNTUuLjk1NDNjMjdkYTM3N2NlYmZkMGFhNWMxY2JkOGRmNDc3
ZmVkOGU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjg3OWVlYTcwMTk5
NmQ2MGE2OWY5MzgzZWJkNjM0MDQ0YzcwZWZmOS4uOTFiMDM3ZDk1MDMwNDVkZjNhZTY5NjEzMmQ5
YTkyM2UyN2VkMmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgYm9vbCBTVkdUUmVmRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU1ZH
VFJlZkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBT
VkdUUmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnRO
b2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9v
bCBTVkdUUmVmRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAg
ICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcp
CiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQ
YXRoVGFnKQogICAgICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVz
Ojp0c3BhblRhZykpKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChzdHlsZSk7CisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuaAppbmRleCAyZTdkMDA1NzEzYWFkY2U2NWEyM2IxZDM5ZmI5OTg3Y2RhMDk0NDRj
Li44OTQyYmNkYTk3N2RlOGUzMzgwOTZhZmI2ZDkzNDc2ZTJhOWJlNjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFJlZkVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYpOwogCiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCmluZGV4IDBiOTY0NjVlYjM3Y2E3Y2JjMWJlZTk0NjRh
Mzc4YWNjN2EyNTY5MjQuLjdiNzYyZjUyMDczODk2ZGMwZWQxZjllN2MzOTY3YWE4Yjk2YzNkOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IGJvb2wgU1ZHVFNwYW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNo
aWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdUU3BhbkVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQorYm9vbCBTVkdUU3BhbkVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKQogICAgICAgICAmJiAocGFyZW50Tm9kZSgpLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjphVGFnKQpAQCAtNjksNyArNjksNyBAQCBib29sIFNWR1RTcGFuRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgICAgICB8
fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCiAgICAgICAgICAg
ICB8fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKQogICAg
ICAgICAgICAgfHwgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0c3BhblRhZykp
KQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
CisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQp
OwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5o
CmluZGV4IGFjMDJiNTdiNGQ1ODlkYzMzNzNmZjk5MDVmMTRiN2JhNTViMTJkNmMuLmU3MTViZGRk
NjVkY2VkNTMwYmViZjc1MzYwMGJjMDk3NmZiMDEwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNw
YW5FbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9k
ZSopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
Kik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmNwcAppbmRleCBhNjdkNmM5NDcwYzY3NTI3N2Y4Yjg2MjIyZWU5ZTRhODc5NmVmZTg5Li43
NThiMjhiMTQzMTIzYTIzZTE2MDUwOWQ3NTRlMWE0YzhkMmVmZWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtMTQwLDEyICsxNDAsMTIgQEAgYm9vbCBT
VkdUZXh0UGF0aEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNWR1RleHRQYXRoRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR1RleHRQYXRoRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpCiAgICAgICAgICYmIChwYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpCiAgICAgICAgICAgICB8fCBwYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKSkKLSAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOworICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCBiNjk5ZDYxZGZlNDE3YzU1
ZjBmZTkyZmNmZDg4NWI2OTRiNjU0N2Q4Li4xMGQ2MjM1Yjg5Mzg4NWRmZjYzMDYwMWM1OWIzMmYz
YmZmYTY4YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC02
Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBj
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0
bGVFbGVtZW50LmgKaW5kZXggYzFjZWM0OTQ1M2MxMmVhNGZlNTU2MzJlMDBlNzE4OWUwODM0ZTNh
Yy4uNDViYjViZjhlNzVkNGUwZmU1YjAwYTcwMmIyYTE3NjE1NjBiN2UwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUaXRsZUVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWS2VybkVsZW1lbnQuaAppbmRleCBkOGE5ZDFiYzk5NjA5ZWVlYTQ4Mjk2OTExMjE1
M2YwZjIzY2VhMTk5Li43N2VhMmZlNzk5Yjc0MTFjOGEwZjdjMjRhOGRkYjA2YTljMjZmY2VlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3RWxlbWVudC5oCmluZGV4IGIzNzE3NzQ4OGE2OTk4MWM1YjA5MzI4YmViZjk1ZjRjZTdlMzE3
NmEuLjZlMzc5MTU5NDI3YWFkNTY2MGE1ZjVmZmU2NDRkYzkyM2I5YTFmMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3RWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCiAK
</data>
<flag name="review"
          id="87692"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>