<?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>192692</bug_id>
          
          <creation_ts>2018-12-13 21:01:23 -0800</creation_ts>
          <short_desc>[LFC][BFC] Introduce VerticalMargin and HorizontalMargin types.</short_desc>
          <delta_ts>2018-12-14 07:23:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>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>1487841</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-13 21:01:23 -0800</bug_when>
    <thetext>This is in preparation for adding more block collapsing functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487842</commentid>
    <comment_count>1</comment_count>
      <attachid>357297</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-13 21:07:39 -0800</bug_when>
    <thetext>Created attachment 357297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487851</commentid>
    <comment_count>2</comment_count>
      <attachid>357300</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-13 21:48:46 -0800</bug_when>
    <thetext>Created attachment 357300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487901</commentid>
    <comment_count>3</comment_count>
      <attachid>357300</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-14 06:46:18 -0800</bug_when>
    <thetext>Comment on attachment 357300
Patch

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

&gt; Source/WebCore/layout/FormattingContext.h:100
&gt; +        static HorizontalMargin computedNonCollapsedHorizontalMarginValue(const LayoutState&amp;, const Box&amp;);
&gt; +        static VerticalMargin::ComputedValues computedNonCollapsedVerticalMarginValue(const LayoutState&amp;, const Box&amp;);

Maybe HorizontalMargin can be ComputedHorizontalMargin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487907</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-14 07:18:16 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 357300 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357300&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/FormattingContext.h:100
&gt; &gt; +        static HorizontalMargin computedNonCollapsedHorizontalMarginValue(const LayoutState&amp;, const Box&amp;);
&gt; &gt; +        static VerticalMargin::ComputedValues computedNonCollapsedVerticalMarginValue(const LayoutState&amp;, const Box&amp;);
&gt; 
&gt; Maybe HorizontalMargin can be ComputedHorizontalMargin?
Yeah, good idea. I&apos;ve got a fixme on the non-computed horizontal margin value. Let me fix the together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487909</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-14 07:22:09 -0800</bug_when>
    <thetext>Committed r239205: &lt;https://trac.webkit.org/changeset/239205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487911</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-14 07:23:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46729951&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357297</attachid>
            <date>2018-12-13 21:07:39 -0800</date>
            <delta_ts>2018-12-13 21:48:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192692-20181213210738.patch</filename>
            <type>text/plain</type>
            <size>36502</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFmNDE5ZTMwZDkzMjQz
YWE5ZGM1MDM3NzY3ZDczOTIyYjM0ZGZiNi4uMjhkZDRlMDY4NGNiNWRiYzJjZWIzZTY3NDk1ZWI4
ZWY5OGQ3NzU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE4LTEyLTEzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBJbnRyb2R1
Y2UgVmVydGljYWxNYXJnaW4gYW5kIEhvcml6b250YWxNYXJnaW4gdHlwZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0
aW9uIGZvciBjb21wbGV0aW5nIGJsb2NrIG1hcmdpbiBjb2xsYXBzaW5nLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9u
dGFsTWFyZ2luVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6
CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0
VW5pdHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SGVpZ2h0QW5kTWFyZ2luOjp1c2Vk
TWFyZ2luVmFsdWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvTWFyZ2luVHlw
ZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjpu
b25Db2xsYXBzZWRWYWx1ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpWZXJ0
aWNhbE1hcmdpbjo6Y29sbGFwc2VkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VmVydGljYWxNYXJnaW46OnNldENvbGxhcHNlZFZhbHVlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjpWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjp1c2VkVmFsdWVzIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJr
czo6c3RyZXRjaGVkSGVpZ2h0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAg
ICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0SG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6c2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6dmVydGljYWxNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94OjptYXJnaW5Ub3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjptYXJnaW5MZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6bWFyZ2luQm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
bWFyZ2luUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpub25D
b2xsYXBzZWRNYXJnaW5Ub3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojpub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94OjpzZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbik6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNl
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKwogMjAxOC0xMi0xMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYXR0
ZW1wdCB0byBmaXggV2luZG93cyBDYWlybyBidWlsZCBhZnRlciByMjM5MTAwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRiY2I0
YTdlZTJlNjdjZjBjM2JmY2E5NThkMzVjOGIxZTRmNjAxNTAuLmMyMTMyOGFlMDczNTM3ZGQ3YWNh
YzdjZGRjMDUwM2IwYzM0MTJlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMDYsNiArOTEwNiw3IEBACiAJCTZGM0UxRjYx
MjEzNjE0MTcwMEE2NUEwOCAvKiBGbG9hdEJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdEJveC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjUyMTdDNDIxNzdGNUE2MDA2NTgzQkIg
LyogSW5saW5lUnVuUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5saW5lUnVuUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY1MjE3
QzYyMTc3RjVBNjAwNjU4M0JCIC8qIElubGluZVJ1blByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZVJ1blByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkY2NzVENDMyMUMyMUJEMTAwMzI0RjFEIC8qIE1hcmdpblR5
cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmdpblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGNzM5MThDMjEwNkNFREQwMDZBRjI2MiAvKiBMYXlvdXRVbml0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMYXlvdXRVbml0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGF5b3V0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY3Q0EzQzUyMDhD
Mjk1NjAwMkYyOUFCIC8qIExheW91dFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91
dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MTE2LDYgKzE2MTE3
LDcgQEAKIAkJCQk2RjdDQTNDNTIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3RhdGUuY3BwICov
LAogCQkJCTZGN0NBM0M0MjA4QzI5NTYwMDJGMjlBQiAvKiBMYXlvdXRTdGF0ZS5oICovLAogCQkJ
CTZGNzM5MThDMjEwNkNFREQwMDZBRjI2MiAvKiBMYXlvdXRVbml0cy5oICovLAorCQkJCTZGNjc1
RDQzMjFDMjFCRDEwMDMyNEYxRCAvKiBNYXJnaW5UeXBlcy5oICovLAogCQkJCTExRkYwMkQ1MjBC
QTNDODEwMDgzRjI1QiAvKiBWZXJpZmljYXRpb24uY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBs
YXlvdXQ7CkBAIC0yNTUxNSw2ICsyNTUxNyw4IEBACiAJCQkJRDBEODY0OEUyMUI3MDY3NjAwM0M5
ODNDIC8qIFdlYkdQVUJ1ZmZlci5pZGwgKi8sCiAJCQkJRDBEODY0ODIyMUI2MTcyNzAwM0M5ODND
IC8qIFdlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuaCAqLywKIAkJCQlEMEQ4NjQ4MzIxQjYxNzI3MDAz
Qzk4M0MgLyogV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJRDA2M0FFNEUyMUMw
ODEwQTAwMEU2QTM1IC8qIFdlYkdQVUJ1ZmZlclVzYWdlLmggKi8sCisJCQkJRDA2M0FFNEMyMUMw
N0FCNTAwMEU2QTM1IC8qIFdlYkdQVUJ1ZmZlclVzYWdlLmlkbCAqLywKIAkJCQlEMDAxRDlBQzIx
QjBDODFBMDAyM0I5QkMgLyogV2ViR1BVQ29sb3IuaCAqLywKIAkJCQlEMDAxRDlBRDIxQjBDODFB
MDAyM0I5QkMgLyogV2ViR1BVQ29sb3IuaWRsICovLAogCQkJCUQwRUFDRjc3MjE5MzcyMjgwMDBG
QTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAqLywKQEAgLTI1NTY2LDggKzI1NTcwLDYg
QEAKIAkJCQlEMEVBQ0Y4ODIxOTNFRTRFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZVZpZXcuY3Bw
ICovLAogCQkJCUQwRUFDRjg3MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5o
ICovLAogCQkJCUQwRUFDRjg5MjE5M0VFNEUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5p
ZGwgKi8sCi0JCQkJRDA2M0FFNEMyMUMwN0FCNTAwMEU2QTM1IC8qIFdlYkdQVUJ1ZmZlclVzYWdl
LmlkbCAqLywKLQkJCQlEMDYzQUU0RTIxQzA4MTBBMDAwRTZBMzUgLyogV2ViR1BVQnVmZmVyVXNh
Z2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd2ViZ3B1OwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGQzM2QzN2U1Y2Q3MWM1ZGRkYjRhYWMwNWZlMjU4NTBlNmEyZmE1Y2YuLjgxZGRhOGM2MjM5NTA3
N2Y3YmU2MjRkNTRhZjdhMjY3OWNmNTg2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTE2LDEyICsxMTYsMTEgQEAgdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlv
dXRCb3gpIGMKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBv
c2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlCi0gICAgQVNTRVJUKCF2ZXJ0aWNhbEdlb21l
dHJ5LmhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJnaW4pOwotICAgIGF1dG8gbm9uQ29sbGFw
c2VkVmVydGljYWxNYXJnaW5zID0gdmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4udXNl
ZE1hcmdpblZhbHVlcygpOworICAgIEFTU0VSVCghdmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpKTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZFZl
cnRpY2FsTWFyZ2lucyA9IHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi5u
b25Db2xsYXBzZWRWYWx1ZXMoKTsKICAgICBkaXNwbGF5Qm94LnNldFRvcCh2ZXJ0aWNhbEdlb21l
dHJ5LnRvcCArIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2lucy50b3ApOwogICAgIGRpc3BsYXlC
b3guc2V0Q29udGVudEJveEhlaWdodCh2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5o
ZWlnaHQpOwotICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4obm9uQ29sbGFwc2VkVmVy
dGljYWxNYXJnaW5zKTsKLSAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFy
Z2luKG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2lucyk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0
aWNhbE1hcmdpbih2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwogfQog
CiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmgKaW5kZXggNGY2NWU1NmU5MTg5YzhkY2JlMmYwNGM3ZmNhNGMzN2RiYTQxYzI3OC4uNTBi
Mzg2M2VjNTMzN2U0MTE4MWI2ODFiY2ZkMzBlMmQwZjI0YTMzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTk2LDggKzk2LDggQEAgcHJvdGVjdGVkOgog
ICAgICAgICBzdGF0aWMgRWRnZXMgY29tcHV0ZWRCb3JkZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWRnZXM+IGNvbXB1dGVk
UGFkZGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCi0gICAgICAgIHN0YXRp
YyBIb3Jpem9udGFsRWRnZXMgY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFs
dWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIFZlcnRp
Y2FsRWRnZXMgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBIb3Jpem9udGFsTWFyZ2lu
IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0
ZWRWYWx1ZXMgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhjb25zdCBMZW5ndGgmIGdlb21ldHJ5
UHJvcGVydHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmaXhlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2Vv
bWV0cnlQcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggYzk5MDcxZWJiODU3NjNhZTk3OWMxODdmNGU0MmZj
MmE4OWY3YWJkOS4uZDFmZTg4ZTAxMzQzM2Y3NGNiODAzYmQ5NjgwYmJlZjViNmJiNTE0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgQVNT
RVJUKG1hcmdpbkJvdHRvbSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4gb3V0LW9m
LWZsb3cgbm9uLXJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwg
KmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAq
bWFyZ2luVG9wIDw8ICJweCwgIiAgPDwgKm1hcmdpbkJvdHRvbSA8PCAicHgpIGxheW91dEJveCgi
IDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4geyAqdG9wLCAqYm90dG9tLCB7ICpo
ZWlnaHQsIHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9LCB7IH0gfSB9OworICAgIHJldHVy
biB7ICp0b3AsICpib3R0b20sIHsgKmhlaWdodCwgeyB7ICptYXJnaW5Ub3AsICptYXJnaW5Cb3R0
b20gfSwgeyB9IH0gfSB9OwogfQogCiBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCkKQEAgLTU3MSw3ICs1NzEsNyBAQCBWZXJ0aWNhbEdlb21l
dHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNh
bEdlb21ldHJ5KAogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRv
cCArICptYXJnaW5Ub3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGlu
Z0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5Cb3R0b20pOyAKIAogICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hl
aWdodF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyByZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8
ICJweCkgYm90dG9tKCIgIDw8ICpib3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCBoZWlnaHQgPDwg
InB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luVG9wIDw8ICJweCwgIiAgPDwgKm1hcmdpbkJvdHRvbSA8
PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4geyAq
dG9wLCAqYm90dG9tLCB7IGhlaWdodCwgeyAqbWFyZ2luVG9wLCAqbWFyZ2luQm90dG9tIH0sIHsg
fSB9IH07CisgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsgeyAqbWFyZ2lu
VG9wLCAqbWFyZ2luQm90dG9tIH0sIHsgfSB9IH0gfTsKIH0KIAogSG9yaXpvbnRhbEdlb21ldHJ5
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFs
R2VvbWV0cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCkBAIC03MTAsNyArNzEw
LDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxp
Y2F0ZWRDYXNlcyhjb25zdCBMYXlvdXRTdGF0ZSYKICAgICBBU1NFUlQobWFyZ2luQm90dG9tKTsK
IAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8
PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpblRvcCA8PCAicHgsICIgPDwgKm1h
cmdpbkJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsK
LSAgICByZXR1cm4gSGVpZ2h0QW5kTWFyZ2luIHsgKmhlaWdodCwgeyAqbWFyZ2luVG9wLCAqbWFy
Z2luQm90dG9tIH0sIHsgfSB9OworICAgIHJldHVybiBIZWlnaHRBbmRNYXJnaW4geyAqaGVpZ2h0
LCB7IHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9LCB7IH0gfSB9OwogfQogCiBXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkKQEAgLTgzOCw3ICs4Mzgs
NyBAQCBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdAogICAgIEFTU0VSVChoZWlnaHQpOwogCiAgICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWln
aHRdW01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IGhlaWdodCgiIDw8ICpoZWlnaHQgPDwg
InB4KSBtYXJnaW4oIiA8PCBtYXJnaW4udG9wIDw8ICJweCwgIiA8PCBtYXJnaW4uYm90dG9tIDw8
ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB7
ICpoZWlnaHQsIG1hcmdpbiwgeyB9IH07CisgICAgcmV0dXJuIHsgKmhlaWdodCwgeyBtYXJnaW4s
IHsgfSB9IH07CiB9CiAKIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LApAQCAtMTAyMCw3ICsxMDIwLDcgQEAgc3RkOjpv
cHRpb25hbDxFZGdlcz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRp
bmcoY29uc3QgTGF5b3V0U3QKICAgICB9OwogfQogCi1Ib3Jpem9udGFsRWRnZXMgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5W
YWx1ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorSG9yaXpvbnRhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVk
Tm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5j
b250ZW50Qm94V2lkdGgoKTsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIEhvcml6b250YWxFZGdlcyBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRh
bE1hcmdpCiAgICAgcmV0dXJuIHsgbWFyZ2luTGVmdCwgbWFyZ2luUmlnaHQgfTsKIH0KIAotVmVy
dGljYWxFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFw
c2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQorVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IDgzMmY0ZTgyZWU3Nzc0MDc3NDJlYzY4NDYx
YTA4MDA0MmUwYjc3NmYuLmNjMWRiYzAzNGVlOGI5Nzc2MGU2ODY5ZWI4NzJmOWUyY2M5NzZlNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtNTYsNyArNTYsNiBAQCBM
YXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgQ29udGFpbmVyJiBpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrLCBjb25zdCBMYXlvdXRTaQogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdp
bih7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKHsg
fSk7CiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IH0pOwotICAgIGRpc3BsYXlC
b3guc2V0VmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4oeyB9KTsKICAgICBkaXNwbGF5Qm94LnNl
dEJvcmRlcih7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0UGFkZGluZyh7IH0pOwogICAgIGRpc3Bs
YXlCb3guc2V0VG9wTGVmdCh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRl
eCAzZTFkODQ0NmY3NWM4MTY5MzE1OGI4MmZjMzlhNjNiZGVhZmRiODgxLi5kNzZiNmEzODU2NWVm
MzRhZmY0NGY5ZjgxMGFiNjZlMmY5ZTExNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5p
dHMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJNYXJn
aW5UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xMDIsMTYgKzEwMywxNCBAQCBzdHJ1Y3QgRWRnZXMgewogCiBzdHJ1Y3QgV2lkdGhB
bmRNYXJnaW4gewogICAgIExheW91dFVuaXQgd2lkdGg7Ci0gICAgSG9yaXpvbnRhbEVkZ2VzIG1h
cmdpbjsKLSAgICBIb3Jpem9udGFsRWRnZXMgbm9uQ29tcHV0ZWRNYXJnaW47CisgICAgSG9yaXpv
bnRhbE1hcmdpbiBtYXJnaW47CisgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaWYgd2UgcmVhbGx5
IHJlYWxseSBuZWVkIHRoaXMuCisgICAgSG9yaXpvbnRhbE1hcmdpbiBub25Db21wdXRlZE1hcmdp
bjsKIH07CiAKIHN0cnVjdCBIZWlnaHRBbmRNYXJnaW4gewotICAgIFZlcnRpY2FsRWRnZXMgdXNl
ZE1hcmdpblZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIGNvbGxhcHNlZE1hcmdpbi52YWx1ZV9vcihu
b25Db2xsYXBzZWRNYXJnaW4pOyB9Ci0KICAgICBMYXlvdXRVbml0IGhlaWdodDsKLSAgICBWZXJ0
aWNhbEVkZ2VzIG5vbkNvbGxhcHNlZE1hcmdpbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFZlcnRpY2Fs
RWRnZXM+IGNvbGxhcHNlZE1hcmdpbjsKKyAgICBWZXJ0aWNhbE1hcmdpbiBtYXJnaW47CiB9Owog
CiBzdHJ1Y3QgSG9yaXpvbnRhbEdlb21ldHJ5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzE0NmUyMjkxNjA3Yzg0MDY4YjcyMTc5YmQ1NTMzOTlhOTE1MjZmZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBA
IC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitzdHJ1Y3QgVmVydGlj
YWxNYXJnaW4geworICAgIHN0cnVjdCBDb21wdXRlZFZhbHVlcyB7CisgICAgICAgIExheW91dFVu
aXQgdG9wOworICAgICAgICBMYXlvdXRVbml0IGJvdHRvbTsKKyAgICB9OworICAgIENvbXB1dGVk
VmFsdWVzIHVzZWRWYWx1ZXMoKSBjb25zdDsKKyAgICBDb21wdXRlZFZhbHVlcyBub25Db2xsYXBz
ZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX25vbkNvbGxhcHNlZDsgfQorICAgIAorICAgIHN0
cnVjdCBDb2xsYXBzZWRWYWx1ZXMgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IHRvcDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBib3R0b207CisgICAgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPENvbGxhcHNlZFZhbHVlcz4gY29sbGFwc2VkVmFsdWVzKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xsYXBzZWQ7IH0KKyAgICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhD
b2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFsdWVzKSB7IG1fY29sbGFwc2VkID0gY29sbGFwc2Vk
VmFsdWVzOyB9CisKKyAgICBWZXJ0aWNhbE1hcmdpbihDb21wdXRlZFZhbHVlcyBub25Db2xsYXBz
ZWQsIHN0ZDo6b3B0aW9uYWw8Q29sbGFwc2VkVmFsdWVzPik7CisKKyAgICBWZXJ0aWNhbE1hcmdp
bigpID0gZGVmYXVsdDsKKyAgICB+VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7Citwcml2YXRl
OgorICAgIENvbXB1dGVkVmFsdWVzIG1fbm9uQ29sbGFwc2VkOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29sbGFwc2VkVmFsdWVzPiBtX2NvbGxhcHNlZDsKK307CisKK3N0cnVjdCBIb3Jpem9udGFsTWFy
Z2luIHsKKyAgICBMYXlvdXRVbml0IGxlZnQ7CisgICAgTGF5b3V0VW5pdCByaWdodDsKK307CisK
K3N0cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4geworICAgIHN0cnVjdCBW
YWx1ZXMgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHBvc2l0aXZlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG5lZ2F0aXZlOworICAgIH07CisgICAgVmFs
dWVzIHRvcDsKKyAgICBWYWx1ZXMgYm90dG9tOworfTsKKworaW5saW5lIFZlcnRpY2FsTWFyZ2lu
OjpWZXJ0aWNhbE1hcmdpbihWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgbm9uQ29sbGFw
c2VkLCBzdGQ6Om9wdGlvbmFsPFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXM+IGNvbGxh
cHNlZCkKKyAgICA6IG1fbm9uQ29sbGFwc2VkKG5vbkNvbGxhcHNlZCkKKyAgICAsIG1fY29sbGFw
c2VkKGNvbGxhcHNlZCkKK3sKK30KKworaW5saW5lIFZlcnRpY2FsTWFyZ2luOjpDb21wdXRlZFZh
bHVlcyBWZXJ0aWNhbE1hcmdpbjo6dXNlZFZhbHVlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Nv
bGxhcHNlZCkKKyAgICAgICAgcmV0dXJuIG1fbm9uQ29sbGFwc2VkOworICAgIHJldHVybiB7IG1f
Y29sbGFwc2VkLT50b3AudmFsdWVfb3IobV9ub25Db2xsYXBzZWQudG9wKSwKKyAgICAgICAgbV9j
b2xsYXBzZWQtPmJvdHRvbS52YWx1ZV9vcihtX25vbkNvbGxhcHNlZC5ib3R0b20pIH07Cit9CisK
K30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTEyZDEw
ZjY1YzhhMTY2MTA1ZDE2YTU0N2Y5NzUwYWUyY2NjZTUyZS4uMWUzNmNiYTY3NTg5Zjg3NWU2YTY3
ODdmM2UyMWI5ZDljMDBlOTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC0zNTgsNyArMzU4LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVp
Z2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgICAgICAgICAgYXV0
byBtYXhIZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKG1heEhlaWdodCk7CiAgICAgICAgICAgICAv
LyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgogICAgICAgICAgICAgQVNTRVJU
KChsYXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgpIHx8
IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBtYXhIZWlnaHRBbmRNYXJnaW4uaGVpZ2h0
ID09ICptYXhIZWlnaHQpOwotICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0geyAqbWF4SGVp
Z2h0LCBtYXhIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLCBtYXhIZWlnaHRBbmRN
YXJnaW4uY29sbGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSB7
ICptYXhIZWlnaHQsIG1heEhlaWdodEFuZE1hcmdpbi5tYXJnaW4gfTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMzY3LDE4ICszNjcsMTcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgICAg
ICAgICAgYXV0byBtaW5IZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKG1pbkhlaWdodCk7CiAgICAg
ICAgICAgICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgogICAgICAgICAg
ICAgQVNTRVJUKChsYXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9k
eUJveCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBtaW5IZWlnaHRBbmRNYXJn
aW4uaGVpZ2h0ID09ICptaW5IZWlnaHQpOwotICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0g
eyAqbWluSGVpZ2h0LCBtaW5IZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLCBtaW5I
ZWlnaHRBbmRNYXJnaW4uY29sbGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICBoZWlnaHRBbmRN
YXJnaW4gPSB7ICptaW5IZWlnaHQsIG1pbkhlaWdodEFuZE1hcmdpbi5tYXJnaW4gfTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94
SGVpZ2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwotICAgIGRpc3BsYXlCb3guc2V0VmVydGlj
YWxOb25Db2xsYXBzZWRNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbik7
Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4udXNlZE1h
cmdpblZhbHVlcygpKTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKGhlaWdodEFu
ZE1hcmdpbi5tYXJnaW4pOwogCiAgICAgLy8gSWYgdGhpcyBib3ggaGFzIGFscmVhZHkgYmVlbiBt
b3ZlZCBieSB0aGUgZXN0aW1hdGVkIHZlcnRpY2FsIG1hcmdpbiwgbm8gbmVlZCB0byBtb3ZlIGl0
IGFnYWluLgogICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCAhZGlz
cGxheUJveC5lc3RpbWF0ZWRNYXJnaW5Ub3AoKSkKLSAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVy
dGljYWxseShoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpblZhbHVlcygpLnRvcCk7CisgICAgICAg
IGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFs
dWVzKCkudG9wKTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApp
bmRleCAzYjA5ZjMwY2YxYjY5YzgzN2FkYmUzYjgxODM4MDJlY2E4NjQwOGM0Li5lYmUxYTIyNzBi
ODk4MWYxNmU5ZWExM2IxZWNiNmY5N2JhODdhMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC02MSwyNCArNjEsMjQgQEAgSGVpZ2h0QW5kTWFy
Z2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhl
aWdodEFuZE1hcmcKICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSku
Y29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKLSAgICAgICAgVmVydGljYWxF
ZGdlcyBub25Db2xsYXBzZWRNYXJnaW4gPSB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bWFyZ2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSwKKyAgICAgICAg
YXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMg
eyBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblRvcCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkudmFsdWVfb3IoMCksCiAgICAgICAgICAgICBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoMCkg
fTsgCi0gICAgICAgIFZlcnRpY2FsRWRnZXMgY29sbGFwc2VkTWFyZ2luID0geyBNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luVG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luQm90dG9tKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIH07CisgICAgICAgIGF1dG8gY29s
bGFwc2VkTWFyZ2luID0gVmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcyB7IE1hcmdpbkNv
bGxhcHNlOjptYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCksIE1hcmdpbkNvbGxhcHNl
OjptYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91dEJveCkgfTsKICAgICAgICAgYXV0byBi
b3JkZXJBbmRQYWRkaW5nVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gu
cGFkZGluZ1RvcCgpLnZhbHVlX29yKDApOwotICAgICAgICAKKwogICAgICAgICBhdXRvIGhlaWdo
dCA9IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVl
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CiAgICAgICAgIGlm
IChoZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4geyBoZWlnaHQudmFsdWUoKSwgbm9uQ29sbGFw
c2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGhlaWdo
dC52YWx1ZSgpLCB7IG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH0gfTsKIAog
ICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFp
bmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCi0gICAgICAgICAgICByZXR1cm4geyAw
LCBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OworICAgICAgICAgICAgcmV0
dXJuIHsgMCwgeyBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9IH07CiAKICAg
ICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsYXN0IGxpbmUgYm94LCBpZiB0aGUg
Ym94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB3aXRoIG9uZSBvciBt
b3JlIGxpbmVzCiAgICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRlbXAgYW5kIHdpbGwgYmUg
cmVwbGFjZWQgYnkgdGhlIGNvcnJlY3QgZGlzcGxheSBib3ggb25jZSBpbmxpbmUgcnVucyBtb3Zl
IG92ZXIgdG8gdGhlIGRpc3BsYXkgdHJlZS4KICAgICAgICAgICAgIGF1dG8mIGlubGluZVJ1bnMg
PSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVk
Rm9ybWF0dGluZ1N0YXRlKGxheW91dEJveCkpLmlubGluZVJ1bnMoKTsKICAgICAgICAgICAgIGF1
dG8gYm90dG9tRWRnZSA9IGlubGluZVJ1bnMuaXNFbXB0eSgpID8gTGF5b3V0VW5pdCgpIDogaW5s
aW5lUnVucy5sYXN0KCkubG9naWNhbEJvdHRvbSgpOwotICAgICAgICAgICAgcmV0dXJuIHsgYm90
dG9tRWRnZSwgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAg
ICAgIHJldHVybiB7IGJvdHRvbUVkZ2UsIHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRN
YXJnaW4gfSB9OwogICAgICAgICB9CiAKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9m
IHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZs
b3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KQEAgLTg2LDcgKzg2LDcg
QEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgQVNTRVJUKGxhc3RJbkZsb3dDaGls
ZCk7CiAgICAgICAgIGlmICghTWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2Vk
V2l0aFBhcmVudCgqbGFzdEluRmxvd0NoaWxkKSkgewogICAgICAgICAgICAgYXV0byYgbGFzdElu
Rmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXN0
SW5GbG93Q2hpbGQpOwotICAgICAgICAgICAgcmV0dXJuIHsgbGFzdEluRmxvd0Rpc3BsYXlCb3gu
Ym90dG9tKCkgKyBsYXN0SW5GbG93RGlzcGxheUJveC5tYXJnaW5Cb3R0b20oKSAtIGJvcmRlckFu
ZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH07CisgICAg
ICAgICAgICByZXR1cm4geyBsYXN0SW5GbG93RGlzcGxheUJveC5ib3R0b20oKSArIGxhc3RJbkZs
b3dEaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgeyBub25D
b2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9IH07CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9mIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQg
d2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdpdGggdGhlIGVsZW1lbnQncyBib3R0
b20gbWFyZ2luCkBAIC05NSwxNiArOTUsMTYgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAg
ICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGlu
ZygpOwogICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKICAgICAgICAgICAgIGF1dG8mIGluRmxv
d0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dD
aGlsZCk7Ci0gICAgICAgICAgICByZXR1cm4geyBpbkZsb3dEaXNwbGF5Qm94LnRvcCgpICsgaW5G
bG93RGlzcGxheUJveC5ib3JkZXJCb3goKS5oZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3As
IG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICByZXR1
cm4geyBpbkZsb3dEaXNwbGF5Qm94LnRvcCgpICsgaW5GbG93RGlzcGxheUJveC5ib3JkZXJCb3go
KS5oZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBj
b2xsYXBzZWRNYXJnaW4gfSB9OwogICAgICAgICB9CiAKICAgICAgICAgLy8gNC4gemVybywgb3Ro
ZXJ3aXNlCi0gICAgICAgIHJldHVybiB7IDAsIG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2Vk
TWFyZ2luIH07CisgICAgICAgIHJldHVybiB7IDAsIHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xs
YXBzZWRNYXJnaW4gfSB9OwogICAgIH07CiAKICAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGNv
bXB1dGUoKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gaGVp
Z2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdo
dEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVzKCkudG9wIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRN
YXJnaW4udXNlZE1hcmdpblZhbHVlcygpLmJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRl
eHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxh
Y2VkIC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4o
IiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS50b3AgPDwgInB4LCAiIDw8
IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJvdHRvbSA8PCAicHgpIC0+IGxh
eW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFy
Z2luOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGEKIAog
ICAgIGhlaWdodEFuZE1hcmdpbiA9IFF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGxheW91dFN0YXRl
LCBsYXlvdXRCb3gsIGhlaWdodEFuZE1hcmdpbik7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZs
b3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+IGhlaWdodCgiIDw8IGhl
aWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBoZWlnaHRBbmRNYXJnaW4u
dXNlZE1hcmdpblZhbHVlcygpLnRvcCA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLnVzZWRN
YXJnaW5WYWx1ZXMoKS5ib3R0b20gPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94
IDw8ICIpIik7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBzdHJl
Y2hlZCB0byB2aWV3cG9ydCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8
ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkudG9w
IDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS5ib3R0b20g
PDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJu
IGhlaWdodEFuZE1hcmdpbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1
aXJrcy5jcHAKaW5kZXggYjhmMDE4YWMxZDIxZmE0ODFkMGRkMDhlY2RmNGVmODg3YzEyNGQyNS4u
YTE5YTYwODM5YThlYjVhOTA5MWE3ODcwMmQ2N2EyOWZmMTgzMmZlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC04MCw5ICs4MCw5IEBAIEhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChj
b25zdCBMYXlvdXRTdGF0CiAKICAgICBMYXlvdXRVbml0IHRvdGFsVmVydGljYWxNYXJnaW5zOwog
ICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSB7Ci0gICAgICAgIGF1dG8gdmVydGlj
YWxNYXJnaW5zID0gaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKTsKKyAgICAgICAg
YXV0byB2ZXJ0aWNhbE1hcmdpbnMgPSBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMo
KTsKICAgICAgICAgLy8gRG9jdW1lbnQgYm94J3MgbWFyZ2lucyBkbyBub3QgY29sbGFwc2UuCi0g
ICAgICAgIEFTU0VSVCghaGVpZ2h0QW5kTWFyZ2luLmNvbGxhcHNlZE1hcmdpbik7CisgICAgICAg
IEFTU0VSVCghaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSk7CiAgICAg
ICAgIHRvdGFsVmVydGljYWxNYXJnaW5zID0gdmVydGljYWxNYXJnaW5zLnRvcCArIHZlcnRpY2Fs
TWFyZ2lucy5ib3R0b207CiAgICAgfSBlbHNlIGlmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkpIHsK
ICAgICAgICAgLy8gSGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94OgpAQCAtOTMs
NyArOTMsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3RhdAogCiAgICAgICAgIC8vIFRoaXMgcXVp
cmsgaGFwcGVucyB3aGVuIHRoZSBib2R5IGhlaWdodCBpcyAwIHdoaWNoIG1lYW5zIGl0cyB2ZXJ0
aWNhbCBtYXJnaW5zIGNvbGxhcHNlIHRocm91Z2ggKHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYXJl
IGFkam9pbmluZykuCiAgICAgICAgIC8vIEhvd2V2ZXIgbm93IHRoYXQgd2Ugc3RyZXRjaCB0aGUg
Ym9keSB0aGV5IGRvbid0IGNvbGxhcHNlIHRocm91Z2ggYW55bW9yZSwgc28gd2UgbmVlZCB0byB1
c2UgdGhlIG5vbi1jb2xsYXBzZWQgdmFsdWVzIGluc3RlYWQuCi0gICAgICAgIGF1dG8gYm9keUJv
eFZlcnRpY2FsTWFyZ2lucyA9IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPyBoZWlnaHRBbmRNYXJn
aW4udXNlZE1hcmdpblZhbHVlcygpIDogaGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdp
bjsKKyAgICAgICAgYXV0byBib2R5Qm94VmVydGljYWxNYXJnaW5zID0gaGVpZ2h0QW5kTWFyZ2lu
LmhlaWdodCA/IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpIDogaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsKICAgICAgICAgdG90YWxWZXJ0aWNh
bE1hcmdpbnMgPSBib2R5Qm94VmVydGljYWxNYXJnaW5zLnRvcCArIGJvZHlCb3hWZXJ0aWNhbE1h
cmdpbnMuYm90dG9tOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlCb3guY3BwCmluZGV4IDE1MzQ3OTNiNzhiYmEzZWQyM2I2MGE1ZDgyYmFj
NjBhY2JkMWJkMDMuLjY1YmMwZjA3MGFlNzA1NmFlNjU1ZjE5OTJhM2FiZGZjOWYzZDI5YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAK
QEAgLTU3LDggKzU3LDggQEAgQm94OjpCb3goY29uc3QgQm94JiBvdGhlcikKICAgICAsIG1fdG9w
TGVmdChvdGhlci5tX3RvcExlZnQpCiAgICAgLCBtX2NvbnRlbnRXaWR0aChvdGhlci5tX2NvbnRl
bnRXaWR0aCkKICAgICAsIG1fY29udGVudEhlaWdodChvdGhlci5tX2NvbnRlbnRIZWlnaHQpCi0g
ICAgLCBtX21hcmdpbihvdGhlci5tX21hcmdpbikKLSAgICAsIG1fdmVydGljYWxOb25Db2xsYXBz
ZWRNYXJnaW4ob3RoZXIubV92ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbikKKyAgICAsIG1faG9y
aXpvbnRhbE1hcmdpbihvdGhlci5tX2hvcml6b250YWxNYXJnaW4pCisgICAgLCBtX3ZlcnRpY2Fs
TWFyZ2luKG90aGVyLm1fdmVydGljYWxNYXJnaW4pCiAgICAgLCBtX2hvcml6b250YWxOb25Db21w
dXRlZE1hcmdpbihvdGhlci5tX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdpbikKICAgICAsIG1f
ZXN0aW1hdGVkTWFyZ2luVG9wKG90aGVyLm1fZXN0aW1hdGVkTWFyZ2luVG9wKQogICAgICwgbV9i
b3JkZXIob3RoZXIubV9ib3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guaAppbmRleCA2MmEzOTkyY2FkYTNhMDE3OTU4YzQwYzgzOGU1YTA1NDJl
YjNiNDAyLi5lNDlkZTNjMzZhZTg1MjJiZWFlNDBlNzBkZmQ5NGMzYmJhYjUzZDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTEzOCw2
ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgUmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4geyB0b3Ao
KSwgbGVmdCgpLCB3aWR0aCgpLCBoZWlnaHQoKSB9OyB9CiAgICAgUmVjdCByZWN0V2l0aE1hcmdp
bigpIGNvbnN0IHsgcmV0dXJuIHsgdG9wKCkgLSBtYXJnaW5Ub3AoKSwgbGVmdCgpIC0gbWFyZ2lu
TGVmdCgpLCBtYXJnaW5MZWZ0KCkgKyB3aWR0aCgpICsgbWFyZ2luUmlnaHQoKSwgbWFyZ2luVG9w
KCkgKyBoZWlnaHQoKSArIG1hcmdpbkJvdHRvbSgpIH07IH0KIAorICAgIExheW91dDo6VmVydGlj
YWxNYXJnaW4gdmVydGljYWxNYXJnaW4oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpblRv
cCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0OwogICAgIExheW91
dFVuaXQgbWFyZ2luQm90dG9tKCkgY29uc3Q7CkBAIC0xOTAsMTAgKzE5MSw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRDb250ZW50Qm94SGVpZ2h0KExheW91dFVuaXQpOwogICAgIHZvaWQgc2V0
Q29udGVudEJveFdpZHRoKExheW91dFVuaXQpOwogCi0gICAgdm9pZCBzZXRIb3Jpem9udGFsTWFy
Z2luKExheW91dDo6SG9yaXpvbnRhbEVkZ2VzKTsKLSAgICB2b2lkIHNldFZlcnRpY2FsTWFyZ2lu
KExheW91dDo6VmVydGljYWxFZGdlcyk7Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbE5vbkNvbGxhcHNl
ZE1hcmdpbihMYXlvdXQ6OlZlcnRpY2FsRWRnZXMpOwotICAgIHZvaWQgc2V0SG9yaXpvbnRhbE5v
bkNvbXB1dGVkTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbEVkZ2VzKTsKKyAgICB2b2lkIHNldEhv
cml6b250YWxNYXJnaW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lkIHNldFZl
cnRpY2FsTWFyZ2luKExheW91dDo6VmVydGljYWxNYXJnaW4pOworICAgIHZvaWQgc2V0SG9yaXpv
bnRhbE5vbkNvbXB1dGVkTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbE1hcmdpbik7CiAgICAgdm9p
ZCBzZXRFc3RpbWF0ZWRNYXJnaW5Ub3AoTGF5b3V0VW5pdCBtYXJnaW5Ub3ApIHsgbV9lc3RpbWF0
ZWRNYXJnaW5Ub3AgPSBtYXJnaW5Ub3A7IH0KIAogICAgIHZvaWQgc2V0Qm9yZGVyKExheW91dDo6
RWRnZXMpOwpAQCAtMjI0LDkgKzIyNCw5IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX2Nv
bnRlbnRXaWR0aDsKICAgICBMYXlvdXRVbml0IG1fY29udGVudEhlaWdodDsKIAotICAgIExheW91
dDo6RWRnZXMgbV9tYXJnaW47Ci0gICAgTGF5b3V0OjpWZXJ0aWNhbEVkZ2VzIG1fdmVydGljYWxO
b25Db2xsYXBzZWRNYXJnaW47Ci0gICAgTGF5b3V0OjpIb3Jpem9udGFsRWRnZXMgbV9ob3Jpem9u
dGFsTm9uQ29tcHV0ZWRNYXJnaW47CisgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9y
aXpvbnRhbE1hcmdpbjsKKyAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1fdmVydGljYWxNYXJn
aW47CisgICAgTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVk
TWFyZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9lc3RpbWF0ZWRNYXJnaW5U
b3A7CiAKICAgICBMYXlvdXQ6OkVkZ2VzIG1fYm9yZGVyOwpAQCAtNTA3LDMyICs1MDcsMjUgQEAg
aW5saW5lIExheW91dFVuaXQgQm94Ojpjb250ZW50Qm94V2lkdGgoKSBjb25zdAogICAgIHJldHVy
biBtX2NvbnRlbnRXaWR0aDsKIH0KIAotaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsTWFy
Z2luKExheW91dDo6SG9yaXpvbnRhbEVkZ2VzIG1hcmdpbikKK2lubGluZSB2b2lkIEJveDo6c2V0
SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbWFyZ2luKQogewogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNWYWxpZEhvcml6b250YWxNYXJnaW4oKTsKICNl
bmRpZgotICAgIG1fbWFyZ2luLmhvcml6b250YWwgPSBtYXJnaW47CisgICAgbV9ob3Jpem9udGFs
TWFyZ2luID0gbWFyZ2luOwogfQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2lu
KExheW91dDo6VmVydGljYWxFZGdlcyBtYXJnaW4pCitpbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRp
Y2FsTWFyZ2luKExheW91dDo6VmVydGljYWxNYXJnaW4gbWFyZ2luKQogewogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7Ci0jZW5kaWYKLSAgICBB
U1NFUlQoIW1fZXN0aW1hdGVkTWFyZ2luVG9wIHx8ICptX2VzdGltYXRlZE1hcmdpblRvcCA9PSBt
YXJnaW4udG9wKTsKLSAgICBtX21hcmdpbi52ZXJ0aWNhbCA9IG1hcmdpbjsKLX0KLQotaW5saW5l
IHZvaWQgQm94OjpzZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihMYXlvdXQ6OlZlcnRpY2Fs
RWRnZXMgbWFyZ2luKQotewotI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBzZXRIYXNWYWxpZFZl
cnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKCk7CiAjZW5kaWYKLSAgICBtX3ZlcnRpY2FsTm9uQ29s
bGFwc2VkTWFyZ2luID0gbWFyZ2luOworICAgIEFTU0VSVCghbV9lc3RpbWF0ZWRNYXJnaW5Ub3Ag
fHwgKm1fZXN0aW1hdGVkTWFyZ2luVG9wID09IG1hcmdpbi51c2VkVmFsdWVzKCkudG9wKTsKKyAg
ICBtX3ZlcnRpY2FsTWFyZ2luID0gbWFyZ2luOwogfQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldEhv
cml6b250YWxOb25Db21wdXRlZE1hcmdpbihMYXlvdXQ6Okhvcml6b250YWxFZGdlcyBtYXJnaW4p
CitpbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbihMYXlvdXQ6
Okhvcml6b250YWxNYXJnaW4gbWFyZ2luKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBz
ZXRIYXNWYWxpZEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbigpOwpAQCAtNTU2LDQwICs1NDks
NDYgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRQYWRkaW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpF
ZGdlcz4gcGFkZGluZykKICAgICBtX3BhZGRpbmcgPSBwYWRkaW5nOwogfQogCitpbmxpbmUgTGF5
b3V0OjpWZXJ0aWNhbE1hcmdpbiBCb3g6OnZlcnRpY2FsTWFyZ2luKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKKyAgICByZXR1cm4gbV92ZXJ0aWNhbE1h
cmdpbjsKK30KKwogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5Ub3AoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4pOwotICAgIHJldHVybiBtX21hcmdp
bi52ZXJ0aWNhbC50b3A7CisgICAgcmV0dXJuIG1fdmVydGljYWxNYXJnaW4udXNlZFZhbHVlcygp
LnRvcDsKIH0KIAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5MZWZ0KCkgY29uc3QKIHsK
ICAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4pOwotICAgIHJldHVybiBtX21h
cmdpbi5ob3Jpem9udGFsLmxlZnQ7CisgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdpbi5sZWZ0
OwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpbkJvdHRvbSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fbWFyZ2lu
LnZlcnRpY2FsLmJvdHRvbTsKKyAgICByZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi51c2VkVmFsdWVz
KCkuYm90dG9tOwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpblJpZ2h0KCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4pOwotICAgIHJldHVy
biBtX21hcmdpbi5ob3Jpem9udGFsLnJpZ2h0OworICAgIHJldHVybiBtX2hvcml6b250YWxNYXJn
aW4ucmlnaHQ7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6bm9uQ29sbGFwc2VkTWFyZ2lu
VG9wKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2Vk
TWFyZ2luKTsKLSAgICByZXR1cm4gbV92ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbi50b3A7Cisg
ICAgcmV0dXJuIG1fdmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCkudG9wOwogfQog
CiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbik7Ci0g
ICAgcmV0dXJuIG1fdmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4uYm90dG9tOworICAgIHJldHVy
biBtX3ZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcygpLmJvdHRvbTsKIH0KIAogaW5s
aW5lIExheW91dFVuaXQgQm94Ojpub25Db21wdXRlZE1hcmdpbkxlZnQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IDgx
NDIzNDIzMGVhZGNlMDMwNTI5NjVmMDM1ODE1MWM5ZWE2MGI4ODYuLjI3NTMxOTQwMzhhOTg2YTA3
Y2ViNjlkMGEyZDNhNTAxZDY3ZDA2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAgLTE5Miw4ICsxOTIsMTcgQEAgc3RkOjpvcHRp
b25hbDxQb3NpdGlvbj4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZShjb25zdCBCb3gKICAgICAgICAgICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gZGlzcGxh
eUJveC5tYXJnaW5Ub3AoKTsKIAogICAgICAgICAgICAgLy8gUmVzZXQgcHJldmlvdXMgYm90dG9t
IGFuZCBjdXJyZW50IHRvcCBtYXJnaW5zIHRvIG5vbi1jb2xsYXBzaW5nLgotICAgICAgICAgICAg
cHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgcHJldmlvdXNJbkZs
b3dEaXNwbGF5Qm94Lm1hcmdpblRvcCgpLCBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubm9uQ29s
bGFwc2VkTWFyZ2luQm90dG9tKCkgfSk7Ci0gICAgICAgICAgICBkaXNwbGF5Qm94LnNldFZlcnRp
Y2FsTWFyZ2luKHsgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5Ub3AoKSwgZGlzcGxheUJv
eC5tYXJnaW5Cb3R0b20oKSB9KTsKKyAgICAgICAgICAgIGF1dG8gcHJldmlvdXNWZXJ0aWNhbE1h
cmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigpOworICAgICAg
ICAgICAgaWYgKHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgcHJl
dmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+Ym90dG9tKSB7CisgICAgICAg
ICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyBwcmV2
aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT50b3AsIHsgfSB9KTsKKyAgICAg
ICAgICAgICAgICBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4ocHJl
dmlvdXNWZXJ0aWNhbE1hcmdpbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGSVhN
RTogY2hlY2sgaWYgY29sbGFwc2luZyB0aHJvdWdoIGhhcyBhbnl0aGluZyB0byBkbyB3aXRoIHRo
aXMuCisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxheUJveC52ZXJ0aWNh
bE1hcmdpbigpOworICAgICAgICAgICAgaWYgKHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVl
cygpICYmIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT50b3ApIHsKKyAgICAgICAg
ICAgICAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyB7IH0sIHZlcnRpY2Fs
TWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5ib3R0b20gfSk7CisgICAgICAgICAgICAgICAgZGlz
cGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbE1hcmdpbik7CisgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gcHJldmlvdXNJbkZsb3dE
aXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpICsgZGlzcGxheUJveC5tYXJnaW5Ub3AoKTsKICAgICAg
ICAgICAgIGF1dG8gbWFyZ2luT2Zmc2V0ID0gbm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2Vk
TWFyZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGY4NzI1Mjcy
MDMwNzQyM2M5OTQ3MTkzODg3ZTkzOTY3MjUzODMxYmUuLmM3YWQ5YzVjOWQxMTcwNWZlYjU3Nzhh
ZDQwODYzZDYzODRjNzI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
QEAgLTM2Miw4ICszNjIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogCiAgICAgYXV0byYg
ZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCk7Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihoZWln
aHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luKTsKLSAgICBkaXNwbGF5Qm94LnNldFZlcnRp
Y2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVzKCkpOworICAgIGRpc3Bs
YXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiB9CiAKIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChj
b25zdCBCb3gmIHJvb3QpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357300</attachid>
            <date>2018-12-13 21:48:46 -0800</date>
            <delta_ts>2018-12-14 06:44:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192692-20181213214845.patch</filename>
            <type>text/plain</type>
            <size>36369</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM2YzM4MWU1YjZhNDdi
YjgyYWYwMWUxMDQ1M2U2NzM0ODRmMmVhZi4uZDk5ZjdhYTUwNjhhYWU5MDFlYzI2Mjk4ZTU0MDQ4
OTY2ODliZmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE4LTEyLTEzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBJbnRyb2R1
Y2UgVmVydGljYWxNYXJnaW4gYW5kIEhvcml6b250YWxNYXJnaW4gdHlwZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0
aW9uIGZvciBjb21wbGV0aW5nIGJsb2NrIG1hcmdpbiBjb2xsYXBzaW5nLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpp
bmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9u
dGFsTWFyZ2luVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6
CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0
VW5pdHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SGVpZ2h0QW5kTWFyZ2luOjp1c2Vk
TWFyZ2luVmFsdWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvTWFyZ2luVHlw
ZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjpu
b25Db2xsYXBzZWRWYWx1ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpWZXJ0
aWNhbE1hcmdpbjo6Y29sbGFwc2VkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VmVydGljYWxNYXJnaW46OnNldENvbGxhcHNlZFZhbHVlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjpWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjp1c2VkVmFsdWVzIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJr
czo6c3RyZXRjaGVkSGVpZ2h0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAg
ICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0SG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6c2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6dmVydGljYWxNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94OjptYXJnaW5Ub3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjptYXJnaW5MZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6bWFyZ2luQm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
bWFyZ2luUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpub25D
b2xsYXBzZWRNYXJnaW5Ub3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
Ojpub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94OjpzZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbik6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNl
IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKwogMjAxOC0xMi0xMyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUlRDUnRwVHJhbnNj
ZWl2ZXIuc3RvcHBlZCBzaG91bGQgYmUgdHJ1ZSB3aGVuIGFwcGx5aW5nIGEgcmVtb3RlIGRlc2Ny
aXB0aW9uIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbSBzZWN0aW9uIHJlamVjdGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWRl
YjRhOGU3ZDZlYTZlNjk0YjgwNjA5ZTA5NzRhMDkyMzk1ZGE1MS4uZWE0ZTQxYjJlM2FkYTlmYTFk
MTkyMmYzYmMzMDQ0YmE1NzY4MGE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTE0OSw2ICs5MTQ5LDcgQEAKIAkJNkZCQjg2
MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZGRTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVMaW5l
QnJlYWtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVM
aW5lQnJlYWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGRTE5ODE1MjE3
ODM5N0MwMDQ0NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lQnJlYWtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFyZ2luVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZF
N0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RkU3Q0ZBMzIxNzdFRjEwMDA1QjE1NzMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dExpbmVCcmVha0JveC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RkU3Q0ZBNTIxNzdGMDY5MDA1QjE1NzMgLyogTGF5b3V0
TGluZUJyZWFrQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExh
eW91dExpbmVCcmVha0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjEz
NSw2ICsxNjEzNiw3IEBACiAJCQkJNkY3Q0EzQzUyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91dFN0
YXRlLmNwcCAqLywKIAkJCQk2RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3RhdGUu
aCAqLywKIAkJCQk2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5b3V0VW5pdHMuaCAqLywK
KwkJCQk2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAqLywKIAkJCQkx
MUZGMDJENTIwQkEzQzgxMDA4M0YyNUIgLyogVmVyaWZpY2F0aW9uLmNwcCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbGF5b3V0OwpAQCAtMjU1NDksOSArMjU1NTEsNyBAQAogCQkJCUQwRDg2NDhFMjFC
NzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaWRsICovLAogCQkJCUQwRDg2NDgyMjFCNjE3
MjcwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDBEODY0ODMy
MUI2MTcyNzAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuaWRsICovLAotCQkJCUQw
NjNBRTRFMjFDMDgxMEEwMDBFNkEzNSAvKiBXZWJHUFVCdWZmZXJVc2FnZS5oICovLAogCQkJCUQw
NjNBRTNGMjFDMDVEREQwMDBFNkEzNSAvKiBXZWJHUFVCdWZmZXJVc2FnZS5oICovLAotCQkJCUQw
NjNBRTRDMjFDMDdBQjUwMDBFNkEzNSAvKiBXZWJHUFVCdWZmZXJVc2FnZS5pZGwgKi8sCiAJCQkJ
RDA2M0FFNDAyMUMwNURERDAwMEU2QTM1IC8qIFdlYkdQVUJ1ZmZlclVzYWdlLmlkbCAqLywKIAkJ
CQlEMDAxRDlBQzIxQjBDODFBMDAyM0I5QkMgLyogV2ViR1BVQ29sb3IuaCAqLywKIAkJCQlEMDAx
RDlBRDIxQjBDODFBMDAyM0I5QkMgLyogV2ViR1BVQ29sb3IuaWRsICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZDMzZDM3ZTVjZDcxYzVkZGRi
NGFhYzA1ZmUyNTg1MGU2YTJmYTVjZi4uODFkZGE4YzYyMzk1MDc3ZjdiZTYyNGQ1NGFmN2EyNjc5
Y2Y1ODYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0xMTYsMTIgKzExNiwxMSBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkgYwogCiAgICAgYXV0
byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94KTsKICAgICAvLyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBu
b3QgY29sbGFwc2UKLSAgICBBU1NFUlQoIXZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2lu
LmNvbGxhcHNlZE1hcmdpbik7Ci0gICAgYXV0byBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbnMg
PSB2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVzKCk7Cisg
ICAgQVNTRVJUKCF2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5tYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCkpOworICAgIGF1dG8gbm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5zID0gdmVy
dGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4ubWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcygp
OwogICAgIGRpc3BsYXlCb3guc2V0VG9wKHZlcnRpY2FsR2VvbWV0cnkudG9wICsgbm9uQ29sbGFw
c2VkVmVydGljYWxNYXJnaW5zLnRvcCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVp
Z2h0KHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7Ci0gICAgZGlzcGxh
eUJveC5zZXRWZXJ0aWNhbE1hcmdpbihub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbnMpOwotICAg
IGRpc3BsYXlCb3guc2V0VmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4obm9uQ29sbGFwc2VkVmVy
dGljYWxNYXJnaW5zKTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2Fs
R2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA0ZjY1ZTU2
ZTkxODljOGRjYmUyZjA0YzdmY2E0YzM3ZGJhNDFjMjc4Li41MGIzODYzZWM1MzM3ZTQxMTgxYjY4
MWJjZmQzMGUyZDBmMjRhMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuaApAQCAtOTYsOCArOTYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBFZGdl
cyBjb21wdXRlZEJvcmRlcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFZGdlcz4gY29tcHV0ZWRQYWRkaW5nKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgc3RhdGljIEhvcml6b250YWxFZGdlcyBj
b21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgVmVydGljYWxFZGdlcyBjb21wdXRlZE5v
bkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxNYXJnaW4gY29tcHV0ZWROb25Db2xsYXBz
ZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
KyAgICAgICAgc3RhdGljIFZlcnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBjb21wdXRlZE5v
bkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBC
b3gmKTsKIAogICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5p
dCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAppbmRleCBjOTkwNzFlYmI4NTc2M2FlOTc5YzE4N2Y0ZTQyZmMyYTg5ZjdhYmQ5Li5kMWZlODhl
MDEzNDMzZjc0Y2I4MDNiZDk2ODBiYmVmNWI2YmI1MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zNTYsNyArMzU2
LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKICAgICBBU1NFUlQobWFyZ2luQm90dG9tKTsK
IAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbUG9zaXRpb25dW0hlaWdodF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQg
LT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVp
Z2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5Ub3AgPDwgInB4LCAi
ICA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAi
KSIpOwotICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgKmhlaWdodCwgeyAqbWFyZ2luVG9w
LCAqbWFyZ2luQm90dG9tIH0sIHsgfSB9IH07CisgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwg
eyAqaGVpZ2h0LCB7IHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9LCB7IH0gfSB9IH07CiB9
CiAKIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdp
ZHRoKQpAQCAtNTcxLDcgKzU3MSw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAgICAgICAg
IGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpblRvcCArIGJv
cmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90
dG9tICsgKm1hcmdpbkJvdHRvbSk7IAogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdD
b250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91
dC1vZi1mbG93IHJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwg
KmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8IGhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8ICpt
YXJnaW5Ub3AgPDwgInB4LCAiICA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkgbGF5b3V0Qm94KCIg
PDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgaGVp
Z2h0LCB7ICptYXJnaW5Ub3AsICptYXJnaW5Cb3R0b20gfSwgeyB9IH0gfTsKKyAgICByZXR1cm4g
eyAqdG9wLCAqYm90dG9tLCB7IGhlaWdodCwgeyB7ICptYXJnaW5Ub3AsICptYXJnaW5Cb3R0b20g
fSwgeyB9IH0gfSB9OwogfQogCiBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCkKQEAgLTcxMCw3ICs3MTAsNyBAQCBIZWlnaHRBbmRNYXJn
aW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IExh
eW91dFN0YXRlJgogICAgIEFTU0VSVChtYXJnaW5Cb3R0b20pOwogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0g
LT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+IGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBt
YXJnaW4oIiA8PCAqbWFyZ2luVG9wIDw8ICJweCwgIiA8PCAqbWFyZ2luQm90dG9tIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAgIHJldHVybiBIZWlnaHRB
bmRNYXJnaW4geyAqaGVpZ2h0LCB7ICptYXJnaW5Ub3AsICptYXJnaW5Cb3R0b20gfSwgeyB9IH07
CisgICAgcmV0dXJuIEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgeyAqbWFyZ2luVG9wLCAq
bWFyZ2luQm90dG9tIH0sIHsgfSB9IH07CiB9CiAKIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gdXNlZFdpZHRoKQpAQCAtODM4LDcgKzgzOCw3IEBAIEhlaWdodEFuZE1hcmdp
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKGNvbnN0CiAgICAgQVNTRVJUKGhlaWdodCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZs
b3cgcmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IG1h
cmdpbi50b3AgPDwgInB4LCAiIDw8IG1hcmdpbi5ib3R0b20gPDwgInB4KSAtPiBsYXlvdXRCb3go
IiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgKmhlaWdodCwgbWFyZ2luLCB7
IH0gfTsKKyAgICByZXR1cm4geyAqaGVpZ2h0LCB7IG1hcmdpbiwgeyB9IH0gfTsKIH0KIAogV2lk
dGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gsCkBAIC0xMDIwLDcgKzEwMjAsNyBAQCBzdGQ6Om9wdGlvbmFsPEVkZ2VzPiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBMYXlvdXRTdAog
ICAgIH07CiB9CiAKLUhvcml6b250YWxFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitIb3Jpem9udGFsTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9u
dGFsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gm
IGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwpA
QCAtMTAzMiw3ICsxMDMyLDcgQEAgSG9yaXpvbnRhbEVkZ2VzIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2kKICAgICByZXR1cm4g
eyBtYXJnaW5MZWZ0LCBtYXJnaW5SaWdodCB9OwogfQogCi1WZXJ0aWNhbEVkZ2VzIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZh
bHVlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
CitWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGgg
PSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmlu
Z0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5jcHAKaW5kZXggODMyZjRlODJlZTc3NzQwNzc0MmVjNjg0NjFhMDgwMDQyZTBiNzc2Zi4uY2Mx
ZGJjMDM0ZWU4Yjk3NzYwZTY4NjllYjg3MmY5ZTJjYzk3NmU3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0U3RhdGUuY3BwCkBAIC01Niw3ICs1Niw2IEBAIExheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZShjb25zdCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxvY2ssIGNvbnN0IExheW91
dFNpCiAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7CiAgICAgZGlzcGxh
eUJveC5zZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oeyB9KTsKICAgICBkaXNwbGF5Qm94
LnNldFZlcnRpY2FsTWFyZ2luKHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE5vbkNv
bGxhcHNlZE1hcmdpbih7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0Qm9yZGVyKHsgfSk7CiAgICAg
ZGlzcGxheUJveC5zZXRQYWRkaW5nKHsgfSk7CiAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IDNlMWQ4NDQ2Zjc1YzgxNjkz
MTU4YjgyZmMzOWE2M2JkZWFmZGI4ODEuLmQ3NmI2YTM4NTY1ZWYzNGFmZjQ0ZjlmODEwYWI2NmUy
ZjllMTE0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIk1hcmdpblR5cGVzLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMiwxNiArMTAz
LDE0IEBAIHN0cnVjdCBFZGdlcyB7CiAKIHN0cnVjdCBXaWR0aEFuZE1hcmdpbiB7CiAgICAgTGF5
b3V0VW5pdCB3aWR0aDsKLSAgICBIb3Jpem9udGFsRWRnZXMgbWFyZ2luOwotICAgIEhvcml6b250
YWxFZGdlcyBub25Db21wdXRlZE1hcmdpbjsKKyAgICBIb3Jpem9udGFsTWFyZ2luIG1hcmdpbjsK
KyAgICAvLyBGSVhNRTogRmlndXJlIG91dCBpZiB3ZSByZWFsbHkgcmVhbGx5IG5lZWQgdGhpcy4K
KyAgICBIb3Jpem9udGFsTWFyZ2luIG5vbkNvbXB1dGVkTWFyZ2luOwogfTsKIAogc3RydWN0IEhl
aWdodEFuZE1hcmdpbiB7Ci0gICAgVmVydGljYWxFZGdlcyB1c2VkTWFyZ2luVmFsdWVzKCkgY29u
c3QgeyByZXR1cm4gY29sbGFwc2VkTWFyZ2luLnZhbHVlX29yKG5vbkNvbGxhcHNlZE1hcmdpbik7
IH0KLQogICAgIExheW91dFVuaXQgaGVpZ2h0OwotICAgIFZlcnRpY2FsRWRnZXMgbm9uQ29sbGFw
c2VkTWFyZ2luOwotICAgIHN0ZDo6b3B0aW9uYWw8VmVydGljYWxFZGdlcz4gY29sbGFwc2VkTWFy
Z2luOworICAgIFZlcnRpY2FsTWFyZ2luIG1hcmdpbjsKIH07CiAKIHN0cnVjdCBIb3Jpem9udGFs
R2VvbWV0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTQ2
ZTIyOTE2MDdjODQwNjhiNzIxNzliZDU1MzM5OWE5MTUyNmZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIExheW91dCB7CisKK3N0cnVjdCBWZXJ0aWNhbE1hcmdpbiB7CisgICAgc3Ry
dWN0IENvbXB1dGVkVmFsdWVzIHsKKyAgICAgICAgTGF5b3V0VW5pdCB0b3A7CisgICAgICAgIExh
eW91dFVuaXQgYm90dG9tOworICAgIH07CisgICAgQ29tcHV0ZWRWYWx1ZXMgdXNlZFZhbHVlcygp
IGNvbnN0OworICAgIENvbXB1dGVkVmFsdWVzIG5vbkNvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbm9uQ29sbGFwc2VkOyB9CisgICAgCisgICAgc3RydWN0IENvbGxhcHNlZFZhbHVl
cyB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdG9wOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGJvdHRvbTsKKyAgICB9OworICAgIHN0ZDo6b3B0aW9uYWw8
Q29sbGFwc2VkVmFsdWVzPiBjb2xsYXBzZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbGxh
cHNlZDsgfQorICAgIHZvaWQgc2V0Q29sbGFwc2VkVmFsdWVzKENvbGxhcHNlZFZhbHVlcyBjb2xs
YXBzZWRWYWx1ZXMpIHsgbV9jb2xsYXBzZWQgPSBjb2xsYXBzZWRWYWx1ZXM7IH0KKworICAgIFZl
cnRpY2FsTWFyZ2luKENvbXB1dGVkVmFsdWVzIG5vbkNvbGxhcHNlZCwgc3RkOjpvcHRpb25hbDxD
b2xsYXBzZWRWYWx1ZXM+KTsKKworICAgIFZlcnRpY2FsTWFyZ2luKCkgPSBkZWZhdWx0OworICAg
IH5WZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsKK3ByaXZhdGU6CisgICAgQ29tcHV0ZWRWYWx1
ZXMgbV9ub25Db2xsYXBzZWQ7CisgICAgc3RkOjpvcHRpb25hbDxDb2xsYXBzZWRWYWx1ZXM+IG1f
Y29sbGFwc2VkOworfTsKKworc3RydWN0IEhvcml6b250YWxNYXJnaW4geworICAgIExheW91dFVu
aXQgbGVmdDsKKyAgICBMYXlvdXRVbml0IHJpZ2h0OworfTsKKworc3RydWN0IFBvc2l0aXZlQW5k
TmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiB7CisgICAgc3RydWN0IFZhbHVlcyB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcG9zaXRpdmU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gbmVnYXRpdmU7CisgICAgfTsKKyAgICBWYWx1ZXMgdG9wOworICAgIFZhbHVl
cyBib3R0b207Cit9OworCitpbmxpbmUgVmVydGljYWxNYXJnaW46OlZlcnRpY2FsTWFyZ2luKFZl
cnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWQsIHN0ZDo6b3B0aW9uYWw8
VmVydGljYWxNYXJnaW46OkNvbGxhcHNlZFZhbHVlcz4gY29sbGFwc2VkKQorICAgIDogbV9ub25D
b2xsYXBzZWQobm9uQ29sbGFwc2VkKQorICAgICwgbV9jb2xsYXBzZWQoY29sbGFwc2VkKQorewor
fQorCitpbmxpbmUgVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIFZlcnRpY2FsTWFyZ2lu
Ojp1c2VkVmFsdWVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY29sbGFwc2VkKQorICAgICAgICBy
ZXR1cm4gbV9ub25Db2xsYXBzZWQ7CisgICAgcmV0dXJuIHsgbV9jb2xsYXBzZWQtPnRvcC52YWx1
ZV9vcihtX25vbkNvbGxhcHNlZC50b3ApLAorICAgICAgICBtX2NvbGxhcHNlZC0+Ym90dG9tLnZh
bHVlX29yKG1fbm9uQ29sbGFwc2VkLmJvdHRvbSkgfTsKK30KKworfQorfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMTJkMTBmNjVjOGExNjYxMDVkMTZhNTQ3
Zjk3NTBhZTJjY2NlNTJlLi4xZTM2Y2JhNjc1ODlmODc1ZTZhNjc4N2YzZTIxYjlkOWMwMGU5MDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM1OCw3ICszNTgsNyBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgICAgICAgICBhdXRvIG1heEhlaWdodEFuZE1hcmdp
biA9IGNvbXB1dGUobWF4SGVpZ2h0KTsKICAgICAgICAgICAgIC8vIFVzZWQgaGVpZ2h0IHNob3Vs
ZCByZW1haW4gdGhlIHNhbWUuCiAgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRlLmluUXVp
cmtzTW9kZSgpICYmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1l
bnRCb3goKSkpIHx8IG1heEhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPT0gKm1heEhlaWdodCk7Ci0g
ICAgICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSB7ICptYXhIZWlnaHQsIG1heEhlaWdodEFuZE1h
cmdpbi5ub25Db2xsYXBzZWRNYXJnaW4sIG1heEhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJn
aW4gfTsKKyAgICAgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IHsgKm1heEhlaWdodCwgbWF4SGVp
Z2h0QW5kTWFyZ2luLm1hcmdpbiB9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNjcsMTggKzM2
NywxNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgICAgICAgICBhdXRvIG1pbkhlaWdo
dEFuZE1hcmdpbiA9IGNvbXB1dGUobWluSGVpZ2h0KTsKICAgICAgICAgICAgIC8vIFVzZWQgaGVp
Z2h0IHNob3VsZCByZW1haW4gdGhlIHNhbWUuCiAgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0
YXRlLmluUXVpcmtzTW9kZSgpICYmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94
LmlzRG9jdW1lbnRCb3goKSkpIHx8IG1pbkhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPT0gKm1pbkhl
aWdodCk7Ci0gICAgICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSB7ICptaW5IZWlnaHQsIG1pbkhl
aWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4sIG1pbkhlaWdodEFuZE1hcmdpbi5jb2xs
YXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IHsgKm1pbkhlaWdo
dCwgbWluSGVpZ2h0QW5kTWFyZ2luLm1hcmdpbiB9OwogICAgICAgICB9CiAgICAgfQogCiAgICAg
YXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFy
Z2luLmhlaWdodCk7Ci0gICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdp
bihoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luKTsKLSAgICBkaXNwbGF5Qm94LnNl
dFZlcnRpY2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVzKCkpOworICAg
IGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiAK
ICAgICAvLyBJZiB0aGlzIGJveCBoYXMgYWxyZWFkeSBiZWVuIG1vdmVkIGJ5IHRoZSBlc3RpbWF0
ZWQgdmVydGljYWwgbWFyZ2luLCBubyBuZWVkIHRvIG1vdmUgaXQgYWdhaW4uCiAgICAgaWYgKGxh
eW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8ICFkaXNwbGF5Qm94LmVzdGltYXRlZE1h
cmdpblRvcCgpKQotICAgICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGhlaWdodEFuZE1h
cmdpbi51c2VkTWFyZ2luVmFsdWVzKCkudG9wKTsKKyAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVy
dGljYWxseShoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS50b3ApOwogfQogCiBG
b3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDNiMDlmMzBjZjFiNjlj
ODM3YWRiZTNiODE4MzgwMmVjYTg2NDA4YzQuLmViZTFhMjI3MGI4OTgxZjE2ZTllYTEzYjFlY2I2
Zjk3YmE4N2EwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAKQEAgLTYxLDI0ICs2MSwyNCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsK
ICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KTsKIAotICAgICAgICBWZXJ0aWNhbEVkZ2VzIG5vbkNvbGxhcHNlZE1h
cmdpbiA9IHsgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5Ub3AoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDApLAorICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1h
cmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigw
KSwKICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQm90dG9t
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSB9OyAKLSAgICAgICAgVmVydGlj
YWxFZGdlcyBjb2xsYXBzZWRNYXJnaW4gPSB7IE1hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3AobGF5
b3V0U3RhdGUsIGxheW91dEJveCksIE1hcmdpbkNvbGxhcHNlOjptYXJnaW5Cb3R0b20obGF5b3V0
U3RhdGUsIGxheW91dEJveCkgfTsKKyAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBWZXJ0
aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6Om1hcmdpblRvcChs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJvdHRvbShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSB9OwogICAgICAgICBhdXRvIGJvcmRlckFuZFBhZGRpbmdUb3Ag
PSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFsdWVf
b3IoMCk7Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gaGVpZ2h0ID0gdXNlZEhlaWdodCA/IHVz
ZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0U3RhdGUsIGxheW91
dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKICAgICAgICAgaWYgKGhlaWdodCkKLSAgICAgICAg
ICAgIHJldHVybiB7IGhlaWdodC52YWx1ZSgpLCBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNl
ZE1hcmdpbiB9OworICAgICAgICAgICAgcmV0dXJuIHsgaGVpZ2h0LnZhbHVlKCksIHsgbm9uQ29s
bGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9OwogCiAgICAgICAgIGlmICghaXM8Q29u
dGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFz
SW5GbG93Q2hpbGQoKSkKLSAgICAgICAgICAgIHJldHVybiB7IDAsIG5vbkNvbGxhcHNlZE1hcmdp
biwgY29sbGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICByZXR1cm4geyAwLCB7IG5vbkNvbGxh
cHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH0gfTsKIAogICAgICAgICAvLyAxLiB0aGUgYm90
dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gsIGlmIHRoZSBib3ggZXN0YWJsaXNoZXMgYSBp
bmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGggb25lIG9yIG1vcmUgbGluZXMKICAgICAgICAg
aWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGVtcCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY29y
cmVjdCBkaXNwbGF5IGJveCBvbmNlIGlubGluZSBydW5zIG1vdmUgb3ZlciB0byB0aGUgZGlzcGxh
eSB0cmVlLgogICAgICAgICAgICAgYXV0byYgaW5saW5lUnVucyA9IGRvd25jYXN0PElubGluZUZv
cm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5
b3V0Qm94KSkuaW5saW5lUnVucygpOwogICAgICAgICAgICAgYXV0byBib3R0b21FZGdlID0gaW5s
aW5lUnVucy5pc0VtcHR5KCkgPyBMYXlvdXRVbml0KCkgOiBpbmxpbmVSdW5zLmxhc3QoKS5sb2dp
Y2FsQm90dG9tKCk7Ci0gICAgICAgICAgICByZXR1cm4geyBib3R0b21FZGdlLCBub25Db2xsYXBz
ZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OworICAgICAgICAgICAgcmV0dXJuIHsgYm90dG9t
RWRnZSwgeyBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9IH07CiAgICAgICAg
IH0KIAogICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2li
bHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNo
aWxkJ3MgYm90dG9tIG1hcmdpbi4uLgpAQCAtODYsNyArODYsNyBAQCBIZWlnaHRBbmRNYXJnaW4g
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0
QW5kTWFyZwogICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxkKTsKICAgICAgICAgaWYgKCFN
YXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KCpsYXN0SW5G
bG93Q2hpbGQpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXN0SW5GbG93RGlzcGxheUJveCA9IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxhc3RJbkZsb3dDaGlsZCk7Ci0gICAg
ICAgICAgICByZXR1cm4geyBsYXN0SW5GbG93RGlzcGxheUJveC5ib3R0b20oKSArIGxhc3RJbkZs
b3dEaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29s
bGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGxh
c3RJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2lu
Qm90dG9tKCkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCB7IG5vbkNvbGxhcHNlZE1hcmdpbiwgY29s
bGFwc2VkTWFyZ2luIH0gfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDMuIHRoZSBib3R0b20g
Ym9yZGVyIGVkZ2Ugb2YgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCB3aG9zZSB0b3AgbWFyZ2luIGRv
ZXNuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgZWxlbWVudCdzIGJvdHRvbSBtYXJnaW4KQEAgLTk1LDE2
ICs5NSwxNiBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICAgICAgaW5GbG93Q2hp
bGQgPSBpbkZsb3dDaGlsZC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAgICAgICAgIGlmIChp
bkZsb3dDaGlsZCkgewogICAgICAgICAgICAgYXV0byYgaW5GbG93RGlzcGxheUJveCA9IGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmluRmxvd0NoaWxkKTsKLSAgICAgICAgICAg
IHJldHVybiB7IGluRmxvd0Rpc3BsYXlCb3gudG9wKCkgKyBpbkZsb3dEaXNwbGF5Qm94LmJvcmRl
ckJveCgpLmhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2lu
LCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGluRmxvd0Rpc3BsYXlC
b3gudG9wKCkgKyBpbkZsb3dEaXNwbGF5Qm94LmJvcmRlckJveCgpLmhlaWdodCgpIC0gYm9yZGVy
QW5kUGFkZGluZ1RvcCwgeyBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9IH07
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA0LiB6ZXJvLCBvdGhlcndpc2UKLSAgICAgICAgcmV0
dXJuIHsgMCwgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAg
cmV0dXJuIHsgMCwgeyBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9IH07CiAg
ICAgfTsKIAogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZSgpOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRd
W01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRN
YXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJn
aW5WYWx1ZXMoKS50b3AgPDwgInB4LCAiIDw8IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFs
dWVzKCkuYm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwg
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdp
bi5tYXJnaW4udXNlZFZhbHVlcygpLnRvcCA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1h
cmdpbi51c2VkVmFsdWVzKCkuYm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91
dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47CiB9CiAKQEAgLTI2Myw3
ICsyNjMsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBMYQogCiAgICAgaGVpZ2h0QW5kTWFyZ2lu
ID0gUXVpcmtzOjpzdHJldGNoZWRIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0
QW5kTWFyZ2luKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4g
c3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdo
dCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVzKCku
dG9wIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpblZhbHVlcygpLmJvdHRv
bSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1b
TWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0IC0+
IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBo
ZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS50b3AgPDwgInB4LCAiIDw8IGhlaWdo
dEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJv
eCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCBiOGYw
MThhYzFkMjFmYTQ4MWQwZGQwOGVjZGY0ZWY4ODdjMTI0ZDI1Li5hMTlhNjA4MzlhOGViNWE5MDkx
YTc4NzAyZDY3YTI5ZmYxODMyZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dFF1aXJrcy5jcHAKQEAgLTgwLDkgKzgwLDkgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXQKIAog
ICAgIExheW91dFVuaXQgdG90YWxWZXJ0aWNhbE1hcmdpbnM7CiAgICAgaWYgKGxheW91dEJveC5p
c0RvY3VtZW50Qm94KCkpIHsKLSAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbnMgPSBoZWlnaHRB
bmRNYXJnaW4udXNlZE1hcmdpblZhbHVlcygpOworICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2lu
cyA9IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpOwogICAgICAgICAvLyBEb2N1
bWVudCBib3gncyBtYXJnaW5zIGRvIG5vdCBjb2xsYXBzZS4KLSAgICAgICAgQVNTRVJUKCFoZWln
aHRBbmRNYXJnaW4uY29sbGFwc2VkTWFyZ2luKTsKKyAgICAgICAgQVNTRVJUKCFoZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpKTsKICAgICAgICAgdG90YWxWZXJ0aWNhbE1h
cmdpbnMgPSB2ZXJ0aWNhbE1hcmdpbnMudG9wICsgdmVydGljYWxNYXJnaW5zLmJvdHRvbTsKICAg
ICB9IGVsc2UgaWYgKGxheW91dEJveC5pc0JvZHlCb3goKSkgewogICAgICAgICAvLyBIZXJlIGlz
IHRoZSBxdWlya3kgcGFydCBmb3IgYm9keSBib3g6CkBAIC05Myw3ICs5Myw3IEBAIEhlaWdodEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChj
b25zdCBMYXlvdXRTdGF0CiAKICAgICAgICAgLy8gVGhpcyBxdWlyayBoYXBwZW5zIHdoZW4gdGhl
IGJvZHkgaGVpZ2h0IGlzIDAgd2hpY2ggbWVhbnMgaXRzIHZlcnRpY2FsIG1hcmdpbnMgY29sbGFw
c2UgdGhyb3VnaCAodG9wIGFuZCBib3R0b20gbWFyZ2lucyBhcmUgYWRqb2luaW5nKS4KICAgICAg
ICAgLy8gSG93ZXZlciBub3cgdGhhdCB3ZSBzdHJldGNoIHRoZSBib2R5IHRoZXkgZG9uJ3QgY29s
bGFwc2UgdGhyb3VnaCBhbnltb3JlLCBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgbm9uLWNvbGxhcHNl
ZCB2YWx1ZXMgaW5zdGVhZC4KLSAgICAgICAgYXV0byBib2R5Qm94VmVydGljYWxNYXJnaW5zID0g
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA/IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luVmFsdWVz
KCkgOiBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luOworICAgICAgICBhdXRvIGJv
ZHlCb3hWZXJ0aWNhbE1hcmdpbnMgPSBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID8gaGVpZ2h0QW5k
TWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkgOiBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLm5vbkNv
bGxhcHNlZFZhbHVlcygpOwogICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2lucyA9IGJvZHlCb3hW
ZXJ0aWNhbE1hcmdpbnMudG9wICsgYm9keUJveFZlcnRpY2FsTWFyZ2lucy5ib3R0b207CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5j
cHAKaW5kZXggMTUzNDc5M2I3OGJiYTNlZDIzYjYwYTVkODJiYWM2MGFjYmQxYmQwMy4uNjViYzBm
MDcwYWU3MDU2YWU2NTVmMTk5MmEzYWJkZmM5ZjNkMjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApAQCAtNTcsOCArNTcsOCBAQCBC
b3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV90b3BMZWZ0KG90aGVyLm1fdG9wTGVm
dCkKICAgICAsIG1fY29udGVudFdpZHRoKG90aGVyLm1fY29udGVudFdpZHRoKQogICAgICwgbV9j
b250ZW50SGVpZ2h0KG90aGVyLm1fY29udGVudEhlaWdodCkKLSAgICAsIG1fbWFyZ2luKG90aGVy
Lm1fbWFyZ2luKQotICAgICwgbV92ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihvdGhlci5tX3Zl
cnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKQorICAgICwgbV9ob3Jpem9udGFsTWFyZ2luKG90aGVy
Lm1faG9yaXpvbnRhbE1hcmdpbikKKyAgICAsIG1fdmVydGljYWxNYXJnaW4ob3RoZXIubV92ZXJ0
aWNhbE1hcmdpbikKICAgICAsIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKG90aGVyLm1f
aG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKQogICAgICwgbV9lc3RpbWF0ZWRNYXJnaW5Ub3Ao
b3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5Ub3ApCiAgICAgLCBtX2JvcmRlcihvdGhlci5tX2JvcmRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmlu
ZGV4IDYyYTM5OTJjYWRhM2EwMTc5NThjNDBjODM4ZTVhMDU0MmViM2I0MDIuLmU0OWRlM2MzNmFl
ODUyMmJlYWU0MGU3MGRmZDk0YzNiYmFiNTNkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoK
ICAgICBSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRoKCks
IGhlaWdodCgpIH07IH0KICAgICBSZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4g
eyB0b3AoKSAtIG1hcmdpblRvcCgpLCBsZWZ0KCkgLSBtYXJnaW5MZWZ0KCksIG1hcmdpbkxlZnQo
KSArIHdpZHRoKCkgKyBtYXJnaW5SaWdodCgpLCBtYXJnaW5Ub3AoKSArIGhlaWdodCgpICsgbWFy
Z2luQm90dG9tKCkgfTsgfQogCisgICAgTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbE1h
cmdpbigpIGNvbnN0OwogICAgIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20o
KSBjb25zdDsKQEAgLTE5MCwxMCArMTkxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENvbnRl
bnRCb3hIZWlnaHQoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRDb250ZW50Qm94V2lkdGgoTGF5
b3V0VW5pdCk7CiAKLSAgICB2b2lkIHNldEhvcml6b250YWxNYXJnaW4oTGF5b3V0OjpIb3Jpem9u
dGFsRWRnZXMpOwotICAgIHZvaWQgc2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpWZXJ0aWNhbEVk
Z2VzKTsKLSAgICB2b2lkIHNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKExheW91dDo6VmVy
dGljYWxFZGdlcyk7Ci0gICAgdm9pZCBzZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oTGF5
b3V0OjpIb3Jpem9udGFsRWRnZXMpOworICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihMYXlv
dXQ6Okhvcml6b250YWxNYXJnaW4pOworICAgIHZvaWQgc2V0VmVydGljYWxNYXJnaW4oTGF5b3V0
OjpWZXJ0aWNhbE1hcmdpbik7CisgICAgdm9pZCBzZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJn
aW4oTGF5b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKICAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdp
blRvcChMYXlvdXRVbml0IG1hcmdpblRvcCkgeyBtX2VzdGltYXRlZE1hcmdpblRvcCA9IG1hcmdp
blRvcDsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXIoTGF5b3V0OjpFZGdlcyk7CkBAIC0yMjQsOSAr
MjI0LDkgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1fY29udGVudFdpZHRoOwogICAgIExh
eW91dFVuaXQgbV9jb250ZW50SGVpZ2h0OwogCi0gICAgTGF5b3V0OjpFZGdlcyBtX21hcmdpbjsK
LSAgICBMYXlvdXQ6OlZlcnRpY2FsRWRnZXMgbV92ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbjsK
LSAgICBMYXlvdXQ6Okhvcml6b250YWxFZGdlcyBtX2hvcml6b250YWxOb25Db21wdXRlZE1hcmdp
bjsKKyAgICBMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTWFyZ2luOworICAg
IExheW91dDo6VmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKKyAgICBMYXlvdXQ6Okhv
cml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW47CiAgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpblRvcDsKIAogICAgIExheW91dDo6
RWRnZXMgbV9ib3JkZXI7CkBAIC01MDcsMzIgKzUwNywyNSBAQCBpbmxpbmUgTGF5b3V0VW5pdCBC
b3g6OmNvbnRlbnRCb3hXaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudFdpZHRoOwog
fQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxNYXJnaW4oTGF5b3V0OjpIb3Jpem9u
dGFsRWRnZXMgbWFyZ2luKQoraW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKExh
eW91dDo6SG9yaXpvbnRhbE1hcmdpbiBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIHNldEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbigpOwogI2VuZGlmCi0gICAgbV9tYXJnaW4u
aG9yaXpvbnRhbCA9IG1hcmdpbjsKKyAgICBtX2hvcml6b250YWxNYXJnaW4gPSBtYXJnaW47CiB9
CiAKLWlubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpWZXJ0aWNhbEVk
Z2VzIG1hcmdpbikKK2lubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpW
ZXJ0aWNhbE1hcmdpbiBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHNldEhh
c1ZhbGlkVmVydGljYWxNYXJnaW4oKTsKLSNlbmRpZgotICAgIEFTU0VSVCghbV9lc3RpbWF0ZWRN
YXJnaW5Ub3AgfHwgKm1fZXN0aW1hdGVkTWFyZ2luVG9wID09IG1hcmdpbi50b3ApOwotICAgIG1f
bWFyZ2luLnZlcnRpY2FsID0gbWFyZ2luOwotfQotCi1pbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRp
Y2FsTm9uQ29sbGFwc2VkTWFyZ2luKExheW91dDo6VmVydGljYWxFZGdlcyBtYXJnaW4pCi17Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHNldEhhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRN
YXJnaW4oKTsKICNlbmRpZgotICAgIG1fdmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4gPSBtYXJn
aW47CisgICAgQVNTRVJUKCFtX2VzdGltYXRlZE1hcmdpblRvcCB8fCAqbV9lc3RpbWF0ZWRNYXJn
aW5Ub3AgPT0gbWFyZ2luLnVzZWRWYWx1ZXMoKS50b3ApOworICAgIG1fdmVydGljYWxNYXJnaW4g
PSBtYXJnaW47CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVk
TWFyZ2luKExheW91dDo6SG9yaXpvbnRhbEVkZ2VzIG1hcmdpbikKK2lubGluZSB2b2lkIEJveDo6
c2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKExheW91dDo6SG9yaXpvbnRhbE1hcmdpbiBt
YXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHNldEhhc1ZhbGlkSG9yaXpvbnRh
bE5vbkNvbXB1dGVkTWFyZ2luKCk7CkBAIC01NTYsNDAgKzU0OSw0NiBAQCBpbmxpbmUgdm9pZCBC
b3g6OnNldFBhZGRpbmcoc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQogICAg
IG1fcGFkZGluZyA9IHBhZGRpbmc7CiB9CiAKK2lubGluZSBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2lu
IEJveDo6dmVydGljYWxNYXJnaW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVy
dGljYWxNYXJnaW4pOworICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luOworfQorCiBpbmxpbmUg
TGF5b3V0VW5pdCBCb3g6Om1hcmdpblRvcCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFs
aWRWZXJ0aWNhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fbWFyZ2luLnZlcnRpY2FsLnRvcDsKKyAg
ICByZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi51c2VkVmFsdWVzKCkudG9wOwogfQogCiBpbmxpbmUg
TGF5b3V0VW5pdCBCb3g6Om1hcmdpbkxlZnQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fbWFyZ2luLmhvcml6b250YWwubGVm
dDsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsTWFyZ2luLmxlZnQ7CiB9CiAKIGlubGluZSBMYXlv
dXRVbml0IEJveDo6bWFyZ2luQm90dG9tKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxp
ZFZlcnRpY2FsTWFyZ2luKTsKLSAgICByZXR1cm4gbV9tYXJnaW4udmVydGljYWwuYm90dG9tOwor
ICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luLnVzZWRWYWx1ZXMoKS5ib3R0b207CiB9CiAKIGlu
bGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luUmlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVCht
X2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fbWFyZ2luLmhvcml6b250
YWwucmlnaHQ7CisgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdpbi5yaWdodDsKIH0KIAogaW5s
aW5lIExheW91dFVuaXQgQm94Ojpub25Db2xsYXBzZWRNYXJnaW5Ub3AoKSBjb25zdAogewogICAg
IEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4pOwotICAgIHJldHVy
biBtX3ZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luLnRvcDsKKyAgICByZXR1cm4gbV92ZXJ0aWNh
bE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKS50b3A7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0
IEJveDo6bm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9o
YXNWYWxpZFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKTsKLSAgICByZXR1cm4gbV92ZXJ0aWNh
bE5vbkNvbGxhcHNlZE1hcmdpbi5ib3R0b207CisgICAgcmV0dXJuIG1fdmVydGljYWxNYXJnaW4u
bm9uQ29sbGFwc2VkVmFsdWVzKCkuYm90dG9tOwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBCb3g6
Om5vbkNvbXB1dGVkTWFyZ2luTGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggODE0MjM0MjMwZWFkY2UwMzA1Mjk2
NWYwMzU4MTUxYzllYTYwYjg4Ni4uMjc1MzE5NDAzOGE5ODZhMDdjZWI2OWQwYTJkM2E1MDFkNjdk
MDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250
ZXh0LmNwcApAQCAtMTkyLDggKzE5MiwxNyBAQCBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9uPiBGbG9h
dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveAogICAg
ICAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBkaXNwbGF5Qm94Lm1hcmdpblRvcCgpOwog
CiAgICAgICAgICAgICAvLyBSZXNldCBwcmV2aW91cyBib3R0b20gYW5kIGN1cnJlbnQgdG9wIG1h
cmdpbnMgdG8gbm9uLWNvbGxhcHNpbmcuCi0gICAgICAgICAgICBwcmV2aW91c0luRmxvd0Rpc3Bs
YXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2lu
VG9wKCksIHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20o
KSB9KTsKLSAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyBkaXNwbGF5
Qm94Lm5vbkNvbGxhcHNlZE1hcmdpblRvcCgpLCBkaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpIH0p
OworICAgICAgICAgICAgYXV0byBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luID0gcHJldmlvdXNJbkZs
b3dEaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAgICAgICBpZiAocHJldmlvdXNW
ZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKSAmJiBwcmV2aW91c1ZlcnRpY2FsTWFyZ2lu
LmNvbGxhcHNlZFZhbHVlcygpLT5ib3R0b20pIHsKKyAgICAgICAgICAgICAgICBwcmV2aW91c1Zl
cnRpY2FsTWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHByZXZpb3VzVmVydGljYWxNYXJnaW4u
Y29sbGFwc2VkVmFsdWVzKCktPnRvcCwgeyB9IH0pOworICAgICAgICAgICAgICAgIHByZXZpb3Vz
SW5GbG93RGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihwcmV2aW91c1ZlcnRpY2FsTWFyZ2lu
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBjb2xsYXBz
aW5nIHRocm91Z2ggaGFzIGFueXRoaW5nIHRvIGRvIHdpdGggdGhpcy4KKyAgICAgICAgICAgIGF1
dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7CisgICAgICAg
ICAgICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJn
aW4uY29sbGFwc2VkVmFsdWVzKCktPnRvcCkgeworICAgICAgICAgICAgICAgIHZlcnRpY2FsTWFy
Z2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFs
dWVzKCktPmJvdHRvbSB9KTsKKyAgICAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
TWFyZ2luKHZlcnRpY2FsTWFyZ2luKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXV0
byBub25Db2xsYXBzZWRNYXJnaW4gPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQm90
dG9tKCkgKyBkaXNwbGF5Qm94Lm1hcmdpblRvcCgpOwogICAgICAgICAgICAgYXV0byBtYXJnaW5P
ZmZzZXQgPSBub25Db2xsYXBzZWRNYXJnaW4gLSBjb2xsYXBzZWRNYXJnaW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZjg3MjUyNzIwMzA3NDIzYzk5NDcxOTM4ODdl
OTM5NjcyNTM4MzFiZS4uYzdhZDljNWM5ZDExNzA1ZmViNTc3OGFkNDA4NjNkNjM4NGM3MjZlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzYyLDggKzM2Miw3IEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0
U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3BsYXlCb3gu
c2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKLSAgICBkaXNwbGF5
Qm94LnNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5ub25Db2xs
YXBzZWRNYXJnaW4pOwotICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5k
TWFyZ2luLnVzZWRNYXJnaW5WYWx1ZXMoKSk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1h
cmdpbihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgcm9vdCkgY29u
c3QK
</data>
<flag name="review"
          id="374206"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>