<?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>186217</bug_id>
          
          <creation_ts>2018-06-01 18:20:41 -0700</creation_ts>
          <short_desc>[LFC] Merge width and horizontal margin computation</short_desc>
          <delta_ts>2018-06-04 07:45:21 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1429459</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 18:20:41 -0700</bug_when>
    <thetext>to be able to closely follow the steps defined at https://www.w3.org/TR/CSS22/visudet.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429462</commentid>
    <comment_count>1</comment_count>
      <attachid>341813</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 18:30:14 -0700</bug_when>
    <thetext>Created attachment 341813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429463</commentid>
    <comment_count>2</comment_count>
      <attachid>341814</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 18:31:57 -0700</bug_when>
    <thetext>Created attachment 341814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429465</commentid>
    <comment_count>3</comment_count>
      <attachid>341814</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 18:43:29 -0700</bug_when>
    <thetext>Comment on attachment 341814
Patch

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

&gt; Source/WebCore/layout/displaytree/DisplayBox.h:175
&gt; +    struct EdgePair {
&gt; +        LayoutUnit first;
&gt; +        LayoutUnit second;
&gt; +    };
&gt; +    using HorizontalEdges = EdgePair;
&gt; +    using VerticalEdges = EdgePair;
&gt;  
&gt; +    struct Edges {
&gt;          LayoutUnit top;
&gt;          LayoutUnit left;
&gt;          LayoutUnit bottom;
&gt;          LayoutUnit right;
&gt;      };

Edges could be defined like this 
struct Edges {
    HorizontalEdges horizontal;
    VerticalEdges vertical;
}; 
but then top would read like edges.vertical.first instead of edges.top. I find edges.top more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429480</commentid>
    <comment_count>4</comment_count>
      <attachid>341814</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-06-01 19:43:22 -0700</bug_when>
    <thetext>Comment on attachment 341814
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        at https://www.w3.org/TR/CSS22/visudet.html, we should just merge width and horizontal maring computations

s/maring/margin/

&gt; Source/WebCore/layout/displaytree/DisplayBox.h:167
&gt; +    struct EdgePair {
&gt; +        LayoutUnit first;
&gt; +        LayoutUnit second;
&gt; +    };
&gt; +    using HorizontalEdges = EdgePair;

Could EdgePair be defined as:

using EdgePair = std::pair&lt;LayoutUnit, LayoutUnit&gt;;

Though, actually, I think what might be the cleanest is the really verbose:

struct HorizontalEdges {
    LayoutUnit left;
    LayoutUnit right;
};
struct VerticalEdges {
    LayoutUnit top;
    LayoutUnit bottom;
};
struct Edges {
    HorizontalEdges horizontal;
    VerticalEdges vertical;
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429482</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 19:48:56 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 341814 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=341814&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        at https://www.w3.org/TR/CSS22/visudet.html, we should just merge width and horizontal maring computations
&gt; 
&gt; s/maring/margin/
&gt; 
&gt; &gt; Source/WebCore/layout/displaytree/DisplayBox.h:167
&gt; &gt; +    struct EdgePair {
&gt; &gt; +        LayoutUnit first;
&gt; &gt; +        LayoutUnit second;
&gt; &gt; +    };
&gt; &gt; +    using HorizontalEdges = EdgePair;
&gt; 
&gt; Could EdgePair be defined as:
&gt; 
&gt; using EdgePair = std::pair&lt;LayoutUnit, LayoutUnit&gt;;
&gt; 
&gt; Though, actually, I think what might be the cleanest is the really verbose:
&gt; 
&gt; struct HorizontalEdges {
&gt;     LayoutUnit left;
&gt;     LayoutUnit right;
&gt; };
&gt; struct VerticalEdges {
&gt;     LayoutUnit top;
&gt;     LayoutUnit bottom;
&gt; };
&gt; struct Edges {
&gt;     HorizontalEdges horizontal;
&gt;     VerticalEdges vertical;
&gt; };
That&apos;s exactly what I had as my first version but I though some people might find it too verbose. Thanks for the comment! I will gladly make this change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429493</commentid>
    <comment_count>6</comment_count>
      <attachid>341823</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 20:40:27 -0700</bug_when>
    <thetext>Created attachment 341823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429809</commentid>
    <comment_count>7</comment_count>
      <attachid>341823</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-06-04 07:35:57 -0700</bug_when>
    <thetext>Comment on attachment 341823
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Use 0 computed marings for now.

margins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429810</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-04 07:44:05 -0700</bug_when>
    <thetext>Committed r232465: &lt;https://trac.webkit.org/changeset/232465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429811</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-04 07:45:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/40771393&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341813</attachid>
            <date>2018-06-01 18:30:14 -0700</date>
            <delta_ts>2018-06-01 18:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186217-20180601183013.patch</filename>
            <type>text/plain</type>
            <size>32278</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2MGQzNzU5Y2RjMTIz
NjYzOGU2NmE3YWM3NTc4Y2MwNjkwNGU2Yy4uZTY0NjczMjMyM2M0OTNlODVkNDM1ZDZlMGU4M2Q4
MzdhNWNkYzdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE4LTA2LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWVyZ2Ugd2lkdGgg
YW5kIGhvcml6b250YWwgbWFyZ2luIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3VsZCBjZXJ0YWlubHkgY29tcHV0ZSB3aWR0
aCBhbmQgbWFyaW5nIHNlcGFyYXRlbHksIGJ1dCB0byBtYXRjaCBlYWNoIHN0ZXBzIGRlZmluZWQK
KyAgICAgICAgYXQgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VkZXQuaHRtbCwgd2Ug
c2hvdWxkIGp1c3QgbWVyZ2Ugd2lkdGggYW5kIGhvcml6b250YWwgbWFyaW5nIGNvbXB1dGF0aW9u
cworICAgICAgICAoZm9sbG93ZWQgYnkgaGVpZ2h0IGFuZCB2ZXJ0aWNhbCBtYXJnaW5zKS4KKwor
ICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aEFuZE1hcmdp
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlT3V0T2ZGbG93V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hlaWdodCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRP
ZkZsb3dEZXNjZW5kYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93V2lkdGggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5n
V2lkdGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93V2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhB
bmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dE9mRmxvd05vblJlcGxhY2VkV2lkdGgpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVw
bGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93V2lkdGgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lk
dGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0
Q29udGV4dDo6aW5pdGlhbGl6ZVJvb3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVJbkZsb3dXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVJbkZsb3dXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVNYXJnaW4gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5GbG93V2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbkZsb3dXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE1hcmdpbik6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5Cb3ggY29uc3QpOgorICAgICAgICAq
IGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6OnNldEhhc1ZhbGlkVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjppbnZhbGlkYXRlTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6c2V0SG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkJveDo6bWFyZ2luVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6bWFyZ2luTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om1h
cmdpbkJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om1hcmdp
blJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6RWRnZXM6OkVk
Z2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SGFzVmFs
aWRNYXJnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRN
YXJnaW4pOiBEZWxldGVkLgorCiAyMDE4LTA2LTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ10gU2ltcGxpZnkgdGhlIGZvcm1hdHRpbmcgY2xhc3MgaW1w
bGVtZW50YXRpb24gYnkgcHVzaGluZyBkb3duIHNvbWUgb2YgdGhlIGxvZ2ljIHRvIHRoZSBHZW9t
ZXRyeSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggYThhMzhmNWE0OGU3NzE5YjYxZGFmNjg1MjExZDY5NTcwZGQ2ZmFjMi4uYTQ4ZmNlM2Qy
YTY1MDRiZTkyMDRiYTRlNDg1YzcyNzY0NmY4Nzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC01OSwxOSArNTksMjMgQEAgdm9pZCBGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnMKICAgICBkaXNwbGF5Qm94LnNldEhlaWdodChHZW9tZXRyeTo6ZmxvYXRpbmdI
ZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiB9CiAKLXZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0
LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAor
dm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nV2lkdGhBbmRNYXJnaW4oTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6
OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKEdlb21l
dHJ5OjpvdXRPZkZsb3dXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKKyAgICBhdXRv
IHdpZHRoQW5kTWFyZ2luID0gR2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4obGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICBkaXNwbGF5Qm94LnNldFdpZHRoKHdpZHRoQW5kTWFy
Z2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRN
YXJnaW4ubWFyZ2luKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9m
Rmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91
dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAordm9pZCBGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZU91dE9mRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91
dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gp
IGNvbnN0CiB7Ci0gICAgZGlzcGxheUJveC5zZXRIZWlnaHQoR2VvbWV0cnk6Om91dE9mRmxvd0hl
aWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKKyAgICBhdXRvIHdpZHRoQW5kTWFyZ2lu
ID0gR2VvbWV0cnk6Om91dE9mRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91
dEJveCk7CisgICAgZGlzcGxheUJveC5zZXRXaWR0aCh3aWR0aEFuZE1hcmdpbi53aWR0aCk7Cisg
ICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm1hcmdpbik7
CiB9CiAKLXZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ1dpZHRoKExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpC
b3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93SGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CiB7Ci0gICAgZGlzcGxheUJv
eC5zZXRXaWR0aChHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpKTsKKyAgICBkaXNwbGF5Qm94LnNldEhlaWdodChHZW9tZXRyeTo6b3V0T2ZGbG93SGVpZ2h0
KGxheW91dENvbnRleHQsIGxheW91dEJveCkpOwogfQogCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBj
b25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdApAQCAt
MTA3LDcgKzExMSw3IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Rl
c2NlbmRhbnRzKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQpCiAgICAgICAgIC8vIG9mIGEg
aHlwb3RoZXRpY2FsIGJveCB0aGF0IHdvdWxkIGhhdmUgYmVlbiB0aGUgZmlyc3QgYm94IG9mIHRo
ZSBlbGVtZW50IGlmIGl0cyBzcGVjaWZpZWQgJ3Bvc2l0aW9uJyB2YWx1ZSBoYWQgYmVlbiAnc3Rh
dGljJyBhbmQKICAgICAgICAgLy8gaXRzIHNwZWNpZmllZCAnZmxvYXQnIGhhZCBiZWVuICdub25l
JyBhbmQgaXRzIHNwZWNpZmllZCAnY2xlYXInIGhhZCBiZWVuICdub25lJy4KICAgICAgICAgY29t
cHV0ZVN0YXRpY1Bvc2l0aW9uKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7
Ci0gICAgICAgIGNvbXB1dGVPdXRPZkZsb3dXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gs
IGRpc3BsYXlCb3gpOworICAgICAgICBjb21wdXRlT3V0T2ZGbG93V2lkdGhBbmRNYXJnaW4obGF5
b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKIAogICAgICAgICBBU1NFUlQobGF5
b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgICAgIGF1dG8gZm9y
bWF0dGluZ0NvbnRleHQgPSBsYXlvdXRDb250ZXh0LmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJv
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGNhZDdl
YWQ1YzM1ODRmM2I2MjRkMzgzNzUwMjJjNzNlYzMzM2JjNjEuLjMwMzNhZTA1NmUyNDljZDgxMDU0
ODQ2ZDk0NjkxMzAyNTU2NjMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
JiwgRGlzcGxheTo6Qm94JikgY29uc3QgPSAwOwogCiAgICAgdm9pZCBjb21wdXRlRmxvYXRpbmdI
ZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0Owot
ICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYs
IERpc3BsYXk6OkJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nV2lkdGhBbmRN
YXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0Owog
CiAgICAgdm9pZCBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAKQEAgLTgxLDMxICs4MSw0MyBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGdlbmVyaWMgcG9zaXRpb25pbmcgYW5k
IHNpemluZy4KICAgICBjbGFzcyBHZW9tZXRyeSB7CiAgICAgcHVibGljOgorICAgICAgICBzdHJ1
Y3QgRGltZW5zaW9uQW5kTWFyZ2luIHsKKyAgICAgICAgICAgIExheW91dFVuaXQgd2lkdGg7Cisg
ICAgICAgICAgICBEaXNwbGF5OjpCb3g6OkVkZ2VQYWlyIG1hcmdpbjsKKyAgICAgICAgfTsKKyAg
ICAgICAgdXNpbmcgV2lkdGhBbmRNYXJnaW4gPSBEaW1lbnNpb25BbmRNYXJnaW47CisgICAgICAg
IHVzaW5nIEhlaWdodEFuZE1hcmdpbiA9IERpbWVuc2lvbkFuZE1hcmdpbjsKKwogICAgICAgICBz
dGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpOwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dXaWR0aChMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBvdXRPZkZs
b3dXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKICAgICAgICAg
c3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpOwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBmbG9hdGluZ1dpZHRoKExheW91dENvbnRl
eHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5n
V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0
YXRpYyBMYXlvdXRQb2ludCBvdXRPZkZsb3dQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94Jik7CiAKICAgICAgICAgc3RhdGljIExheW91dFVuaXQgaW5saW5lUmVwbGFjZWRIZWlnaHQo
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBp
bmxpbmVSZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAg
c3RhdGljIFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0
Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBEaXNwbGF5OjpCb3g6OkVk
Z2VzIGNvbXB1dGVkQm9yZGVyKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlzcGxheTo6Qm94OjpFZGdlcz4gY29tcHV0ZWRQYWRkaW5n
KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmLCBj
b25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgb3V0T2ZGbG93UmVwbGFjZWRX
aWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBXaWR0aEFu
ZE1hcmdpbiBvdXRPZkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBj
b25zdCBCb3gmKTsKKworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gb3V0T2ZGbG93Tm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisKICAg
ICAgICAgc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdSZXBsYWNlZEhlaWdodChMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGZsb2F0aW5nUmVw
bGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBX
aWR0aEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4
dCYsIGNvbnN0IEJveCYpOworCisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGlu
Z05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwog
ICAgIH07CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93UG9zaXRpb24oTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OwogICAgIHZvaWQg
Y29tcHV0ZU91dE9mRmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxh
eTo6Qm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93V2lkdGgoTGF5b3V0Q29u
dGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0
ZU91dE9mRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNw
bGF5OjpCb3gmKSBjb25zdDsKIAogICAgIFdlYWtQdHI8Qm94PiBtX3Jvb3Q7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmlu
ZGV4IDBjZDdhZDVmNmNjNjBjMjVjM2Q2YjU1OGQzYmViYjFjMjBmOGMzZjAuLjI5YzBmN2U0MWE5
MzUyZjNkYWM5Yjc3YWQ5NTgyNTI3M2FhMDdiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250
ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdAogICAgIHJldHVybiBjb21wdXRlZEhlaWdodFZhbHVl
OwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dOb25SZXBsYWNlZFdpZHRoKExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91
dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwog
ICAgIApAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd05vblJl
cGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhW
YWx1ZTsKKyAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4geyBjb21wdXRlZFdpZHRoVmFsdWUsIHsg
fSB9OwogfQogCiBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZG
bG93UmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCkBAIC0xOTUsMTMgKzE5NSwxMyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYg
bAogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZG
bG93UmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gm
IGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbGF5b3V0
Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuOCBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJl
cGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KICAgICAvLyBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgn
IGlzIGRldGVybWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1
cm4gaW5saW5lUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJl
dHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJv
eCk7CiB9CiAKIHN0YXRpYyBMYXlvdXRVbml0IGZsb2F0aW5nTm9uUmVwbGFjZWRIZWlnaHQoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0yMTYs
MTQgKzIxNiwxNSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBmbG9hdGluZ05vblJlcGxhY2VkSGVpZ2h0
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0CiAgICAgcmV0dXJuIGhlaWdodC5p
c0F1dG8oKSA/IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Q29u
dGV4dCwgbGF5b3V0Qm94KSA6IExheW91dFVuaXQoaGVpZ2h0LnZhbHVlKCkpOwogfQogCi1zdGF0
aWMgTGF5b3V0VW5pdCBmbG9hdGluZ05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRp
bmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuNSBG
bG9hdGluZywgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAKICAgICAvLyBJZiAnd2lkdGgnIGlzIGNv
bXB1dGVkIGFzICdhdXRvJywgdGhlIHVzZWQgdmFsdWUgaXMgdGhlICJzaHJpbmstdG8tZml0IiB3
aWR0aC4KICAgICBhdXRvIHdpZHRoID0gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbFdpZHRoKCk7
Ci0gICAgcmV0dXJuIHdpZHRoLmlzQXV0bygpID8gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpIDogTGF5b3V0VW5pdCh3aWR0aC52YWx1ZSgpKTsKKyAgICBhdXRvIGNv
bXB1dGVkV2lkdGhWYWx1ZSA9IHdpZHRoLmlzQXV0bygpID8gc2hyaW5rVG9GaXRXaWR0aChsYXlv
dXRDb250ZXh0LCBsYXlvdXRCb3gpIDogTGF5b3V0VW5pdCh3aWR0aC52YWx1ZSgpKTsKKyAgICBy
ZXR1cm4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiB7IGNvbXB1
dGVkV2lkdGhWYWx1ZSwgeyB9IH07CiB9CiAKIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtMjM0LDEzICsyMzUsMTMgQEAgTGF5b3V0
VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHQo
TGF5b3V0Q29udGV4dCYgbGEKICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHQobGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25l
ZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAvLyAxMC4zLjYgRmxvYXRpbmcsIHJl
cGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KICAgICAvLyBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgn
IGlzIGRldGVybWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1
cm4gaW5saW5lUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJl
dHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJv
eCk7CiB9CiAKIHN0YXRpYyBMYXlvdXRQb2ludCBvdXRPZkZsb3dOb25SZXBsYWNlZFBvc2l0aW9u
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAt
NDQwLDEzICs0NDEsMTMgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb24KICAgICByZXR1cm4gb3V0
T2ZGbG93UmVwbGFjZWRIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotTGF5
b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1dpZHRoKExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6Om91dE9mRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gucmVwbGFjZWQoKSkKLSAg
ICAgICAgcmV0dXJuIG91dE9mRmxvd05vblJlcGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KTsKLSAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0
LCBsYXlvdXRCb3gpOworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aEFu
ZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBvdXRPZkZsb3dS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiB9CiAKIExh
eW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodChMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTQ1OCwx
MyArNDU5LDEzIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9h
dGluZ0hlaWdodChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250CiAgICAgcmV0dXJuIGZsb2F0aW5n
UmVwbGFjZWRIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotTGF5b3V0VW5p
dCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3Np
dGlvbmVkKCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gucmVwbGFjZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwot
ICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94
KTsKKyAgICAgICAgcmV0dXJuIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlv
dXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhB
bmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogTGF5b3V0UG9pbnQgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dQb3NpdGlvbihMYXlvdXRDb250ZXh0
JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTUxOCw3ICs1MTksNyBA
QCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRI
ZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbgogICAgIHJldHVybiBjb21wdXRlZEhlaWdodFZhbHVl
OwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVw
bGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0
Qm94LmlzSW5GbG93KCkpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAvLyAxMC4zLjIg
SW5saW5lLCByZXBsYWNlZCBlbGVtZW50cwpAQCAtNTY0LDcgKzU2NSw3IEBAIExheW91dFVuaXQg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoKExheW91dENv
bnRleHQmLCBjb25zCiAgICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IDMwMDsKICAgICB9CiAK
LSAgICByZXR1cm4gY29tcHV0ZWRXaWR0aFZhbHVlOworICAgIHJldHVybiBXaWR0aEFuZE1hcmdp
biB7IGNvbXB1dGVkV2lkdGhWYWx1ZSwgeyB9IH07CiB9CiAKIERpc3BsYXk6OkJveDo6RWRnZXMg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihMYXlvdXRDb250ZXh0
JiwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC01ODUsMTIgKzU4NiwxMiBAQCBzdGQ6Om9wdGlv
bmFsPERpc3BsYXk6OkJveDo6RWRnZXM+IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29t
cHV0ZWRQYWRkaW5nKAogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOwotICAgIHJl
dHVybiBEaXNwbGF5OjpCb3g6OkVkZ2VzKAorICAgIHJldHVybiBEaXNwbGF5OjpCb3g6OkVkZ2Vz
IHsKICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ1RvcCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCksCiAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdMZWZ0KCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwKICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFk
ZGluZ0JvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksCiAgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLnBhZGRpbmdSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkKLSAgICApOwor
ICAgIH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRl
eCBlMDE1YjUxOTdhZTMxZmZiOWM5YjkxOTkzMWJmYTIyODY2ZmVhOTIyLi5lOTdmMjdhY2VjYTli
YWY0ZTk2YzQ0YTUzMDkxNjNjMzIwMWU2NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dENvbnRleHQuY3BwCkBAIC01OCw3ICs1OCw4IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6aW5pdGlh
bGl6ZVJvb3QoY29uc3QgQ29udGFpbmVyJiByb290LCBjb25zdCBMYXlvdXRTaXplJiBjb250CiAg
ICAgLy8gUm9vdCBpcyBhbHdheXMgYXQgMCAwIHdpdGggbm8gbWFyZ2luIAogICAgIGRpc3BsYXlC
b3guc2V0VG9wTGVmdCh7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0U2l6ZShjb250YWluZXJTaXpl
KTsKLSAgICBkaXNwbGF5Qm94LnNldE1hcmdpbih7IH0pOworICAgIGRpc3BsYXlCb3guc2V0SG9y
aXpvbnRhbE1hcmdpbih7IH0pOworICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyB9
KTsKIAogICAgIGF1dG8mIHN0eWxlID0gcm9vdC5zdHlsZSgpOwogICAgIC8vIEZJWE1FOiBtX3Jv
b3QgY291bGQgdmVyeSB3ZWxsIGJlIGEgZm9ybWF0dGluZyBjb250ZXh0IHJvb3Qgd2l0aCBhbmNl
c3RvcnMgYW5kIHJlc29sdmFibGUgYm9yZGVyIGFuZCBwYWRkaW5nIChhcyBvcHBvc2VkIHRvIHRo
ZSB0b3Btb3N0IHJvb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA0ZTE3
NGQ5Y2JkZmQ5MjY0YjYzNDhlYzdiMTgwMTQ1YTU3ZGMxYmZmLi44ZjU4YTIyZjY2YjU1Mjk0YTcy
NTFiNzg5MmRjM2U3YzEzOWE2NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
QEAgLTczLDEwICs3Myw5IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExh
eW91dENvbnRleHQmIGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdTdGF0CiAgICAgICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBsYXlvdXRQYWlyLmxheW91dEJveDsKICAgICAgICAgICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBsYXlvdXRQYWlyLmRpc3BsYXlCb3g7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNvbXB1dGVNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94
KTsKICAgICAgICAgICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dENvbnRleHQsIGxh
eW91dEJveCwgZGlzcGxheUJveCk7CisgICAgICAgICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4o
bGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKICAgICAgICAgICAgIGNvbXB1
dGVTdGF0aWNQb3NpdGlvbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwot
ICAgICAgICAgICAgY29tcHV0ZVdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxh
eUJveCk7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0Nv
bnRleHQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBsYXlv
dXRDb250ZXh0LmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ0NvbnRleHQtPmxheW91dChsYXlvdXRDb250ZXh0LCBsYXlvdXRDb250ZXh0LmVz
dGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCwgKmZvcm1hdHRpbmdDb250ZXh0KSk7
CkBAIC0xMzksMTMgKzEzOCwxMyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5bwogICAgIGRpc3Bs
YXlCb3guc2V0VG9wTGVmdChHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGxheW91
dENvbnRleHQsIGxheW91dEJveCkpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkg
Y29uc3QKIHsKICAgICBpZiAobGF5b3V0Qm94LmlzSW5GbG93KCkpCi0gICAgICAgIHJldHVybiBj
b21wdXRlSW5GbG93V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVJbkZsb3dXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0
LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogCiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5n
UG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZUZsb2F0aW5nV2lkdGgobGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
bG9hdGluZ1dpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJv
eCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE2NiwxNCArMTY1LDExIEBA
IHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd0hlaWdodChMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250ZXh0LCBjCiAgICAgZGlzcGxheUJveC5zZXRIZWlnaHQoR2VvbWV0
cnk6OmluRmxvd0hlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKIH0KIAotdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93V2lkdGgoTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxh
eUJveCkgY29uc3QKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1dp
ZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CiB7Ci0gICAgZGlzcGxheUJv
eC5zZXRXaWR0aChHZW9tZXRyeTo6aW5GbG93V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94
KSk7Ci19Ci0KLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU1hcmdpbihMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6
Qm94JiBkaXNwbGF5Qm94KSBjb25zdAotewotICAgIGRpc3BsYXlCb3guc2V0TWFyZ2luKEdlb21l
dHJ5Ojpjb21wdXRlZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKKyAgICBhdXRv
IHdpZHRoQW5kTWFyZ2luID0gR2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dENv
bnRleHQsIGxheW91dEJveCk7CisgICAgZGlzcGxheUJveC5zZXRXaWR0aCh3aWR0aEFuZE1hcmdp
bi53aWR0aCk7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFy
Z2luLm1hcmdpbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYTEz
NTM1MDJjOTYyM2I4MWVmNWZmOTJmM2NkNmZkODdmZmIwZGI0MC4uOWJiYWRjYzMwMjYyNTBjNGZl
ZTc3MGMzYjU1NjUxMzMzYTA3MWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTUxLDI5ICs1MSwyNiBAQCBwdWJsaWM6CiAgICAgUmVmPEZsb2F0aW5nU3RhdGU+IGNyZWF0ZU9y
RmluZEZsb2F0aW5nU3RhdGUoTGF5b3V0Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgotICAgIHZvaWQgY29tcHV0ZVdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBE
aXNwbGF5OjpCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihMYXlv
dXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAgICAgdm9pZCBj
b21wdXRlSGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBj
b25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQmLCBj
b25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1
dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERp
c3BsYXk6OkJveCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUluRmxvd1dpZHRo
KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdDsKKyAgICB2
b2lkIGNvbXB1dGVJbkZsb3dXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlSW5GbG93SGVpZ2h0KExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdDsKLSAgICB2b2lk
IGNvbXB1dGVNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYp
IGNvbnN0OwogCiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0aW9uaW5nIGFuZCBz
aXppbmcgZm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQuCiAgICAgY2xhc3MgR2VvbWV0cnkgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIExh
eW91dFVuaXQgaW5GbG93SGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKLSAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgaW5GbG93V2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpOworICAgICAgICBzdGF0aWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFu
ZE1hcmdpbiBpbkZsb3dXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
CiAKICAgICAgICAgc3RhdGljIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRl
eHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIExheW91dFBvaW50IGluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgc3Rh
dGljIERpc3BsYXk6OkJveDo6RWRnZXMgY29tcHV0ZWRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYpOwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIExheW91dFVuaXQgaW5G
bG93Tm9uUmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwotICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBpbkZsb3dOb25SZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6V2lkdGhBbmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRD
b250ZXh0JiwgY29uc3QgQm94Jik7CiAgICAgfTsKICAgICAKICAgICAvLyBUaGlzIGNsYXNzIGlt
cGxlbWVudHMgbWFyZ2luIGNvbGxhcHNpbmcgZm9yIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBjYzcy
Y2YyYWM0YmY5ZWQ3NmZhOWIyM2Q0NDhkODE0ZTdmM2IxYzVmLi44NjYxZWEwMTY4NzFiYjYwYWZk
MjRkNWNjYWU5ZDliMTg1ZjZiZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29u
dGUKICAgICByZXR1cm4gc3RkOjptYXgoY29tcHV0ZWRIZWlnaHQsIGluaXRpYWxDb250YWluaW5n
QmxvY2tIZWlnaHQpOwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpX
aWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkgJiYg
IWxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtMTQzLDE0ICsxNDMsMTQgQEAgTGF5b3V0VW5p
dCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0
aChMYXlvdXRDb250ZXgKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wdXRlZFdpZHRo
VmFsdWUgPSB2YWx1ZUZvckxlbmd0aCh3aWR0aCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogCi0g
ICAgICAgIHJldHVybiBjb21wdXRlZFdpZHRoVmFsdWU7CisgICAgICAgIHJldHVybiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsgY29tcHV0ZWRXaWR0aFZhbHVl
LCB7IH0gfTsKICAgICB9OwogCi0gICAgYXV0byBjb21wdXRlZFdpZHRoID0gY29tcHV0ZSgpOwor
ICAgIGF1dG8gY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlID0gY29tcHV0ZSgpOwogICAgIGlm
ICghaXNTdHJldGNoZWRUb1ZpZXdwb3J0KGxheW91dENvbnRleHQsIGxheW91dEJveCkpCi0gICAg
ICAgIHJldHVybiBjb21wdXRlZFdpZHRoOworICAgICAgICByZXR1cm4gY29tcHV0ZWRXaWR0aEFu
ZE1hcmdpblZhbHVlOwogICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5
b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2so
bGF5b3V0Qm94KSktPmNvbnRlbnRCb3goKS53aWR0aCgpOwotICAgIHJldHVybiBzdGQ6Om1heChj
b21wdXRlZFdpZHRoLCBpbml0aWFsQ29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIHJldHVybiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsgc3RkOjptYXgoY29t
cHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLndpZHRoLCBpbml0aWFsQ29udGFpbmluZ0Jsb2NrV2lk
dGgpLCB7IH0gfTsKIH0KIAogTGF5b3V0UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQpAQCAtMjQ3LDI4ICsyNDcsMTUgQEAgTGF5b3V0VW5pdCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0KExheW91dENvbnRleHQmIGxh
eW91dEMKICAgICByZXR1cm4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZEhlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCi1MYXlvdXRVbml0IEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aChMYXlvdXRDb250ZXh0
JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7
CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gaW5GbG93
Tm9uUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgICAgICByZXR1
cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOwogICAgIC8vIDEwLjMuNCBCbG9jay1sZXZlbCwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9y
bWFsIGZsb3cKICAgICAvLyBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVybWluZWQg
YXMgZm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cwotICAgIHJldHVybiBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0
Qm94KTsKLX0KLQotRGlzcGxheTo6Qm94OjpFZGdlcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6Y29tcHV0ZWRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUo
KTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOwot
Ci0gICAgcmV0dXJuIERpc3BsYXk6OkJveDo6RWRnZXMoCi0gICAgICAgIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3AobGF5b3V0Qm94KSwKLSAgICAgICAg
dmFsdWVGb3JMZW5ndGgoc3R5bGUubWFyZ2luTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCks
Ci0gICAgICAgIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5C
b3R0b20obGF5b3V0Qm94KSwKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUubWFyZ2luUmln
aHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpCi0gICAgKTsKKyAgICByZXR1cm4gRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENv
bnRleHQsIGxheW91dEJveCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAppbmRleCBkZjIyZDhmYzQ0ZjI5YjhmYjI1YmY5YzQx
OWJjODUzZGQzNzg0OWQ1Li4xZDU0YjI0NjQyNDhkZjJmMjhhYTFhNTIyM2I5NWIwOTVmN2FhODRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
Y3BwCkBAIC01Miw3ICs1Miw4IEBAIEJveDo6U3R5bGU6OlN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIAogQm94OjpSZWN0IEJveDo6bWFyZ2luQm94KCkgY29uc3QKIHsKLSAgICBBU1NF
UlQobV9oYXNWYWxpZE1hcmdpbik7CisgICAgQVNTRVJUKG1faGFzVmFsaWRIb3Jpem9udGFsTWFy
Z2luKTsKKyAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKICAgICBhdXRvIG1h
cmdpbkJveCA9IGJvcmRlckJveCgpOwogCiAgICAgbWFyZ2luQm94LnNoaWZ0TGVmdFRvKG1hcmdp
bkJveC5sZWZ0KCkgLSBtX21hcmdpbi5sZWZ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IDhjMWUyNjFlNGMwMTk5M2E3MDJjZTIyYTlj
MGE1ZDU1NTg4NTBkZWEuLmZkZTYyMjM3ZTg1M2IwYzUyZmZhMTY0ODI3MDRkZGRmNmEzYTk1Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApA
QCAtMTYwLDMwICsxNjAsMzMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEhlaWdodChMYXlvdXRV
bml0IGhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdodCk7IH0KICAgICB2b2lkIHNldFNp
emUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3JlY3Quc2V0U2l6ZShzaXplKTsgfQogCi0g
ICAgc3RydWN0IEVkZ2VzIHsKLSAgICAgICAgRWRnZXMoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIEVk
Z2VzKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgYm90dG9tLCBM
YXlvdXRVbml0IHJpZ2h0KQotICAgICAgICAgICAgOiB0b3AodG9wKQotICAgICAgICAgICAgLCBs
ZWZ0KGxlZnQpCi0gICAgICAgICAgICAsIGJvdHRvbShib3R0b20pCi0gICAgICAgICAgICAsIHJp
Z2h0KHJpZ2h0KQotICAgICAgICAgICAgeyB9CisgICAgc3RydWN0IEVkZ2VQYWlyIHsKKyAgICAg
ICAgTGF5b3V0VW5pdCBmaXJzdDsKKyAgICAgICAgTGF5b3V0VW5pdCBzZWNvbmQ7CisgICAgfTsK
KyAgICB1c2luZyBIb3Jpem9udGFsRWRnZXMgPSBFZGdlUGFpcjsKKyAgICB1c2luZyBWZXJ0aWNh
bEVkZ2VzID0gRWRnZVBhaXI7CiAKKyAgICBzdHJ1Y3QgRWRnZXMgewogICAgICAgICBMYXlvdXRV
bml0IHRvcDsKICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0OwogICAgICAgICBMYXlvdXRVbml0IGJv
dHRvbTsKICAgICAgICAgTGF5b3V0VW5pdCByaWdodDsKICAgICB9OwotICAgIHZvaWQgc2V0TWFy
Z2luKEVkZ2VzKTsKKworICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihIb3Jpem9udGFsRWRn
ZXMpOworICAgIHZvaWQgc2V0VmVydGljYWxNYXJnaW4oVmVydGljYWxFZGdlcyk7CiAgICAgdm9p
ZCBzZXRCb3JkZXIoRWRnZXMpOwogICAgIHZvaWQgc2V0UGFkZGluZyhFZGdlcyk7CiAKICNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCkgeyBtX2hhc1ZhbGlk
TWFyZ2luID0gZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVNYXJnaW4oKTsKICAgICB2b2lk
IGludmFsaWRhdGVCb3JkZXIoKSB7IG1faGFzVmFsaWRCb3JkZXIgPSBmYWxzZTsgfQogICAgIHZv
aWQgaW52YWxpZGF0ZVBhZGRpbmcoKSB7IG1faGFzVmFsaWRQYWRkaW5nID0gZmFsc2U7IH0KIAot
ICAgIHZvaWQgc2V0SGFzVmFsaWRNYXJnaW4oKSB7IG1faGFzVmFsaWRNYXJnaW4gPSB0cnVlOyB9
CisgICAgdm9pZCBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCkgeyBtX2hhc1ZhbGlkVmVydGlj
YWxNYXJnaW4gPSB0cnVlOyB9CisgICAgdm9pZCBzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4o
KSB7IG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luID0gdHJ1ZTsgfQorCiAgICAgdm9pZCBzZXRI
YXNWYWxpZEJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IHRydWU7IH0KICAgICB2b2lkIHNl
dEhhc1ZhbGlkUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSB0cnVlOyB9CiAjZW5kaWYK
QEAgLTE5Nyw3ICsyMDAsOCBAQCBwcml2YXRlOgogICAgIEVkZ2VzIG1fcGFkZGluZzsKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICBib29sIG1faGFzVmFsaWRNYXJnaW4geyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4geyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRC
b3JkZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9Owog
I2VuZGlmCkBAIC0yMjEsNiArMjI1LDEyIEBAIGlubGluZSB2b2lkIEJveDo6UmVjdDo6c2V0SGFz
VmFsaWRTaXplKCkKICAgICBtX2hhc1ZhbGlkV2lkdGggPSB0cnVlOwogICAgIG1faGFzVmFsaWRI
ZWlnaHQgPSB0cnVlOwogfQorCitpbmxpbmUgdm9pZCBCb3g6OmludmFsaWRhdGVNYXJnaW4oKQor
eworICAgIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luID0gZmFsc2U7CisgICAgbV9oYXNWYWxp
ZFZlcnRpY2FsTWFyZ2luID0gZmFsc2U7Cit9CiAjZW5kaWYKIAogaW5saW5lIExheW91dFVuaXQg
Qm94OjpSZWN0Ojp0b3AoKSBjb25zdApAQCAtMzc2LDEyICszODYsMjIgQEAgaW5saW5lIEJveDo6
UmVjdDo6b3BlcmF0b3IgTGF5b3V0UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVjdDsKIH0K
IAotaW5saW5lIHZvaWQgQm94OjpzZXRNYXJnaW4oRWRnZXMgbWFyZ2luKQoraW5saW5lIHZvaWQg
Qm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKEhvcml6b250YWxFZGdlcyBtYXJnaW4pCit7CisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIHNldEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbigpOworI2Vu
ZGlmCisgICAgbV9tYXJnaW4ubGVmdCA9IG1hcmdpbi5maXJzdDsKKyAgICBtX21hcmdpbi5yaWdo
dCA9IG1hcmdpbi5zZWNvbmQ7Cit9CisKK2lubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJn
aW4oVmVydGljYWxFZGdlcyBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHNl
dEhhc1ZhbGlkTWFyZ2luKCk7CisgICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE1hcmdpbigpOwogI2Vu
ZGlmCi0gICAgbV9tYXJnaW4gPSBtYXJnaW47CisgICAgbV9tYXJnaW4udG9wID0gbWFyZ2luLmZp
cnN0OworICAgIG1fbWFyZ2luLmJvdHRvbSA9IG1hcmdpbi5zZWNvbmQ7CiB9CiAKIGlubGluZSB2
b2lkIEJveDo6c2V0Qm9yZGVyKEVkZ2VzIGJvcmRlcikKQEAgLTQwMiwyNSArNDIyLDI1IEBAIGlu
bGluZSB2b2lkIEJveDo6c2V0UGFkZGluZyhFZGdlcyBwYWRkaW5nKQogCiBpbmxpbmUgTGF5b3V0
VW5pdCBCb3g6Om1hcmdpblRvcCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRNYXJn
aW4pOworICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4pOwogICAgIHJldHVybiBt
X21hcmdpbi50b3A7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luTGVmdCgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRNYXJnaW4pOworICAgIEFTU0VSVChtX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbik7CiAgICAgcmV0dXJuIG1fbWFyZ2luLmxlZnQ7CiB9CiAKIGlu
bGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luQm90dG9tKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9oYXNWYWxpZE1hcmdpbik7CisgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7
CiAgICAgcmV0dXJuIG1fbWFyZ2luLmJvdHRvbTsKIH0KIAogaW5saW5lIExheW91dFVuaXQgQm94
OjptYXJnaW5SaWdodCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRNYXJnaW4pOwor
ICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7CiAgICAgcmV0dXJuIG1fbWFy
Z2luLnJpZ2h0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341814</attachid>
            <date>2018-06-01 18:31:57 -0700</date>
            <delta_ts>2018-06-01 20:40:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186217-20180601183156.patch</filename>
            <type>text/plain</type>
            <size>32319</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2MGQzNzU5Y2RjMTIz
NjYzOGU2NmE3YWM3NTc4Y2MwNjkwNGU2Yy4uNDgwMWFkMzI0MDQxMzE2NTM5YjRhNTE4YjRhN2Nj
NjM5YjNmMzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA2LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWVyZ2Ugd2lkdGgg
YW5kIGhvcml6b250YWwgbWFyZ2luIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3VsZCBjZXJ0YWlubHkgY29tcHV0ZSB3aWR0
aCBhbmQgbWFyaW5nIHNlcGFyYXRlbHksIGJ1dCB0byBtYXRjaCBlYWNoIHN0ZXBzIGRlZmluZWQK
KyAgICAgICAgYXQgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VkZXQuaHRtbCwgd2Ug
c2hvdWxkIGp1c3QgbWVyZ2Ugd2lkdGggYW5kIGhvcml6b250YWwgbWFyaW5nIGNvbXB1dGF0aW9u
cworICAgICAgICAoZm9sbG93ZWQgYnkgaGVpZ2h0IGFuZCB2ZXJ0aWNhbCBtYXJnaW5zKS4KKyAg
ICAgICAgVXNlIDAgY29tcHV0ZWQgbWFyaW5ncyBmb3Igbm93LgorCisgICAgICAgICogbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ1dpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dX
aWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Rlc2NlbmRhbnRz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVPdXRPZkZsb3dXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICog
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmZsb2F0
aW5nTm9uUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5s
aW5lUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0xheW91dENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0Ojppbml0aWFs
aXplUm9vdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1dp
ZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1dpZHRo
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZU1hcmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFu
ZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d1dpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTWFyZ2luKTogRGVsZXRlZC4KKyAgICAgICAg
KiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6Om1hcmdpbkJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SGFz
VmFsaWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNl
dEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6OmludmFsaWRhdGVNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRIb3Jpem9udGFsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0
VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5U
b3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5MZWZ0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bWFyZ2luQm90dG9tIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bWFyZ2luUmlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpFZGdlczo6RWRnZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZE1hcmdpbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldE1hcmdpbik6IERlbGV0ZWQu
CisKIDIwMTgtMDYtMDEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXSBTaW1wbGlmeSB0aGUgZm9ybWF0dGluZyBjbGFzcyBpbXBsZW1lbnRhdGlvbiBieSBw
dXNoaW5nIGRvd24gc29tZSBvZiB0aGUgbG9naWMgdG8gdGhlIEdlb21ldHJ5IGNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhOGEzOGY1YTQ4
ZTc3MTliNjFkYWY2ODUyMTFkNjk1NzBkZDZmYWMyLi5hNDhmY2UzZDJhNjUwNGJlOTIwNGJhNGU0
ODVjNzI3NjQ2Zjg3NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTU5LDE5ICs1OSwyMyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlRmxvYXRpbmdIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29ucwogICAg
IGRpc3BsYXlCb3guc2V0SGVpZ2h0KEdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91
dE9mRmxvd1dpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94
KSBjb25zdAogewotICAgIGRpc3BsYXlCb3guc2V0V2lkdGgoR2VvbWV0cnk6Om91dE9mRmxvd1dp
ZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOworICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4g
PSBHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOworICAgIGRpc3BsYXlCb3guc2V0V2lkdGgod2lkdGhBbmRNYXJnaW4ud2lkdGgpOworICAg
IGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwog
fQogCi12b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SGVpZ2h0KExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpC
b3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBk
aXNwbGF5Qm94LnNldEhlaWdodChHZW9tZXRyeTo6b3V0T2ZGbG93SGVpZ2h0KGxheW91dENvbnRl
eHQsIGxheW91dEJveCkpOworICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6b3V0
T2ZGbG93V2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICBkaXNw
bGF5Qm94LnNldFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNl
dEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKIH0KIAotdm9pZCBGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkg
Y29uc3QKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIZWlnaHQoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6
OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKEdlb21l
dHJ5OjpmbG9hdGluZ1dpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOworICAgIGRpc3Bs
YXlCb3guc2V0SGVpZ2h0KEdlb21ldHJ5OjpvdXRPZkZsb3dIZWlnaHQobGF5b3V0Q29udGV4dCwg
bGF5b3V0Qm94KSk7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVCb3JkZXJB
bmRQYWRkaW5nKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CkBAIC0xMDcsNyArMTExLDcgQEAg
dm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCkKICAgICAgICAgLy8gb2YgYSBoeXBvdGhldGljYWwgYm94
IHRoYXQgd291bGQgaGF2ZSBiZWVuIHRoZSBmaXJzdCBib3ggb2YgdGhlIGVsZW1lbnQgaWYgaXRz
IHNwZWNpZmllZCAncG9zaXRpb24nIHZhbHVlIGhhZCBiZWVuICdzdGF0aWMnIGFuZAogICAgICAg
ICAvLyBpdHMgc3BlY2lmaWVkICdmbG9hdCcgaGFkIGJlZW4gJ25vbmUnIGFuZCBpdHMgc3BlY2lm
aWVkICdjbGVhcicgaGFkIGJlZW4gJ25vbmUnLgogICAgICAgICBjb21wdXRlU3RhdGljUG9zaXRp
b24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKLSAgICAgICAgY29tcHV0
ZU91dE9mRmxvd1dpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7Cisg
ICAgICAgIGNvbXB1dGVPdXRPZkZsb3dXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlv
dXRCb3gsIGRpc3BsYXlCb3gpOwogCiAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNo
ZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9
IGxheW91dENvbnRleHQuZm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggY2FkN2VhZDVjMzU4NGYzYjYyNGQz
ODM3NTAyMmM3M2VjMzMzYmM2MS4uMzAzM2FlMDU2ZTI0OWNkODEwNTQ4NDZkOTQ2OTEzMDI1NTY2
MzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY3
LDcgKzY3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gm
KSBjb25zdCA9IDA7CiAKICAgICB2b2lkIGNvbXB1dGVGbG9hdGluZ0hlaWdodChMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRl
RmxvYXRpbmdXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94Jikg
Y29uc3Q7CisgICAgdm9pZCBjb21wdXRlRmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1
dGVCb3JkZXJBbmRQYWRkaW5nKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpC
b3gmKSBjb25zdDsKIApAQCAtODEsMzEgKzgxLDQzIEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGlz
IGNsYXNzIGltcGxlbWVudHMgZ2VuZXJpYyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nLgogICAgIGNs
YXNzIEdlb21ldHJ5IHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0cnVjdCBEaW1lbnNpb25BbmRN
YXJnaW4geworICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aDsKKyAgICAgICAgICAgIERpc3Bs
YXk6OkJveDo6RWRnZVBhaXIgbWFyZ2luOworICAgICAgICB9OworICAgICAgICB1c2luZyBXaWR0
aEFuZE1hcmdpbiA9IERpbWVuc2lvbkFuZE1hcmdpbjsKKyAgICAgICAgdXNpbmcgSGVpZ2h0QW5k
TWFyZ2luID0gRGltZW5zaW9uQW5kTWFyZ2luOworCiAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0
IG91dE9mRmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd1dpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIG91dE9mRmxvd1dpZHRoQW5kTWFyZ2lu
KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0aWMgTGF5b3V0VW5p
dCBmbG9hdGluZ0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IGZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYp
OworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihM
YXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIExheW91dFBvaW50
IG91dE9mRmxvd1Bvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAogICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBpbmxpbmVSZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0Jiwg
Y29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGlubGluZVJlcGxhY2VkV2lk
dGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRN
YXJnaW4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94Jik7CiAKICAgICAgICAgc3RhdGljIERpc3BsYXk6OkJveDo6RWRnZXMgY29tcHV0ZWRCb3Jk
ZXIoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxEaXNwbGF5OjpCb3g6OkVkZ2VzPiBjb21wdXRlZFBhZGRpbmcoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIExheW91dFVuaXQg
b3V0T2ZGbG93UmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwotICAg
ICAgICBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dSZXBsYWNlZFdpZHRoKExheW91dENvbnRl
eHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIG91dE9mRmxv
d1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworCisg
ICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBvdXRPZkZsb3dOb25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKwogICAgICAgICBzdGF0aWMgTGF5
b3V0VW5pdCBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdSZXBsYWNlZFdpZHRoKExheW91
dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGZs
b2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
CisKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAgICAgfTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29u
c3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93
SGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdDsK
LSAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93V2lkdGhB
bmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0
OwogCiAgICAgV2Vha1B0cjxCb3g+IG1fcm9vdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMGNkN2FkNWY2Y2M2
MGMyNWMzZDZiNTU4ZDNiZWJiMWMyMGY4YzNmMC4uMjljMGY3ZTQxYTkzNTJmM2RhYzliNzdhZDk1
ODI1MjczYWEwN2IxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBMYXlvdXRV
bml0IG91dE9mRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0CiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWU7CiB9CiAKLXN0YXRpYyBM
YXlvdXRVbml0IG91dE9mRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBj
b25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAgCkBAIC0xODMsNyAr
MTgzLDcgQEAgc3RhdGljIExheW91dFVuaXQgb3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aChMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gY29tcHV0ZWRXaWR0aFZhbHVlOworICAgIHJldHVy
biBXaWR0aEFuZE1hcmdpbiB7IGNvbXB1dGVkV2lkdGhWYWx1ZSwgeyB9IH07CiB9CiAKIExheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhlaWdo
dChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAg
LTE5NSwxMyArMTk1LDEzIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiBsCiAgICAgcmV0dXJuIGlu
bGluZVJlcGxhY2VkSGVpZ2h0KGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiB9CiAKLUxheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFdpZHRo
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxh
eW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7
CiAgICAgLy8gMTAuMy44IEFic29sdXRlbHkgcG9zaXRpb25lZCwgcmVwbGFjZWQgZWxlbWVudHMK
ICAgICAvLwogICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5lZCBh
cyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVybiBpbmxpbmVSZXBsYWNl
ZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogc3RhdGlj
IExheW91dFVuaXQgZmxvYXRpbmdOb25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTIxNiwxNCArMjE2LDE1IEBAIHN0
YXRpYyBMYXlvdXRVbml0IGZsb2F0aW5nTm9uUmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgY29uc3QKICAgICByZXR1cm4gaGVpZ2h0LmlzQXV0bygpID8gY29udGVu
dEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gp
IDogTGF5b3V0VW5pdChoZWlnaHQudmFsdWUoKSk7CiB9CiAKLXN0YXRpYyBMYXlvdXRVbml0IGZs
b2F0aW5nTm9uUmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRN
YXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpICYm
ICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAgLy8gMTAuMy41IEZsb2F0aW5nLCBub24tcmVw
bGFjZWQgZWxlbWVudHMKIAogICAgIC8vIElmICd3aWR0aCcgaXMgY29tcHV0ZWQgYXMgJ2F1dG8n
LCB0aGUgdXNlZCB2YWx1ZSBpcyB0aGUgInNocmluay10by1maXQiIHdpZHRoLgogICAgIGF1dG8g
d2lkdGggPSBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsV2lkdGgoKTsKLSAgICByZXR1cm4gd2lk
dGguaXNBdXRvKCkgPyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkg
OiBMYXlvdXRVbml0KHdpZHRoLnZhbHVlKCkpOworICAgIGF1dG8gY29tcHV0ZWRXaWR0aFZhbHVl
ID0gd2lkdGguaXNBdXRvKCkgPyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxheW91
dEJveCkgOiBMYXlvdXRVbml0KHdpZHRoLnZhbHVlKCkpOworICAgIHJldHVybiBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsgY29tcHV0ZWRXaWR0aFZhbHVlLCB7
IH0gfTsKIH0KIAogTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW5nUmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCkBAIC0yMzQsMTMgKzIzNSwxMyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiBs
YQogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRp
bmdSZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsK
ICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94
LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuNiBGbG9hdGluZywgcmVwbGFjZWQgZWxlbWVudHMK
ICAgICAvLwogICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5lZCBh
cyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVybiBpbmxpbmVSZXBsYWNl
ZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogc3RhdGlj
IExheW91dFBvaW50IG91dE9mRmxvd05vblJlcGxhY2VkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC00NDAsMTMgKzQ0MSwxMyBA
QCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93SGVpZ2h0
KExheW91dENvbnRleHQmIGxheW91dENvbgogICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZEhl
aWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93V2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gb3V0
T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgIHJl
dHVybiBvdXRPZkZsb3dSZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Cisg
ICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENv
bnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRN
YXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogTGF5b3V0VW5pdCBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91
dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtNDU4LDEzICs0NTksMTMgQEAgTGF5
b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0KExheW91
dENvbnRleHQmIGxheW91dENvbnQKICAgICByZXR1cm4gZmxvYXRpbmdSZXBsYWNlZEhlaWdodChs
YXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0
LCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lk
dGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5k
TWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAKICAg
ICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gZmxvYXRpbmdOb25S
ZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAgcmV0dXJuIGZsb2F0
aW5nUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgICAgICByZXR1
cm4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91
dEJveCk7CisgICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRD
b250ZXh0LCBsYXlvdXRCb3gpOwogfQogCiBMYXlvdXRQb2ludCBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd1Bvc2l0aW9uKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtNTE4LDcgKzUxOSw3IEBAIExheW91dFVuaXQgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodChMYXlvdXRDb250
ZXh0JiwgY29uCiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWU7CiB9CiAKLUxheW91dFVu
aXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoKExheW91
dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkg
JiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuMiBJbmxpbmUsIHJlcGxhY2Vk
IGVsZW1lbnRzCkBAIC01NjQsNyArNTY1LDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnMKICAg
ICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0gMzAwOwogICAgIH0KIAotICAgIHJldHVybiBjb21w
dXRlZFdpZHRoVmFsdWU7CisgICAgcmV0dXJuIFdpZHRoQW5kTWFyZ2luIHsgY29tcHV0ZWRXaWR0
aFZhbHVlLCB7IH0gfTsKIH0KIAogRGlzcGxheTo6Qm94OjpFZGdlcyBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkQm9yZGVyKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKQEAgLTU4NSwxMiArNTg2LDEyIEBAIHN0ZDo6b3B0aW9uYWw8RGlzcGxheTo6Qm94
OjpFZGdlcz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoCiAK
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91
dEJveC5jb250YWluaW5nQmxvY2soKSktPndpZHRoKCk7Ci0gICAgcmV0dXJuIERpc3BsYXk6OkJv
eDo6RWRnZXMoCisgICAgcmV0dXJuIERpc3BsYXk6OkJveDo6RWRnZXMgewogICAgICAgICB2YWx1
ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwKICAg
ICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0xlZnQoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpLAogICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nQm90dG9tKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKSwKICAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGlu
Z1JpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKQotICAgICk7CisgICAgfTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IGUwMTViNTE5N2FlMzFm
ZmI5YzliOTE5OTMxYmZhMjI4NjZmZWE5MjIuLmU5N2YyN2FjZWNhOWJhZjRlOTZjNDRhNTMwOTE2
M2MzMjAxZTY1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKQEAg
LTU4LDcgKzU4LDggQEAgdm9pZCBMYXlvdXRDb250ZXh0Ojppbml0aWFsaXplUm9vdChjb25zdCBD
b250YWluZXImIHJvb3QsIGNvbnN0IExheW91dFNpemUmIGNvbnQKICAgICAvLyBSb290IGlzIGFs
d2F5cyBhdCAwIDAgd2l0aCBubyBtYXJnaW4gCiAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHsg
fSk7CiAgICAgZGlzcGxheUJveC5zZXRTaXplKGNvbnRhaW5lclNpemUpOwotICAgIGRpc3BsYXlC
b3guc2V0TWFyZ2luKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHsg
fSk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IH0pOwogCiAgICAgYXV0byYg
c3R5bGUgPSByb290LnN0eWxlKCk7CiAgICAgLy8gRklYTUU6IG1fcm9vdCBjb3VsZCB2ZXJ5IHdl
bGwgYmUgYSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRoIGFuY2VzdG9ycyBhbmQgcmVzb2x2
YWJsZSBib3JkZXIgYW5kIHBhZGRpbmcgKGFzIG9wcG9zZWQgdG8gdGhlIHRvcG1vc3Qgcm9vdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDRlMTc0ZDljYmRmZDkyNjRiNjM0
OGVjN2IxODAxNDVhNTdkYzFiZmYuLjhmNThhMjJmNjZiNTUyOTRhNzI1MWI3ODkyZGMzZTdjMTM5
YTY2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNzMsMTAgKzczLDkg
QEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXQKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9
IGxheW91dFBhaXIubGF5b3V0Qm94OwogICAgICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxh
eW91dFBhaXIuZGlzcGxheUJveDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29tcHV0ZU1h
cmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogICAgICAgICAgICAg
Y29tcHV0ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5
Qm94KTsKKyAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogICAgICAgICAgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9u
KGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7Ci0gICAgICAgICAgICBjb21w
dXRlV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKICAgICAgICAg
ICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dENvbnRleHQuZm9ybWF0
dGluZ0NvbnRleHQobGF5b3V0Qm94KTsKICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4
dC0+bGF5b3V0KGxheW91dENvbnRleHQsIGxheW91dENvbnRleHQuZXN0YWJsaXNoZWRGb3JtYXR0
aW5nU3RhdGUobGF5b3V0Qm94LCAqZm9ybWF0dGluZ0NvbnRleHQpKTsKQEAgLTEzOSwxMyArMTM4
LDEzIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBsYXlvCiAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0
KEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0
Qm94KSk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoKExh
eW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5
OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewogICAgIGlm
IChsYXlvdXRCb3guaXNJbkZsb3coKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVJbkZsb3dXaWR0
aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOworICAgICAgICByZXR1cm4g
Y29tcHV0ZUluRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlz
cGxheUJveCk7CiAKICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0g
ICAgICAgIHJldHVybiBjb21wdXRlRmxvYXRpbmdXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gsIGRpc3BsYXlCb3gpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZsb2F0aW5nV2lkdGhBbmRN
YXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTY2LDE0ICsxNjUsMTEgQEAgdm9pZCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93SGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGMKICAgICBkaXNwbGF5Qm94LnNldEhlaWdodChHZW9tZXRyeTo6aW5GbG93SGVpZ2h0
KGxheW91dENvbnRleHQsIGxheW91dEJveCkpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVJbkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBj
b25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAordm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93V2lkdGhBbmRNYXJnaW4oTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6
OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKEdlb21l
dHJ5OjppbkZsb3dXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKLX0KLQotdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlTWFyZ2luKExheW91dENvbnRleHQmIGxheW91
dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gp
IGNvbnN0Ci17Ci0gICAgZGlzcGxheUJveC5zZXRNYXJnaW4oR2VvbWV0cnk6OmNvbXB1dGVkTWFy
Z2luKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOworICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4g
PSBHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94
KTsKKyAgICBkaXNwbGF5Qm94LnNldFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKKyAgICBk
aXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBhMTM1MzUwMmM5NjIzYjgxZWY1
ZmY5MmYzY2Q2ZmQ4N2ZmYjBkYjQwLi45YmJhZGNjMzAyNjI1MGM0ZmVlNzcwYzNiNTU2NTEzMzNh
MDcxZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTEsMjkgKzUxLDI2IEBA
IHB1YmxpYzoKICAgICBSZWY8RmxvYXRpbmdTdGF0ZT4gY3JlYXRlT3JGaW5kRmxvYXRpbmdTdGF0
ZShMYXlvdXRDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBj
b21wdXRlV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNv
bnN0OworICAgIHZvaWQgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25z
dCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVIZWlnaHQoTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OwogCiAgICAgdm9p
ZCBjb21wdXRlU3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3Bs
YXk6OkJveCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wdXRlSW5GbG93V2lkdGgoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUluRmxv
d1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gm
KSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVJbkZsb3dIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZU1hcmdpbihM
YXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAKICAgICAv
LyBUaGlzIGNsYXNzIGltcGxlbWVudHMgcG9zaXRpb25pbmcgYW5kIHNpemluZyBmb3IgYm94ZXMg
cGFydGljaXBhdGluZyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBjbGFzcyBH
ZW9tZXRyeSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBpbkZsb3dI
ZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBpbkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0
YXRpYyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIGluRmxvd1dp
ZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0
aWMgTGF5b3V0UG9pbnQgc3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYp
OwogICAgICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgaW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBzdGF0aWMgRGlzcGxheTo6Qm94
OjpFZGdlcyBjb21wdXRlZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0KICAg
ICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBpbkZsb3dOb25SZXBsYWNlZEhl
aWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRV
bml0IGluRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwor
ICAgICAgICBzdGF0aWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdp
biBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBC
b3gmKTsKICAgICB9OwogICAgIAogICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBtYXJnaW4g
Y29sbGFwc2luZyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGNjNzJjZjJhYzRiZjllZDc2ZmE5
YjIzZDQ0OGQ4MTRlN2YzYjFjNWYuLjg2NjFlYTAxNjg3MWJiNjBhZmQyNGQ1Y2NhZTlkOWIxODVm
NmJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAK
QEAgLTExMyw3ICsxMTMsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZQogICAgIHJldHVybiBz
dGQ6Om1heChjb21wdXRlZEhlaWdodCwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiB9
CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSAmJiAhbGF5b3V0Qm94LnJlcGxh
Y2VkKCkpOwogCkBAIC0xNDMsMTQgKzE0MywxNCBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKExheW91dENvbnRleAog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IHZhbHVlRm9y
TGVuZ3RoKHdpZHRoLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKLSAgICAgICAgcmV0dXJuIGNv
bXB1dGVkV2lkdGhWYWx1ZTsKKyAgICAgICAgcmV0dXJuIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6V2lkdGhBbmRNYXJnaW4geyBjb21wdXRlZFdpZHRoVmFsdWUsIHsgfSB9OwogICAgIH07
CiAKLSAgICBhdXRvIGNvbXB1dGVkV2lkdGggPSBjb21wdXRlKCk7CisgICAgYXV0byBjb21wdXRl
ZFdpZHRoQW5kTWFyZ2luVmFsdWUgPSBjb21wdXRlKCk7CiAgICAgaWYgKCFpc1N0cmV0Y2hlZFRv
Vmlld3BvcnQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGNvbXB1
dGVkV2lkdGg7CisgICAgICAgIHJldHVybiBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWU7CiAg
ICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS0+Y29u
dGVudEJveCgpLndpZHRoKCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KGNvbXB1dGVkV2lkdGgsIGlu
aXRpYWxDb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgcmV0dXJuIEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4geyBzdGQ6Om1heChjb21wdXRlZFdpZHRoQW5kTWFy
Z2luVmFsdWUud2lkdGgsIGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0aCksIHsgfSB9OwogfQog
CiBMYXlvdXRQb2ludCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9z
aXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gp
CkBAIC0yNDcsMjggKzI0NywxNSBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjppbkZsb3dIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0QwogICAgIHJldHVy
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0KGxheW91
dENvbnRleHQsIGxheW91dEJveCk7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0
aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lkdGhB
bmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKIAogICAgIGlmICghbGF5
b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBsYWNlZFdpZHRo
KGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiAgICAgLy8gMTAu
My40IEJsb2NrLWxldmVsLCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwogICAgIC8v
IFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJl
cGxhY2VkIGVsZW1lbnRzCi0gICAgcmV0dXJuIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5saW5lUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwotfQotCi1EaXNw
bGF5OjpCb3g6OkVkZ2VzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRl
ZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJv
eCkKLXsKLSAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndpZHRoKCk7Ci0KLSAgICByZXR1cm4gRGlz
cGxheTo6Qm94OjpFZGdlcygKLSAgICAgICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpblRvcChsYXlvdXRCb3gpLAotICAgICAgICB2YWx1ZUZvckxlbmd0aChz
dHlsZS5tYXJnaW5MZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwKLSAgICAgICAgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJvdHRvbShsYXlvdXRCb3gp
LAotICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZS5tYXJnaW5SaWdodCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCkKLSAgICApOworICAgIHJldHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlCb3guY3BwCmluZGV4IGRmMjJkOGZjNDRmMjliOGZiMjViZjljNDE5YmM4NTNkZDM3ODQ5ZDUu
LjFkNTRiMjQ2NDI0OGRmMmYyOGFhMWE1MjIzYjk1YjA5NWY3YWE4NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKQEAgLTUyLDcgKzUy
LDggQEAgQm94OjpTdHlsZTo6U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBCb3g6
OlJlY3QgQm94OjptYXJnaW5Cb3goKSBjb25zdAogewotICAgIEFTU0VSVChtX2hhc1ZhbGlkTWFy
Z2luKTsKKyAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4pOworICAgIEFTU0VS
VChtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4pOwogICAgIGF1dG8gbWFyZ2luQm94ID0gYm9yZGVy
Qm94KCk7CiAKICAgICBtYXJnaW5Cb3guc2hpZnRMZWZ0VG8obWFyZ2luQm94LmxlZnQoKSAtIG1f
bWFyZ2luLmxlZnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmgKaW5kZXggOGMxZTI2MWU0YzAxOTkzYTcwMmNlMjJhOWMwYTVkNTU1ODg1MGRlYS4u
ZmRlNjIyMzdlODUzYjBjNTJmZmExNjQ4MjcwNGRkZGY2YTNhOTViOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCkBAIC0xNjAsMzAgKzE2MCwz
MyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KSB7IG1f
cmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBMYXlvdXRT
aXplJiBzaXplKSB7IG1fcmVjdC5zZXRTaXplKHNpemUpOyB9CiAKLSAgICBzdHJ1Y3QgRWRnZXMg
ewotICAgICAgICBFZGdlcygpID0gZGVmYXVsdDsKLSAgICAgICAgRWRnZXMoTGF5b3V0VW5pdCB0
b3AsIExheW91dFVuaXQgbGVmdCwgTGF5b3V0VW5pdCBib3R0b20sIExheW91dFVuaXQgcmlnaHQp
Ci0gICAgICAgICAgICA6IHRvcCh0b3ApCi0gICAgICAgICAgICAsIGxlZnQobGVmdCkKLSAgICAg
ICAgICAgICwgYm90dG9tKGJvdHRvbSkKLSAgICAgICAgICAgICwgcmlnaHQocmlnaHQpCi0gICAg
ICAgICAgICB7IH0KKyAgICBzdHJ1Y3QgRWRnZVBhaXIgeworICAgICAgICBMYXlvdXRVbml0IGZp
cnN0OworICAgICAgICBMYXlvdXRVbml0IHNlY29uZDsKKyAgICB9OworICAgIHVzaW5nIEhvcml6
b250YWxFZGdlcyA9IEVkZ2VQYWlyOworICAgIHVzaW5nIFZlcnRpY2FsRWRnZXMgPSBFZGdlUGFp
cjsKIAorICAgIHN0cnVjdCBFZGdlcyB7CiAgICAgICAgIExheW91dFVuaXQgdG9wOwogICAgICAg
ICBMYXlvdXRVbml0IGxlZnQ7CiAgICAgICAgIExheW91dFVuaXQgYm90dG9tOwogICAgICAgICBM
YXlvdXRVbml0IHJpZ2h0OwogICAgIH07Ci0gICAgdm9pZCBzZXRNYXJnaW4oRWRnZXMpOworCisg
ICAgdm9pZCBzZXRIb3Jpem9udGFsTWFyZ2luKEhvcml6b250YWxFZGdlcyk7CisgICAgdm9pZCBz
ZXRWZXJ0aWNhbE1hcmdpbihWZXJ0aWNhbEVkZ2VzKTsKICAgICB2b2lkIHNldEJvcmRlcihFZGdl
cyk7CiAgICAgdm9pZCBzZXRQYWRkaW5nKEVkZ2VzKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
LSAgICB2b2lkIGludmFsaWRhdGVNYXJnaW4oKSB7IG1faGFzVmFsaWRNYXJnaW4gPSBmYWxzZTsg
fQorICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdpbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRl
cigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZhbHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFk
ZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRIYXNW
YWxpZE1hcmdpbigpIHsgbV9oYXNWYWxpZE1hcmdpbiA9IHRydWU7IH0KKyAgICB2b2lkIHNldEhh
c1ZhbGlkVmVydGljYWxNYXJnaW4oKSB7IG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiA9IHRydWU7
IH0KKyAgICB2b2lkIHNldEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbigpIHsgbV9oYXNWYWxpZEhv
cml6b250YWxNYXJnaW4gPSB0cnVlOyB9CisKICAgICB2b2lkIHNldEhhc1ZhbGlkQm9yZGVyKCkg
eyBtX2hhc1ZhbGlkQm9yZGVyID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0SGFzVmFsaWRQYWRkaW5n
KCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IHRydWU7IH0KICNlbmRpZgpAQCAtMTk3LDcgKzIwMCw4
IEBAIHByaXZhdGU6CiAgICAgRWRnZXMgbV9wYWRkaW5nOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgIGJvb2wgbV9oYXNWYWxpZE1hcmdpbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZhbGlkVmVydGlj
YWxNYXJnaW4geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZEJvcmRlciB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1ZhbGlkUGFkZGluZyB7IGZhbHNlIH07CiAjZW5kaWYKQEAgLTIyMSw2
ICsyMjUsMTIgQEAgaW5saW5lIHZvaWQgQm94OjpSZWN0OjpzZXRIYXNWYWxpZFNpemUoKQogICAg
IG1faGFzVmFsaWRXaWR0aCA9IHRydWU7CiAgICAgbV9oYXNWYWxpZEhlaWdodCA9IHRydWU7CiB9
CisKK2lubGluZSB2b2lkIEJveDo6aW52YWxpZGF0ZU1hcmdpbigpCit7CisgICAgbV9oYXNWYWxp
ZEhvcml6b250YWxNYXJnaW4gPSBmYWxzZTsKKyAgICBtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4g
PSBmYWxzZTsKK30KICNlbmRpZgogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6OlJlY3Q6OnRvcCgp
IGNvbnN0CkBAIC0zNzYsMTIgKzM4NiwyMiBAQCBpbmxpbmUgQm94OjpSZWN0OjpvcGVyYXRvciBM
YXlvdXRSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbV9yZWN0OwogfQogCi1pbmxpbmUgdm9pZCBC
b3g6OnNldE1hcmdpbihFZGdlcyBtYXJnaW4pCitpbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250
YWxNYXJnaW4oSG9yaXpvbnRhbEVkZ2VzIG1hcmdpbikKK3sKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKCk7CisjZW5kaWYKKyAgICBtX21hcmdp
bi5sZWZ0ID0gbWFyZ2luLmZpcnN0OworICAgIG1fbWFyZ2luLnJpZ2h0ID0gbWFyZ2luLnNlY29u
ZDsKK30KKworaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdpbihWZXJ0aWNhbEVkZ2Vz
IG1hcmdpbikKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc2V0SGFzVmFsaWRNYXJnaW4o
KTsKKyAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAjZW5kaWYKLSAgICBtX21hcmdp
biA9IG1hcmdpbjsKKyAgICBtX21hcmdpbi50b3AgPSBtYXJnaW4uZmlyc3Q7CisgICAgbV9tYXJn
aW4uYm90dG9tID0gbWFyZ2luLnNlY29uZDsKIH0KIAogaW5saW5lIHZvaWQgQm94OjpzZXRCb3Jk
ZXIoRWRnZXMgYm9yZGVyKQpAQCAtNDAyLDI1ICs0MjIsMjUgQEAgaW5saW5lIHZvaWQgQm94Ojpz
ZXRQYWRkaW5nKEVkZ2VzIHBhZGRpbmcpCiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2lu
VG9wKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZE1hcmdpbik7CisgICAgQVNTRVJU
KG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CiAgICAgcmV0dXJuIG1fbWFyZ2luLnRvcDsKIH0K
IAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5MZWZ0KCkgY29uc3QKIHsKLSAgICBBU1NF
UlQobV9oYXNWYWxpZE1hcmdpbik7CisgICAgQVNTRVJUKG1faGFzVmFsaWRIb3Jpem9udGFsTWFy
Z2luKTsKICAgICByZXR1cm4gbV9tYXJnaW4ubGVmdDsKIH0KIAogaW5saW5lIExheW91dFVuaXQg
Qm94OjptYXJnaW5Cb3R0b20oKSBjb25zdAogewotICAgIEFTU0VSVChtX2hhc1ZhbGlkTWFyZ2lu
KTsKKyAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKICAgICByZXR1cm4gbV9t
YXJnaW4uYm90dG9tOwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpblJpZ2h0KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZE1hcmdpbik7CisgICAgQVNTRVJUKG1faGFz
VmFsaWRIb3Jpem9udGFsTWFyZ2luKTsKICAgICByZXR1cm4gbV9tYXJnaW4ucmlnaHQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341823</attachid>
            <date>2018-06-01 20:40:27 -0700</date>
            <delta_ts>2018-06-04 07:35:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186217-20180601204026.patch</filename>
            <type>text/plain</type>
            <size>37203</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2MGQzNzU5Y2RjMTIz
NjYzOGU2NmE3YWM3NTc4Y2MwNjkwNGU2Yy4uNDgwMWFkMzI0MDQxMzE2NTM5YjRhNTE4YjRhN2Nj
NjM5YjNmMzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA2LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWVyZ2Ugd2lkdGgg
YW5kIGhvcml6b250YWwgbWFyZ2luIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjb3VsZCBjZXJ0YWlubHkgY29tcHV0ZSB3aWR0
aCBhbmQgbWFyaW5nIHNlcGFyYXRlbHksIGJ1dCB0byBtYXRjaCBlYWNoIHN0ZXBzIGRlZmluZWQK
KyAgICAgICAgYXQgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zpc3VkZXQuaHRtbCwgd2Ug
c2hvdWxkIGp1c3QgbWVyZ2Ugd2lkdGggYW5kIGhvcml6b250YWwgbWFyaW5nIGNvbXB1dGF0aW9u
cworICAgICAgICAoZm9sbG93ZWQgYnkgaGVpZ2h0IGFuZCB2ZXJ0aWNhbCBtYXJnaW5zKS4KKyAg
ICAgICAgVXNlIDAgY29tcHV0ZWQgbWFyaW5ncyBmb3Igbm93LgorCisgICAgICAgICogbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ1dpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dX
aWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Rlc2NlbmRhbnRz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVPdXRPZkZsb3dXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICog
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmZsb2F0
aW5nTm9uUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5s
aW5lUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0xheW91dENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0Ojppbml0aWFs
aXplUm9vdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1dp
ZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1dpZHRo
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZU1hcmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFu
ZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d1dpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTWFyZ2luKTogRGVsZXRlZC4KKyAgICAgICAg
KiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6Om1hcmdpbkJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SGFz
VmFsaWRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNl
dEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6OmludmFsaWRhdGVNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRIb3Jpem9udGFsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0
VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5U
b3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5MZWZ0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bWFyZ2luQm90dG9tIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bWFyZ2luUmlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpFZGdlczo6RWRnZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZE1hcmdpbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldE1hcmdpbik6IERlbGV0ZWQu
CisKIDIwMTgtMDYtMDEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXSBTaW1wbGlmeSB0aGUgZm9ybWF0dGluZyBjbGFzcyBpbXBsZW1lbnRhdGlvbiBieSBw
dXNoaW5nIGRvd24gc29tZSBvZiB0aGUgbG9naWMgdG8gdGhlIEdlb21ldHJ5IGNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhOGEzOGY1YTQ4
ZTc3MTliNjFkYWY2ODUyMTFkNjk1NzBkZDZmYWMyLi5hNDhmY2UzZDJhNjUwNGJlOTIwNGJhNGU0
ODVjNzI3NjQ2Zjg3NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTU5LDE5ICs1OSwyMyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlRmxvYXRpbmdIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29ucwogICAg
IGRpc3BsYXlCb3guc2V0SGVpZ2h0KEdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91
dE9mRmxvd1dpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94
KSBjb25zdAogewotICAgIGRpc3BsYXlCb3guc2V0V2lkdGgoR2VvbWV0cnk6Om91dE9mRmxvd1dp
ZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOworICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4g
PSBHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOworICAgIGRpc3BsYXlCb3guc2V0V2lkdGgod2lkdGhBbmRNYXJnaW4ud2lkdGgpOworICAg
IGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwog
fQogCi12b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SGVpZ2h0KExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpC
b3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBk
aXNwbGF5Qm94LnNldEhlaWdodChHZW9tZXRyeTo6b3V0T2ZGbG93SGVpZ2h0KGxheW91dENvbnRl
eHQsIGxheW91dEJveCkpOworICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6b3V0
T2ZGbG93V2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICBkaXNw
bGF5Qm94LnNldFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNl
dEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKIH0KIAotdm9pZCBGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkg
Y29uc3QKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIZWlnaHQoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6
OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKEdlb21l
dHJ5OjpmbG9hdGluZ1dpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOworICAgIGRpc3Bs
YXlCb3guc2V0SGVpZ2h0KEdlb21ldHJ5OjpvdXRPZkZsb3dIZWlnaHQobGF5b3V0Q29udGV4dCwg
bGF5b3V0Qm94KSk7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVCb3JkZXJB
bmRQYWRkaW5nKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CkBAIC0xMDcsNyArMTExLDcgQEAg
dm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCkKICAgICAgICAgLy8gb2YgYSBoeXBvdGhldGljYWwgYm94
IHRoYXQgd291bGQgaGF2ZSBiZWVuIHRoZSBmaXJzdCBib3ggb2YgdGhlIGVsZW1lbnQgaWYgaXRz
IHNwZWNpZmllZCAncG9zaXRpb24nIHZhbHVlIGhhZCBiZWVuICdzdGF0aWMnIGFuZAogICAgICAg
ICAvLyBpdHMgc3BlY2lmaWVkICdmbG9hdCcgaGFkIGJlZW4gJ25vbmUnIGFuZCBpdHMgc3BlY2lm
aWVkICdjbGVhcicgaGFkIGJlZW4gJ25vbmUnLgogICAgICAgICBjb21wdXRlU3RhdGljUG9zaXRp
b24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKLSAgICAgICAgY29tcHV0
ZU91dE9mRmxvd1dpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7Cisg
ICAgICAgIGNvbXB1dGVPdXRPZkZsb3dXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlv
dXRCb3gsIGRpc3BsYXlCb3gpOwogCiAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNo
ZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9
IGxheW91dENvbnRleHQuZm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggY2FkN2VhZDVjMzU4NGYzYjYyNGQz
ODM3NTAyMmM3M2VjMzMzYmM2MS4uOWQ0MDAxNmU4YWM4OWQ5Yjg2YTQzZGNkYzYzMmQxY2RhNDg0
MTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY3
LDcgKzY3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gm
KSBjb25zdCA9IDA7CiAKICAgICB2b2lkIGNvbXB1dGVGbG9hdGluZ0hlaWdodChMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRl
RmxvYXRpbmdXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94Jikg
Y29uc3Q7CisgICAgdm9pZCBjb21wdXRlRmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1
dGVCb3JkZXJBbmRQYWRkaW5nKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpC
b3gmKSBjb25zdDsKIApAQCAtODEsMzEgKzgxLDQxIEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGlz
IGNsYXNzIGltcGxlbWVudHMgZ2VuZXJpYyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nLgogICAgIGNs
YXNzIEdlb21ldHJ5IHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0cnVjdCBXaWR0aEFuZE1hcmdp
biB7CisgICAgICAgICAgICBMYXlvdXRVbml0IHdpZHRoOworICAgICAgICAgICAgRGlzcGxheTo6
Qm94OjpIb3Jpem9udGFsRWRnZXMgbWFyZ2luOworICAgICAgICB9OworCiAgICAgICAgIHN0YXRp
YyBMYXlvdXRVbml0IG91dE9mRmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd1dpZHRoKExheW91dENvbnRleHQm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIG91dE9mRmxvd1dp
ZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0
aWMgTGF5b3V0VW5pdCBmbG9hdGluZ0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdXaWR0
aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGlj
IExheW91dFBvaW50IG91dE9mRmxvd1Bvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKIAogICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBpbmxpbmVSZXBsYWNlZEhlaWdodChMYXlv
dXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGlubGlu
ZVJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0
aWMgV2lkdGhBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIERpc3BsYXk6OkJveDo6RWRnZXMg
Y29tcHV0ZWRCb3JkZXIoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxEaXNwbGF5OjpCb3g6OkVkZ2VzPiBjb21wdXRlZFBhZGRpbmcoTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IExheW91dFVuaXQgb3V0T2ZGbG93UmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0
IEJveCYpOwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dSZXBsYWNlZFdpZHRo
KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFy
Z2luIG91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0
IEJveCYpOworCisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBvdXRPZkZsb3dOb25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKwogICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQm
LCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdSZXBsYWNl
ZFdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIFdpZHRo
QW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0Jiwg
Y29uc3QgQm94Jik7CisKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nTm9u
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAgICAg
fTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dQb3NpdGlvbihMYXlvdXRD
b250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21w
dXRlT3V0T2ZGbG93SGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpC
b3gmKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dXaWR0aChMYXlvdXRDb250ZXh0
JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlT3V0
T2ZGbG93V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6
OkJveCYpIGNvbnN0OwogCiAgICAgV2Vha1B0cjxCb3g+IG1fcm9vdDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXgg
MGNkN2FkNWY2Y2M2MGMyNWMzZDZiNTU4ZDNiZWJiMWMyMGY4YzNmMC4uZmVkZmVkMDg2NThhNDhl
N2Y4MTc3NmUxZTQ5ZmIwOGFiYTViOWE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0
YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0CiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWU7CiB9
CiAKLXN0YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29u
dGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAg
CkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIExheW91dFVuaXQgb3V0T2ZGbG93Tm9uUmVwbGFj
ZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdAogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gY29tcHV0ZWRXaWR0aFZhbHVl
OworICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7IGNvbXB1dGVkV2lkdGhWYWx1ZSwgeyB9IH07
CiB9CiAKIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkKQEAgLTE5NSwxMyArMTk1LDEzIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiBsCiAg
ICAgcmV0dXJuIGlubGluZVJlcGxhY2VkSGVpZ2h0KGxheW91dENvbnRleHQsIGxheW91dEJveCk7
CiB9CiAKLUxheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5
b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4o
TGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAg
ICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gu
cmVwbGFjZWQoKSk7CiAgICAgLy8gMTAuMy44IEFic29sdXRlbHkgcG9zaXRpb25lZCwgcmVwbGFj
ZWQgZWxlbWVudHMKICAgICAvLwogICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMg
ZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVybiBp
bmxpbmVSZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJu
IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
IH0KIAogc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdOb25SZXBsYWNlZEhlaWdodChMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTIxNiwxNCAr
MjE2LDE1IEBAIHN0YXRpYyBMYXlvdXRVbml0IGZsb2F0aW5nTm9uUmVwbGFjZWRIZWlnaHQoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QKICAgICByZXR1cm4gaGVpZ2h0LmlzQXV0
bygpID8gY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRDb250ZXh0
LCBsYXlvdXRCb3gpIDogTGF5b3V0VW5pdChoZWlnaHQudmFsdWUoKSk7CiB9CiAKLXN0YXRpYyBM
YXlvdXRVbml0IGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRD
b250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAgLy8gMTAuMy41IEZsb2F0
aW5nLCBub24tcmVwbGFjZWQgZWxlbWVudHMKIAogICAgIC8vIElmICd3aWR0aCcgaXMgY29tcHV0
ZWQgYXMgJ2F1dG8nLCB0aGUgdXNlZCB2YWx1ZSBpcyB0aGUgInNocmluay10by1maXQiIHdpZHRo
LgogICAgIGF1dG8gd2lkdGggPSBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsV2lkdGgoKTsKLSAg
ICByZXR1cm4gd2lkdGguaXNBdXRvKCkgPyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQs
IGxheW91dEJveCkgOiBMYXlvdXRVbml0KHdpZHRoLnZhbHVlKCkpOworICAgIGF1dG8gY29tcHV0
ZWRXaWR0aFZhbHVlID0gd2lkdGguaXNBdXRvKCkgPyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENv
bnRleHQsIGxheW91dEJveCkgOiBMYXlvdXRVbml0KHdpZHRoLnZhbHVlKCkpOworICAgIHJldHVy
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsgY29tcHV0ZWRX
aWR0aFZhbHVlLCB7IH0gfTsKIH0KIAogTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0yMzQsMTMgKzIzNSwxMyBAQCBMYXlvdXRVbml0
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodChMYXlv
dXRDb250ZXh0JiBsYQogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpOwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0
aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkg
JiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuNiBGbG9hdGluZywgcmVwbGFj
ZWQgZWxlbWVudHMKICAgICAvLwogICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMg
ZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVybiBp
bmxpbmVSZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJu
IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
IH0KIAogc3RhdGljIExheW91dFBvaW50IG91dE9mRmxvd05vblJlcGxhY2VkUG9zaXRpb24oTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC00NDAs
MTMgKzQ0MSwxMyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0
T2ZGbG93SGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbgogICAgIHJldHVybiBvdXRPZkZs
b3dSZXBsYWNlZEhlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCi1MYXlvdXRV
bml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93V2lkdGgoTGF5b3V0Q29u
dGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAg
ICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOwotICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxh
eW91dEJveCk7CisgICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogTGF5b3V0
VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0KExheW91dENv
bnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtNDU4LDEzICs0
NTksMTMgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
SGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnQKICAgICByZXR1cm4gZmxvYXRpbmdSZXBs
YWNlZEhlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCi1MYXlvdXRVbml0IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aChMYXlvdXRDb250ZXh0JiBs
YXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9h
dGluZ1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSk7CiAKICAgICBpZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4g
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAg
cmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwor
ICAgICAgICByZXR1cm4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENv
bnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCiBMYXlvdXRQb2ludCBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1Bvc2l0aW9uKExheW91dENvbnRleHQmIGxh
eW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtNTE4LDcgKzUxOSw3IEBAIExh
eW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdo
dChMYXlvdXRDb250ZXh0JiwgY29uCiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWU7CiB9
CiAKLUxheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNl
ZFdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBC
b3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3gu
aXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuMiBJbmxp
bmUsIHJlcGxhY2VkIGVsZW1lbnRzCkBAIC01NjQsMTcgKzU2NSwxNSBAQCBMYXlvdXRVbml0IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aChMYXlvdXRDb250
ZXh0JiwgY29ucwogICAgICAgICBjb21wdXRlZFdpZHRoVmFsdWUgPSAzMDA7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhWYWx1ZTsKKyAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4g
eyBjb21wdXRlZFdpZHRoVmFsdWUsIHsgfSB9OwogfQogCiBEaXNwbGF5OjpCb3g6OkVkZ2VzIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0
eWxlKCk7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgc3R5bGUuYm9yZGVyVG9wKCkuYm94TW9kZWxX
aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxXaWR0aCgpLAotICAg
ICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCksCi0gICAgICAgIHN0eWxl
LmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCisgICAgICAgIHsgc3R5bGUuYm9yZGVyTGVm
dCgpLmJveE1vZGVsV2lkdGgoKSwgc3R5bGUuYm9yZGVyUmlnaHQoKS5ib3hNb2RlbFdpZHRoKCkg
fSwKKyAgICAgICAgeyBzdHlsZS5ib3JkZXJUb3AoKS5ib3hNb2RlbFdpZHRoKCksIHN0eWxlLmJv
cmRlckJvdHRvbSgpLmJveE1vZGVsV2lkdGgoKSB9CiAgICAgfTsKIH0KIApAQCAtNTg1LDEyICs1
ODQsMTAgQEAgc3RkOjpvcHRpb25hbDxEaXNwbGF5OjpCb3g6OkVkZ2VzPiBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZygKIAogICAgIGF1dG8mIHN0eWxlID0gbGF5
b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENv
bnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
KS0+d2lkdGgoKTsKLSAgICByZXR1cm4gRGlzcGxheTo6Qm94OjpFZGdlcygKLSAgICAgICAgdmFs
dWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ1RvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksCi0g
ICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKSwKLSAgICAgICAgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0JvdHRvbSgpLCBj
b250YWluaW5nQmxvY2tXaWR0aCksCi0gICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRp
bmdSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkKLSAgICApOworICAgIHJldHVybiBEaXNw
bGF5OjpCb3g6OkVkZ2VzIHsKKyAgICAgICAgeyB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5n
TGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRp
bmdSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfSwKKyAgICAgICAgeyB2YWx1ZUZvckxl
bmd0aChzdHlsZS5wYWRkaW5nVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgdmFsdWVGb3JM
ZW5ndGgoc3R5bGUucGFkZGluZ0JvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfQorICAg
IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCBl
MDE1YjUxOTdhZTMxZmZiOWM5YjkxOTkzMWJmYTIyODY2ZmVhOTIyLi45MzA4YjIwMTk3NzQ4Njg5
NTVhYjA1MzE0OGI3MTk3YmEzNGUwNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENv
bnRleHQuY3BwCkBAIC01OCwyMiArNTgsMTkgQEAgdm9pZCBMYXlvdXRDb250ZXh0Ojppbml0aWFs
aXplUm9vdChjb25zdCBDb250YWluZXImIHJvb3QsIGNvbnN0IExheW91dFNpemUmIGNvbnQKICAg
ICAvLyBSb290IGlzIGFsd2F5cyBhdCAwIDAgd2l0aCBubyBtYXJnaW4gCiAgICAgZGlzcGxheUJv
eC5zZXRUb3BMZWZ0KHsgfSk7CiAgICAgZGlzcGxheUJveC5zZXRTaXplKGNvbnRhaW5lclNpemUp
OwotICAgIGRpc3BsYXlCb3guc2V0TWFyZ2luKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRIb3Jp
em9udGFsTWFyZ2luKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IH0p
OwogCiAgICAgYXV0byYgc3R5bGUgPSByb290LnN0eWxlKCk7CiAgICAgLy8gRklYTUU6IG1fcm9v
dCBjb3VsZCB2ZXJ5IHdlbGwgYmUgYSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRoIGFuY2Vz
dG9ycyBhbmQgcmVzb2x2YWJsZSBib3JkZXIgYW5kIHBhZGRpbmcgKGFzIG9wcG9zZWQgdG8gdGhl
IHRvcG1vc3Qgcm9vdCkKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7Ci0gICAgICAgIHN0eWxl
LmJvcmRlclRvcCgpLmJveE1vZGVsV2lkdGgoKSwKLSAgICAgICAgc3R5bGUuYm9yZGVyTGVmdCgp
LmJveE1vZGVsV2lkdGgoKSwKLSAgICAgICAgc3R5bGUuYm9yZGVyQm90dG9tKCkuYm94TW9kZWxX
aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJSaWdodCgpLmJveE1vZGVsV2lkdGgoKQorICAg
ICAgICB7IHN0eWxlLmJvcmRlckxlZnQoKS5ib3hNb2RlbFdpZHRoKCksIHN0eWxlLmJvcmRlclJp
Z2h0KCkuYm94TW9kZWxXaWR0aCgpIH0sCisgICAgICAgIHsgc3R5bGUuYm9yZGVyVG9wKCkuYm94
TW9kZWxXaWR0aCgpLCBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCkgfQogICAg
IH0pOwogCiAgICAgZGlzcGxheUJveC5zZXRQYWRkaW5nKHsKLSAgICAgICAgdmFsdWVGb3JMZW5n
dGgoc3R5bGUucGFkZGluZ1RvcCgpLCBjb250YWluZXJTaXplLndpZHRoKCkpLAotICAgICAgICB2
YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nTGVmdCgpLCBjb250YWluZXJTaXplLndpZHRoKCkp
LAotICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nQm90dG9tKCksIGNvbnRhaW5l
clNpemUud2lkdGgoKSksCi0gICAgICAgIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdSaWdo
dCgpLCBjb250YWluZXJTaXplLndpZHRoKCkpCisgICAgICAgIHsgdmFsdWVGb3JMZW5ndGgoc3R5
bGUucGFkZGluZ0xlZnQoKSwgY29udGFpbmVyU2l6ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgo
c3R5bGUucGFkZGluZ1JpZ2h0KCksIGNvbnRhaW5lclNpemUud2lkdGgoKSkgfSwKKyAgICAgICAg
eyB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nVG9wKCksIGNvbnRhaW5lclNpemUud2lkdGgo
KSksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdCb3R0b20oKSwgY29udGFpbmVyU2l6ZS53
aWR0aCgpKSB9CiAgICAgfSk7CiAKICAgICBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdExpc3RGb3JM
YXlvdXQuYWRkKCZyb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDRl
MTc0ZDljYmRmZDkyNjRiNjM0OGVjN2IxODAxNDVhNTdkYzFiZmYuLjhmNThhMjJmNjZiNTUyOTRh
NzI1MWI3ODkyZGMzZTdjMTM5YTY2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtNzMsMTAgKzczLDkgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQo
TGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXQKICAgICAgICAgICAg
IGF1dG8mIGxheW91dEJveCA9IGxheW91dFBhaXIubGF5b3V0Qm94OwogICAgICAgICAgICAgYXV0
byYgZGlzcGxheUJveCA9IGxheW91dFBhaXIuZGlzcGxheUJveDsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY29tcHV0ZU1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlC
b3gpOwogICAgICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0Q29udGV4dCwg
bGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKKyAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdp
bihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogICAgICAgICAgICAgY29t
cHV0ZVN0YXRpY1Bvc2l0aW9uKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7
Ci0gICAgICAgICAgICBjb21wdXRlV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNw
bGF5Qm94KTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5n
Q29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGxh
eW91dENvbnRleHQuZm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KTsKICAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0KGxheW91dENvbnRleHQsIGxheW91dENvbnRleHQu
ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94LCAqZm9ybWF0dGluZ0NvbnRleHQp
KTsKQEAgLTEzOSwxMyArMTM4LDEzIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBsYXlvCiAgICAgZGlz
cGxheUJveC5zZXRUb3BMZWZ0KEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24obGF5
b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZVdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94
KSBjb25zdAogewogICAgIGlmIChsYXlvdXRCb3guaXNJbkZsb3coKSkKLSAgICAgICAgcmV0dXJu
IGNvbXB1dGVJbkZsb3dXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gp
OworICAgICAgICByZXR1cm4gY29tcHV0ZUluRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dENvbnRl
eHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7CiAKICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlRmxvYXRpbmdXaWR0aChsYXlv
dXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOworICAgICAgICByZXR1cm4gY29tcHV0
ZUZsb2F0aW5nV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBkaXNwbGF5
Qm94KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtMTY2LDE0ICsxNjUsMTEg
QEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93SGVpZ2h0KExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGMKICAgICBkaXNwbGF5Qm94LnNldEhlaWdodChHZW9t
ZXRyeTo6aW5GbG93SGVpZ2h0KGxheW91dENvbnRleHQsIGxheW91dEJveCkpOwogfQogCi12b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbkZsb3dXaWR0aChMYXlvdXRDb250ZXh0
JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNw
bGF5Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93
V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBs
YXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBkaXNwbGF5
Qm94LnNldFdpZHRoKEdlb21ldHJ5OjppbkZsb3dXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpKTsKLX0KLQotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlTWFyZ2luKExh
eW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5
OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0Ci17Ci0gICAgZGlzcGxheUJveC5zZXRNYXJnaW4oR2Vv
bWV0cnk6OmNvbXB1dGVkTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCkpOworICAgIGF1
dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4obGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICBkaXNwbGF5Qm94LnNldFdpZHRoKHdpZHRoQW5kTWFy
Z2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRN
YXJnaW4ubWFyZ2luKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBh
MTM1MzUwMmM5NjIzYjgxZWY1ZmY5MmYzY2Q2ZmQ4N2ZmYjBkYjQwLi45YmJhZGNjMzAyNjI1MGM0
ZmVlNzcwYzNiNTU2NTEzMzNhMDcxZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApA
QCAtNTEsMjkgKzUxLDI2IEBAIHB1YmxpYzoKICAgICBSZWY8RmxvYXRpbmdTdGF0ZT4gY3JlYXRl
T3JGaW5kRmxvYXRpbmdTdGF0ZShMYXlvdXRDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBjb21wdXRlV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYs
IERpc3BsYXk6OkJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdDsKICAgICB2b2lk
IGNvbXB1dGVIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYp
IGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlU3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29t
cHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jiwg
RGlzcGxheTo6Qm94JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wdXRlSW5GbG93V2lk
dGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OworICAg
IHZvaWQgY29tcHV0ZUluRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBC
b3gmLCBEaXNwbGF5OjpCb3gmKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVJbkZsb3dIZWlnaHQo
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0OwotICAgIHZv
aWQgY29tcHV0ZU1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94
JikgY29uc3Q7CiAKICAgICAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgcG9zaXRpb25pbmcgYW5k
IHNpemluZyBmb3IgYm94ZXMgcGFydGljaXBhdGluZyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29u
dGV4dC4KICAgICBjbGFzcyBHZW9tZXRyeSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
TGF5b3V0VW5pdCBpbkZsb3dIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwotICAg
ICAgICBzdGF0aWMgTGF5b3V0VW5pdCBpbkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94Jik7CisgICAgICAgIHN0YXRpYyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRo
QW5kTWFyZ2luIGluRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKIAogICAgICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgc3RhdGljUG9zaXRpb24oTGF5b3V0Q29u
dGV4dCYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgaW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBz
dGF0aWMgRGlzcGxheTo6Qm94OjpFZGdlcyBjb21wdXRlZE1hcmdpbihMYXlvdXRDb250ZXh0Jiwg
Y29uc3QgQm94Jik7Ci0KICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBp
bkZsb3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAg
ICAgIHN0YXRpYyBMYXlvdXRVbml0IGluRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4
dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpXaWR0aEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91
dENvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICB9OwogICAgIAogICAgIC8vIFRoaXMgY2xhc3Mg
aW1wbGVtZW50cyBtYXJnaW4gY29sbGFwc2luZyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGNj
NzJjZjJhYzRiZjllZDc2ZmE5YjIzZDQ0OGQ4MTRlN2YzYjFjNWYuLjg2NjFlYTAxNjg3MWJiNjBh
ZmQyNGQ1Y2NhZTlkOWIxODVmNmJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRD
b250ZQogICAgIHJldHVybiBzdGQ6Om1heChjb21wdXRlZEhlaWdodCwgaW5pdGlhbENvbnRhaW5p
bmdCbG9ja0hlaWdodCk7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29u
dGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OldpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dO
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSAm
JiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC0xNDMsMTQgKzE0MywxNCBAQCBMYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdp
ZHRoKExheW91dENvbnRleAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1dGVkV2lk
dGhWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKHdpZHRoLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAK
LSAgICAgICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhWYWx1ZTsKKyAgICAgICAgcmV0dXJuIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4geyBjb21wdXRlZFdpZHRoVmFs
dWUsIHsgfSB9OwogICAgIH07CiAKLSAgICBhdXRvIGNvbXB1dGVkV2lkdGggPSBjb21wdXRlKCk7
CisgICAgYXV0byBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUgPSBjb21wdXRlKCk7CiAgICAg
aWYgKCFpc1N0cmV0Y2hlZFRvVmlld3BvcnQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSkKLSAg
ICAgICAgcmV0dXJuIGNvbXB1dGVkV2lkdGg7CisgICAgICAgIHJldHVybiBjb21wdXRlZFdpZHRo
QW5kTWFyZ2luVmFsdWU7CiAgICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrV2lkdGggPSBs
YXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9j
ayhsYXlvdXRCb3gpKS0+Y29udGVudEJveCgpLndpZHRoKCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4
KGNvbXB1dGVkV2lkdGgsIGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgcmV0dXJu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4geyBzdGQ6Om1heChj
b21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUud2lkdGgsIGluaXRpYWxDb250YWluaW5nQmxvY2tX
aWR0aCksIHsgfSB9OwogfQogCiBMYXlvdXRQb2ludCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCkBAIC0yNDcsMjggKzI0NywxNSBAQCBMYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHQoTGF5b3V0Q29udGV4dCYg
bGF5b3V0QwogICAgIHJldHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJl
cGxhY2VkSGVpZ2h0KGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiB9CiAKLUxheW91dFVuaXQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoKExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygp
KTsKIAogICAgIGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBpbkZs
b3dOb25SZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgICAgIHJl
dHVybiBpbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91
dEJveCk7CiAgICAgLy8gMTAuMy40IEJsb2NrLWxldmVsLCByZXBsYWNlZCBlbGVtZW50cyBpbiBu
b3JtYWwgZmxvdwogICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5l
ZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzCi0gICAgcmV0dXJuIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlv
dXRCb3gpOwotfQotCi1EaXNwbGF5OjpCb3g6OkVkZ2VzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wdXRlZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBj
b25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHls
ZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndpZHRoKCk7
Ci0KLSAgICByZXR1cm4gRGlzcGxheTo6Qm94OjpFZGdlcygKLSAgICAgICAgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpblRvcChsYXlvdXRCb3gpLAotICAgICAg
ICB2YWx1ZUZvckxlbmd0aChzdHlsZS5tYXJnaW5MZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSwKLSAgICAgICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdp
bkJvdHRvbShsYXlvdXRCb3gpLAotICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZS5tYXJnaW5S
aWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkKLSAgICApOworICAgIHJldHVybiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4IGRmMjJkOGZjNDRmMjliOGZiMjViZjlj
NDE5YmM4NTNkZDM3ODQ5ZDUuLjg4NzU4ZWQ4YmYxYzFjZTM4NjVjZmEyZmIyZGYzZDIwMzhiMTVk
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJv
eC5jcHAKQEAgLTUyLDEzICs1MiwxNCBAQCBCb3g6OlN0eWxlOjpTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiAKIEJveDo6UmVjdCBCb3g6Om1hcmdpbkJveCgpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKG1faGFzVmFsaWRNYXJnaW4pOworICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRh
bE1hcmdpbik7CisgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CiAgICAgYXV0
byBtYXJnaW5Cb3ggPSBib3JkZXJCb3goKTsKIAotICAgIG1hcmdpbkJveC5zaGlmdExlZnRUbyht
YXJnaW5Cb3gubGVmdCgpIC0gbV9tYXJnaW4ubGVmdCk7Ci0gICAgbWFyZ2luQm94LnNoaWZ0VG9w
VG8obWFyZ2luQm94LnRvcCgpIC0gbV9tYXJnaW4udG9wKTsKLSAgICBtYXJnaW5Cb3guc2hpZnRS
aWdodFRvKG1hcmdpbkJveC5yaWdodCgpICsgbV9tYXJnaW4ucmlnaHQpOwotICAgIG1hcmdpbkJv
eC5zaGlmdEJvdHRvbVRvKG1hcmdpbkJveC5ib3R0b20oKSArIG1fbWFyZ2luLmJvdHRvbSk7Cisg
ICAgbWFyZ2luQm94LnNoaWZ0TGVmdFRvKG1hcmdpbkJveC5sZWZ0KCkgLSBtX21hcmdpbi5ob3Jp
em9udGFsLmxlZnQpOworICAgIG1hcmdpbkJveC5zaGlmdFRvcFRvKG1hcmdpbkJveC50b3AoKSAt
IG1fbWFyZ2luLnZlcnRpY2FsLnRvcCk7CisgICAgbWFyZ2luQm94LnNoaWZ0UmlnaHRUbyhtYXJn
aW5Cb3gucmlnaHQoKSArIG1fbWFyZ2luLmhvcml6b250YWwucmlnaHQpOworICAgIG1hcmdpbkJv
eC5zaGlmdEJvdHRvbVRvKG1hcmdpbkJveC5ib3R0b20oKSArIG1fbWFyZ2luLnZlcnRpY2FsLmJv
dHRvbSk7CiAKICAgICByZXR1cm4gbWFyZ2luQm94OwogfQpAQCAtODMsMTAgKzg0LDEwIEBAIEJv
eDo6UmVjdCBCb3g6OnBhZGRpbmdCb3goKSBjb25zdAogICAgIEFTU0VSVChtX2hhc1ZhbGlkQm9y
ZGVyKTsKICAgICBhdXRvIHBhZGRpbmdCb3ggPSBib3JkZXJCb3goKTsKIAotICAgIHBhZGRpbmdC
b3guc2hpZnRMZWZ0VG8ocGFkZGluZ0JveC5sZWZ0KCkgKyBtX2JvcmRlci5sZWZ0KTsKLSAgICBw
YWRkaW5nQm94LnNoaWZ0VG9wVG8ocGFkZGluZ0JveC50b3AoKSArIG1fYm9yZGVyLnRvcCk7Ci0g
ICAgcGFkZGluZ0JveC5zaGlmdFJpZ2h0VG8ocGFkZGluZ0JveC5yaWdodCgpIC0gbV9ib3JkZXIu
cmlnaHQpOwotICAgIHBhZGRpbmdCb3guc2hpZnRCb3R0b21UbyhwYWRkaW5nQm94LmJvdHRvbSgp
IC0gbV9ib3JkZXIuYm90dG9tKTsKKyAgICBwYWRkaW5nQm94LnNoaWZ0TGVmdFRvKHBhZGRpbmdC
b3gubGVmdCgpICsgbV9ib3JkZXIuaG9yaXpvbnRhbC5sZWZ0KTsKKyAgICBwYWRkaW5nQm94LnNo
aWZ0VG9wVG8ocGFkZGluZ0JveC50b3AoKSArIG1fYm9yZGVyLnZlcnRpY2FsLnRvcCk7CisgICAg
cGFkZGluZ0JveC5zaGlmdFJpZ2h0VG8ocGFkZGluZ0JveC5yaWdodCgpIC0gbV9ib3JkZXIuaG9y
aXpvbnRhbC5yaWdodCk7CisgICAgcGFkZGluZ0JveC5zaGlmdEJvdHRvbVRvKHBhZGRpbmdCb3gu
Ym90dG9tKCkgLSBtX2JvcmRlci52ZXJ0aWNhbC5ib3R0b20pOwogCiAgICAgcmV0dXJuIHBhZGRp
bmdCb3g7CiB9CkBAIC0xMDMsMTAgKzEwNCwxMCBAQCBCb3g6OlJlY3QgQm94Ojpjb250ZW50Qm94
KCkgY29uc3QKICAgICBBU1NFUlQobV9oYXNWYWxpZFBhZGRpbmcpOwogICAgIGF1dG8gY29udGVu
dEJveCA9IHBhZGRpbmdCb3goKTsKIAotICAgIGNvbnRlbnRCb3guc2hpZnRMZWZ0VG8oY29udGVu
dEJveC5sZWZ0KCkgKyBtX3BhZGRpbmcubGVmdCk7Ci0gICAgY29udGVudEJveC5zaGlmdFRvcFRv
KGNvbnRlbnRCb3gudG9wKCkgKyBtX3BhZGRpbmcudG9wKTsKLSAgICBjb250ZW50Qm94LnNoaWZ0
UmlnaHRUbyhjb250ZW50Qm94LnJpZ2h0KCkgLSBtX3BhZGRpbmcucmlnaHQpOwotICAgIGNvbnRl
bnRCb3guc2hpZnRCb3R0b21Ubyhjb250ZW50Qm94LmJvdHRvbSgpIC0gbV9wYWRkaW5nLmJvdHRv
bSk7CisgICAgY29udGVudEJveC5zaGlmdExlZnRUbyhjb250ZW50Qm94LmxlZnQoKSArIG1fcGFk
ZGluZy5ob3Jpem9udGFsLmxlZnQpOworICAgIGNvbnRlbnRCb3guc2hpZnRUb3BUbyhjb250ZW50
Qm94LnRvcCgpICsgbV9wYWRkaW5nLnZlcnRpY2FsLnRvcCk7CisgICAgY29udGVudEJveC5zaGlm
dFJpZ2h0VG8oY29udGVudEJveC5yaWdodCgpIC0gbV9wYWRkaW5nLmhvcml6b250YWwucmlnaHQp
OworICAgIGNvbnRlbnRCb3guc2hpZnRCb3R0b21Ubyhjb250ZW50Qm94LmJvdHRvbSgpIC0gbV9w
YWRkaW5nLnZlcnRpY2FsLmJvdHRvbSk7CiAKICAgICByZXR1cm4gY29udGVudEJveDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IDhj
MWUyNjFlNGMwMTk5M2E3MDJjZTIyYTljMGE1ZDU1NTg4NTBkZWEuLmY3MTdhYTVjNDdlOWFkOGI4
MGJjOTIzNDBlMmQ2OWY4N2RjMWJhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMTYwLDMwICsxNjAsMzQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGhl
aWdodCk7IH0KICAgICB2b2lkIHNldFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3Jl
Y3Quc2V0U2l6ZShzaXplKTsgfQogCi0gICAgc3RydWN0IEVkZ2VzIHsKLSAgICAgICAgRWRnZXMo
KSA9IGRlZmF1bHQ7Ci0gICAgICAgIEVkZ2VzKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IGxl
ZnQsIExheW91dFVuaXQgYm90dG9tLCBMYXlvdXRVbml0IHJpZ2h0KQotICAgICAgICAgICAgOiB0
b3AodG9wKQotICAgICAgICAgICAgLCBsZWZ0KGxlZnQpCi0gICAgICAgICAgICAsIGJvdHRvbShi
b3R0b20pCi0gICAgICAgICAgICAsIHJpZ2h0KHJpZ2h0KQotICAgICAgICAgICAgeyB9CisgICAg
c3RydWN0IEhvcml6b250YWxFZGdlcyB7CisgICAgICAgIExheW91dFVuaXQgbGVmdDsKKyAgICAg
ICAgTGF5b3V0VW5pdCByaWdodDsKKyAgICB9OwogCisgICAgc3RydWN0IFZlcnRpY2FsRWRnZXMg
ewogICAgICAgICBMYXlvdXRVbml0IHRvcDsKLSAgICAgICAgTGF5b3V0VW5pdCBsZWZ0OwogICAg
ICAgICBMYXlvdXRVbml0IGJvdHRvbTsKLSAgICAgICAgTGF5b3V0VW5pdCByaWdodDsKICAgICB9
OwotICAgIHZvaWQgc2V0TWFyZ2luKEVkZ2VzKTsKKworICAgIHN0cnVjdCBFZGdlcyB7CisgICAg
ICAgIEhvcml6b250YWxFZGdlcyBob3Jpem9udGFsOworICAgICAgICBWZXJ0aWNhbEVkZ2VzIHZl
cnRpY2FsOworICAgIH07CisKKyAgICB2b2lkIHNldEhvcml6b250YWxNYXJnaW4oSG9yaXpvbnRh
bEVkZ2VzKTsKKyAgICB2b2lkIHNldFZlcnRpY2FsTWFyZ2luKFZlcnRpY2FsRWRnZXMpOwogICAg
IHZvaWQgc2V0Qm9yZGVyKEVkZ2VzKTsKICAgICB2b2lkIHNldFBhZGRpbmcoRWRnZXMpOwogCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdpbigpIHsgbV9oYXNW
YWxpZE1hcmdpbiA9IGZhbHNlOyB9CisgICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCk7CiAgICAg
dm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gZmFsc2U7IH0KICAg
ICB2b2lkIGludmFsaWRhdGVQYWRkaW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IGZhbHNlOyB9
CiAKLSAgICB2b2lkIHNldEhhc1ZhbGlkTWFyZ2luKCkgeyBtX2hhc1ZhbGlkTWFyZ2luID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFsaWRWZXJ0aWNhbE1hcmdpbigpIHsgbV9oYXNWYWxpZFZl
cnRpY2FsTWFyZ2luID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFy
Z2luKCkgeyBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbiA9IHRydWU7IH0KKwogICAgIHZvaWQg
c2V0SGFzVmFsaWRCb3JkZXIoKSB7IG1faGFzVmFsaWRCb3JkZXIgPSB0cnVlOyB9CiAgICAgdm9p
ZCBzZXRIYXNWYWxpZFBhZGRpbmcoKSB7IG1faGFzVmFsaWRQYWRkaW5nID0gdHJ1ZTsgfQogI2Vu
ZGlmCkBAIC0xOTcsNyArMjAxLDggQEAgcHJpdmF0ZToKICAgICBFZGdlcyBtX3BhZGRpbmc7CiAK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgYm9vbCBtX2hhc1ZhbGlkTWFyZ2luIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Zh
bGlkQm9yZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRQYWRkaW5nIHsgZmFsc2Ug
fTsKICNlbmRpZgpAQCAtMjIxLDYgKzIyNiwxMiBAQCBpbmxpbmUgdm9pZCBCb3g6OlJlY3Q6OnNl
dEhhc1ZhbGlkU2l6ZSgpCiAgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKICAgICBtX2hhc1Zh
bGlkSGVpZ2h0ID0gdHJ1ZTsKIH0KKworaW5saW5lIHZvaWQgQm94OjppbnZhbGlkYXRlTWFyZ2lu
KCkKK3sKKyAgICBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbiA9IGZhbHNlOworICAgIG1faGFz
VmFsaWRWZXJ0aWNhbE1hcmdpbiA9IGZhbHNlOworfQogI2VuZGlmCiAKIGlubGluZSBMYXlvdXRV
bml0IEJveDo6UmVjdDo6dG9wKCkgY29uc3QKQEAgLTM3NiwxMiArMzg3LDIwIEBAIGlubGluZSBC
b3g6OlJlY3Q6Om9wZXJhdG9yIExheW91dFJlY3QoKSBjb25zdAogICAgIHJldHVybiBtX3JlY3Q7
CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0TWFyZ2luKEVkZ2VzIG1hcmdpbikKK2lubGluZSB2
b2lkIEJveDo6c2V0SG9yaXpvbnRhbE1hcmdpbihIb3Jpem9udGFsRWRnZXMgbWFyZ2luKQorewor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4oKTsK
KyNlbmRpZgorICAgIG1fbWFyZ2luLmhvcml6b250YWwgPSBtYXJnaW47Cit9CisKK2lubGluZSB2
b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oVmVydGljYWxFZGdlcyBtYXJnaW4pCiB7CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAotICAgIHNldEhhc1ZhbGlkTWFyZ2luKCk7CisgICAgc2V0SGFzVmFs
aWRWZXJ0aWNhbE1hcmdpbigpOwogI2VuZGlmCi0gICAgbV9tYXJnaW4gPSBtYXJnaW47CisgICAg
bV9tYXJnaW4udmVydGljYWwgPSBtYXJnaW47CiB9CiAKIGlubGluZSB2b2lkIEJveDo6c2V0Qm9y
ZGVyKEVkZ2VzIGJvcmRlcikKQEAgLTQwMiw3NCArNDIxLDc0IEBAIGlubGluZSB2b2lkIEJveDo6
c2V0UGFkZGluZyhFZGdlcyBwYWRkaW5nKQogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdp
blRvcCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRNYXJnaW4pOwotICAgIHJldHVy
biBtX21hcmdpbi50b3A7CisgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7Cisg
ICAgcmV0dXJuIG1fbWFyZ2luLnZlcnRpY2FsLnRvcDsKIH0KIAogaW5saW5lIExheW91dFVuaXQg
Qm94OjptYXJnaW5MZWZ0KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZE1hcmdpbik7
Ci0gICAgcmV0dXJuIG1fbWFyZ2luLmxlZnQ7CisgICAgQVNTRVJUKG1faGFzVmFsaWRIb3Jpem9u
dGFsTWFyZ2luKTsKKyAgICByZXR1cm4gbV9tYXJnaW4uaG9yaXpvbnRhbC5sZWZ0OwogfQogCiBp
bmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpbkJvdHRvbSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KG1faGFzVmFsaWRNYXJnaW4pOwotICAgIHJldHVybiBtX21hcmdpbi5ib3R0b207CisgICAgQVNT
RVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7CisgICAgcmV0dXJuIG1fbWFyZ2luLnZlcnRp
Y2FsLmJvdHRvbTsKIH0KIAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5SaWdodCgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRNYXJnaW4pOwotICAgIHJldHVybiBtX21hcmdp
bi5yaWdodDsKKyAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4pOworICAgIHJl
dHVybiBtX21hcmdpbi5ob3Jpem9udGFsLnJpZ2h0OwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBC
b3g6OnBhZGRpbmdUb3AoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7
Ci0gICAgcmV0dXJuIG1fcGFkZGluZy50b3A7CisgICAgcmV0dXJuIG1fcGFkZGluZy52ZXJ0aWNh
bC50b3A7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6cGFkZGluZ0xlZnQoKSBjb25zdAog
ewogICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7Ci0gICAgcmV0dXJuIG1fcGFkZGluZy5s
ZWZ0OworICAgIHJldHVybiBtX3BhZGRpbmcuaG9yaXpvbnRhbC5sZWZ0OwogfQogCiBpbmxpbmUg
TGF5b3V0VW5pdCBCb3g6OnBhZGRpbmdCb3R0b20oKSBjb25zdAogewogICAgIEFTU0VSVChtX2hh
c1ZhbGlkUGFkZGluZyk7Ci0gICAgcmV0dXJuIG1fcGFkZGluZy5ib3R0b207CisgICAgcmV0dXJu
IG1fcGFkZGluZy52ZXJ0aWNhbC5ib3R0b207CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6
cGFkZGluZ1JpZ2h0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZFBhZGRpbmcpOwot
ICAgIHJldHVybiBtX3BhZGRpbmcucmlnaHQ7CisgICAgcmV0dXJuIG1fcGFkZGluZy5ob3Jpem9u
dGFsLnJpZ2h0OwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6OmJvcmRlclRvcCgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRCb3JkZXIpOwotICAgIHJldHVybiBtX2JvcmRlci50
b3A7CisgICAgcmV0dXJuIG1fYm9yZGVyLnZlcnRpY2FsLnRvcDsKIH0KIAogaW5saW5lIExheW91
dFVuaXQgQm94Ojpib3JkZXJMZWZ0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZEJv
cmRlcik7Ci0gICAgcmV0dXJuIG1fYm9yZGVyLmxlZnQ7CisgICAgcmV0dXJuIG1fYm9yZGVyLmhv
cml6b250YWwubGVmdDsKIH0KIAogaW5saW5lIExheW91dFVuaXQgQm94Ojpib3JkZXJCb3R0b20o
KSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkQm9yZGVyKTsKLSAgICByZXR1cm4gbV9i
b3JkZXIuYm90dG9tOworICAgIHJldHVybiBtX2JvcmRlci52ZXJ0aWNhbC5ib3R0b207CiB9CiAK
IGlubGluZSBMYXlvdXRVbml0IEJveDo6Ym9yZGVyUmlnaHQoKSBjb25zdAogewogICAgIEFTU0VS
VChtX2hhc1ZhbGlkQm9yZGVyKTsKLSAgICByZXR1cm4gbV9ib3JkZXIucmlnaHQ7CisgICAgcmV0
dXJuIG1fYm9yZGVyLmhvcml6b250YWwucmlnaHQ7CiB9CiAKIH0K
</data>
<flag name="review"
          id="359985"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>