<?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>184951</bug_id>
          
          <creation_ts>2018-04-24 19:41:05 -0700</creation_ts>
          <short_desc>[LFC] Implement LayoutContexet::layout() and its dependencies.</short_desc>
          <delta_ts>2018-04-25 15:59:03 -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>1417396</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-04-24 19:41:05 -0700</bug_when>
    <thetext>LFC -&gt; Layout Formatting Context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417781</commentid>
    <comment_count>1</comment_count>
      <attachid>338796</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-04-25 14:39:12 -0700</bug_when>
    <thetext>Created attachment 338796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417786</commentid>
    <comment_count>2</comment_count>
      <attachid>338796</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-04-25 14:43:22 -0700</bug_when>
    <thetext>Comment on attachment 338796
Patch

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

&gt; Source/WebCore/layout/FormattingContext.h:50
&gt; +    const Box&amp; root() const { return *m_root; }

You can&apos;t return a ref to a weak object. It might be null!

Can&apos;t we guarantee that the FormattingContext outlines the root and not use a WeakPtr?

&gt; Source/WebCore/layout/LayoutContext.cpp:68
&gt; +    if (formattingContextRoot.establishesBlockFormattingContext())
&gt; +        return std::make_unique&lt;BlockFormattingContext&gt;(formattingContextRoot);
&gt; +    if (formattingContextRoot.establishesInlineFormattingContext())
&gt; +        return std::make_unique&lt;InlineFormattingContext&gt;(formattingContextRoot);
&gt; +    ASSERT_NOT_REACHED();

I would prefer some blank lines after the returns.

&gt; Source/WebCore/layout/LayoutContext.h:53
&gt; +    LayoutContext(Box&amp; root);

Can this be a const&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417806</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-04-25 15:12:19 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 338796 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338796&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/FormattingContext.h:50
&gt; &gt; +    const Box&amp; root() const { return *m_root; }
&gt; 
&gt; You can&apos;t return a ref to a weak object. It might be null!
In normal conditions, this can&apos;t be null (formatting context should never outlive the box). In unexpected conditions, it is just a null deref (as opposed to UAF).
I could return Box*, but that would indicate that it&apos;s okay to have a null root and callers would start checking against it.

&gt; 
&gt; Can&apos;t we guarantee that the FormattingContext outlines the root and not use
&gt; a WeakPtr?
I don&apos;t think we can guarantee that (we could release assert on the m_root at best). 

&gt; 
&gt; &gt; Source/WebCore/layout/LayoutContext.cpp:68
&gt; &gt; +    if (formattingContextRoot.establishesBlockFormattingContext())
&gt; &gt; +        return std::make_unique&lt;BlockFormattingContext&gt;(formattingContextRoot);
&gt; &gt; +    if (formattingContextRoot.establishesInlineFormattingContext())
&gt; &gt; +        return std::make_unique&lt;InlineFormattingContext&gt;(formattingContextRoot);
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; 
&gt; I would prefer some blank lines after the returns.
ok.

&gt; 
&gt; &gt; Source/WebCore/layout/LayoutContext.h:53
&gt; &gt; +    LayoutContext(Box&amp; root);
&gt; 
&gt; Can this be a const&amp;?
Not yet. WeakPtr can&apos;t take const objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417809</commentid>
    <comment_count>4</comment_count>
      <attachid>338808</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-04-25 15:20:34 -0700</bug_when>
    <thetext>Created attachment 338808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417828</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-04-25 15:54:08 -0700</bug_when>
    <thetext>Committed r231028: &lt;https://trac.webkit.org/changeset/231028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417830</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-25 15:59:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/39738535&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338796</attachid>
            <date>2018-04-25 14:39:12 -0700</date>
            <delta_ts>2018-04-25 15:20:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184951-20180425143911.patch</filename>
            <type>text/plain</type>
            <size>18817</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyYmJjZDg0YTVmODI2
NWU3ODY2ZTZiNzk3Yzg3ZTYwZDVmZWM4Zi4uYjFjYmRiNjNkZTY2NmRkYzBmNGMxZTU1ZWFlOGFi
M2QxYTcxMWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTA0LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gSW1wbGVtZW50IExh
eW91dENvbnRleGV0OjpsYXlvdXQoKSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDk1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
OkZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6On5Gb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlT3V0T2ZGbG93UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luVG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luQm90dG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpblJpZ2h0KToKKyAgICAgICAgKiBs
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ1N0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ1N0YXRlOjpGb3Jt
YXR0aW5nU3RhdGUpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAg
ICAgKiBsYXlvdXQvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxheW91dENvbnRleHQ6OkxheW91dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMYXlvdXRDb250ZXh0Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMYXlvdXRDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMYXlvdXRDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICogbGF5b3V0
L0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpblRvcCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpbkJvdHRvbSk6
CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Lmg6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpC
bG9ja0Zvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0
aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorCiAyMDE4LTA0
LTI1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW1w
bGVtZW50IExheW91dDo6QmxvY2tDb250YWluZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNTFhOTJiNDdhZWI4NmE1YWMwNmQy
ODBiYjRjMGI4ODE2YjI1NTcxZC4uOTg1NWJhZDQyOTVlN2E5YjVjOGJkZjVmMmM4N2QzZjQxYjE0
ZDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC0yNSwzICsyNSw2NSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybWF0
dGluZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQor
CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChGb3Jt
YXR0aW5nQ29udGV4dCk7CisKK0Zvcm1hdHRpbmdDb250ZXh0OjpGb3JtYXR0aW5nQ29udGV4dChC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKKyAgICA6IG1fcm9vdChtYWtlV2Vha1B0cihmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpKQoreworfQorCitGb3JtYXR0aW5nQ29udGV4dDo6fkZvcm1hdHRp
bmdDb250ZXh0KCkKK3sKK30KKwordm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRp
Y1Bvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0Cit7Cit9CisKK3ZvaWQgRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oY29uc3QgQm94JikgY29uc3QKK3sK
K30KKwordm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9uKGNv
bnN0IEJveCYpIGNvbnN0Cit7Cit9CisKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVX
aWR0aChjb25zdCBCb3gmKSBjb25zdAoreworfQorCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0Cit7Cit9CisKK0xheW91dFVuaXQgRm9ybWF0
dGluZ0NvbnRleHQ6Om1hcmdpblRvcChjb25zdCBCb3gmKSBjb25zdAoreworICAgIHJldHVybiAw
OworfQorCitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5MZWZ0KGNvbnN0IEJv
eCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0xheW91dFVuaXQgRm9ybWF0dGluZ0Nv
bnRleHQ6Om1hcmdpbkJvdHRvbShjb25zdCBCb3gmKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5SaWdodChjb25zdCBCb3gm
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggODdmMzlkNzRmY2NiNGFkZjgxZmZi
NDVlOTk3ZWFiOWMyYmYzNDNiZS4uZTg2Y2ZmOTJkMjc3NWEzMDU3Nzc0ODM3YjI5NGYwNGVlN2Y4
MWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00MCwyNSArNDEsMjkgQEAgY2xhc3MgQm94OwogY2xhc3MgRm9ybWF0dGluZ0NvbnRl
eHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRm9ybWF0dGluZ0NvbnRleHQpOwogcHVi
bGljOgotICAgIEZvcm1hdHRpbmdDb250ZXh0KEZvcm1hdHRpbmdTdGF0ZSYpOworICAgIEZvcm1h
dHRpbmdDb250ZXh0KEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKICAgICB2aXJ0dWFsIH5G
b3JtYXR0aW5nQ29udGV4dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoRm9ybWF0dGluZ1N0YXRlJikgPSAwOworICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4gZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgPSAw
OwogCi0gICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdDsKKyAgICBj
b25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290OyB9CiAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYpOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IEJveCYp
OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlT3V0T2ZGbG93UG9zaXRpb24oY29uc3QgQm94Jik7
CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihjb25z
dCBCb3gmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9u
KGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVXaWR0aChjb25z
dCBCb3gmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUhlaWdodChjb25zdCBCb3gmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVdpZHRoKGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBM
YXlvdXRVbml0IG1hcmdpblRvcChjb25zdCBCb3gmKTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWFyZ2luTGVmdChjb25zdCBCb3gmKTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luQm90
dG9tKGNvbnN0IEJveCYpOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodChjb25z
dCBCb3gmKTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luVG9wKGNvbnN0IEJveCYpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KGNvbnN0IEJveCYpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oY29uc3QgQm94JikgY29uc3Q7
CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KGNvbnN0IEJveCYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFdlYWtQdHI8Qm94PiBtX3Jvb3Q7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IGJlMGYzMTQxOTRiZDk0YzY1ZmI0
ZjRkNTBiNjk5MjNjNTdhNTkxODguLjhmYTBkNDM4Y2NmN2M1MzA5NmEzOGRiNGM0NGFmYzEyZTQx
MGM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC0y
NSwzICsyNSwyMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybWF0dGlu
Z1N0YXRlLmgiCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBMYXlvdXQgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRm9ybWF0dGlu
Z1N0YXRlKTsKKworRm9ybWF0dGluZ1N0YXRlOjpGb3JtYXR0aW5nU3RhdGUoKQoreworfQorCit9
Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAppbmRleCA3
ODIxZTdiMTljNjQwNDY1OTllNjc4N2ZhMjBkNGY0ZmRhNWU0M2FkLi5lMzRjMDA5YzNjMDYzMWY0
MmJhYTViNmYyZjYxYzcwNWVmYmEyMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdTdGF0ZS5oCkBAIC0zNCwxOCArMzQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKIGNsYXNzIEJveDsKLWNsYXNzIENvbnRhaW5lcjsKIGNsYXNzIEZsb2F0
aW5nU3RhdGU7Ci1jbGFzcyBMYXlvdXRTdGF0ZTsKIGNsYXNzIFN0eWxlRGlmZjsKIAogY2xhc3Mg
Rm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZvcm1hdHRpbmdT
dGF0ZSk7CiBwdWJsaWM6Ci0gICAgRm9ybWF0dGluZ1N0YXRlKENvbnRhaW5lciYgZm9ybWF0dGlu
Z1Jvb3QsIExheW91dFN0YXRlJik7CisgICAgRm9ybWF0dGluZ1N0YXRlKCk7CiAKLSAgICBDb250
YWluZXImIGZvcm1hdHRpbmdSb290KCkgY29uc3Q7Ci0gICAgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlKCkgY29uc3Q7CiAgICAgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSgpOwogCiAgICAg
dm9pZCBtYXJrTmVlZHNMYXlvdXQoY29uc3QgQm94JiwgU3R5bGVEaWZmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAzODZiODVjOTUxMTQ0NmU3NTIxOGYxOTFm
MzdhNmQyNTFkY2ZiNTZkLi5lMTVjM2JlN2EyNTllMjgzNDllN2Q2ZTZlYTMwYWI5MzNjOGE5NTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCkBAIC0yNSwzICsyNSw1
MSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgor
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIK
KyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIklubGluZUZv
cm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlv
dXQgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0Q29udGV4dCk7CisKK0xh
eW91dENvbnRleHQ6OkxheW91dENvbnRleHQoQm94JiByb290KQorICAgIDogbV9yb290KG1ha2VX
ZWFrUHRyKHJvb3QpKQoreworfQorCit2b2lkIExheW91dENvbnRleHQ6OnVwZGF0ZUxheW91dCgp
Cit7CisgICAgYXV0byBjb250ZXh0ID0gZm9ybWF0dGluZ0NvbnRleHQoKm1fcm9vdCk7CisgICAg
YXV0byBzdGF0ZSA9IGZvcm1hdHRpbmdTdGF0ZSgqY29udGV4dCk7CisgICAgY29udGV4dC0+bGF5
b3V0KHN0YXRlKTsKK30KKworRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRDb250ZXh0Ojpmb3JtYXR0
aW5nU3RhdGUoY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJu
ICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZjb250ZXh0LnJvb3QoKSwgWyZjb250ZXh0XSB7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlv
dXRDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dChCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkK
K3sKKyAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAgIGlmIChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0
dGluZ0NvbnRleHRSb290KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29u
dGV4dC5oCmluZGV4IDE1Yzg0MTU4YzVlNzM1OTIyYTU3ZDJhZjFlZGM5ZGJmMzBkMWRkOTMuLjE1
MDA3ZDYwYTYyMWFhNjRhMGFhOWFiNGIzZDM4ODVmNjk0NWE1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0xheW91dENvbnRleHQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDggKzM4LDYg
QEAgY2xhc3MgQm94OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3MgQm94OwotY2xhc3Mg
Q29udGFpbmVyOwogY2xhc3MgRm9ybWF0dGluZ0NvbnRleHQ7CiBjbGFzcyBGb3JtYXR0aW5nU3Rh
dGU7CiBjbGFzcyBTdHlsZURpZmY7CkBAIC01MSwyMCArNTAsMjIgQEAgY2xhc3MgU3R5bGVEaWZm
OwogY2xhc3MgTGF5b3V0Q29udGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChMYXlv
dXRDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBMYXlvdXRDb250ZXh0KGNvbnN0IENvbnRhaW5lciYg
cm9vdENvbnRhaW5lcik7Ci0KLSAgICB2b2lkIGxheW91dCgpOworICAgIExheW91dENvbnRleHQo
Qm94JiByb290KTsKIAotICAgIENvbnRhaW5lciYgcm9vdENvbnRhaW5lcigpIGNvbnN0OwotICAg
IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdSb290KSBjb25zdDsKLSAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVkRm9y
bWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ1Jvb3QpOwotICAgIEZvcm1h
dHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYpOworICAgIHZvaWQgdXBkYXRl
TGF5b3V0KCk7CiAKICAgICB2b2lkIGFkZERpc3BsYXlCb3goY29uc3QgQm94JiwgRGlzcGxheTo6
Qm94Jik7CiAgICAgRGlzcGxheTo6Qm94KiBkaXNwbGF5Qm94KGNvbnN0IEJveCYpIGNvbnN0Owog
CiAgICAgdm9pZCBtYXJrTmVlZHNMYXlvdXQoY29uc3QgQm94JiwgU3R5bGVEaWZmKTsKICAgICBi
b29sIG5lZWRzTGF5b3V0KGNvbnN0IEJveCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEZvcm1h
dHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0Jik7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBmb3JtYXR0aW5nQ29udGV4dChC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CisKKyAgICBXZWFrUHRyPEJveD4gbV9yb290Owor
ICAgIEhhc2hNYXA8Y29uc3QgQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4+
IG1fZm9ybWF0dGluZ1N0YXRlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IDM5N2E5N2Q1ZTkzMDU4YmRiMmIzZTg0OGI2MmE3ZTAzYTkzYzhhOWQuLmQzN2Ux
ODE0YmJlZGU2ZDc3MzdkYmQwMTE1ZmNjZDc1ZjYxZDFjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMjUsMyArMjUsNTQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQpOworCitCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0KEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQorICAgIDogRm9ybWF0dGlu
Z0NvbnRleHQoZm9ybWF0dGluZ0NvbnRleHRSb290KQoreworfQorCit2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dChGb3JtYXR0aW5nU3RhdGUmKQoreworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9ybWF0dGluZ1N0YXRlPiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5n
U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0
dGluZ1N0YXRlPigpOworfQorCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVT
dGF0aWNQb3NpdGlvbihjb25zdCBCb3gmKSBjb25zdAoreworfQorCit2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aChjb25zdCBCb3gmKSBjb25zdAoreworfQorCit2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHQoY29uc3QgQm94JikgY29uc3QK
K3sKK30KKworTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5Ub3AoY29u
c3QgQm94JikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworTGF5b3V0VW5pdCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjptYXJnaW5Cb3R0b20oY29uc3QgQm94JikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgK
aW5kZXggOTY5Yjg1YTc3ZWI5ODEwYzJhNDgwMzgwZDNhMmU5ZDlmZWRkOThhOS4uZjEyZTdlNzYy
ZDUzMzQxZWEyNmNjZGU3YTFkODFiZTljOWZkYmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmgKQEAgLTQzLDE4ICs0MywxOSBAQCBjbGFzcyBCb3g7CiBjbGFzcyBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOwogcHVibGljOgotICAgIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQoQmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKKyAgICBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAotICAgIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQoRm9ybWF0dGluZ1N0YXRlJikgb3ZlcnJpZGU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4gZm9ybWF0dGluZ1N0YXRlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGNvbXB1dGVTdGF0aWNQb3Np
dGlvbihjb25zdCBCb3gmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlv
bihjb25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tcHV0ZVdpZHRoKGNv
bnN0IEJveCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUhlaWdodChjb25zdCBCb3gmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVXaWR0aChjb25zdCBCb3gmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbXB1dGVIZWlnaHQoY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBMYXlvdXRVbml0IG1hcmdpblRvcChjb25zdCBCb3gmKSBvdmVycmlkZTsKLSAgICBMYXlv
dXRVbml0IG1hcmdpbkJvdHRvbShjb25zdCBCb3gmKSBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IG1hcmdpblRvcChjb25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IG1h
cmdpbkJvdHRvbShjb25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggZjc4MTg1M2EzYTkyMWRhOTZhMmFjOGU3ZWM1ODk4Mzdl
YzM0ZDRhMi4uMjQ0ZDgyNTRhY2VmN2YxYzMyOTFkZTk3NjIwNGFmODJkZTU3ZmUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTI1LDMgKzI1LDIxIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgorCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKKworQmxvY2tG
b3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGluZ1N0YXRlKCkKKyAgICA6IEZvcm1hdHRpbmdT
dGF0ZSgpCit7Cit9CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCmluZGV4
IDJiMzdiYTIwOTg3NTMwMDJlNmQxNTYwMDVhNTZjOWJlYTk5OWU1ZDEuLjU0ODViZGEyZjY4ZGRl
YWNjMTRlMjhiZDVjOTVmMWJjNzRjNTYzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKQEAg
LTM0LDE0ICszNCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBMYXlvdXQg
ewogCi1jbGFzcyBDb250YWluZXI7Ci1jbGFzcyBMYXlvdXRTdGF0ZTsKLQogLy8gQmxvY2tGb3Jt
YXR0aW5nU3RhdGUgaG9sZHMgdGhlIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0IHRyZWUuCiBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBG
b3JtYXR0aW5nU3RhdGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmxvY2tGb3JtYXR0
aW5nU3RhdGUpOwogcHVibGljOgotICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlKExheW91dDo6Q29u
dGFpbmVyJiBmb3JtYXR0aW5nUm9vdCwgTGF5b3V0U3RhdGUmKTsKKyAgICBCbG9ja0Zvcm1hdHRp
bmdTdGF0ZSgpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDA1ZjFkODJkNTlmNzVmMTU5NTc0NTExODNmMWI2MzgxMDc1NGFkNDcuLjdkMWI3NjQwM2Q5
Y2I0Mzk3N2YzNWQ5MTdiYzcxOGQyNDRiYjVhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKQEAgLTI1LDMgKzI1LDMyIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KTsKKworSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0KEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQorICAgIDogRm9ybWF0
dGluZ0NvbnRleHQoZm9ybWF0dGluZ0NvbnRleHRSb290KQoreworfQorCit2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoRm9ybWF0dGluZ1N0YXRlJikKK3sKK30KKworc3RkOjp1
bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1h
dHRpbmdTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPigpOworfQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggMWJiZTI2NmNiYzJhMzk2NTQ3M2Y3Y2U1YzJlZDY1MzRmMzlh
OWRiMC4uNjAyNjA2MGU5ZWM0ZTc4N2YyMzA1MDE2NDlhMmRiZTg5OGQyNzEyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00MSw5ICs0MSwxMCBAQCBjbGFzcyBJbmxpbmVG
b3JtYXR0aW5nU3RhdGU7CiBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCA6IHB1YmxpYyBG
b3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoSW5s
aW5lRm9ybWF0dGluZ1N0YXRlJik7CisgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoQm94JiBm
b3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCi0gICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGxheW91dChGb3JtYXR0aW5nU3RhdGUmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9ybWF0dGluZ1N0YXRlPiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCBvdmVycmlkZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IDhkNzNlYzVhZjMz
MTMwNmQ4YWE4ZjYxMWRjNWM0YmU0NWU5OWQyMDEuLjkzMGE4ODUwNDE5MmIyZjc1YWM1MmZkNmVj
MWE4YzhhMjYwNjU2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcApAQCAtMjUs
MyArMjUsMjEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklubGluZUZvcm1h
dHRpbmdTdGF0ZS5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGlu
ZUZvcm1hdHRpbmdTdGF0ZSk7CisKK0lubGluZUZvcm1hdHRpbmdTdGF0ZTo6SW5saW5lRm9ybWF0
dGluZ1N0YXRlKCkKKyAgICA6IEZvcm1hdHRpbmdTdGF0ZSgpCit7Cit9CisKK30KK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBmMGVmOWUxYzU2Y2Q1ZDE5OGUwNGI5
YTNhODBkM2EyODIwZmJiMTA2Li5lZDliY2RhZGM3ODQ0ZjE3ZTBlN2VhODYxNzM0ZDA1YjMxZWU1
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMzQsMTQgKzM0LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIExheW91dCB7CiAKLWNsYXNzIENvbnRhaW5l
cjsKLWNsYXNzIExheW91dFN0YXRlOwotCiAvLyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgaG9sZHMg
dGhlIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB0cmVl
LgogY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogcHVi
bGljOgotICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZShMYXlvdXQ6OkNvbnRhaW5lciYgZm9ybWF0
dGluZ1Jvb3QsIExheW91dFN0YXRlJik7CisgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CiB9
OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338808</attachid>
            <date>2018-04-25 15:20:34 -0700</date>
            <delta_ts>2018-04-25 15:45:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184951-20180425152033.patch</filename>
            <type>text/plain</type>
            <size>18821</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyYmJjZDg0YTVmODI2
NWU3ODY2ZTZiNzk3Yzg3ZTYwZDVmZWM4Zi4uYjFjYmRiNjNkZTY2NmRkYzBmNGMxZTU1ZWFlOGFi
M2QxYTcxMWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTA0LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gSW1wbGVtZW50IExh
eW91dENvbnRleGV0OjpsYXlvdXQoKSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDk1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
OkZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6On5Gb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlT3V0T2ZGbG93UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luVG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luQm90dG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpblJpZ2h0KToKKyAgICAgICAgKiBs
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ1N0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ1N0YXRlOjpGb3Jt
YXR0aW5nU3RhdGUpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAg
ICAgKiBsYXlvdXQvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxheW91dENvbnRleHQ6OkxheW91dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMYXlvdXRDb250ZXh0Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMYXlvdXRDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMYXlvdXRDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICogbGF5b3V0
L0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpblRvcCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpbkJvdHRvbSk6
CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Lmg6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1N0YXRlOjpC
bG9ja0Zvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0
aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorCiAyMDE4LTA0
LTI1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW1w
bGVtZW50IExheW91dDo6QmxvY2tDb250YWluZXIgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNTFhOTJiNDdhZWI4NmE1YWMwNmQy
ODBiYjRjMGI4ODE2YjI1NTcxZC4uOTg1NWJhZDQyOTVlN2E5YjVjOGJkZjVmMmM4N2QzZjQxYjE0
ZDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC0yNSwzICsyNSw2NSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybWF0
dGluZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQor
CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChGb3Jt
YXR0aW5nQ29udGV4dCk7CisKK0Zvcm1hdHRpbmdDb250ZXh0OjpGb3JtYXR0aW5nQ29udGV4dChC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKKyAgICA6IG1fcm9vdChtYWtlV2Vha1B0cihmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpKQoreworfQorCitGb3JtYXR0aW5nQ29udGV4dDo6fkZvcm1hdHRp
bmdDb250ZXh0KCkKK3sKK30KKwordm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRp
Y1Bvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0Cit7Cit9CisKK3ZvaWQgRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oY29uc3QgQm94JikgY29uc3QKK3sK
K30KKwordm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9uKGNv
bnN0IEJveCYpIGNvbnN0Cit7Cit9CisKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVX
aWR0aChjb25zdCBCb3gmKSBjb25zdAoreworfQorCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0Cit7Cit9CisKK0xheW91dFVuaXQgRm9ybWF0
dGluZ0NvbnRleHQ6Om1hcmdpblRvcChjb25zdCBCb3gmKSBjb25zdAoreworICAgIHJldHVybiAw
OworfQorCitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5MZWZ0KGNvbnN0IEJv
eCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0xheW91dFVuaXQgRm9ybWF0dGluZ0Nv
bnRleHQ6Om1hcmdpbkJvdHRvbShjb25zdCBCb3gmKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCitMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5SaWdodChjb25zdCBCb3gm
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggODdmMzlkNzRmY2NiNGFkZjgxZmZi
NDVlOTk3ZWFiOWMyYmYzNDNiZS4uZTg2Y2ZmOTJkMjc3NWEzMDU3Nzc0ODM3YjI5NGYwNGVlN2Y4
MWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00MCwyNSArNDEsMjkgQEAgY2xhc3MgQm94OwogY2xhc3MgRm9ybWF0dGluZ0NvbnRl
eHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRm9ybWF0dGluZ0NvbnRleHQpOwogcHVi
bGljOgotICAgIEZvcm1hdHRpbmdDb250ZXh0KEZvcm1hdHRpbmdTdGF0ZSYpOworICAgIEZvcm1h
dHRpbmdDb250ZXh0KEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKICAgICB2aXJ0dWFsIH5G
b3JtYXR0aW5nQ29udGV4dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoRm9ybWF0dGluZ1N0YXRlJikgPSAwOworICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4gZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgPSAw
OwogCi0gICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdDsKKyAgICBj
b25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290OyB9CiAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYpOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IEJveCYp
OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlT3V0T2ZGbG93UG9zaXRpb24oY29uc3QgQm94Jik7
CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihjb25z
dCBCb3gmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9u
KGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVXaWR0aChjb25z
dCBCb3gmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUhlaWdodChjb25zdCBCb3gmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVdpZHRoKGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBM
YXlvdXRVbml0IG1hcmdpblRvcChjb25zdCBCb3gmKTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWFyZ2luTGVmdChjb25zdCBCb3gmKTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luQm90
dG9tKGNvbnN0IEJveCYpOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodChjb25z
dCBCb3gmKTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luVG9wKGNvbnN0IEJveCYpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KGNvbnN0IEJveCYpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oY29uc3QgQm94JikgY29uc3Q7
CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KGNvbnN0IEJveCYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFdlYWtQdHI8Qm94PiBtX3Jvb3Q7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IGJlMGYzMTQxOTRiZDk0YzY1ZmI0
ZjRkNTBiNjk5MjNjNTdhNTkxODguLjhmYTBkNDM4Y2NmN2M1MzA5NmEzOGRiNGM0NGFmYzEyZTQx
MGM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC0y
NSwzICsyNSwyMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybWF0dGlu
Z1N0YXRlLmgiCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBMYXlvdXQgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRm9ybWF0dGlu
Z1N0YXRlKTsKKworRm9ybWF0dGluZ1N0YXRlOjpGb3JtYXR0aW5nU3RhdGUoKQoreworfQorCit9
Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAppbmRleCA3
ODIxZTdiMTljNjQwNDY1OTllNjc4N2ZhMjBkNGY0ZmRhNWU0M2FkLi5lMzRjMDA5YzNjMDYzMWY0
MmJhYTViNmYyZjYxYzcwNWVmYmEyMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdTdGF0ZS5oCkBAIC0zNCwxOCArMzQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKIGNsYXNzIEJveDsKLWNsYXNzIENvbnRhaW5lcjsKIGNsYXNzIEZsb2F0
aW5nU3RhdGU7Ci1jbGFzcyBMYXlvdXRTdGF0ZTsKIGNsYXNzIFN0eWxlRGlmZjsKIAogY2xhc3Mg
Rm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZvcm1hdHRpbmdT
dGF0ZSk7CiBwdWJsaWM6Ci0gICAgRm9ybWF0dGluZ1N0YXRlKENvbnRhaW5lciYgZm9ybWF0dGlu
Z1Jvb3QsIExheW91dFN0YXRlJik7CisgICAgRm9ybWF0dGluZ1N0YXRlKCk7CiAKLSAgICBDb250
YWluZXImIGZvcm1hdHRpbmdSb290KCkgY29uc3Q7Ci0gICAgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlKCkgY29uc3Q7CiAgICAgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSgpOwogCiAgICAg
dm9pZCBtYXJrTmVlZHNMYXlvdXQoY29uc3QgQm94JiwgU3R5bGVEaWZmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAzODZiODVjOTUxMTQ0NmU3NTIxOGYxOTFm
MzdhNmQyNTFkY2ZiNTZkLi45MzhkZDJiMDg1ZGNlNzNmZWZiOTYwZGQyZDkxMWYyZTUyYTM1Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCkBAIC0yNSwzICsyNSw1
MyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgor
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIK
KyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIklubGluZUZv
cm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlv
dXQgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0Q29udGV4dCk7CisKK0xh
eW91dENvbnRleHQ6OkxheW91dENvbnRleHQoQm94JiByb290KQorICAgIDogbV9yb290KG1ha2VX
ZWFrUHRyKHJvb3QpKQoreworfQorCit2b2lkIExheW91dENvbnRleHQ6OnVwZGF0ZUxheW91dCgp
Cit7CisgICAgYXV0byBjb250ZXh0ID0gZm9ybWF0dGluZ0NvbnRleHQoKm1fcm9vdCk7CisgICAg
YXV0byBzdGF0ZSA9IGZvcm1hdHRpbmdTdGF0ZSgqY29udGV4dCk7CisgICAgY29udGV4dC0+bGF5
b3V0KHN0YXRlKTsKK30KKworRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRDb250ZXh0Ojpmb3JtYXR0
aW5nU3RhdGUoY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJu
ICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZjb250ZXh0LnJvb3QoKSwgWyZjb250ZXh0XSB7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlv
dXRDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dChCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkK
K3sKKyAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworCisgICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dENvbnRleHQuaAppbmRleCAxNWM4NDE1OGM1ZTczNTkyMmE1N2QyYWYxZWRjOWRiZjMwZDFkZDkz
Li4xNTAwN2Q2MGE2MjFhYTY0YTBhYTlhYjRiM2QzODg1ZjY5NDVhNWRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRDb250ZXh0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw4ICsz
OCw2IEBAIGNsYXNzIEJveDsKIAogbmFtZXNwYWNlIExheW91dCB7CiAKLWNsYXNzIEJveDsKLWNs
YXNzIENvbnRhaW5lcjsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgRm9ybWF0dGlu
Z1N0YXRlOwogY2xhc3MgU3R5bGVEaWZmOwpAQCAtNTEsMjAgKzUwLDIyIEBAIGNsYXNzIFN0eWxl
RGlmZjsKIGNsYXNzIExheW91dENvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
TGF5b3V0Q29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTGF5b3V0Q29udGV4dChjb25zdCBDb250YWlu
ZXImIHJvb3RDb250YWluZXIpOwotCi0gICAgdm9pZCBsYXlvdXQoKTsKKyAgICBMYXlvdXRDb250
ZXh0KEJveCYgcm9vdCk7CiAKLSAgICBDb250YWluZXImIHJvb3RDb250YWluZXIoKSBjb25zdDsK
LSAgICBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVy
JiBmb3JtYXR0aW5nUm9vdCkgY29uc3Q7Ci0gICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KTsKLSAgICBG
b3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmKTsKKyAgICB2b2lkIHVw
ZGF0ZUxheW91dCgpOwogCiAgICAgdm9pZCBhZGREaXNwbGF5Qm94KGNvbnN0IEJveCYsIERpc3Bs
YXk6OkJveCYpOwogICAgIERpc3BsYXk6OkJveCogZGlzcGxheUJveChjb25zdCBCb3gmKSBjb25z
dDsKIAogICAgIHZvaWQgbWFya05lZWRzTGF5b3V0KGNvbnN0IEJveCYsIFN0eWxlRGlmZik7CiAg
ICAgYm9vbCBuZWVkc0xheW91dChjb25zdCBCb3gmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBG
b3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZShjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gZm9ybWF0dGluZ0NvbnRl
eHQoQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworCisgICAgV2Vha1B0cjxCb3g+IG1fcm9v
dDsKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nU3Rh
dGU+PiBtX2Zvcm1hdHRpbmdTdGF0ZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCAzOTdhOTdkNWU5MzA1OGJkYjJiM2U4NDhiNjJhN2UwM2E5M2M4YTlkLi5k
MzdlMTgxNGJiZWRlNmQ3NzM3ZGJkMDExNWZjY2Q3NWY2MWQxY2VkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTI1LDMgKzI1LDU0IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRl
LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KTsKKworQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dChCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKKyAgICA6IEZvcm1h
dHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKK3sKK30KKwordm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoRm9ybWF0dGluZ1N0YXRlJikKK3sKK30KKworc3RkOjp1
bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0
dGluZ1N0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zv
cm1hdHRpbmdTdGF0ZT4oKTsKK30KKwordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlU3RhdGljUG9zaXRpb24oY29uc3QgQm94JikgY29uc3QKK3sKK30KKwordm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGgoY29uc3QgQm94JikgY29uc3QKK3sKK30KKwor
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0KGNvbnN0IEJveCYpIGNv
bnN0Cit7Cit9CisKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luVG9w
KGNvbnN0IEJveCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK0xheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luQm90dG9tKGNvbnN0IEJveCYpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDk2OWI4NWE3N2ViOTgxMGMyYTQ4MDM4MGQzYTJlOWQ5ZmVkZDk4YTkuLmYxMmU3
ZTc2MmQ1MzM0MWVhMjZjY2RlN2ExZDgxYmU5YzlmZGJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC00MywxOCArNDMsMTkgQEAgY2xhc3MgQm94OwogY2xhc3MgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CisgICAgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dChCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKLSAgICB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KEZvcm1hdHRpbmdTdGF0ZSYpIG92ZXJy
aWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nU3RhdGU+IGZvcm1hdHRpbmdTdGF0
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBjb21wdXRlU3RhdGlj
UG9zaXRpb24oY29uc3QgQm94Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlU3RhdGljUG9z
aXRpb24oY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNvbXB1dGVXaWR0
aChjb25zdCBCb3gmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXB1dGVIZWlnaHQoY29uc3QgQm94
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlV2lkdGgoY29uc3QgQm94JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21wdXRlSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgTGF5b3V0VW5pdCBtYXJnaW5Ub3AoY29uc3QgQm94Jikgb3ZlcnJpZGU7Ci0gICAg
TGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oY29uc3QgQm94Jikgb3ZlcnJpZGU7CisgICAgTGF5b3V0
VW5pdCBtYXJnaW5Ub3AoY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5p
dCBtYXJnaW5Cb3R0b20oY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IGY3ODE4NTNhM2E5MjFkYTk2YTJhYzhlN2VjNTg5
ODM3ZWMzNGQ0YTIuLjI0NGQ4MjU0YWNlZjdmMWMzMjkxZGU5NzYyMDRhZjgyZGU1N2ZlMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC0yNSwzICsyNSwyMSBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKKworI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisK
K1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChCbG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CisKK0Js
b2NrRm9ybWF0dGluZ1N0YXRlOjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZSgpCisgICAgOiBGb3JtYXR0
aW5nU3RhdGUoKQoreworfQorCit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuaApp
bmRleCAyYjM3YmEyMDk4NzUzMDAyZTZkMTU2MDA1YTU2YzliZWE5OTllNWQxLi41NDg1YmRhMmY2
OGRkZWFjYzE0ZTI4YmQ1Yzk1ZjFiYzc0YzU2MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5o
CkBAIC0zNCwxNCArMzQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgTGF5
b3V0IHsKIAotY2xhc3MgQ29udGFpbmVyOwotY2xhc3MgTGF5b3V0U3RhdGU7Ci0KIC8vIEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlIGhvbGRzIHRoZSBzdGF0ZSBmb3IgYSBwYXJ0aWN1bGFyIGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dCB0cmVlLgogY2xhc3MgQmxvY2tGb3JtYXR0aW5nU3RhdGUgOiBwdWJs
aWMgRm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJsb2NrRm9y
bWF0dGluZ1N0YXRlKTsKIHB1YmxpYzoKLSAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZShMYXlvdXQ6
OkNvbnRhaW5lciYgZm9ybWF0dGluZ1Jvb3QsIExheW91dFN0YXRlJik7CisgICAgQmxvY2tGb3Jt
YXR0aW5nU3RhdGUoKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCAwNWYxZDgyZDU5Zjc1ZjE1OTU3NDUxMTgzZjFiNjM4MTA3NTRhZDQ3Li43ZDFiNzY0
MDNkOWNiNDM5NzdmMzVkOTE3YmM3MThkMjQ0YmI1YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCkBAIC0yNSwzICsyNSwzMiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CisKK0lubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dChCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKKyAgICA6IEZv
cm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKK3sKK30KKwordm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KEZvcm1hdHRpbmdTdGF0ZSYpCit7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nU3RhdGU+IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpm
b3JtYXR0aW5nU3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4oKTsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDFiYmUyNjZjYmMyYTM5NjU0NzNmN2NlNWMyZWQ2NTM0
ZjM5YTlkYjAuLjYwMjYwNjBlOWVjNGU3ODdmMjMwNTAxNjQ5YTJkYmU4OThkMjcxMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDEsOSArNDEsMTAgQEAgY2xhc3MgSW5s
aW5lRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQpOwogcHVibGljOgotICAgIElubGluZUZvcm1hdHRpbmdDb250ZXh0
KElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOworICAgIElubGluZUZvcm1hdHRpbmdDb250ZXh0KEJv
eCYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAotICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBsYXlvdXQoRm9ybWF0dGluZ1N0YXRlJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEZvcm1hdHRpbmdTdGF0ZT4gZm9ybWF0dGluZ1N0YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcAppbmRleCA4ZDczZWM1
YWYzMzEzMDZkOGFhOGY2MTFkYzVjNGJlNDVlOTlkMjAxLi45MzBhODg1MDQxOTJiMmY3NWFjNTJm
ZDZlYzFhOGM4YTI2MDY1NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHAKQEAg
LTI1LDMgKzI1LDIxIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUpOworCitJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OklubGluZUZv
cm1hdHRpbmdTdGF0ZSgpCisgICAgOiBGb3JtYXR0aW5nU3RhdGUoKQoreworfQorCit9Cit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggZjBlZjllMWM1NmNkNWQxOThl
MDRiOWEzYTgwZDNhMjgyMGZiYjEwNi4uZWQ5YmNkYWRjNzg0NGYxN2UwZTdlYTg2MTczNGQwNWIz
MWVlNTViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTM0LDE0ICszNCwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBMYXlvdXQgewogCi1jbGFzcyBDb250
YWluZXI7Ci1jbGFzcyBMYXlvdXRTdGF0ZTsKLQogLy8gSW5saW5lRm9ybWF0dGluZ1N0YXRlIGhv
bGRzIHRoZSBzdGF0ZSBmb3IgYSBwYXJ0aWN1bGFyIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQg
dHJlZS4KIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3Rh
dGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5lRm9ybWF0dGluZ1N0YXRlKTsK
IHB1YmxpYzoKLSAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUoTGF5b3V0OjpDb250YWluZXImIGZv
cm1hdHRpbmdSb290LCBMYXlvdXRTdGF0ZSYpOworICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSgp
OwogfTsKIAogfQo=
</data>
<flag name="review"
          id="357081"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>