<?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>218017</bug_id>
          
          <creation_ts>2020-10-21 05:45:58 -0700</creation_ts>
          <short_desc>[LFC][Integration] Update style of contained layout boxes</short_desc>
          <delta_ts>2020-10-21 18:15:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</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>1700152</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 05:45:58 -0700</bug_when>
    <thetext>Need to integrate style updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700154</commentid>
    <comment_count>1</comment_count>
      <attachid>411976</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 05:50:25 -0700</bug_when>
    <thetext>Created attachment 411976
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700167</commentid>
    <comment_count>2</comment_count>
      <attachid>411981</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 07:02:33 -0700</bug_when>
    <thetext>Created attachment 411981
for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700175</commentid>
    <comment_count>3</comment_count>
      <attachid>411984</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 07:59:28 -0700</bug_when>
    <thetext>Created attachment 411984
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700193</commentid>
    <comment_count>4</comment_count>
      <attachid>411984</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-21 08:28:05 -0700</bug_when>
    <thetext>Comment on attachment 411984
patch

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

&gt; Source/WebCore/layout/integration/LayoutIntegrationBoxTree.h:71
&gt; +    mutable HashMap&lt;const RenderObject*, Layout::Box*&gt; m_rendererToBoxMap;
&gt; +    mutable HashMap&lt;const Layout::Box*, RenderObject*&gt; m_boxToRendererMap;

probably not need to be mutable anymore, as discussed in slack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700194</commentid>
    <comment_count>5</comment_count>
      <attachid>411988</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 08:30:33 -0700</bug_when>
    <thetext>Created attachment 411988
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700219</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-21 09:21:09 -0700</bug_when>
    <thetext>Committed r268798: &lt;https://trac.webkit.org/changeset/268798&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411988.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700220</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-21 09:22:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/70531938&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700304</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 11:58:48 -0700</bug_when>
    <thetext>Followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700305</commentid>
    <comment_count>9</comment_count>
      <attachid>412013</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-21 12:01:29 -0700</bug_when>
    <thetext>Created attachment 412013
followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700322</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-21 12:34:09 -0700</bug_when>
    <thetext>Committed r268818: &lt;https://trac.webkit.org/changeset/268818&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412013.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700498</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-10-21 18:12:57 -0700</bug_when>
    <thetext>Committed r268850: &lt;https://trac.webkit.org/changeset/268850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700501</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-10-21 18:15:45 -0700</bug_when>
    <thetext>The GTK stable builders build without experimental features enabled and LFC is only enabled when experimental features are enabled, thus it broke those builders. Example: https://build.webkit.org/builders/GTK-Linux-64-bit-Release-Debian-Stable-Build/builds/38728/steps/compile-webkit/logs/stdio

So I landed the build-fix below for !ENABLE_LAYOUT_FORMATTING_CONTEXT

(In reply to Carlos Alberto Lopez Perez from comment #11)
&gt; Committed r268850: &lt;https://trac.webkit.org/changeset/268850&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411976</attachid>
            <date>2020-10-21 05:50:25 -0700</date>
            <delta_ts>2020-10-21 07:02:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lfc-child-style-update.patch</filename>
            <type>text/plain</type>
            <size>20040</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKaW5kZXggYWJiOGJlYzY1MzZmLi5mZTgyY2NmN2Nh
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkJveFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCkBAIC00OCwxOCArNDgsMTkgQEAgc3Rh
dGljIFJlbmRlclN0eWxlIHJvb3RCb3hTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgcmV0dXJuIGNsb25lZFN0eWxlOwogfQogCi1Cb3hUcmVlOjpCb3hUcmVlKGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdykKLSAgICA6IG1fcm9vdChyb290Qm94U3R5bGUoZmxvdy5zdHlsZSgp
KSkKK0JveFRyZWU6OkJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiBmbG93KQorICAgIDogbV9mbG93
KGZsb3cpCisgICAgLCBtX3Jvb3Qocm9vdEJveFN0eWxlKGZsb3cuc3R5bGUoKSkpCiB7CiAgICAg
aWYgKGZsb3cuaXNBbm9ueW1vdXMoKSkKICAgICAgICAgbV9yb290LnNldElzQW5vbnltb3VzKCk7
CiAKLSAgICBidWlsZFRyZWUoZmxvdyk7CisgICAgYnVpbGRUcmVlKCk7CiB9CiAKLXZvaWQgQm94
VHJlZTo6YnVpbGRUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3ZvaWQgQm94VHJl
ZTo6YnVpbGRUcmVlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNoaWxkUmVuZGVyZXIgOiBjaGlsZHJl
bk9mVHlwZTxSZW5kZXJPYmplY3Q+KGZsb3cpKSB7CisgICAgZm9yIChhdXRvJiBjaGlsZFJlbmRl
cmVyIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihtX2Zsb3cpKSB7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkJveD4gY2hpbGRCb3g7CiAgICAgICAgIGlmIChpczxSZW5k
ZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYgdGV4dFJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcik7CkBAIC04Miw0MCArODMsNjkg
QEAgdm9pZCBCb3hUcmVlOjpidWlsZFRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQog
ICAgIH0KIH0KIAotY29uc3QgTGF5b3V0OjpCb3gqIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0Cit2b2lkIEJveFRyZWU6OnVw
ZGF0ZVN0eWxlKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKIHsKKyAgICBh
dXRvJiBsYXlvdXRCb3ggPSBsYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgYXV0
byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOworCisgICAgbGF5b3V0Qm94LnVwZGF0ZVN0eWxl
KHN0eWxlKTsKKworICAgIGlmICgmbGF5b3V0Qm94ID09ICZtX3Jvb3QpIHsKKyAgICAgICAgZm9y
IChhdXRvKiBjaGlsZCA9IG1fcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzQW5vbnltb3VzKCkp
CisgICAgICAgICAgICAgICAgY2hpbGQtPnVwZGF0ZVN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK0xheW91dDo6Qm94JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIGlmICgmcmVuZGVy
ZXIgPT0gJm1fZmxvdykKKyAgICAgICAgcmV0dXJuIG1fcm9vdDsKKwogICAgIGlmIChtX2JveGVz
LnNpemUoKSA8PSBzbWFsbFRyZWVUaHJlc2hvbGQpIHsKICAgICAgICAgYXV0byBpbmRleCA9IG1f
Ym94ZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkgewogICAgICAgICAgICAgcmV0dXJu
IGVudHJ5LnJlbmRlcmVyID09ICZyZW5kZXJlcjsKICAgICAgICAgfSk7Ci0gICAgICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBy
ZXR1cm4gbV9ib3hlc1tpbmRleF0uYm94LmdldCgpOworICAgICAgICBBU1NFUlQoaW5kZXggIT0g
bm90Rm91bmQpOworICAgICAgICByZXR1cm4gKm1fYm94ZXNbaW5kZXhdLmJveDsKICAgICB9CiAK
ICAgICBpZiAobV9yZW5kZXJlclRvQm94TWFwLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbV9ib3hlcykKICAgICAgICAgICAgIG1fcmVuZGVyZXJUb0JveE1hcC5hZGQo
ZW50cnkucmVuZGVyZXIsIGVudHJ5LmJveC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3Jl
bmRlcmVyVG9Cb3hNYXAuZ2V0KCZyZW5kZXJlcik7CisgICAgcmV0dXJuICptX3JlbmRlcmVyVG9C
b3hNYXAuZ2V0KCZyZW5kZXJlcik7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogQm94VHJlZTo6
cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGJveCkgY29uc3QKK2NvbnN0
IExheW91dDo6Qm94JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyKSBjb25zdAogeworICAgIHJldHVybiBjb25zdF9jYXN0PEJveFRyZWUm
PigqdGhpcykubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyZXIpOworfQorCitSZW5kZXJPYmpl
Y3QmIEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBib3gp
Cit7CisgICAgaWYgKCZib3ggPT0gJm1fcm9vdCkKKyAgICAgICAgcmV0dXJuIG1fZmxvdzsKKwog
ICAgIGlmIChtX2JveGVzLnNpemUoKSA8PSBzbWFsbFRyZWVUaHJlc2hvbGQpIHsKICAgICAgICAg
YXV0byBpbmRleCA9IG1fYm94ZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkgewogICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5LmJveC5nZXQoKSA9PSAmYm94OwogICAgICAgICB9KTsKLSAg
ICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBtX2JveGVzW2luZGV4XS5yZW5kZXJlcjsKKyAgICAgICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuICptX2JveGVzW2luZGV4XS5yZW5k
ZXJlcjsKICAgICB9CiAKICAgICBpZiAobV9ib3hUb1JlbmRlcmVyTWFwLmlzRW1wdHkoKSkgewog
ICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9ib3hlcykKICAgICAgICAgICAgIG1fYm94VG9S
ZW5kZXJlck1hcC5hZGQoZW50cnkuYm94LmdldCgpLCBlbnRyeS5yZW5kZXJlcik7CiAgICAgfQot
ICAgIHJldHVybiBtX2JveFRvUmVuZGVyZXJNYXAuZ2V0KCZib3gpOworICAgIHJldHVybiAqbV9i
b3hUb1JlbmRlcmVyTWFwLmdldCgmYm94KTsKK30KKworY29uc3QgUmVuZGVyT2JqZWN0JiBCb3hU
cmVlOjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgYm94KSBjb25zdAor
eworICAgIHJldHVybiBjb25zdF9jYXN0PEJveFRyZWUmPigqdGhpcykucmVuZGVyZXJGb3JMYXlv
dXRCb3goYm94KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCmluZGV4IDgyMjI5NGJk
ZDNkZC4uOTVlNWNkNGUzMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCkBAIC0zNCwzMSAr
MzQsNDEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyQmxvY2tGbG93Owor
Y2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlv
biB7CiAKIGNsYXNzIEJveFRyZWUgewogcHVibGljOgotICAgIEJveFRyZWUoY29uc3QgUmVuZGVy
QmxvY2tGbG93Jik7CisgICAgQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmKTsKKworICAgIHZvaWQg
dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKTsKKworICAgIGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fZmxvdzsgfQorICAgIFJlbmRl
ckJsb2NrRmxvdyYgZmxvdygpIHsgcmV0dXJuIG1fZmxvdzsgfQogCiAgICAgY29uc3QgTGF5b3V0
OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiByb290TGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4g
bV9yb290OyB9CiAgICAgTGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiByb290TGF5b3V0
Qm94KCkgeyByZXR1cm4gbV9yb290OyB9CiAKLSAgICBjb25zdCBMYXlvdXQ6OkJveCogbGF5b3V0
Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7Ci0gICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0
OworICAgIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QmKSBjb25zdDsKKyAgICBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94Rm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0Jik7CisKKyAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0
JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgYnVpbGRUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworICAgIHZvaWQgYnVp
bGRUcmVlKCk7CiAKKyAgICBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKICAgICBMYXlvdXQ6Oklu
aXRpYWxDb250YWluaW5nQmxvY2sgbV9yb290OwogICAgIHN0cnVjdCBCb3hBbmRSZW5kZXJlciB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBMYXlvdXQ6OkJveD4gYm94OwotICAgICAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyIHsgbnVsbHB0ciB9OworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5b3V0OjpCb3g+IGJveDsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciB7IG51bGxwdHIgfTsKICAgICB9OwogICAgIFZlY3RvcjxCb3hBbmRSZW5kZXJlciwgMT4g
bV9ib3hlczsKIAotICAgIG11dGFibGUgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXQ6OkJveCo+IG1fcmVuZGVyZXJUb0JveE1hcDsKLSAgICBtdXRhYmxlIEhhc2hNYXA8
Y29uc3QgTGF5b3V0OjpCb3gqLCBjb25zdCBSZW5kZXJPYmplY3QqPiBtX2JveFRvUmVuZGVyZXJN
YXA7CisgICAgbXV0YWJsZSBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIExheW91dDo6Qm94
Kj4gbV9yZW5kZXJlclRvQm94TWFwOworICAgIG11dGFibGUgSGFzaE1hcDxjb25zdCBMYXlvdXQ6
OkJveCosIFJlbmRlck9iamVjdCo+IG1fYm94VG9SZW5kZXJlck1hcDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCAzOWFhYzBmNTZlNzEuLmNlOWEwMWY0YjJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNkZWZpbmUgQUxMT1dfSU5MSU5F
X0lNQUdFUyAwCisjZGVmaW5lIEFMTE9XX0lOTElORV9JTUFHRVMgMQogCiAjaWZuZGVmIE5ERUJV
RwogI2RlZmluZSBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKHJlYXNvbiwgcmVhc29u
cywgaW5jbHVkZVJlYXNvbnMpIHsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50
LmNwcAppbmRleCAyYzE5OGVlZWY0ZGYuLmU4Yjk5ZjI4YjJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uSW5saW5lQ29udGVudC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY29uc3QgTGluZUxheW91
dCYgSW5saW5lQ29udGVudDo6bGluZUxheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2xpbmVM
YXlvdXQ7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogSW5saW5lQ29udGVudDo6cmVuZGVyZXJG
b3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKK2NvbnN0IFJl
bmRlck9iamVjdCYgSW5saW5lQ29udGVudDo6cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5
b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saW5lTGF5b3V0LT5y
ZW5kZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5s
aW5lQ29udGVudC5oCmluZGV4IDIyM2M5MjU0OWQxZS4uODQ3Y2NlNDZiNWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBJbmxp
bmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5lQ29udGVudD4gewogICAgIHZvaWQg
c2hyaW5rVG9GaXQoKTsKIAogICAgIGNvbnN0IExpbmVMYXlvdXQmIGxpbmVMYXlvdXQoKSBjb25z
dDsKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxh
eW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIElubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUxheW91dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IDU5MGNkZTBmYTM3OS4uMmJkZGY3NmE5YTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5o
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBzdGFydEluZGV4ID0gbGlu
ZSgpLmZpcnN0UnVuSW5kZXgoKTsKICAgICAgICAgYXV0byBlbmRJbmRleCA9IHN0YXJ0SW5kZXgg
KyBsaW5lKCkucnVuQ291bnQoKTsKICAgICAgICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gc3RhcnRJ
bmRleDsgcnVuSW5kZXggPCBlbmRJbmRleDsgKytydW5JbmRleCkgewotICAgICAgICAgICAgYXV0
byYgcmVuZGVyZXIgPSAqbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChtX2lu
bGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJveCgpKTsKKyAgICAgICAgICAgIGF1
dG8mIHJlbmRlcmVyID0gbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChtX2lu
bGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJveCgpKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlci5ub2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29u
dGVudCwgcnVuSW5kZXggfTsKICAgICAgICAgfQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYXV0byBzdGFydEluZGV4ID0gbGluZSgpLmZpcnN0UnVuSW5kZXgoKTsKICAgICAg
ICAgYXV0byBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBsaW5lKCkucnVuQ291bnQoKTsKICAgICAg
ICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gZW5kSW5kZXg7IHJ1bkluZGV4LS0gPiBzdGFydEluZGV4
OykgewotICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSAqbV9pbmxpbmVDb250ZW50LT5yZW5k
ZXJlckZvckxheW91dEJveChtX2lubGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJv
eCgpKTsKKyAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9pbmxpbmVDb250ZW50LT5yZW5k
ZXJlckZvckxheW91dEJveChtX2lubGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJv
eCgpKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci5ub2RlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgKm1faW5saW5lQ29udGVudCwgcnVuSW5kZXggfTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCBmMWYwMTU1OGYwYTEuLjg1YmNhMTIyYTRl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLUxp
bmVMYXlvdXQ6OkxpbmVMYXlvdXQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQorTGluZUxh
eW91dDo6TGluZUxheW91dChSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgOiBtX2Zsb3coZmxv
dykKICAgICAsIG1fYm94VHJlZShmbG93KQogICAgICwgbV9sYXlvdXRTdGF0ZShtX2Zsb3cuZG9j
dW1lbnQoKSwgcm9vdExheW91dEJveCgpKQpAQCAtNjYsNiArNjYsMjEgQEAgTGluZUxheW91dDo6
TGluZUxheW91dChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAKIExpbmVMYXlvdXQ6On5M
aW5lTGF5b3V0KCkgPSBkZWZhdWx0OwogCitMaW5lTGF5b3V0KiBMaW5lTGF5b3V0Ojpjb250YWlu
aW5nKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHJl
bmRlcmVyLnBhcmVudCgpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCpwYXJl
bnQpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnBhcmVu
dCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCk7CisgICAgfQorCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IExpbmVMYXlvdXQqIExpbmVMYXlvdXQ6OmNvbnRhaW5p
bmcoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gY29udGFpbmlu
Zyhjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJlbmRlcmVyKSk7Cit9CisKIGJvb2wgTGluZUxh
eW91dDo6aXNFbmFibGVkKCkKIHsKICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxl
ZCgpOwpAQCAtODcsMjMgKzEwMiwxNSBAQCBib29sIExpbmVMYXlvdXQ6OmNhblVzZUZvckFmdGVy
U3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBTdHlsZURpZgogCiB2b2lk
IExpbmVMYXlvdXQ6OnVwZGF0ZVJlcGxhY2VkRGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJl
cGxhY2VkKQogewotICAgIGF1dG8mIGxheW91dEJveCA9ICptX2JveFRyZWUubGF5b3V0Qm94Rm9y
UmVuZGVyZXIocmVwbGFjZWQpOwotICAgIGF1dG8mIHJlcGxhY2VkQm94ID0gY29uc3RfY2FzdDxM
YXlvdXQ6OlJlcGxhY2VkQm94Jj4oZG93bmNhc3Q8TGF5b3V0OjpSZXBsYWNlZEJveD4obGF5b3V0
Qm94KSk7CisgICAgYXV0byYgbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRl
cmVyKHJlcGxhY2VkKTsKKyAgICBhdXRvJiByZXBsYWNlZEJveCA9IGRvd25jYXN0PExheW91dDo6
UmVwbGFjZWRCb3g+KGxheW91dEJveCk7CiAKICAgICByZXBsYWNlZEJveC5zZXRDb250ZW50U2l6
ZUZvckludGVncmF0aW9uKHsgcmVwbGFjZWQuY29udGVudExvZ2ljYWxXaWR0aCgpLCByZXBsYWNl
ZC5jb250ZW50TG9naWNhbEhlaWdodCgpIH0pOwogfQogCi12b2lkIExpbmVMYXlvdXQ6OnVwZGF0
ZVN0eWxlKCkKK3ZvaWQgTGluZUxheW91dDo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHJlbmRlcmVyKQogewotICAgIGF1dG8mIHJvb3QgPSByb290TGF5b3V0Qm94KCk7
Ci0KLSAgICAvLyBGSVhNRTogRW5jYXBzdWxhdGUgc3R5bGUgdXBkYXRlcyBiZXR0ZXIuCi0gICAg
cm9vdC51cGRhdGVTdHlsZShtX2Zsb3cuc3R5bGUoKSk7Ci0KLSAgICBmb3IgKGF1dG8qIGNoaWxk
ID0gcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgICAgIGNoaWxk
LT51cGRhdGVTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShyb290LnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKLSAgICB9CisgICAgbV9ib3hU
cmVlLnVwZGF0ZVN0eWxlKHJlbmRlcmVyKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQo
KQpAQCAtMTY4LDcgKzE3NSw3IEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgp
CiAgICAgICAgICAgICBkaXNwbGF5SW5saW5lQ29udGVudC5ydW5zLmFwcGVuZChkaXNwbGF5UnVu
KTsKIAogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpKTsK
ICAgICAgICAgICAgICAgICBhdXRvIGJvcmRlckJveExvY2F0aW9uID0gRmxvYXRQb2ludCB7IHJ1
blJlY3QueCgpLCBydW5SZWN0LnkoKSArIG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gobGF5
b3V0Qm94KS5tYXJnaW5CZWZvcmUoKSB9OwogICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVu
ZGVyQm94Jj4ocmVuZGVyZXIpLnNldExvY2F0aW9uKGZsb29yZWRMYXlvdXRQb2ludChib3JkZXJC
b3hMb2NhdGlvbikpOwogICAgICAgICAgICAgfQpAQCAtMzM4LDEyICszNDUsMTEgQEAgVGV4dFJ1
bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmIHJlbmRl
clRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgYXV0byogbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRl
cmVyKHJlbmRlclRleHQpOwotICAgIEFTU0VSVChsYXlvdXRCb3gpOworICAgIGF1dG8mIGxheW91
dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJUZXh0KTsKIAogICAg
IGF1dG8gZmlyc3RJbmRleCA9IFsmXSgpIC0+IE9wdGlvbmFsPHNpemVfdD4gewogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCZtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV0ubGF5b3V0Qm94KCkg
PT0gbGF5b3V0Qm94KQorICAgICAgICAgICAgaWYgKCZtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV0u
bGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMzU5LDE5ICszNjUsMTggQEAgUnVuSXRl
cmF0b3IgTGluZUxheW91dDo6cnVuRm9yKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCiAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgYXV0byogbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVy
KHJlbmRlckVsZW1lbnQpOwotICAgIEFTU0VSVChsYXlvdXRCb3gpOworICAgIGF1dG8mIGxheW91
dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmxpbmVDb250ZW50LT5ydW5zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIGF1dG8mIHJ1biA9ICBtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV07Ci0g
ICAgICAgIGlmICgmcnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkKKyAgICAgICAgaWYgKCZy
dW4ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKICAgICAgICAgICAgIHJldHVybiB7IFJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aCgqbV9pbmxpbmVDb250ZW50LCBpKSB9OwogICAgIH0KIAogICAgIHJl
dHVybiB7IH07CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogTGluZUxheW91dDo6cmVuZGVyZXJG
b3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKK2NvbnN0IFJl
bmRlck9iamVjdCYgTGluZUxheW91dDo6cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0
OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ib3hUcmVlLnJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiB9CkBAIC00MDIsOSArNDA3LDkgQEAgdm9pZCBMaW5l
TGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogCiAgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVDb250ZW50LnJ1bnNGb3JS
ZWN0KHBhaW50UmVjdCkpIHsKICAgICAgICAgaWYgKCFydW4udGV4dENvbnRlbnQoKSkgewotICAg
ICAgICAgICAgYXV0byogcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3go
cnVuLmxheW91dEJveCgpKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
aXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIHJlbmRlckJveCA9IGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oZG93bmNhc3Q8UmVu
ZGVyQm94PigqcmVuZGVyZXIpKTsKKyAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9ib3hU
cmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKSk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcik7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlckJveC5oYXNTZWxmUGFpbnRpbmdMYXll
cigpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAo
IXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyQm94KSkKQEAgLTQ4OSw3ICs0
OTQsNyBAQCBib29sIExpbmVMYXlvdXQ6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYwogICAgICAgICBpZiAoc3R5bGUudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgc3R5bGUucG9pbnRlckV2ZW50cygpID09
IFBvaW50ZXJFdmVudHM6Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvJiByZW5kZXJlciA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4oKm1fYm94VHJlZS5yZW5k
ZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkpKTsKKyAgICAgICAgYXV0byYgcmVuZGVy
ZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpKTsKIAog
ICAgICAgICByZW5kZXJlci51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNv
bnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlci5ub2Rl
Rm9ySGl0VGVzdCgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBydW5SZWN0KSA9PSBI
aXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXgg
NDVmOGE3MGEzNjZjLi5jNjM1N2FiOWY4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0
UmVzdWx0OwogY2xhc3MgUmVuZGVyQmxvY2tGbG93OwogY2xhc3MgUmVuZGVyQm94OworY2xhc3Mg
UmVuZGVyQm94TW9kZWxPYmplY3Q7CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBuYW1lc3BhY2UgTGF5
b3V0SW50ZWdyYXRpb24gewpAQCAtNTEsMTUgKzUyLDE4IEBAIHN0cnVjdCBJbmxpbmVDb250ZW50
OwogY2xhc3MgTGluZUxheW91dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaW5lTGF5b3V0PiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTGluZUxheW91dChj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKKyAgICBMaW5lTGF5b3V0KFJlbmRlckJsb2NrRmxvdyYp
OwogICAgIH5MaW5lTGF5b3V0KCk7CiAKKyAgICBzdGF0aWMgTGluZUxheW91dCogY29udGFpbmlu
ZyhSZW5kZXJPYmplY3QmKTsKKyAgICBzdGF0aWMgY29uc3QgTGluZUxheW91dCogY29udGFpbmlu
Zyhjb25zdCBSZW5kZXJPYmplY3QmKTsKKwogICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgpOwog
ICAgIHN0YXRpYyBib29sIGNhblVzZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICBz
dGF0aWMgYm9vbCBjYW5Vc2VGb3JBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYsIFN0eWxlRGlmZmVyZW5jZSk7CiAKICAgICB2b2lkIHVwZGF0ZVJlcGxhY2VkRGltZW5zaW9u
cyhjb25zdCBSZW5kZXJCb3gmKTsKLSAgICB2b2lkIHVwZGF0ZVN0eWxlKCk7CisgICAgdm9pZCB1
cGRhdGVTdHlsZShjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYpOwogICAgIHZvaWQgbGF5b3V0
KCk7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CkBAIC04
MCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bnNGb3IoY29u
c3QgUmVuZGVyVGV4dCYpIGNvbnN0OwogICAgIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5k
ZXJFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9y
TGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiAg
ICAgc3RhdGljIHZvaWQgcmVsZWFzZUNhY2hlcyhSZW5kZXJWaWV3Jik7CiAKQEAgLTk1LDcgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKTsKICAgICB2
b2lkIHJlbGVhc2VJbmxpbmVJdGVtQ2FjaGUoKTsKIAotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYgbV9mbG93OworICAgIFJlbmRlckJsb2NrRmxvdyYgbV9mbG93OwogICAgIEJveFRyZWUgbV9i
b3hUcmVlOwogICAgIExheW91dDo6TGF5b3V0U3RhdGUgbV9sYXlvdXRTdGF0ZTsKICAgICBMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IGFjYzM4
ODA4NDIwYy4uNjQ4ZWI2MmFmOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
ICptX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bigpLmxheW91dEJveCgp
KTsKKyAgICAgICAgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cmVuZGVyZXJGb3JMYXlvdXRCb3go
cnVuKCkubGF5b3V0Qm94KCkpOwogICAgIH0KIAogICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dFJ1
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4
IDgzNzU0ODVlYmEwYy4uZjdiYWE5OTQ3YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMjEwOSw4ICsyMTA5LDEwIEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sCiAgICAgICAgIHVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKCk7CiAK
ICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSAgICBpZiAobGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCkpCi0gICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250
ZXh0TGluZUxheW91dCgpLT51cGRhdGVTdHlsZSgpOworICAgIGlmIChkaWZmID09IFN0eWxlRGlm
ZmVyZW5jZTo6TGF5b3V0KSB7CisgICAgICAgIGlmIChhdXRvKiBsaW5lTGF5b3V0ID0gbGF5b3V0
Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCkpCisgICAgICAgICAgICBsaW5lTGF5b3V0LT51
cGRhdGVTdHlsZSgqdGhpcyk7CisgICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKaW5kZXggY2UwZjM4MTZmYTQ1Li5kMWYwYTQ3ZTVmYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
ICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5o
IgogI2luY2x1ZGUgIlJlbmRlckJveEZyYWdtZW50SW5mby5oIgpAQCAtNDA3LDYgKzQwOCwxMSBA
QCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogICAgIC8vIGFueSBvdmVycmlkZSBjb250ZW50IHNp
emUgc2V0IGJ5IG91ciBjb250YWluZXIsIGJlY2F1c2UgaXQgd291bGQgbGlrZWx5IGJlIGluY29y
cmVjdCBhZnRlciB0aGUgc3R5bGUgY2hhbmdlLgogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+c3R5bGUoKS5pc0Rpc3BsYXlGbGV4aWJsZU9y
R3JpZEJveCgpKQogICAgICAgICBjbGVhck92ZXJyaWRlQ29udGVudFNpemUoKTsKKworICAgIGlm
IChkaWZmID09IFN0eWxlRGlmZmVyZW5jZTo6TGF5b3V0KSB7CisgICAgICAgIGlmIChhdXRvKiBs
aW5lTGF5b3V0ID0gTGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmNvbnRhaW5pbmcoKnRo
aXMpKQorICAgICAgICAgICAgbGluZUxheW91dC0+dXBkYXRlU3R5bGUoKnRoaXMpOworICAgIH0K
IH0KIAogdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUdyaWRQb3NpdGlvbkFmdGVyU3R5bGVDaGFuZ2Uo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9sYXlvdXRfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKaW5kZXggMWZlNjBiOGMwZDFj
Li4xYzdiMWRmMTdiM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIu
cHkKQEAgLTE2Niw2ICsxNjYsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgc2VsZi5fbWFya19pbnRlcnJ1cHRlZF90ZXN0c19hc19za2lwcGVkKHJ1
bl9yZXN1bHRzKQogICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2Vw
dGlvbihtZXNzYWdlKQogCisgICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2ZhaWx1
cmVzID0gTm9uZQogICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgKICAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMuZXhpdF9hZnRlcl9uX2ZhaWx1cmVzLAogICAgICAgICAgICAg
cnVuX3Jlc3VsdHMudW5leHBlY3RlZF9mYWlsdXJlcywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411981</attachid>
            <date>2020-10-21 07:02:33 -0700</date>
            <delta_ts>2020-10-21 07:59:28 -0700</delta_ts>
            <desc>for bots</desc>
            <filename>lfc-child-style-update-2.patch</filename>
            <type>text/plain</type>
            <size>20231</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKaW5kZXggYWJiOGJlYzY1MzZmLi5mZTgyY2NmN2Nh
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkJveFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCkBAIC00OCwxOCArNDgsMTkgQEAgc3Rh
dGljIFJlbmRlclN0eWxlIHJvb3RCb3hTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgcmV0dXJuIGNsb25lZFN0eWxlOwogfQogCi1Cb3hUcmVlOjpCb3hUcmVlKGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdykKLSAgICA6IG1fcm9vdChyb290Qm94U3R5bGUoZmxvdy5zdHlsZSgp
KSkKK0JveFRyZWU6OkJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiBmbG93KQorICAgIDogbV9mbG93
KGZsb3cpCisgICAgLCBtX3Jvb3Qocm9vdEJveFN0eWxlKGZsb3cuc3R5bGUoKSkpCiB7CiAgICAg
aWYgKGZsb3cuaXNBbm9ueW1vdXMoKSkKICAgICAgICAgbV9yb290LnNldElzQW5vbnltb3VzKCk7
CiAKLSAgICBidWlsZFRyZWUoZmxvdyk7CisgICAgYnVpbGRUcmVlKCk7CiB9CiAKLXZvaWQgQm94
VHJlZTo6YnVpbGRUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3ZvaWQgQm94VHJl
ZTo6YnVpbGRUcmVlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNoaWxkUmVuZGVyZXIgOiBjaGlsZHJl
bk9mVHlwZTxSZW5kZXJPYmplY3Q+KGZsb3cpKSB7CisgICAgZm9yIChhdXRvJiBjaGlsZFJlbmRl
cmVyIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihtX2Zsb3cpKSB7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkJveD4gY2hpbGRCb3g7CiAgICAgICAgIGlmIChpczxSZW5k
ZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICAgICAgYXV0byYgdGV4dFJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcik7CkBAIC04Miw0MCArODMsNjkg
QEAgdm9pZCBCb3hUcmVlOjpidWlsZFRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQog
ICAgIH0KIH0KIAotY29uc3QgTGF5b3V0OjpCb3gqIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0Cit2b2lkIEJveFRyZWU6OnVw
ZGF0ZVN0eWxlKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKIHsKKyAgICBh
dXRvJiBsYXlvdXRCb3ggPSBsYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgYXV0
byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOworCisgICAgbGF5b3V0Qm94LnVwZGF0ZVN0eWxl
KHN0eWxlKTsKKworICAgIGlmICgmbGF5b3V0Qm94ID09ICZtX3Jvb3QpIHsKKyAgICAgICAgZm9y
IChhdXRvKiBjaGlsZCA9IG1fcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzQW5vbnltb3VzKCkp
CisgICAgICAgICAgICAgICAgY2hpbGQtPnVwZGF0ZVN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK0xheW91dDo6Qm94JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIGlmICgmcmVuZGVy
ZXIgPT0gJm1fZmxvdykKKyAgICAgICAgcmV0dXJuIG1fcm9vdDsKKwogICAgIGlmIChtX2JveGVz
LnNpemUoKSA8PSBzbWFsbFRyZWVUaHJlc2hvbGQpIHsKICAgICAgICAgYXV0byBpbmRleCA9IG1f
Ym94ZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkgewogICAgICAgICAgICAgcmV0dXJu
IGVudHJ5LnJlbmRlcmVyID09ICZyZW5kZXJlcjsKICAgICAgICAgfSk7Ci0gICAgICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBy
ZXR1cm4gbV9ib3hlc1tpbmRleF0uYm94LmdldCgpOworICAgICAgICBBU1NFUlQoaW5kZXggIT0g
bm90Rm91bmQpOworICAgICAgICByZXR1cm4gKm1fYm94ZXNbaW5kZXhdLmJveDsKICAgICB9CiAK
ICAgICBpZiAobV9yZW5kZXJlclRvQm94TWFwLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbV9ib3hlcykKICAgICAgICAgICAgIG1fcmVuZGVyZXJUb0JveE1hcC5hZGQo
ZW50cnkucmVuZGVyZXIsIGVudHJ5LmJveC5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiBtX3Jl
bmRlcmVyVG9Cb3hNYXAuZ2V0KCZyZW5kZXJlcik7CisgICAgcmV0dXJuICptX3JlbmRlcmVyVG9C
b3hNYXAuZ2V0KCZyZW5kZXJlcik7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogQm94VHJlZTo6
cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGJveCkgY29uc3QKK2NvbnN0
IExheW91dDo6Qm94JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyKSBjb25zdAogeworICAgIHJldHVybiBjb25zdF9jYXN0PEJveFRyZWUm
PigqdGhpcykubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyZXIpOworfQorCitSZW5kZXJPYmpl
Y3QmIEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBib3gp
Cit7CisgICAgaWYgKCZib3ggPT0gJm1fcm9vdCkKKyAgICAgICAgcmV0dXJuIG1fZmxvdzsKKwog
ICAgIGlmIChtX2JveGVzLnNpemUoKSA8PSBzbWFsbFRyZWVUaHJlc2hvbGQpIHsKICAgICAgICAg
YXV0byBpbmRleCA9IG1fYm94ZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBlbnRyeSkgewogICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5LmJveC5nZXQoKSA9PSAmYm94OwogICAgICAgICB9KTsKLSAg
ICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBtX2JveGVzW2luZGV4XS5yZW5kZXJlcjsKKyAgICAgICAgQVNTRVJU
KGluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuICptX2JveGVzW2luZGV4XS5yZW5k
ZXJlcjsKICAgICB9CiAKICAgICBpZiAobV9ib3hUb1JlbmRlcmVyTWFwLmlzRW1wdHkoKSkgewog
ICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9ib3hlcykKICAgICAgICAgICAgIG1fYm94VG9S
ZW5kZXJlck1hcC5hZGQoZW50cnkuYm94LmdldCgpLCBlbnRyeS5yZW5kZXJlcik7CiAgICAgfQot
ICAgIHJldHVybiBtX2JveFRvUmVuZGVyZXJNYXAuZ2V0KCZib3gpOworICAgIHJldHVybiAqbV9i
b3hUb1JlbmRlcmVyTWFwLmdldCgmYm94KTsKK30KKworY29uc3QgUmVuZGVyT2JqZWN0JiBCb3hU
cmVlOjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgYm94KSBjb25zdAor
eworICAgIHJldHVybiBjb25zdF9jYXN0PEJveFRyZWUmPigqdGhpcykucmVuZGVyZXJGb3JMYXlv
dXRCb3goYm94KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCmluZGV4IDgyMjI5NGJk
ZDNkZC4uOTVlNWNkNGUzMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCkBAIC0zNCwzMSAr
MzQsNDEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyQmxvY2tGbG93Owor
Y2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlv
biB7CiAKIGNsYXNzIEJveFRyZWUgewogcHVibGljOgotICAgIEJveFRyZWUoY29uc3QgUmVuZGVy
QmxvY2tGbG93Jik7CisgICAgQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmKTsKKworICAgIHZvaWQg
dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKTsKKworICAgIGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fZmxvdzsgfQorICAgIFJlbmRl
ckJsb2NrRmxvdyYgZmxvdygpIHsgcmV0dXJuIG1fZmxvdzsgfQogCiAgICAgY29uc3QgTGF5b3V0
OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiByb290TGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4g
bV9yb290OyB9CiAgICAgTGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiByb290TGF5b3V0
Qm94KCkgeyByZXR1cm4gbV9yb290OyB9CiAKLSAgICBjb25zdCBMYXlvdXQ6OkJveCogbGF5b3V0
Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7Ci0gICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0
OworICAgIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QmKSBjb25zdDsKKyAgICBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94Rm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0Jik7CisKKyAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0
JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgYnVpbGRUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworICAgIHZvaWQgYnVp
bGRUcmVlKCk7CiAKKyAgICBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKICAgICBMYXlvdXQ6Oklu
aXRpYWxDb250YWluaW5nQmxvY2sgbV9yb290OwogICAgIHN0cnVjdCBCb3hBbmRSZW5kZXJlciB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBMYXlvdXQ6OkJveD4gYm94OwotICAgICAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyIHsgbnVsbHB0ciB9OworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5b3V0OjpCb3g+IGJveDsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciB7IG51bGxwdHIgfTsKICAgICB9OwogICAgIFZlY3RvcjxCb3hBbmRSZW5kZXJlciwgMT4g
bV9ib3hlczsKIAotICAgIG11dGFibGUgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXQ6OkJveCo+IG1fcmVuZGVyZXJUb0JveE1hcDsKLSAgICBtdXRhYmxlIEhhc2hNYXA8
Y29uc3QgTGF5b3V0OjpCb3gqLCBjb25zdCBSZW5kZXJPYmplY3QqPiBtX2JveFRvUmVuZGVyZXJN
YXA7CisgICAgbXV0YWJsZSBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIExheW91dDo6Qm94
Kj4gbV9yZW5kZXJlclRvQm94TWFwOworICAgIG11dGFibGUgSGFzaE1hcDxjb25zdCBMYXlvdXQ6
OkJveCosIFJlbmRlck9iamVjdCo+IG1fYm94VG9SZW5kZXJlck1hcDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCAzOWFhYzBmNTZlNzEuLmNlOWEwMWY0YjJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNkZWZpbmUgQUxMT1dfSU5MSU5F
X0lNQUdFUyAwCisjZGVmaW5lIEFMTE9XX0lOTElORV9JTUFHRVMgMQogCiAjaWZuZGVmIE5ERUJV
RwogI2RlZmluZSBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKHJlYXNvbiwgcmVhc29u
cywgaW5jbHVkZVJlYXNvbnMpIHsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50
LmNwcAppbmRleCAyYzE5OGVlZWY0ZGYuLmU4Yjk5ZjI4YjJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uSW5saW5lQ29udGVudC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY29uc3QgTGluZUxheW91
dCYgSW5saW5lQ29udGVudDo6bGluZUxheW91dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2xpbmVM
YXlvdXQ7CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogSW5saW5lQ29udGVudDo6cmVuZGVyZXJG
b3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKK2NvbnN0IFJl
bmRlck9iamVjdCYgSW5saW5lQ29udGVudDo6cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5
b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saW5lTGF5b3V0LT5y
ZW5kZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5s
aW5lQ29udGVudC5oCmluZGV4IDIyM2M5MjU0OWQxZS4uODQ3Y2NlNDZiNWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBJbmxp
bmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5lQ29udGVudD4gewogICAgIHZvaWQg
c2hyaW5rVG9GaXQoKTsKIAogICAgIGNvbnN0IExpbmVMYXlvdXQmIGxpbmVMYXlvdXQoKSBjb25z
dDsKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxh
eW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIElubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUxheW91dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IDU5MGNkZTBmYTM3OS4uMmJkZGY3NmE5YTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5o
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBzdGFydEluZGV4ID0gbGlu
ZSgpLmZpcnN0UnVuSW5kZXgoKTsKICAgICAgICAgYXV0byBlbmRJbmRleCA9IHN0YXJ0SW5kZXgg
KyBsaW5lKCkucnVuQ291bnQoKTsKICAgICAgICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gc3RhcnRJ
bmRleDsgcnVuSW5kZXggPCBlbmRJbmRleDsgKytydW5JbmRleCkgewotICAgICAgICAgICAgYXV0
byYgcmVuZGVyZXIgPSAqbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChtX2lu
bGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJveCgpKTsKKyAgICAgICAgICAgIGF1
dG8mIHJlbmRlcmVyID0gbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChtX2lu
bGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJveCgpKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlci5ub2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29u
dGVudCwgcnVuSW5kZXggfTsKICAgICAgICAgfQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYXV0byBzdGFydEluZGV4ID0gbGluZSgpLmZpcnN0UnVuSW5kZXgoKTsKICAgICAg
ICAgYXV0byBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBsaW5lKCkucnVuQ291bnQoKTsKICAgICAg
ICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gZW5kSW5kZXg7IHJ1bkluZGV4LS0gPiBzdGFydEluZGV4
OykgewotICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSAqbV9pbmxpbmVDb250ZW50LT5yZW5k
ZXJlckZvckxheW91dEJveChtX2lubGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJv
eCgpKTsKKyAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9pbmxpbmVDb250ZW50LT5yZW5k
ZXJlckZvckxheW91dEJveChtX2lubGluZUNvbnRlbnQtPnJ1bnNbcnVuSW5kZXhdLmxheW91dEJv
eCgpKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci5ub2RlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgKm1faW5saW5lQ29udGVudCwgcnVuSW5kZXggfTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCBmMWYwMTU1OGYwYTEuLjg1YmNhMTIyYTRl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLUxp
bmVMYXlvdXQ6OkxpbmVMYXlvdXQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQorTGluZUxh
eW91dDo6TGluZUxheW91dChSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgOiBtX2Zsb3coZmxv
dykKICAgICAsIG1fYm94VHJlZShmbG93KQogICAgICwgbV9sYXlvdXRTdGF0ZShtX2Zsb3cuZG9j
dW1lbnQoKSwgcm9vdExheW91dEJveCgpKQpAQCAtNjYsNiArNjYsMjEgQEAgTGluZUxheW91dDo6
TGluZUxheW91dChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAKIExpbmVMYXlvdXQ6On5M
aW5lTGF5b3V0KCkgPSBkZWZhdWx0OwogCitMaW5lTGF5b3V0KiBMaW5lTGF5b3V0Ojpjb250YWlu
aW5nKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHJl
bmRlcmVyLnBhcmVudCgpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCpwYXJl
bnQpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnBhcmVu
dCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCk7CisgICAgfQorCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IExpbmVMYXlvdXQqIExpbmVMYXlvdXQ6OmNvbnRhaW5p
bmcoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gY29udGFpbmlu
Zyhjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJlbmRlcmVyKSk7Cit9CisKIGJvb2wgTGluZUxh
eW91dDo6aXNFbmFibGVkKCkKIHsKICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxl
ZCgpOwpAQCAtODcsMjMgKzEwMiwxNSBAQCBib29sIExpbmVMYXlvdXQ6OmNhblVzZUZvckFmdGVy
U3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBTdHlsZURpZgogCiB2b2lk
IExpbmVMYXlvdXQ6OnVwZGF0ZVJlcGxhY2VkRGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJl
cGxhY2VkKQogewotICAgIGF1dG8mIGxheW91dEJveCA9ICptX2JveFRyZWUubGF5b3V0Qm94Rm9y
UmVuZGVyZXIocmVwbGFjZWQpOwotICAgIGF1dG8mIHJlcGxhY2VkQm94ID0gY29uc3RfY2FzdDxM
YXlvdXQ6OlJlcGxhY2VkQm94Jj4oZG93bmNhc3Q8TGF5b3V0OjpSZXBsYWNlZEJveD4obGF5b3V0
Qm94KSk7CisgICAgYXV0byYgbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRl
cmVyKHJlcGxhY2VkKTsKKyAgICBhdXRvJiByZXBsYWNlZEJveCA9IGRvd25jYXN0PExheW91dDo6
UmVwbGFjZWRCb3g+KGxheW91dEJveCk7CiAKICAgICByZXBsYWNlZEJveC5zZXRDb250ZW50U2l6
ZUZvckludGVncmF0aW9uKHsgcmVwbGFjZWQuY29udGVudExvZ2ljYWxXaWR0aCgpLCByZXBsYWNl
ZC5jb250ZW50TG9naWNhbEhlaWdodCgpIH0pOwogfQogCi12b2lkIExpbmVMYXlvdXQ6OnVwZGF0
ZVN0eWxlKCkKK3ZvaWQgTGluZUxheW91dDo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHJlbmRlcmVyKQogewotICAgIGF1dG8mIHJvb3QgPSByb290TGF5b3V0Qm94KCk7
Ci0KLSAgICAvLyBGSVhNRTogRW5jYXBzdWxhdGUgc3R5bGUgdXBkYXRlcyBiZXR0ZXIuCi0gICAg
cm9vdC51cGRhdGVTdHlsZShtX2Zsb3cuc3R5bGUoKSk7Ci0KLSAgICBmb3IgKGF1dG8qIGNoaWxk
ID0gcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgICAgIGNoaWxk
LT51cGRhdGVTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShyb290LnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKLSAgICB9CisgICAgbV9ib3hU
cmVlLnVwZGF0ZVN0eWxlKHJlbmRlcmVyKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQo
KQpAQCAtMTY4LDcgKzE3NSw3IEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgp
CiAgICAgICAgICAgICBkaXNwbGF5SW5saW5lQ29udGVudC5ydW5zLmFwcGVuZChkaXNwbGF5UnVu
KTsKIAogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpKTsK
ICAgICAgICAgICAgICAgICBhdXRvIGJvcmRlckJveExvY2F0aW9uID0gRmxvYXRQb2ludCB7IHJ1
blJlY3QueCgpLCBydW5SZWN0LnkoKSArIG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gobGF5
b3V0Qm94KS5tYXJnaW5CZWZvcmUoKSB9OwogICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVu
ZGVyQm94Jj4ocmVuZGVyZXIpLnNldExvY2F0aW9uKGZsb29yZWRMYXlvdXRQb2ludChib3JkZXJC
b3hMb2NhdGlvbikpOwogICAgICAgICAgICAgfQpAQCAtMzM4LDEyICszNDUsMTEgQEAgVGV4dFJ1
bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmIHJlbmRl
clRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgYXV0byogbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRl
cmVyKHJlbmRlclRleHQpOwotICAgIEFTU0VSVChsYXlvdXRCb3gpOworICAgIGF1dG8mIGxheW91
dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJUZXh0KTsKIAogICAg
IGF1dG8gZmlyc3RJbmRleCA9IFsmXSgpIC0+IE9wdGlvbmFsPHNpemVfdD4gewogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCZtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV0ubGF5b3V0Qm94KCkg
PT0gbGF5b3V0Qm94KQorICAgICAgICAgICAgaWYgKCZtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV0u
bGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMzU5LDE5ICszNjUsMTggQEAgUnVuSXRl
cmF0b3IgTGluZUxheW91dDo6cnVuRm9yKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCiAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgYXV0byogbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVy
KHJlbmRlckVsZW1lbnQpOwotICAgIEFTU0VSVChsYXlvdXRCb3gpOworICAgIGF1dG8mIGxheW91
dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmxpbmVDb250ZW50LT5ydW5zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIGF1dG8mIHJ1biA9ICBtX2lubGluZUNvbnRlbnQtPnJ1bnNbaV07Ci0g
ICAgICAgIGlmICgmcnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkKKyAgICAgICAgaWYgKCZy
dW4ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKICAgICAgICAgICAgIHJldHVybiB7IFJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aCgqbV9pbmxpbmVDb250ZW50LCBpKSB9OwogICAgIH0KIAogICAgIHJl
dHVybiB7IH07CiB9CiAKLWNvbnN0IFJlbmRlck9iamVjdCogTGluZUxheW91dDo6cmVuZGVyZXJG
b3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCkgY29uc3QKK2NvbnN0IFJl
bmRlck9iamVjdCYgTGluZUxheW91dDo6cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0
OjpCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ib3hUcmVlLnJlbmRlcmVy
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiB9CkBAIC00MDIsOSArNDA3LDkgQEAgdm9pZCBMaW5l
TGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogCiAgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVDb250ZW50LnJ1bnNGb3JS
ZWN0KHBhaW50UmVjdCkpIHsKICAgICAgICAgaWYgKCFydW4udGV4dENvbnRlbnQoKSkgewotICAg
ICAgICAgICAgYXV0byogcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3go
cnVuLmxheW91dEJveCgpKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
aXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIHJlbmRlckJveCA9IGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oZG93bmNhc3Q8UmVu
ZGVyQm94PigqcmVuZGVyZXIpKTsKKyAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9ib3hU
cmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bi5sYXlvdXRCb3goKSk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcik7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlckJveC5oYXNTZWxmUGFpbnRpbmdMYXll
cigpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAo
IXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyQm94KSkKQEAgLTQ4OSw3ICs0
OTQsNyBAQCBib29sIExpbmVMYXlvdXQ6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYwogICAgICAgICBpZiAoc3R5bGUudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgc3R5bGUucG9pbnRlckV2ZW50cygpID09
IFBvaW50ZXJFdmVudHM6Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvJiByZW5kZXJlciA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4oKm1fYm94VHJlZS5yZW5k
ZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkpKTsKKyAgICAgICAgYXV0byYgcmVuZGVy
ZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpKTsKIAog
ICAgICAgICByZW5kZXJlci51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNv
bnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlci5ub2Rl
Rm9ySGl0VGVzdCgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBydW5SZWN0KSA9PSBI
aXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXgg
NDVmOGE3MGEzNjZjLi5jNjM1N2FiOWY4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0
UmVzdWx0OwogY2xhc3MgUmVuZGVyQmxvY2tGbG93OwogY2xhc3MgUmVuZGVyQm94OworY2xhc3Mg
UmVuZGVyQm94TW9kZWxPYmplY3Q7CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBuYW1lc3BhY2UgTGF5
b3V0SW50ZWdyYXRpb24gewpAQCAtNTEsMTUgKzUyLDE4IEBAIHN0cnVjdCBJbmxpbmVDb250ZW50
OwogY2xhc3MgTGluZUxheW91dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaW5lTGF5b3V0PiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTGluZUxheW91dChj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKKyAgICBMaW5lTGF5b3V0KFJlbmRlckJsb2NrRmxvdyYp
OwogICAgIH5MaW5lTGF5b3V0KCk7CiAKKyAgICBzdGF0aWMgTGluZUxheW91dCogY29udGFpbmlu
ZyhSZW5kZXJPYmplY3QmKTsKKyAgICBzdGF0aWMgY29uc3QgTGluZUxheW91dCogY29udGFpbmlu
Zyhjb25zdCBSZW5kZXJPYmplY3QmKTsKKwogICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgpOwog
ICAgIHN0YXRpYyBib29sIGNhblVzZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICBz
dGF0aWMgYm9vbCBjYW5Vc2VGb3JBZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYsIFN0eWxlRGlmZmVyZW5jZSk7CiAKICAgICB2b2lkIHVwZGF0ZVJlcGxhY2VkRGltZW5zaW9u
cyhjb25zdCBSZW5kZXJCb3gmKTsKLSAgICB2b2lkIHVwZGF0ZVN0eWxlKCk7CisgICAgdm9pZCB1
cGRhdGVTdHlsZShjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYpOwogICAgIHZvaWQgbGF5b3V0
KCk7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CkBAIC04
MCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bnNGb3IoY29u
c3QgUmVuZGVyVGV4dCYpIGNvbnN0OwogICAgIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5k
ZXJFbGVtZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9y
TGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiAg
ICAgc3RhdGljIHZvaWQgcmVsZWFzZUNhY2hlcyhSZW5kZXJWaWV3Jik7CiAKQEAgLTk1LDcgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKTsKICAgICB2
b2lkIHJlbGVhc2VJbmxpbmVJdGVtQ2FjaGUoKTsKIAotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYgbV9mbG93OworICAgIFJlbmRlckJsb2NrRmxvdyYgbV9mbG93OwogICAgIEJveFRyZWUgbV9i
b3hUcmVlOwogICAgIExheW91dDo6TGF5b3V0U3RhdGUgbV9sYXlvdXRTdGF0ZTsKICAgICBMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IGFjYzM4
ODA4NDIwYy4uNjQ4ZWI2MmFmOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
ICptX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bigpLmxheW91dEJveCgp
KTsKKyAgICAgICAgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cmVuZGVyZXJGb3JMYXlvdXRCb3go
cnVuKCkubGF5b3V0Qm94KCkpOwogICAgIH0KIAogICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dFJ1
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4
IDgzNzU0ODVlYmEwYy4uZjMwMmY5NzU0YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMjEwMywxNSArMjEwMywxNSBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbAogICAgICAgICB9OwogICAgICAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZUxp
bmVMYXlvdXRQYXRoKCkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlTGluZUxheW91dFBhdGgoKTsK
KworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorICAgICAgICBpZiAoYXV0
byogbGluZUxheW91dCA9IGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpKQorICAg
ICAgICAgICAgbGluZUxheW91dC0+dXBkYXRlU3R5bGUoKnRoaXMpOworI2VuZGlmCiAgICAgfQog
CiAgICAgaWYgKG11bHRpQ29sdW1uRmxvdygpKQogICAgICAgICB1cGRhdGVTdHlsZXNGb3JDb2x1
bW5DaGlsZHJlbigpOwotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0g
ICAgaWYgKGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpKQotICAgICAgICBsYXlv
dXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKS0+dXBkYXRlU3R5bGUoKTsKLSNlbmRpZgog
fQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBjZTBmMzgxNmZhNDUu
LmQxZjBhNDdlNWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKKyNpbmNs
dWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94RnJhZ21lbnRJbmZvLmgi
CkBAIC00MDcsNiArNDA4LDExIEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAgICAgLy8gYW55
IG92ZXJyaWRlIGNvbnRlbnQgc2l6ZSBzZXQgYnkgb3VyIGNvbnRhaW5lciwgYmVjYXVzZSBpdCB3
b3VsZCBsaWtlbHkgYmUgaW5jb3JyZWN0IGFmdGVyIHRoZSBzdHlsZSBjaGFuZ2UuCiAgICAgaWYg
KGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5zdHlsZSgp
LmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCkpCiAgICAgICAgIGNsZWFyT3ZlcnJpZGVDb250
ZW50U2l6ZSgpOworCisgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlOjpMYXlvdXQpIHsK
KyAgICAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxh
eW91dDo6Y29udGFpbmluZygqdGhpcykpCisgICAgICAgICAgICBsaW5lTGF5b3V0LT51cGRhdGVT
dHlsZSgqdGhpcyk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckJveDo6dXBkYXRlR3JpZFBvc2l0
aW9uQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5w
eQppbmRleCAxZmU2MGI4YzBkMWMuLjFjN2IxZGYxN2IzYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L2xheW91dF90ZXN0X3J1bm5lci5weQpAQCAtMTY2LDYgKzE2Niw3IEBAIGNsYXNzIExheW91dFRl
c3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9tYXJrX2ludGVycnVwdGVk
X3Rlc3RzX2FzX3NraXBwZWQocnVuX3Jlc3VsdHMpCiAgICAgICAgICAgICAgICAgcmFpc2UgVGVz
dFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKG1lc3NhZ2UpCiAKKyAgICAgICAgc2VsZi5fb3B0aW9u
cy5leGl0X2FmdGVyX25fZmFpbHVyZXMgPSBOb25lCiAgICAgICAgIGludGVycnVwdF9pZl9hdF9m
YWlsdXJlX2xpbWl0KAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leGl0X2FmdGVyX25fZmFp
bHVyZXMsCiAgICAgICAgICAgICBydW5fcmVzdWx0cy51bmV4cGVjdGVkX2ZhaWx1cmVzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411984</attachid>
            <date>2020-10-21 07:59:28 -0700</date>
            <delta_ts>2020-10-21 08:30:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lfc-child-style-update-4.patch</filename>
            <type>text/plain</type>
            <size>30366</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNjVjMmY1NjdiOWUuLmNkZTJhNWVmZWFmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDIwLTEwLTIxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXBkYXRlIHN0eWxlIG9mIGNvbnRhaW5l
ZCBsYXlvdXQgYm94ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODAxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBsYXlvdXQgYm94IHN0eWxlIG9uIHN0eWxlIGNoYW5nZSBhcyBuZWVkZWQu
IFRoaXMgZml4ZXMgYXQgbGVhc3QgZmFzdC9yZXBsYWNlZC9tYXgtd2lkdGgtcGVyY2VudC5odG1s
IHdpdGgKKyAgICAgICAgaW1hZ2Ugc3VwcG9ydCBlbmFibGVkLgorCisgICAgICAgIFRoZSBwYXRj
aCBhbHNvIGNvbnRhaW5zIHJlZmFjdG9yaW5nIHRvIG1ha2UgQm94VHJlZSBub24tY29uc3QgYW5k
IG1vdmVzIHRoZSBzdHlsZSB1cGRhdGUgY29kZSB0aGVyZS4KKworICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OkJveFRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmJ1aWxkVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6dXBkYXRlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpsYXlvdXRC
b3hGb3JSZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6Qm94VHJlZTo6cmVuZGVyZXJGb3JMYXlvdXRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6ZmxvdyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6Zmxvdyk6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dDo6cmVuZGVyZXJGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaDoKKyAgICAgICAgKiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0
aDo6bG9naWNhbFN0YXJ0UnVuV2l0aE5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxFbmRSdW5XaXRo
Tm9kZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUxheW91dDo6TGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6Y29udGFpbmluZyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRlUmVwbGFjZWREaW1lbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp1cGRhdGVTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29uc3Ry
dWN0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxh
eW91dDo6dGV4dFJ1bnNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxpbmVMYXlvdXQ6OnJ1bkZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cmVuZGVyZXJGb3JMYXlvdXRCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpoaXRUZXN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0Lmg6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgorCisgICAg
ICAgIFVwZGF0ZSB0aGUgbGluZSBsYXlvdXQgc3R5bGUuCisKIDIwMjAtMTAtMjAgIEp1bGlhbiBH
b256YWxleiAgPGp1bGlhbl9hX2dvbnphbGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxlYXNl
IGFzc2VydCBpbiB+Tm9kZSBkdWUgdG8gcmVuZGVyIGVsZW1lbnQgb2YgcHNldWRvIGVsZW1lbnQg
bm90IGdldHRpbmcgcmVtb3ZlZCBpbiB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCmlu
ZGV4IGFiYjhiZWM2NTM2Zi4uZmU4MmNjZjdjYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVl
LmNwcApAQCAtNDgsMTggKzQ4LDE5IEBAIHN0YXRpYyBSZW5kZXJTdHlsZSByb290Qm94U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiBjbG9uZWRTdHlsZTsKIH0KIAot
Qm94VHJlZTo6Qm94VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCi0gICAgOiBtX3Jv
b3Qocm9vdEJveFN0eWxlKGZsb3cuc3R5bGUoKSkpCitCb3hUcmVlOjpCb3hUcmVlKFJlbmRlckJs
b2NrRmxvdyYgZmxvdykKKyAgICA6IG1fZmxvdyhmbG93KQorICAgICwgbV9yb290KHJvb3RCb3hT
dHlsZShmbG93LnN0eWxlKCkpKQogewogICAgIGlmIChmbG93LmlzQW5vbnltb3VzKCkpCiAgICAg
ICAgIG1fcm9vdC5zZXRJc0Fub255bW91cygpOwogCi0gICAgYnVpbGRUcmVlKGZsb3cpOworICAg
IGJ1aWxkVHJlZSgpOwogfQogCi12b2lkIEJveFRyZWU6OmJ1aWxkVHJlZShjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3cpCit2b2lkIEJveFRyZWU6OmJ1aWxkVHJlZSgpCiB7Ci0gICAgZm9yIChh
dXRvJiBjaGlsZFJlbmRlcmVyIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihmbG93KSkg
eworICAgIGZvciAoYXV0byYgY2hpbGRSZW5kZXJlciA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9i
amVjdD4obV9mbG93KSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpCb3g+IGNo
aWxkQm94OwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikpIHsKICAg
ICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxk
UmVuZGVyZXIpOwpAQCAtODIsNDAgKzgzLDY5IEBAIHZvaWQgQm94VHJlZTo6YnVpbGRUcmVlKGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICB9CiB9CiAKLWNvbnN0IExheW91dDo6Qm94
KiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyKSBjb25zdAordm9pZCBCb3hUcmVlOjp1cGRhdGVTdHlsZShjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgcmVuZGVyZXIpCiB7CisgICAgYXV0byYgbGF5b3V0Qm94ID0gbGF5b3V0Qm94Rm9y
UmVuZGVyZXIocmVuZGVyZXIpOworICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsK
KworICAgIGxheW91dEJveC51cGRhdGVTdHlsZShzdHlsZSk7CisKKyAgICBpZiAoJmxheW91dEJv
eCA9PSAmbV9yb290KSB7CisgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBtX3Jvb3QuZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAg
ICAgaWYgKGNoaWxkLT5pc0Fub255bW91cygpKQorICAgICAgICAgICAgICAgIGNoaWxkLT51cGRh
dGVTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHls
ZSwgRGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICB9CisgICAgfQorfQorCitMYXlvdXQ6
OkJveCYgQm94VHJlZTo6bGF5b3V0Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlcikKK3sKKyAgICBpZiAoJnJlbmRlcmVyID09ICZtX2Zsb3cpCisgICAgICAgIHJldHVy
biBtX3Jvb3Q7CisKICAgICBpZiAobV9ib3hlcy5zaXplKCkgPD0gc21hbGxUcmVlVGhyZXNob2xk
KSB7CiAgICAgICAgIGF1dG8gaW5kZXggPSBtX2JveGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYg
ZW50cnkpIHsKICAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZW5kZXJlciA9PSAmcmVuZGVyZXI7
CiAgICAgICAgIH0pOwotICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fYm94ZXNbaW5kZXhdLmJveC5nZXQo
KTsKKyAgICAgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuICpt
X2JveGVzW2luZGV4XS5ib3g7CiAgICAgfQogCiAgICAgaWYgKG1fcmVuZGVyZXJUb0JveE1hcC5p
c0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYm94ZXMpCiAgICAgICAg
ICAgICBtX3JlbmRlcmVyVG9Cb3hNYXAuYWRkKGVudHJ5LnJlbmRlcmVyLCBlbnRyeS5ib3guZ2V0
KCkpOwogICAgIH0KLSAgICByZXR1cm4gbV9yZW5kZXJlclRvQm94TWFwLmdldCgmcmVuZGVyZXIp
OworICAgIHJldHVybiAqbV9yZW5kZXJlclRvQm94TWFwLmdldCgmcmVuZGVyZXIpOwogfQogCi1j
b25zdCBSZW5kZXJPYmplY3QqIEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94JiBib3gpIGNvbnN0Citjb25zdCBMYXlvdXQ6OkJveCYgQm94VHJlZTo6bGF5b3V0
Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikgY29uc3QKIHsKKyAg
ICByZXR1cm4gY29uc3RfY2FzdDxCb3hUcmVlJj4oKnRoaXMpLmxheW91dEJveEZvclJlbmRlcmVy
KHJlbmRlcmVyKTsKK30KKworUmVuZGVyT2JqZWN0JiBCb3hUcmVlOjpyZW5kZXJlckZvckxheW91
dEJveChjb25zdCBMYXlvdXQ6OkJveCYgYm94KQoreworICAgIGlmICgmYm94ID09ICZtX3Jvb3Qp
CisgICAgICAgIHJldHVybiBtX2Zsb3c7CisKICAgICBpZiAobV9ib3hlcy5zaXplKCkgPD0gc21h
bGxUcmVlVGhyZXNob2xkKSB7CiAgICAgICAgIGF1dG8gaW5kZXggPSBtX2JveGVzLmZpbmRNYXRj
aGluZyhbJl0oYXV0byYgZW50cnkpIHsKICAgICAgICAgICAgIHJldHVybiBlbnRyeS5ib3guZ2V0
KCkgPT0gJmJveDsKICAgICAgICAgfSk7Ci0gICAgICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9ib3hlc1tpbmRl
eF0ucmVuZGVyZXI7CisgICAgICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiAqbV9ib3hlc1tpbmRleF0ucmVuZGVyZXI7CiAgICAgfQogCiAgICAgaWYgKG1fYm94
VG9SZW5kZXJlck1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1f
Ym94ZXMpCiAgICAgICAgICAgICBtX2JveFRvUmVuZGVyZXJNYXAuYWRkKGVudHJ5LmJveC5nZXQo
KSwgZW50cnkucmVuZGVyZXIpOwogICAgIH0KLSAgICByZXR1cm4gbV9ib3hUb1JlbmRlcmVyTWFw
LmdldCgmYm94KTsKKyAgICByZXR1cm4gKm1fYm94VG9SZW5kZXJlck1hcC5nZXQoJmJveCk7Cit9
CisKK2NvbnN0IFJlbmRlck9iamVjdCYgQm94VHJlZTo6cmVuZGVyZXJGb3JMYXlvdXRCb3goY29u
c3QgTGF5b3V0OjpCb3gmIGJveCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxCb3hU
cmVlJj4oKnRoaXMpLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJv
eFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkJveFRyZWUuaAppbmRleCA4MjIyOTRiZGQzZGQuLjk1ZTVjZDRlMzAzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuaApAQCAtMzQsMzEgKzM0LDQxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKK2NsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0Owog
CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCiBjbGFzcyBCb3hUcmVlIHsKIHB1Ymxp
YzoKLSAgICBCb3hUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworICAgIEJveFRyZWUoUmVu
ZGVyQmxvY2tGbG93Jik7CisKKyAgICB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0Jik7CisKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3coKSBjb25zdCB7
IHJldHVybiBtX2Zsb3c7IH0KKyAgICBSZW5kZXJCbG9ja0Zsb3cmIGZsb3coKSB7IHJldHVybiBt
X2Zsb3c7IH0KIAogICAgIGNvbnN0IExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jayYgcm9v
dExheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQogICAgIExheW91dDo6SW5pdGlh
bENvbnRhaW5pbmdCbG9jayYgcm9vdExheW91dEJveCgpIHsgcmV0dXJuIG1fcm9vdDsgfQogCi0g
ICAgY29uc3QgTGF5b3V0OjpCb3gqIGxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCYpIGNvbnN0OwotICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JMYXlvdXRC
b3goY29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsKKyAgICBjb25zdCBMYXlvdXQ6OkJveCYgbGF5
b3V0Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7CisgICAgTGF5b3V0
OjpCb3gmIGxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYpOworCisgICAg
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJv
eCYpIGNvbnN0OworICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGJ1aWxkVHJlZShjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmKTsKKyAgICB2b2lkIGJ1aWxkVHJlZSgpOwogCisgICAgUmVuZGVyQmxvY2tG
bG93JiBtX2Zsb3c7CiAgICAgTGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrIG1fcm9vdDsK
ICAgICBzdHJ1Y3QgQm94QW5kUmVuZGVyZXIgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29u
c3QgTGF5b3V0OjpCb3g+IGJveDsKLSAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciB7IG51bGxwdHIgfTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6Qm94PiBib3g7
CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgeyBudWxscHRyIH07CiAgICAgfTsKICAg
ICBWZWN0b3I8Qm94QW5kUmVuZGVyZXIsIDE+IG1fYm94ZXM7CiAKLSAgICBtdXRhYmxlIEhhc2hN
YXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0OjpCb3gqPiBtX3JlbmRlcmVyVG9C
b3hNYXA7Ci0gICAgbXV0YWJsZSBIYXNoTWFwPGNvbnN0IExheW91dDo6Qm94KiwgY29uc3QgUmVu
ZGVyT2JqZWN0Kj4gbV9ib3hUb1JlbmRlcmVyTWFwOworICAgIG11dGFibGUgSGFzaE1hcDxjb25z
dCBSZW5kZXJPYmplY3QqLCBMYXlvdXQ6OkJveCo+IG1fcmVuZGVyZXJUb0JveE1hcDsKKyAgICBt
dXRhYmxlIEhhc2hNYXA8Y29uc3QgTGF5b3V0OjpCb3gqLCBSZW5kZXJPYmplY3QqPiBtX2JveFRv
UmVuZGVyZXJNYXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQu
Y3BwCmluZGV4IDJjMTk4ZWVlZjRkZi4uZThiOTlmMjhiMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBjb25zdCBMaW5lTGF5b3V0
JiBJbmxpbmVDb250ZW50OjpsaW5lTGF5b3V0KCkgY29uc3QKICAgICByZXR1cm4gKm1fbGluZUxh
eW91dDsKIH0KIAotY29uc3QgUmVuZGVyT2JqZWN0KiBJbmxpbmVDb250ZW50OjpyZW5kZXJlckZv
ckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94KSBjb25zdAorY29uc3QgUmVu
ZGVyT2JqZWN0JiBJbmxpbmVDb250ZW50OjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiBtX2xpbmVMYXlvdXQtPnJl
bmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50LmgKaW5kZXggMjIzYzkyNTQ5ZDFlLi44NDdjY2U0NmI1ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGlu
ZUNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IElubGlu
ZUNvbnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7CiAgICAgdm9pZCBz
aHJpbmtUb0ZpdCgpOwogCiAgICAgY29uc3QgTGluZUxheW91dCYgbGluZUxheW91dCgpIGNvbnN0
OwotICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5
b3V0OjpCb3gmKSBjb25zdDsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yTGF5
b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSW5saW5l
Q29udGVudChjb25zdCBMaW5lTGF5b3V0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggNTkwY2RlMGZhMzc5Li4yYmRkZjc2YTlhMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgK
QEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBsaW5l
KCkuZmlyc3RSdW5JbmRleCgpOwogICAgICAgICBhdXRvIGVuZEluZGV4ID0gc3RhcnRJbmRleCAr
IGxpbmUoKS5ydW5Db3VudCgpOwogICAgICAgICBmb3IgKGF1dG8gcnVuSW5kZXggPSBzdGFydElu
ZGV4OyBydW5JbmRleCA8IGVuZEluZGV4OyArK3J1bkluZGV4KSB7Ci0gICAgICAgICAgICBhdXRv
JiByZW5kZXJlciA9ICptX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1faW5s
aW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAgYXV0
byYgcmVuZGVyZXIgPSBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1faW5s
aW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94KCkpOwogICAgICAgICAgICAgaWYg
KHJlbmRlcmVyLm5vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVDb250
ZW50LCBydW5JbmRleCB9OwogICAgICAgICB9CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgog
ICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBsaW5lKCkuZmlyc3RSdW5JbmRleCgpOwogICAgICAg
ICBhdXRvIGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGxpbmUoKS5ydW5Db3VudCgpOwogICAgICAg
ICBmb3IgKGF1dG8gcnVuSW5kZXggPSBlbmRJbmRleDsgcnVuSW5kZXgtLSA+IHN0YXJ0SW5kZXg7
KSB7Ci0gICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9ICptX2lubGluZUNvbnRlbnQtPnJlbmRl
cmVyRm9yTGF5b3V0Qm94KG1faW5saW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94
KCkpOworICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2lubGluZUNvbnRlbnQtPnJlbmRl
cmVyRm9yTGF5b3V0Qm94KG1faW5saW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94
KCkpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLm5vZGUoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4geyAqbV9pbmxpbmVDb250ZW50LCBydW5JbmRleCB9OwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGYxZjAxNTU4ZjBhMS4uMjVhNThmNDIwZGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTUsMTcgKzU1LDMxIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1M
aW5lTGF5b3V0OjpMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKLSAgICA6
IG1fZmxvdyhmbG93KQotICAgICwgbV9ib3hUcmVlKGZsb3cpCi0gICAgLCBtX2xheW91dFN0YXRl
KG1fZmxvdy5kb2N1bWVudCgpLCByb290TGF5b3V0Qm94KCkpCitMaW5lTGF5b3V0OjpMaW5lTGF5
b3V0KFJlbmRlckJsb2NrRmxvdyYgZmxvdykKKyAgICA6IG1fYm94VHJlZShmbG93KQorICAgICwg
bV9sYXlvdXRTdGF0ZShmbG93LmRvY3VtZW50KCksIHJvb3RMYXlvdXRCb3goKSkKICAgICAsIG1f
aW5saW5lRm9ybWF0dGluZ1N0YXRlKG1fbGF5b3V0U3RhdGUuZW5zdXJlSW5saW5lRm9ybWF0dGlu
Z1N0YXRlKHJvb3RMYXlvdXRCb3goKSkpCiB7Ci0gICAgbV9sYXlvdXRTdGF0ZS5zZXRJc0ludGVn
cmF0ZWRSb290Qm94Rmlyc3RDaGlsZChtX2Zsb3cucGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSAm
bV9mbG93KTsKKyAgICBtX2xheW91dFN0YXRlLnNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENo
aWxkKGZsb3cucGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSAmZmxvdyk7CiB9CiAKIExpbmVMYXlv
dXQ6On5MaW5lTGF5b3V0KCkgPSBkZWZhdWx0OwogCitMaW5lTGF5b3V0KiBMaW5lTGF5b3V0Ojpj
b250YWluaW5nKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IHJlbmRlcmVyLnBhcmVudCgpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+
KCpwYXJlbnQpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
KnBhcmVudCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCk7CisgICAgfQorCisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IExpbmVMYXlvdXQqIExpbmVMYXlvdXQ6OmNv
bnRhaW5pbmcoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gY29u
dGFpbmluZyhjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJlbmRlcmVyKSk7Cit9CisKIGJvb2wg
TGluZUxheW91dDo6aXNFbmFibGVkKCkKIHsKICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9u
RW5hYmxlZCgpOwpAQCAtODcsMjMgKzEwMSwxNSBAQCBib29sIExpbmVMYXlvdXQ6OmNhblVzZUZv
ckFmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBTdHlsZURpZgog
CiB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZVJlcGxhY2VkRGltZW5zaW9ucyhjb25zdCBSZW5kZXJC
b3gmIHJlcGxhY2VkKQogewotICAgIGF1dG8mIGxheW91dEJveCA9ICptX2JveFRyZWUubGF5b3V0
Qm94Rm9yUmVuZGVyZXIocmVwbGFjZWQpOwotICAgIGF1dG8mIHJlcGxhY2VkQm94ID0gY29uc3Rf
Y2FzdDxMYXlvdXQ6OlJlcGxhY2VkQm94Jj4oZG93bmNhc3Q8TGF5b3V0OjpSZXBsYWNlZEJveD4o
bGF5b3V0Qm94KSk7CisgICAgYXV0byYgbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZv
clJlbmRlcmVyKHJlcGxhY2VkKTsKKyAgICBhdXRvJiByZXBsYWNlZEJveCA9IGRvd25jYXN0PExh
eW91dDo6UmVwbGFjZWRCb3g+KGxheW91dEJveCk7CiAKICAgICByZXBsYWNlZEJveC5zZXRDb250
ZW50U2l6ZUZvckludGVncmF0aW9uKHsgcmVwbGFjZWQuY29udGVudExvZ2ljYWxXaWR0aCgpLCBy
ZXBsYWNlZC5jb250ZW50TG9naWNhbEhlaWdodCgpIH0pOwogfQogCi12b2lkIExpbmVMYXlvdXQ6
OnVwZGF0ZVN0eWxlKCkKK3ZvaWQgTGluZUxheW91dDo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKQogewotICAgIGF1dG8mIHJvb3QgPSByb290TGF5b3V0
Qm94KCk7Ci0KLSAgICAvLyBGSVhNRTogRW5jYXBzdWxhdGUgc3R5bGUgdXBkYXRlcyBiZXR0ZXIu
Ci0gICAgcm9vdC51cGRhdGVTdHlsZShtX2Zsb3cuc3R5bGUoKSk7Ci0KLSAgICBmb3IgKGF1dG8q
IGNoaWxkID0gcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgICAg
IGNoaWxkLT51cGRhdGVTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShyb290LnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKLSAgICB9CisgICAg
bV9ib3hUcmVlLnVwZGF0ZVN0eWxlKHJlbmRlcmVyKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0Ojps
YXlvdXQoKQpAQCAtMTE4LDggKzEyNCw4IEBAIHZvaWQgTGluZUxheW91dDo6bGF5b3V0KCkKICAg
ICBhdXRvIGlubGluZUZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCB7IHJvb3RMYXlvdXRCb3goKSwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUgfTsKIAog
ICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBMYXlvdXQ6OkludmFsaWRhdGlvblN0YXRlIHsg
fTsKLSAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IExheW91dDo6SG9yaXpvbnRhbENv
bnN0cmFpbnRzIHsgbV9mbG93LmJvcmRlckFuZFBhZGRpbmdTdGFydCgpLCBtX2Zsb3cuY29udGVu
dFNpemUoKS53aWR0aCgpIH07Ci0gICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzID0gTGF5b3V0
OjpWZXJ0aWNhbENvbnN0cmFpbnRzIHsgbV9mbG93LmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSwg
eyB9IH07CisgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBMYXlvdXQ6Okhvcml6b250
YWxDb25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSwgZmxvdygpLmNv
bnRlbnRTaXplKCkud2lkdGgoKSB9OworICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IExh
eW91dDo6VmVydGljYWxDb25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3Jl
KCksIHsgfSB9OwogCiAgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0SW5GbG93Q29u
dGVudChpbnZhbGlkYXRpb25TdGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2Fs
Q29uc3RyYWludHMgfSk7CiAgICAgY29uc3RydWN0Q29udGVudCgpOwpAQCAtMTY4LDkgKzE3NCw5
IEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgpCiAgICAgICAgICAgICBkaXNw
bGF5SW5saW5lQ29udGVudC5ydW5zLmFwcGVuZChkaXNwbGF5UnVuKTsKIAogICAgICAgICAgICAg
aWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91
dEJveCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVy
Qm94PihtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSk7CiAgICAgICAg
ICAgICAgICAgYXV0byBib3JkZXJCb3hMb2NhdGlvbiA9IEZsb2F0UG9pbnQgeyBydW5SZWN0Lngo
KSwgcnVuUmVjdC55KCkgKyBtX2xheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCku
bWFyZ2luQmVmb3JlKCkgfTsKLSAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckJveCY+
KHJlbmRlcmVyKS5zZXRMb2NhdGlvbihmbG9vcmVkTGF5b3V0UG9pbnQoYm9yZGVyQm94TG9jYXRp
b24pKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlci5zZXRMb2NhdGlvbihmbG9vcmVkTGF5b3V0
UG9pbnQoYm9yZGVyQm94TG9jYXRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH07CkBAIC0xODYsMTAgKzE5MiwxMCBAQCB2b2lkIExpbmVMYXlvdXQ6OmNvbnN0cnVjdENvbnRl
bnQoKQogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhlIGxvZ2ljYWwgdG8g
cGh5c2ljYWwgdHJhbnNsYXRlIHNob3VsZCBoYXBwZW4uCiAgICAgICAgICAgICBhdXRvIG92ZXJm
bG93V2lkdGggPSBbJl0gewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHRoZSBjb3B5
IG9mIHRoZSBsZXRzLWFkanVzdC1vdmVyZmxvdy1mb3ItdGhlLWNhcmV0IGJlaGF2aW9yIGZyb20g
Q29tcGxleExpbmVMYXlvdXQ6OmFkZE92ZXJmbG93RnJvbUlubGluZUNoaWxkcmVuLgotICAgICAg
ICAgICAgICAgIGF1dG8gZW5kUGFkZGluZyA9IG1fZmxvdy5oYXNPdmVyZmxvd0NsaXAoKSA/IG1f
Zmxvdy5wYWRkaW5nRW5kKCkgOiAwX2x1OworICAgICAgICAgICAgICAgIGF1dG8gZW5kUGFkZGlu
ZyA9IGZsb3coKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGZsb3coKS5wYWRkaW5nRW5kKCkgOiAwX2x1
OwogICAgICAgICAgICAgICAgIGlmICghZW5kUGFkZGluZykKLSAgICAgICAgICAgICAgICAgICAg
ZW5kUGFkZGluZyA9IG1fZmxvdy5lbmRQYWRkaW5nV2lkdGhGb3JDYXJldCgpOwotICAgICAgICAg
ICAgICAgIGlmIChtX2Zsb3cuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWVuZFBhZGRpbmcgJiYgbV9m
bG93LmVsZW1lbnQoKSAmJiBtX2Zsb3cuZWxlbWVudCgpLT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQo
KSkKKyAgICAgICAgICAgICAgICAgICAgZW5kUGFkZGluZyA9IGZsb3coKS5lbmRQYWRkaW5nV2lk
dGhGb3JDYXJldCgpOworICAgICAgICAgICAgICAgIGlmIChmbG93KCkuaGFzT3ZlcmZsb3dDbGlw
KCkgJiYgIWVuZFBhZGRpbmcgJiYgZmxvdygpLmVsZW1lbnQoKSAmJiBmbG93KCkuZWxlbWVudCgp
LT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZW5kUGFkZGlu
ZyA9IDE7CiAgICAgICAgICAgICAgICAgYXV0byBsaW5lQm94TG9naWNhbFdpZHRoID0gbGluZUJv
eExvZ2ljYWxSZWN0LndpZHRoKCkgKyBlbmRQYWRkaW5nOwogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1heChsaW5lLmxvZ2ljYWxXaWR0aCgpLCBsaW5lQm94TG9naWNhbFdpZHRoKTsKQEAg
LTIxOSwxMCArMjI1LDEwIEBAIHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgpCiAK
IHZvaWQgTGluZUxheW91dDo6cHJlcGFyZUxheW91dFN0YXRlKCkKIHsKLSAgICBtX2xheW91dFN0
YXRlLnNldFZpZXdwb3J0U2l6ZShtX2Zsb3cuZnJhbWUoKS52aWV3KCktPnNpemUoKSk7CisgICAg
bV9sYXlvdXRTdGF0ZS5zZXRWaWV3cG9ydFNpemUoZmxvdygpLmZyYW1lKCkudmlldygpLT5zaXpl
KCkpOwogCiAgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9sYXlvdXRTdGF0ZS5lbnN1cmVHZW9t
ZXRyeUZvckJveChyb290TGF5b3V0Qm94KCkpOwotICAgIHJvb3RHZW9tZXRyeS5zZXRDb250ZW50
Qm94V2lkdGgobV9mbG93LmNvbnRlbnRTaXplKCkud2lkdGgoKSk7CisgICAgcm9vdEdlb21ldHJ5
LnNldENvbnRlbnRCb3hXaWR0aChmbG93KCkuY29udGVudFNpemUoKS53aWR0aCgpKTsKICAgICBy
b290R2VvbWV0cnkuc2V0UGFkZGluZyh7IHsgfSB9KTsKICAgICByb290R2VvbWV0cnkuc2V0Qm9y
ZGVyKHsgfSk7CiAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oeyB9KTsKQEAg
LTIzNCwxMCArMjQwLDEwIEBAIHZvaWQgTGluZUxheW91dDo6cHJlcGFyZUZsb2F0aW5nU3RhdGUo
KQogICAgIGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5mbG9h
dGluZ1N0YXRlKCk7CiAgICAgZmxvYXRpbmdTdGF0ZS5jbGVhcigpOwogCi0gICAgaWYgKCFtX2Zs
b3cuY29udGFpbnNGbG9hdHMoKSkKKyAgICBpZiAoIWZsb3coKS5jb250YWluc0Zsb2F0cygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGZsb2F0aW5nT2JqZWN0IDogKm1fZmxv
dy5mbG9hdGluZ09iamVjdFNldCgpKSB7CisgICAgZm9yIChhdXRvJiBmbG9hdGluZ09iamVjdCA6
ICpmbG93KCkuZmxvYXRpbmdPYmplY3RTZXQoKSkgewogICAgICAgICBhdXRvJiByZWN0ID0gZmxv
YXRpbmdPYmplY3QtPmZyYW1lUmVjdCgpOwogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZmxvYXRp
bmdPYmplY3QtPnR5cGUoKSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodAogICAgICAgICAg
ICAgPyBMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6UG9zaXRpb246OlJpZ2h0CkBA
IC0zMDEsMTAgKzMwNyw5IEBAIExheW91dFVuaXQgTGluZUxheW91dDo6bGFzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIExheW91dFVuaXQgeyBsYXN0TGluZS5yZWN0KCkueSgpICsg
bGFzdExpbmUuYmFzZWxpbmUoKSB9OwogfQogCi12b2lkIExpbmVMYXlvdXQ6OmFkanVzdEZvclBh
Z2luYXRpb24oUmVuZGVyQmxvY2tGbG93JiBmbG93KQordm9pZCBMaW5lTGF5b3V0OjphZGp1c3RG
b3JQYWdpbmF0aW9uKCkKIHsKLSAgICBBU1NFUlQoJmZsb3cgPT0gJm1fZmxvdyk7Ci0gICAgYXV0
byBwYWdpbmVkSW5saW5lQ29udGVudCA9IGFkanVzdExpbmVQb3NpdGlvbnNGb3JQYWdpbmF0aW9u
KCptX2lubGluZUNvbnRlbnQsIGZsb3cpOworICAgIGF1dG8gcGFnaW5lZElubGluZUNvbnRlbnQg
PSBhZGp1c3RMaW5lUG9zaXRpb25zRm9yUGFnaW5hdGlvbigqbV9pbmxpbmVDb250ZW50LCBmbG93
KCkpOwogICAgIGlmIChwYWdpbmVkSW5saW5lQ29udGVudC5wdHIoKSA9PSBtX2lubGluZUNvbnRl
bnQpIHsKICAgICAgICAgbV9wYWdpbmF0ZWRIZWlnaHQgPSB7IH07CiAgICAgICAgIHJldHVybjsK
QEAgLTMxNiwxNCArMzIxLDEyIEBAIHZvaWQgTGluZUxheW91dDo6YWRqdXN0Rm9yUGFnaW5hdGlv
bihSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgbV9pbmxpbmVDb250ZW50ID0gV1RGTW92ZShw
YWdpbmVkSW5saW5lQ29udGVudCk7CiB9CiAKLXZvaWQgTGluZUxheW91dDo6Y29sbGVjdE92ZXJm
bG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3ZvaWQgTGluZUxheW91dDo6Y29sbGVjdE92ZXJm
bG93KCkKIHsKLSAgICBBU1NFUlQoJmZsb3cgPT0gJm1fZmxvdyk7Ci0KICAgICBmb3IgKGF1dG8m
IGxpbmUgOiBpbmxpbmVDb250ZW50KCktPmxpbmVzKSB7Ci0gICAgICAgIGZsb3cuYWRkTGF5b3V0
T3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJlY3QobGluZS5zY3JvbGxhYmxlT3ZlcmZsb3coKSkp
OwotICAgICAgICBpZiAoIWZsb3cuaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgICAgICBmbG93
LmFkZFZpc3VhbE92ZXJmbG93KExheW91dDo6dG9MYXlvdXRSZWN0KGxpbmUuaW5rT3ZlcmZsb3co
KSkpOworICAgICAgICBmbG93KCkuYWRkTGF5b3V0T3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJl
Y3QobGluZS5zY3JvbGxhYmxlT3ZlcmZsb3coKSkpOworICAgICAgICBpZiAoIWZsb3coKS5oYXNP
dmVyZmxvd0NsaXAoKSkKKyAgICAgICAgICAgIGZsb3coKS5hZGRWaXN1YWxPdmVyZmxvdyhMYXlv
dXQ6OnRvTGF5b3V0UmVjdChsaW5lLmlua092ZXJmbG93KCkpKTsKICAgICB9CiB9CiAKQEAgLTMz
OCwxMiArMzQxLDExIEBAIFRleHRSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihj
b25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAogewogICAgIGlmICghbV9pbmxpbmVD
b250ZW50KQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8qIGxheW91dEJveCA9IG1fYm94
VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJUZXh0KTsKLSAgICBBU1NFUlQobGF5b3V0
Qm94KTsKKyAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVy
ZXIocmVuZGVyVGV4dCk7CiAKICAgICBhdXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBPcHRpb25h
bDxzaXplX3Q+IHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2lubGluZUNvbnRl
bnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICgmbV9pbmxpbmVDb250ZW50
LT5ydW5zW2ldLmxheW91dEJveCgpID09IGxheW91dEJveCkKKyAgICAgICAgICAgIGlmICgmbV9p
bmxpbmVDb250ZW50LT5ydW5zW2ldLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTM1
OSwxOSArMzYxLDE4IEBAIFJ1bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnJ1bkZvcihjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9pbmxpbmVDb250
ZW50KQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8qIGxheW91dEJveCA9IG1fYm94VHJl
ZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKLSAgICBBU1NFUlQobGF5b3V0
Qm94KTsKKyAgICBhdXRvJiBsYXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVy
ZXIocmVuZGVyRWxlbWVudCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5l
Q29udGVudC0+cnVucy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBydW4gPSAgbV9pbmxp
bmVDb250ZW50LT5ydW5zW2ldOwotICAgICAgICBpZiAoJnJ1bi5sYXlvdXRCb3goKSA9PSBsYXlv
dXRCb3gpCisgICAgICAgIGlmICgmcnVuLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCiAgICAg
ICAgICAgICByZXR1cm4geyBSdW5JdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwg
aSkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyB9OwogfQogCi1jb25zdCBSZW5kZXJPYmplY3Qq
IExpbmVMYXlvdXQ6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlv
dXRCb3gpIGNvbnN0Citjb25zdCBSZW5kZXJPYmplY3QmIExpbmVMYXlvdXQ6OnJlbmRlcmVyRm9y
TGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpOwogfQpAQCAtMzk1
LDE2ICszOTYsMTYgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvJiBpbmxpbmVDb250ZW50ID0gKm1faW5saW5lQ29udGVudDsKLSAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IG1fZmxvdy5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7Cisg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmbG93KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpOwogCiAgICAgYXV0byBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKICAgICBw
YWludFJlY3QubW92ZUJ5KC1wYWludE9mZnNldCk7CiAKICAgICBmb3IgKGF1dG8mIHJ1biA6IGlu
bGluZUNvbnRlbnQucnVuc0ZvclJlY3QocGFpbnRSZWN0KSkgewogICAgICAgICBpZiAoIXJ1bi50
ZXh0Q29udGVudCgpKSB7Ci0gICAgICAgICAgICBhdXRvKiByZW5kZXJlciA9IG1fYm94VHJlZS5y
ZW5kZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAgaWYgKHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyQm94PigqcmVuZGVy
ZXIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gY29uc3RfY2FzdDxSZW5k
ZXJCb3gmPihkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikpOworICAgICAgICAgICAgYXV0
byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJv
eCgpKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlci5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVy
Qm94PihyZW5kZXJlcikpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94
Lmhhc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5k
ZXJCb3gpKQpAQCAtNDQ5LDcgKzQ1MCw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogICAgICAg
ICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAg
dGV4dFBhaW50ZXIuc2V0Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKLSAgICAgICAgdGV4dFBh
aW50ZXIuc2V0U3R5bGUoY29tcHV0ZVRleHRQYWludFN0eWxlKG1fZmxvdy5mcmFtZSgpLCBzdHls
ZSwgcGFpbnRJbmZvKSk7CisgICAgICAgIHRleHRQYWludGVyLnNldFN0eWxlKGNvbXB1dGVUZXh0
UGFpbnRTdHlsZShmbG93KCkuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOwogICAgICAgICBp
ZiAoYXV0byogZGVidWdTaGFkb3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKICAgICAgICAgICAgIHRl
eHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdyk7CiAKQEAgLTQ1OCw3ICs0NTksNyBAQCB2
b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAKICAgICAgICAgaWYgKCFzdHlsZS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjb3JyZWN0
IFJlbmRlclRleHQuCi0gICAgICAgICAgICBpZiAoYXV0byogdGV4dFJlbmRlcmVyID0gY2hpbGRy
ZW5PZlR5cGU8UmVuZGVyVGV4dD4obV9mbG93KS5maXJzdCgpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogdGV4dFJlbmRlcmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4oZmxvdygpKS5m
aXJzdCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwYWludGVyID0gVGV4dERlY29yYXRpb25Q
YWludGVyIHsgcGFpbnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKSwgKnRleHRSZW5kZXJlciwgZmFsc2UsIHN0eWxlLmZvbnRDYXNjYWRlKCkgfTsKICAgICAg
ICAgICAgICAgICBwYWludGVyLnNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAgICAg
ICAgcGFpbnRlci5wYWludFRleHREZWNvcmF0aW9uKHRleHRSdW4sIHRleHRPcmlnaW4sIHJlY3Qu
bG9jYXRpb24oKSArIHBhaW50T2Zmc2V0KTsKQEAgLTQ4OSw3ICs0OTAsNyBAQCBib29sIExpbmVM
YXlvdXQ6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgYwogICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUgfHwgc3R5bGUucG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVudHM6Ok5v
bmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvJiByZW5kZXJlciA9IGNv
bnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4oKm1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChy
dW4ubGF5b3V0Qm94KCkpKTsKKyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVu
ZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpKTsKIAogICAgICAgICByZW5kZXJlci51
cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0g
dG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CiAgICAgICAgIGlmIChyZXN1bHQuYWRk
Tm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlci5ub2RlRm9ySGl0VGVzdCgpLCByZXF1
ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBydW5SZWN0KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0
b3ApCkBAIC01MDEsNyArNTAyLDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKIAogU2hhZG93
RGF0YSogTGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KCkKIHsKLSAgICBpZiAoIW1fZmxvdy5z
ZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpCisgICAgaWYg
KCFmbG93KCkuc2V0dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93
U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAwLCAwLCAxNTAsIDE1MCB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCA0NWY4YTcwYTM2NmMuLjc4OTJhNTk4
Zjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtNDIsNiArNDIsNyBAQCBj
bGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSZW5kZXJC
bG9ja0Zsb3c7CiBjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsK
IHN0cnVjdCBQYWludEluZm87CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CkBAIC01
MSwxNSArNTIsMTggQEAgc3RydWN0IElubGluZUNvbnRlbnQ7CiBjbGFzcyBMaW5lTGF5b3V0IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPExpbmVMYXlvdXQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYp
OworICAgIExpbmVMYXlvdXQoUmVuZGVyQmxvY2tGbG93Jik7CiAgICAgfkxpbmVMYXlvdXQoKTsK
IAorICAgIHN0YXRpYyBMaW5lTGF5b3V0KiBjb250YWluaW5nKFJlbmRlck9iamVjdCYpOworICAg
IHN0YXRpYyBjb25zdCBMaW5lTGF5b3V0KiBjb250YWluaW5nKGNvbnN0IFJlbmRlck9iamVjdCYp
OworCiAgICAgc3RhdGljIGJvb2wgaXNFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgY2FuVXNl
Rm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwogICAgIHN0YXRpYyBib29sIGNhblVzZUZvckFm
dGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyQmxvY2tGbG93JiwgU3R5bGVEaWZmZXJlbmNlKTsK
IAogICAgIHZvaWQgdXBkYXRlUmVwbGFjZWREaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYpOwot
ICAgIHZvaWQgdXBkYXRlU3R5bGUoKTsKKyAgICB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0Jik7CiAgICAgdm9pZCBsYXlvdXQoKTsKIAogICAgIExheW91dFVuaXQg
Y29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdDsKQEAgLTY4LDggKzcyLDggQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGxhc3RMaW5lQmFzZWxpbmUoKSBjb25zdDsKIAotICAgIHZvaWQgYWRqdXN0Rm9yUGFnaW5hdGlv
bihSZW5kZXJCbG9ja0Zsb3cmKTsKLSAgICB2b2lkIGNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9j
a0Zsb3cmKTsKKyAgICB2b2lkIGFkanVzdEZvclBhZ2luYXRpb24oKTsKKyAgICB2b2lkIGNvbGxl
Y3RPdmVyZmxvdygpOwogCiAgICAgY29uc3QgSW5saW5lQ29udGVudCogaW5saW5lQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC5nZXQoKTsgfQogICAgIGJvb2wgaXNQYWdp
bmF0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fcGFnaW5hdGVkSGVpZ2h0OyB9CkBAIC04MCw3ICs4
NCw3IEBAIHB1YmxpYzoKICAgICBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bnNGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpIGNvbnN0OwogICAgIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5kZXJFbGVt
ZW50JikgY29uc3Q7CiAKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yTGF5b3V0
Qm94KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiAgICAgc3Rh
dGljIHZvaWQgcmVsZWFzZUNhY2hlcyhSZW5kZXJWaWV3Jik7CiAKQEAgLTkwLDEyICs5NCwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29uc3RydWN0Q29udGVudCgpOwogICAgIElubGluZUNvbnRl
bnQmIGVuc3VyZUlubGluZUNvbnRlbnQoKTsKIAorICAgIFJlbmRlckJsb2NrRmxvdyYgZmxvdygp
IHsgcmV0dXJuIG1fYm94VHJlZS5mbG93KCk7IH0KKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3coKSBjb25zdCB7IHJldHVybiBtX2JveFRyZWUuZmxvdygpOyB9CisKICAgICBjb25zdCBM
YXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdExheW91dEJveCgpIGNvbnN0OwogICAgIExheW91dDo6
Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KCk7CiAgICAgU2hhZG93RGF0YSogZGVidWdUZXh0
U2hhZG93KCk7CiAgICAgdm9pZCByZWxlYXNlSW5saW5lSXRlbUNhY2hlKCk7CiAKLSAgICBjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKICAgICBCb3hUcmVlIG1fYm94VHJlZTsKICAgICBM
YXlvdXQ6OkxheW91dFN0YXRlIG1fbGF5b3V0U3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUmIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JN
b2Rlcm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaAppbmRleCBhY2MzODgwODQyMGMuLjY0OGVi
NjJhZjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5Q
YXRoLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqbV9pbmxpbmVDb250
ZW50LT5yZW5kZXJlckZvckxheW91dEJveChydW4oKS5sYXlvdXRCb3goKSk7CisgICAgICAgIHJl
dHVybiBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bigpLmxheW91dEJv
eCgpKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA4Mzc1NDg1ZWJhMGMu
LmRjMDY4ZjM0ZWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKQEAgLTIxMDMsMTUgKzIxMDMsMTUgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2wK
ICAgICAgICAgfTsKICAgICAgICAgaWYgKHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aCgp
KQogICAgICAgICAgICAgaW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCk7CisKKyNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQg
PSBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKSkKKyAgICAgICAgICAgIGxpbmVM
YXlvdXQtPnVwZGF0ZVN0eWxlKCp0aGlzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmIChtdWx0
aUNvbHVtbkZsb3coKSkKICAgICAgICAgdXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4oKTsK
LQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgIGlmIChsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKSkKLSAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0KCktPnVwZGF0ZVN0eWxlKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKCkKQEAgLTI5ODgsNyAr
Mjk4OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGls
ZHJlbigpCiB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYg
KGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpKSB7Ci0gICAgICAgIGxheW91dEZv
cm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpLT5jb2xsZWN0T3ZlcmZsb3coKnRoaXMpOworICAg
ICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQoKS0+Y29sbGVjdE92ZXJmbG93
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTM2NzYsNyArMzY3Niw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMRkNMaW5lcyhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQmIHJlcGFpbnRMCiAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5l
TGF5b3V0LmxheW91dCgpOwogCiAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250
ZXh0KCkubGF5b3V0U3RhdGUoKS0+aXNQYWdpbmF0ZWQoKSkKLSAgICAgICAgbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRMaW5lTGF5b3V0LmFkanVzdEZvclBhZ2luYXRpb24oKnRoaXMpOworICAgICAg
ICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuYWRqdXN0Rm9yUGFnaW5hdGlvbigp
OwogCiAgICAgYXV0byBjb250ZW50SGVpZ2h0ID0gbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5l
TGF5b3V0LmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgYXV0byBjb250ZW50Qm94VG9wID0g
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCBjZTBmMzgxNmZhNDUuLmQxZjBhNDdlNWZhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4
dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklu
bGluZUVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQm94RnJhZ21lbnRJbmZvLmgiCkBAIC00MDcsNiArNDA4LDExIEBAIHZvaWQgUmVuZGVy
Qm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlCiAgICAgLy8gYW55IG92ZXJyaWRlIGNvbnRlbnQgc2l6ZSBzZXQgYnkgb3Vy
IGNvbnRhaW5lciwgYmVjYXVzZSBpdCB3b3VsZCBsaWtlbHkgYmUgaW5jb3JyZWN0IGFmdGVyIHRo
ZSBzdHlsZSBjaGFuZ2UuCiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVu
dCgpICYmIHBhcmVudCgpLT5zdHlsZSgpLmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCkpCiAg
ICAgICAgIGNsZWFyT3ZlcnJpZGVDb250ZW50U2l6ZSgpOworCisgICAgaWYgKGRpZmYgPT0gU3R5
bGVEaWZmZXJlbmNlOjpMYXlvdXQpIHsKKyAgICAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBM
YXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29udGFpbmluZygqdGhpcykpCisgICAgICAg
ICAgICBsaW5lTGF5b3V0LT51cGRhdGVTdHlsZSgqdGhpcyk7CisgICAgfQogfQogCiB2b2lkIFJl
bmRlckJveDo6dXBkYXRlR3JpZFBvc2l0aW9uQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkK
</data>
<flag name="review"
          id="428324"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411988</attachid>
            <date>2020-10-21 08:30:33 -0700</date>
            <delta_ts>2020-10-21 11:47:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lfc-child-style-update-5.patch</filename>
            <type>text/plain</type>
            <size>30348</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNjVjMmY1NjdiOWUuLjk2MWFjMzBmZDFlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDIwLTEwLTIxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXBkYXRlIHN0eWxlIG9mIGNvbnRhaW5l
ZCBsYXlvdXQgYm94ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODAxNworCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAg
ICAgICBVcGRhdGUgbGF5b3V0IGJveCBzdHlsZSBvbiBzdHlsZSBjaGFuZ2UgYXMgbmVlZGVkLiBU
aGlzIGZpeGVzIGF0IGxlYXN0IGZhc3QvcmVwbGFjZWQvbWF4LXdpZHRoLXBlcmNlbnQuaHRtbCB3
aXRoCisgICAgICAgIGltYWdlIHN1cHBvcnQgZW5hYmxlZC4KKworICAgICAgICBUaGUgcGF0Y2gg
YWxzbyBjb250YWlucyByZWZhY3RvcmluZyB0byBtYWtlIEJveFRyZWUgbm9uLWNvbnN0IGFuZCBt
b3ZlcyB0aGUgc3R5bGUgdXBkYXRlIGNvZGUgdGhlcmUuCisKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpCb3hUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpidWlsZFRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnVwZGF0ZVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6bGF5b3V0Qm94
Rm9yUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpCb3hUcmVlOjpyZW5kZXJlckZvckxheW91dEJveCBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmZsb3cgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmZsb3cpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQ6
OnJlbmRlcmVyRm9yTGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50Lmg6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6
OmxvZ2ljYWxTdGFydFJ1bldpdGhOb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoOjpsb2dpY2FsRW5kUnVuV2l0aE5v
ZGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OkxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OmNvbnRhaW5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZVJlcGxhY2VkRGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRlU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmNvbnN0cnVj
dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlv
dXQ6OnRleHRSdW5zRm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpMaW5lTGF5b3V0OjpydW5Gb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnJlbmRlcmVyRm9yTGF5b3V0Qm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6aGl0VGVzdCk6
CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKToKKworICAgICAg
ICBVcGRhdGUgdGhlIGxpbmUgbGF5b3V0IHN0eWxlLgorCiAyMDIwLTEwLTIwICBKdWxpYW4gR29u
emFsZXogIDxqdWxpYW5fYV9nb256YWxlekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVsZWFzZSBh
c3NlcnQgaW4gfk5vZGUgZHVlIHRvIHJlbmRlciBlbGVtZW50IG9mIHBzZXVkbyBlbGVtZW50IG5v
dCBnZXR0aW5nIHJlbW92ZWQgaW4gdGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAppbmRl
eCBhYmI4YmVjNjUzNmYuLmZlODJjY2Y3Y2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5j
cHAKQEAgLTQ4LDE4ICs0OCwxOSBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgcm9vdEJveFN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gY2xvbmVkU3R5bGU7CiB9CiAKLUJv
eFRyZWU6OkJveFRyZWUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQotICAgIDogbV9yb290
KHJvb3RCb3hTdHlsZShmbG93LnN0eWxlKCkpKQorQm94VHJlZTo6Qm94VHJlZShSZW5kZXJCbG9j
a0Zsb3cmIGZsb3cpCisgICAgOiBtX2Zsb3coZmxvdykKKyAgICAsIG1fcm9vdChyb290Qm94U3R5
bGUoZmxvdy5zdHlsZSgpKSkKIHsKICAgICBpZiAoZmxvdy5pc0Fub255bW91cygpKQogICAgICAg
ICBtX3Jvb3Quc2V0SXNBbm9ueW1vdXMoKTsKIAotICAgIGJ1aWxkVHJlZShmbG93KTsKKyAgICBi
dWlsZFRyZWUoKTsKIH0KIAotdm9pZCBCb3hUcmVlOjpidWlsZFRyZWUoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiBmbG93KQordm9pZCBCb3hUcmVlOjpidWlsZFRyZWUoKQogewotICAgIGZvciAoYXV0
byYgY2hpbGRSZW5kZXJlciA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oZmxvdykpIHsK
KyAgICBmb3IgKGF1dG8mIGNoaWxkUmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJPYmpl
Y3Q+KG1fZmxvdykpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6Qm94PiBjaGls
ZEJveDsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CiAgICAg
ICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJl
bmRlcmVyKTsKQEAgLTgyLDQwICs4Myw2OSBAQCB2b2lkIEJveFRyZWU6OmJ1aWxkVHJlZShjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgfQogfQogCi1jb25zdCBMYXlvdXQ6OkJveCog
Qm94VHJlZTo6bGF5b3V0Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
cikgY29uc3QKK3ZvaWQgQm94VHJlZTo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyQm94TW9kZWxP
YmplY3QmIHJlbmRlcmVyKQogeworICAgIGF1dG8mIGxheW91dEJveCA9IGxheW91dEJveEZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKKyAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CisK
KyAgICBsYXlvdXRCb3gudXBkYXRlU3R5bGUoc3R5bGUpOworCisgICAgaWYgKCZsYXlvdXRCb3gg
PT0gJm1fcm9vdCkgeworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gbV9yb290LmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAg
IGlmIChjaGlsZC0+aXNBbm9ueW1vdXMoKSkKKyAgICAgICAgICAgICAgICBjaGlsZC0+dXBkYXRl
U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUs
IERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworTGF5b3V0OjpC
b3gmIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIpCit7CisgICAgaWYgKCZyZW5kZXJlciA9PSAmbV9mbG93KQorICAgICAgICByZXR1cm4g
bV9yb290OworCiAgICAgaWYgKG1fYm94ZXMuc2l6ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkg
ewogICAgICAgICBhdXRvIGluZGV4ID0gbV9ib3hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGVu
dHJ5KSB7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkucmVuZGVyZXIgPT0gJnJlbmRlcmVyOwog
ICAgICAgICB9KTsKLSAgICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2JveGVzW2luZGV4XS5ib3guZ2V0KCk7
CisgICAgICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiAqbV9i
b3hlc1tpbmRleF0uYm94OwogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmVyVG9Cb3hNYXAuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2JveGVzKQogICAgICAgICAg
ICAgbV9yZW5kZXJlclRvQm94TWFwLmFkZChlbnRyeS5yZW5kZXJlciwgZW50cnkuYm94LmdldCgp
KTsKICAgICB9Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXJUb0JveE1hcC5nZXQoJnJlbmRlcmVyKTsK
KyAgICByZXR1cm4gKm1fcmVuZGVyZXJUb0JveE1hcC5nZXQoJnJlbmRlcmVyKTsKIH0KIAotY29u
c3QgUmVuZGVyT2JqZWN0KiBCb3hUcmVlOjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlv
dXQ6OkJveCYgYm94KSBjb25zdAorY29uc3QgTGF5b3V0OjpCb3gmIEJveFRyZWU6OmxheW91dEJv
eEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Qm94VHJlZSY+KCp0aGlzKS5sYXlvdXRCb3hGb3JSZW5kZXJlcihy
ZW5kZXJlcik7Cit9CisKK1JlbmRlck9iamVjdCYgQm94VHJlZTo6cmVuZGVyZXJGb3JMYXlvdXRC
b3goY29uc3QgTGF5b3V0OjpCb3gmIGJveCkKK3sKKyAgICBpZiAoJmJveCA9PSAmbV9yb290KQor
ICAgICAgICByZXR1cm4gbV9mbG93OworCiAgICAgaWYgKG1fYm94ZXMuc2l6ZSgpIDw9IHNtYWxs
VHJlZVRocmVzaG9sZCkgewogICAgICAgICBhdXRvIGluZGV4ID0gbV9ib3hlcy5maW5kTWF0Y2hp
bmcoWyZdKGF1dG8mIGVudHJ5KSB7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkuYm94LmdldCgp
ID09ICZib3g7CiAgICAgICAgIH0pOwotICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fYm94ZXNbaW5kZXhd
LnJlbmRlcmVyOworICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworICAgICAgICBy
ZXR1cm4gKm1fYm94ZXNbaW5kZXhdLnJlbmRlcmVyOwogICAgIH0KIAogICAgIGlmIChtX2JveFRv
UmVuZGVyZXJNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jv
eGVzKQogICAgICAgICAgICAgbV9ib3hUb1JlbmRlcmVyTWFwLmFkZChlbnRyeS5ib3guZ2V0KCks
IGVudHJ5LnJlbmRlcmVyKTsKICAgICB9Ci0gICAgcmV0dXJuIG1fYm94VG9SZW5kZXJlck1hcC5n
ZXQoJmJveCk7CisgICAgcmV0dXJuICptX2JveFRvUmVuZGVyZXJNYXAuZ2V0KCZib3gpOworfQor
Citjb25zdCBSZW5kZXJPYmplY3QmIEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0
IExheW91dDo6Qm94JiBib3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Qm94VHJl
ZSY+KCp0aGlzKS5yZW5kZXJlckZvckxheW91dEJveChib3gpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Cb3hUcmVlLmgKaW5kZXggODIyMjk0YmRkM2RkLi5lNTZjNzQxYjM5MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRy
ZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Cb3hUcmVlLmgKQEAgLTM0LDMxICszNCw0MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIAog
bmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAogY2xhc3MgQm94VHJlZSB7CiBwdWJsaWM6
Ci0gICAgQm94VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKKyAgICBCb3hUcmVlKFJlbmRl
ckJsb2NrRmxvdyYpOworCisgICAgdm9pZCB1cGRhdGVTdHlsZShjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYpOworCisgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9mbG93OyB9CisgICAgUmVuZGVyQmxvY2tGbG93JiBmbG93KCkgeyByZXR1cm4gbV9m
bG93OyB9CiAKICAgICBjb25zdCBMYXlvdXQ6OkluaXRpYWxDb250YWluaW5nQmxvY2smIHJvb3RM
YXlvdXRCb3goKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KICAgICBMYXlvdXQ6OkluaXRpYWxD
b250YWluaW5nQmxvY2smIHJvb3RMYXlvdXRCb3goKSB7IHJldHVybiBtX3Jvb3Q7IH0KIAotICAg
IGNvbnN0IExheW91dDo6Qm94KiBsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKLSAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yTGF5b3V0Qm94
KGNvbnN0IExheW91dDo6Qm94JikgY29uc3Q7CisgICAgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OworICAgIExheW91dDo6
Qm94JiBsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmKTsKKworICAgIGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gm
KSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBidWlsZFRyZWUoY29uc3QgUmVuZGVy
QmxvY2tGbG93Jik7CisgICAgdm9pZCBidWlsZFRyZWUoKTsKIAorICAgIFJlbmRlckJsb2NrRmxv
dyYgbV9mbG93OwogICAgIExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jayBtX3Jvb3Q7CiAg
ICAgc3RydWN0IEJveEFuZFJlbmRlcmVyIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0
IExheW91dDo6Qm94PiBib3g7Ci0gICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIg
eyBudWxscHRyIH07CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkJveD4gYm94Owor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyIHsgbnVsbHB0ciB9OwogICAgIH07CiAgICAg
VmVjdG9yPEJveEFuZFJlbmRlcmVyLCAxPiBtX2JveGVzOwogCi0gICAgbXV0YWJsZSBIYXNoTWFw
PGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dDo6Qm94Kj4gbV9yZW5kZXJlclRvQm94
TWFwOwotICAgIG11dGFibGUgSGFzaE1hcDxjb25zdCBMYXlvdXQ6OkJveCosIGNvbnN0IFJlbmRl
ck9iamVjdCo+IG1fYm94VG9SZW5kZXJlck1hcDsKKyAgICBIYXNoTWFwPGNvbnN0IFJlbmRlck9i
amVjdCosIExheW91dDo6Qm94Kj4gbV9yZW5kZXJlclRvQm94TWFwOworICAgIEhhc2hNYXA8Y29u
c3QgTGF5b3V0OjpCb3gqLCBSZW5kZXJPYmplY3QqPiBtX2JveFRvUmVuZGVyZXJNYXA7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwCmluZGV4IDJjMTk4ZWVl
ZjRkZi4uZThiOTlmMjhiMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBjb25zdCBMaW5lTGF5b3V0JiBJbmxpbmVDb250ZW50Ojps
aW5lTGF5b3V0KCkgY29uc3QKICAgICByZXR1cm4gKm1fbGluZUxheW91dDsKIH0KIAotY29uc3Qg
UmVuZGVyT2JqZWN0KiBJbmxpbmVDb250ZW50OjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBM
YXlvdXQ6OkJveCYgbGF5b3V0Qm94KSBjb25zdAorY29uc3QgUmVuZGVyT2JqZWN0JiBJbmxpbmVD
b250ZW50OjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94
KSBjb25zdAogewogICAgIHJldHVybiBtX2xpbmVMYXlvdXQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94
KGxheW91dEJveCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKaW5kZXgg
MjIzYzkyNTQ5ZDFlLi44NDdjY2U0NmI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVD
b250ZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IElubGluZUNvbnRlbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAg
ICAgY29uc3QgTGluZUxheW91dCYgbGluZUxheW91dCgpIGNvbnN0OwotICAgIGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmKSBjb25zdDsK
KyAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91
dDo6Qm94JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSW5saW5lQ29udGVudChjb25zdCBMaW5l
TGF5b3V0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoLmgKaW5kZXggNTkwY2RlMGZhMzc5Li4yYmRkZjc2YTlhMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRv
ck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBsaW5lKCkuZmlyc3RSdW5JbmRleCgp
OwogICAgICAgICBhdXRvIGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGxpbmUoKS5ydW5Db3VudCgp
OwogICAgICAgICBmb3IgKGF1dG8gcnVuSW5kZXggPSBzdGFydEluZGV4OyBydW5JbmRleCA8IGVu
ZEluZGV4OyArK3J1bkluZGV4KSB7Ci0gICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9ICptX2lu
bGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1faW5saW5lQ29udGVudC0+cnVuc1ty
dW5JbmRleF0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2lu
bGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1faW5saW5lQ29udGVudC0+cnVuc1ty
dW5JbmRleF0ubGF5b3V0Qm94KCkpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLm5vZGUoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVDb250ZW50LCBydW5JbmRleCB9Owog
ICAgICAgICB9CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHN0YXJ0
SW5kZXggPSBsaW5lKCkuZmlyc3RSdW5JbmRleCgpOwogICAgICAgICBhdXRvIGVuZEluZGV4ID0g
c3RhcnRJbmRleCArIGxpbmUoKS5ydW5Db3VudCgpOwogICAgICAgICBmb3IgKGF1dG8gcnVuSW5k
ZXggPSBlbmRJbmRleDsgcnVuSW5kZXgtLSA+IHN0YXJ0SW5kZXg7KSB7Ci0gICAgICAgICAgICBh
dXRvJiByZW5kZXJlciA9ICptX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1f
aW5saW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAg
YXV0byYgcmVuZGVyZXIgPSBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KG1f
aW5saW5lQ29udGVudC0+cnVuc1tydW5JbmRleF0ubGF5b3V0Qm94KCkpOwogICAgICAgICAgICAg
aWYgKHJlbmRlcmVyLm5vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyAqbV9pbmxpbmVD
b250ZW50LCBydW5JbmRleCB9OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwCmluZGV4IGYxZjAxNTU4ZjBhMS4uMjVhNThmNDIwZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTUsMTcgKzU1LDMxIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1MaW5lTGF5b3V0OjpMaW5lTGF5
b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKLSAgICA6IG1fZmxvdyhmbG93KQotICAg
ICwgbV9ib3hUcmVlKGZsb3cpCi0gICAgLCBtX2xheW91dFN0YXRlKG1fZmxvdy5kb2N1bWVudCgp
LCByb290TGF5b3V0Qm94KCkpCitMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KFJlbmRlckJsb2NrRmxv
dyYgZmxvdykKKyAgICA6IG1fYm94VHJlZShmbG93KQorICAgICwgbV9sYXlvdXRTdGF0ZShmbG93
LmRvY3VtZW50KCksIHJvb3RMYXlvdXRCb3goKSkKICAgICAsIG1faW5saW5lRm9ybWF0dGluZ1N0
YXRlKG1fbGF5b3V0U3RhdGUuZW5zdXJlSW5saW5lRm9ybWF0dGluZ1N0YXRlKHJvb3RMYXlvdXRC
b3goKSkpCiB7Ci0gICAgbV9sYXlvdXRTdGF0ZS5zZXRJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RD
aGlsZChtX2Zsb3cucGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSAmbV9mbG93KTsKKyAgICBtX2xh
eW91dFN0YXRlLnNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkKGZsb3cucGFyZW50KCkt
PmZpcnN0Q2hpbGQoKSA9PSAmZmxvdyk7CiB9CiAKIExpbmVMYXlvdXQ6On5MaW5lTGF5b3V0KCkg
PSBkZWZhdWx0OwogCitMaW5lTGF5b3V0KiBMaW5lTGF5b3V0Ojpjb250YWluaW5nKFJlbmRlck9i
amVjdCYgcmVuZGVyZXIpCit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHJlbmRlcmVyLnBhcmVu
dCgpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCpwYXJlbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnBhcmVudCkubGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2NvbnN0IExpbmVMYXlvdXQqIExpbmVMYXlvdXQ6OmNvbnRhaW5pbmcoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gY29udGFpbmluZyhjb25zdF9jYXN0
PFJlbmRlck9iamVjdCY+KHJlbmRlcmVyKSk7Cit9CisKIGJvb2wgTGluZUxheW91dDo6aXNFbmFi
bGVkKCkKIHsKICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpOwpAQCAtODcs
MjMgKzEwMSwxNSBAQCBib29sIExpbmVMYXlvdXQ6OmNhblVzZUZvckFmdGVyU3R5bGVDaGFuZ2Uo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBTdHlsZURpZgogCiB2b2lkIExpbmVMYXlvdXQ6
OnVwZGF0ZVJlcGxhY2VkRGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlcGxhY2VkKQogewot
ICAgIGF1dG8mIGxheW91dEJveCA9ICptX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVw
bGFjZWQpOwotICAgIGF1dG8mIHJlcGxhY2VkQm94ID0gY29uc3RfY2FzdDxMYXlvdXQ6OlJlcGxh
Y2VkQm94Jj4oZG93bmNhc3Q8TGF5b3V0OjpSZXBsYWNlZEJveD4obGF5b3V0Qm94KSk7CisgICAg
YXV0byYgbGF5b3V0Qm94ID0gbV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVyKHJlcGxhY2Vk
KTsKKyAgICBhdXRvJiByZXBsYWNlZEJveCA9IGRvd25jYXN0PExheW91dDo6UmVwbGFjZWRCb3g+
KGxheW91dEJveCk7CiAKICAgICByZXBsYWNlZEJveC5zZXRDb250ZW50U2l6ZUZvckludGVncmF0
aW9uKHsgcmVwbGFjZWQuY29udGVudExvZ2ljYWxXaWR0aCgpLCByZXBsYWNlZC5jb250ZW50TG9n
aWNhbEhlaWdodCgpIH0pOwogfQogCi12b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZVN0eWxlKCkKK3Zv
aWQgTGluZUxheW91dDo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJl
bmRlcmVyKQogewotICAgIGF1dG8mIHJvb3QgPSByb290TGF5b3V0Qm94KCk7Ci0KLSAgICAvLyBG
SVhNRTogRW5jYXBzdWxhdGUgc3R5bGUgdXBkYXRlcyBiZXR0ZXIuCi0gICAgcm9vdC51cGRhdGVT
dHlsZShtX2Zsb3cuc3R5bGUoKSk7Ci0KLSAgICBmb3IgKGF1dG8qIGNoaWxkID0gcm9vdC5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
IGlmIChjaGlsZC0+aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgICAgIGNoaWxkLT51cGRhdGVTdHls
ZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShyb290LnN0eWxl
KCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKLSAgICB9CisgICAgbV9ib3hUcmVlLnVwZGF0ZVN0
eWxlKHJlbmRlcmVyKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQoKQpAQCAtMTE4LDgg
KzEyNCw4IEBAIHZvaWQgTGluZUxheW91dDo6bGF5b3V0KCkKICAgICBhdXRvIGlubGluZUZvcm1h
dHRpbmdDb250ZXh0ID0gTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IHJvb3RMYXlv
dXRCb3goKSwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUgfTsKIAogICAgIGF1dG8gaW52YWxpZGF0
aW9uU3RhdGUgPSBMYXlvdXQ6OkludmFsaWRhdGlvblN0YXRlIHsgfTsKLSAgICBhdXRvIGhvcml6
b250YWxDb25zdHJhaW50cyA9IExheW91dDo6SG9yaXpvbnRhbENvbnN0cmFpbnRzIHsgbV9mbG93
LmJvcmRlckFuZFBhZGRpbmdTdGFydCgpLCBtX2Zsb3cuY29udGVudFNpemUoKS53aWR0aCgpIH07
Ci0gICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzID0gTGF5b3V0OjpWZXJ0aWNhbENvbnN0cmFp
bnRzIHsgbV9mbG93LmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSwgeyB9IH07CisgICAgYXV0byBo
b3Jpem9udGFsQ29uc3RyYWludHMgPSBMYXlvdXQ6Okhvcml6b250YWxDb25zdHJhaW50cyB7IGZs
b3coKS5ib3JkZXJBbmRQYWRkaW5nU3RhcnQoKSwgZmxvdygpLmNvbnRlbnRTaXplKCkud2lkdGgo
KSB9OworICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IExheW91dDo6VmVydGljYWxDb25z
dHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCksIHsgfSB9OwogCiAgICAg
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25T
dGF0ZSwgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMgfSk7CiAg
ICAgY29uc3RydWN0Q29udGVudCgpOwpAQCAtMTY4LDkgKzE3NCw5IEBAIHZvaWQgTGluZUxheW91
dDo6Y29uc3RydWN0Q29udGVudCgpCiAgICAgICAgICAgICBkaXNwbGF5SW5saW5lQ29udGVudC5y
dW5zLmFwcGVuZChkaXNwbGF5UnVuKTsKIAogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc1Jl
cGxhY2VkQm94KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlckJveD4oKnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCkpOworICAgICAgICAg
ICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PihtX2JveFRyZWUucmVu
ZGVyZXJGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgYXV0byBib3Jk
ZXJCb3hMb2NhdGlvbiA9IEZsb2F0UG9pbnQgeyBydW5SZWN0LngoKSwgcnVuUmVjdC55KCkgKyBt
X2xheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCkubWFyZ2luQmVmb3JlKCkgfTsK
LSAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckJveCY+KHJlbmRlcmVyKS5zZXRMb2Nh
dGlvbihmbG9vcmVkTGF5b3V0UG9pbnQoYm9yZGVyQm94TG9jYXRpb24pKTsKKyAgICAgICAgICAg
ICAgICByZW5kZXJlci5zZXRMb2NhdGlvbihmbG9vcmVkTGF5b3V0UG9pbnQoYm9yZGVyQm94TG9j
YXRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH07CkBAIC0xODYsMTAgKzE5
MiwxMCBAQCB2b2lkIExpbmVMYXlvdXQ6OmNvbnN0cnVjdENvbnRlbnQoKQogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgd2hlcmUgdGhlIGxvZ2ljYWwgdG8gcGh5c2ljYWwgdHJhbnNsYXRl
IHNob3VsZCBoYXBwZW4uCiAgICAgICAgICAgICBhdXRvIG92ZXJmbG93V2lkdGggPSBbJl0gewog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHRoZSBjb3B5IG9mIHRoZSBsZXRzLWFkanVz
dC1vdmVyZmxvdy1mb3ItdGhlLWNhcmV0IGJlaGF2aW9yIGZyb20gQ29tcGxleExpbmVMYXlvdXQ6
OmFkZE92ZXJmbG93RnJvbUlubGluZUNoaWxkcmVuLgotICAgICAgICAgICAgICAgIGF1dG8gZW5k
UGFkZGluZyA9IG1fZmxvdy5oYXNPdmVyZmxvd0NsaXAoKSA/IG1fZmxvdy5wYWRkaW5nRW5kKCkg
OiAwX2x1OworICAgICAgICAgICAgICAgIGF1dG8gZW5kUGFkZGluZyA9IGZsb3coKS5oYXNPdmVy
Zmxvd0NsaXAoKSA/IGZsb3coKS5wYWRkaW5nRW5kKCkgOiAwX2x1OwogICAgICAgICAgICAgICAg
IGlmICghZW5kUGFkZGluZykKLSAgICAgICAgICAgICAgICAgICAgZW5kUGFkZGluZyA9IG1fZmxv
dy5lbmRQYWRkaW5nV2lkdGhGb3JDYXJldCgpOwotICAgICAgICAgICAgICAgIGlmIChtX2Zsb3cu
aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWVuZFBhZGRpbmcgJiYgbV9mbG93LmVsZW1lbnQoKSAmJiBt
X2Zsb3cuZWxlbWVudCgpLT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZW5kUGFkZGluZyA9IGZsb3coKS5lbmRQYWRkaW5nV2lkdGhGb3JDYXJldCgpOworICAg
ICAgICAgICAgICAgIGlmIChmbG93KCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWVuZFBhZGRpbmcg
JiYgZmxvdygpLmVsZW1lbnQoKSAmJiBmbG93KCkuZWxlbWVudCgpLT5pc1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZW5kUGFkZGluZyA9IDE7CiAgICAgICAgICAg
ICAgICAgYXV0byBsaW5lQm94TG9naWNhbFdpZHRoID0gbGluZUJveExvZ2ljYWxSZWN0LndpZHRo
KCkgKyBlbmRQYWRkaW5nOwogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChsaW5lLmxv
Z2ljYWxXaWR0aCgpLCBsaW5lQm94TG9naWNhbFdpZHRoKTsKQEAgLTIxOSwxMCArMjI1LDEwIEBA
IHZvaWQgTGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCgpCiAKIHZvaWQgTGluZUxheW91dDo6
cHJlcGFyZUxheW91dFN0YXRlKCkKIHsKLSAgICBtX2xheW91dFN0YXRlLnNldFZpZXdwb3J0U2l6
ZShtX2Zsb3cuZnJhbWUoKS52aWV3KCktPnNpemUoKSk7CisgICAgbV9sYXlvdXRTdGF0ZS5zZXRW
aWV3cG9ydFNpemUoZmxvdygpLmZyYW1lKCkudmlldygpLT5zaXplKCkpOwogCiAgICAgYXV0byYg
cm9vdEdlb21ldHJ5ID0gbV9sYXlvdXRTdGF0ZS5lbnN1cmVHZW9tZXRyeUZvckJveChyb290TGF5
b3V0Qm94KCkpOwotICAgIHJvb3RHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgobV9mbG93LmNv
bnRlbnRTaXplKCkud2lkdGgoKSk7CisgICAgcm9vdEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0
aChmbG93KCkuY29udGVudFNpemUoKS53aWR0aCgpKTsKICAgICByb290R2VvbWV0cnkuc2V0UGFk
ZGluZyh7IHsgfSB9KTsKICAgICByb290R2VvbWV0cnkuc2V0Qm9yZGVyKHsgfSk7CiAgICAgcm9v
dEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oeyB9KTsKQEAgLTIzNCwxMCArMjQwLDEwIEBA
IHZvaWQgTGluZUxheW91dDo6cHJlcGFyZUZsb2F0aW5nU3RhdGUoKQogICAgIGF1dG8mIGZsb2F0
aW5nU3RhdGUgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7CiAgICAg
ZmxvYXRpbmdTdGF0ZS5jbGVhcigpOwogCi0gICAgaWYgKCFtX2Zsb3cuY29udGFpbnNGbG9hdHMo
KSkKKyAgICBpZiAoIWZsb3coKS5jb250YWluc0Zsb2F0cygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb3IgKGF1dG8mIGZsb2F0aW5nT2JqZWN0IDogKm1fZmxvdy5mbG9hdGluZ09iamVjdFNl
dCgpKSB7CisgICAgZm9yIChhdXRvJiBmbG9hdGluZ09iamVjdCA6ICpmbG93KCkuZmxvYXRpbmdP
YmplY3RTZXQoKSkgewogICAgICAgICBhdXRvJiByZWN0ID0gZmxvYXRpbmdPYmplY3QtPmZyYW1l
UmVjdCgpOwogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZmxvYXRpbmdPYmplY3QtPnR5cGUoKSA9
PSBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodAogICAgICAgICAgICAgPyBMYXlvdXQ6OkZsb2F0
aW5nU3RhdGU6OkZsb2F0SXRlbTo6UG9zaXRpb246OlJpZ2h0CkBAIC0zMDEsMTAgKzMwNyw5IEBA
IExheW91dFVuaXQgTGluZUxheW91dDo6bGFzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgcmV0
dXJuIExheW91dFVuaXQgeyBsYXN0TGluZS5yZWN0KCkueSgpICsgbGFzdExpbmUuYmFzZWxpbmUo
KSB9OwogfQogCi12b2lkIExpbmVMYXlvdXQ6OmFkanVzdEZvclBhZ2luYXRpb24oUmVuZGVyQmxv
Y2tGbG93JiBmbG93KQordm9pZCBMaW5lTGF5b3V0OjphZGp1c3RGb3JQYWdpbmF0aW9uKCkKIHsK
LSAgICBBU1NFUlQoJmZsb3cgPT0gJm1fZmxvdyk7Ci0gICAgYXV0byBwYWdpbmVkSW5saW5lQ29u
dGVudCA9IGFkanVzdExpbmVQb3NpdGlvbnNGb3JQYWdpbmF0aW9uKCptX2lubGluZUNvbnRlbnQs
IGZsb3cpOworICAgIGF1dG8gcGFnaW5lZElubGluZUNvbnRlbnQgPSBhZGp1c3RMaW5lUG9zaXRp
b25zRm9yUGFnaW5hdGlvbigqbV9pbmxpbmVDb250ZW50LCBmbG93KCkpOwogICAgIGlmIChwYWdp
bmVkSW5saW5lQ29udGVudC5wdHIoKSA9PSBtX2lubGluZUNvbnRlbnQpIHsKICAgICAgICAgbV9w
YWdpbmF0ZWRIZWlnaHQgPSB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTMxNiwxNCArMzIxLDEy
IEBAIHZvaWQgTGluZUxheW91dDo6YWRqdXN0Rm9yUGFnaW5hdGlvbihSZW5kZXJCbG9ja0Zsb3cm
IGZsb3cpCiAgICAgbV9pbmxpbmVDb250ZW50ID0gV1RGTW92ZShwYWdpbmVkSW5saW5lQ29udGVu
dCk7CiB9CiAKLXZvaWQgTGluZUxheW91dDo6Y29sbGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxv
dyYgZmxvdykKK3ZvaWQgTGluZUxheW91dDo6Y29sbGVjdE92ZXJmbG93KCkKIHsKLSAgICBBU1NF
UlQoJmZsb3cgPT0gJm1fZmxvdyk7Ci0KICAgICBmb3IgKGF1dG8mIGxpbmUgOiBpbmxpbmVDb250
ZW50KCktPmxpbmVzKSB7Ci0gICAgICAgIGZsb3cuYWRkTGF5b3V0T3ZlcmZsb3coTGF5b3V0Ojp0
b0xheW91dFJlY3QobGluZS5zY3JvbGxhYmxlT3ZlcmZsb3coKSkpOwotICAgICAgICBpZiAoIWZs
b3cuaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgICAgICBmbG93LmFkZFZpc3VhbE92ZXJmbG93
KExheW91dDo6dG9MYXlvdXRSZWN0KGxpbmUuaW5rT3ZlcmZsb3coKSkpOworICAgICAgICBmbG93
KCkuYWRkTGF5b3V0T3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJlY3QobGluZS5zY3JvbGxhYmxl
T3ZlcmZsb3coKSkpOworICAgICAgICBpZiAoIWZsb3coKS5oYXNPdmVyZmxvd0NsaXAoKSkKKyAg
ICAgICAgICAgIGZsb3coKS5hZGRWaXN1YWxPdmVyZmxvdyhMYXlvdXQ6OnRvTGF5b3V0UmVjdChs
aW5lLmlua092ZXJmbG93KCkpKTsKICAgICB9CiB9CiAKQEAgLTMzOCwxMiArMzQxLDExIEBAIFRl
eHRSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0JiBy
ZW5kZXJUZXh0KSBjb25zdAogewogICAgIGlmICghbV9pbmxpbmVDb250ZW50KQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIGF1dG8qIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JS
ZW5kZXJlcihyZW5kZXJUZXh0KTsKLSAgICBBU1NFUlQobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBs
YXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7CiAK
ICAgICBhdXRvIGZpcnN0SW5kZXggPSBbJl0oKSAtPiBPcHRpb25hbDxzaXplX3Q+IHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2lubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmICgmbV9pbmxpbmVDb250ZW50LT5ydW5zW2ldLmxheW91dEJv
eCgpID09IGxheW91dEJveCkKKyAgICAgICAgICAgIGlmICgmbV9pbmxpbmVDb250ZW50LT5ydW5z
W2ldLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTM1OSwxOSArMzYxLDE4IEBAIFJ1
bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJF
bGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9pbmxpbmVDb250ZW50KQogICAgICAgICByZXR1
cm4geyB9OwotICAgIGF1dG8qIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5k
ZXJlcihyZW5kZXJFbGVtZW50KTsKLSAgICBBU1NFUlQobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBs
YXlvdXRCb3ggPSBtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyRWxlbWVudCk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5saW5lQ29udGVudC0+cnVucy5zaXpl
KCk7ICsraSkgewogICAgICAgICBhdXRvJiBydW4gPSAgbV9pbmxpbmVDb250ZW50LT5ydW5zW2ld
OwotICAgICAgICBpZiAoJnJ1bi5sYXlvdXRCb3goKSA9PSBsYXlvdXRCb3gpCisgICAgICAgIGlm
ICgmcnVuLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCiAgICAgICAgICAgICByZXR1cm4geyBS
dW5JdGVyYXRvck1vZGVyblBhdGgoKm1faW5saW5lQ29udGVudCwgaSkgfTsKICAgICB9CiAKICAg
ICByZXR1cm4geyB9OwogfQogCi1jb25zdCBSZW5kZXJPYmplY3QqIExpbmVMYXlvdXQ6OnJlbmRl
cmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0Citjb25z
dCBSZW5kZXJPYmplY3QmIExpbmVMYXlvdXQ6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYm94VHJlZS5yZW5k
ZXJlckZvckxheW91dEJveChsYXlvdXRCb3gpOwogfQpAQCAtMzk1LDE2ICszOTYsMTYgQEAgdm9p
ZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBpbmxpbmVDb250
ZW50ID0gKm1faW5saW5lQ29udGVudDsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1f
Zmxvdy5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBmbG93KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCiAgICAg
YXV0byBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKICAgICBwYWludFJlY3QubW92ZUJ5KC1w
YWludE9mZnNldCk7CiAKICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUNvbnRlbnQucnVuc0Zv
clJlY3QocGFpbnRSZWN0KSkgewogICAgICAgICBpZiAoIXJ1bi50ZXh0Q29udGVudCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvKiByZW5kZXJlciA9IG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJv
eChydW4ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgcmVuZGVyQm94ID0gY29uc3RfY2FzdDxSZW5kZXJCb3gmPihkb3duY2FzdDxS
ZW5kZXJCb3g+KCpyZW5kZXJlcikpOworICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2Jv
eFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpKTsKKyAgICAgICAgICAg
IGlmIChyZW5kZXJlci5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyQm94PihyZW5kZXJlcikpIHsK
KyAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKTsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94Lmhhc1NlbGZQYWludGluZ0xh
eWVyKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlm
ICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJCb3gpKQpAQCAtNDQ5LDcg
KzQ1MCw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogICAgICAgICBUZXh0UGFpbnRlciB0ZXh0
UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgdGV4dFBhaW50ZXIuc2V0Rm9u
dChzdHlsZS5mb250Q2FzY2FkZSgpKTsKLSAgICAgICAgdGV4dFBhaW50ZXIuc2V0U3R5bGUoY29t
cHV0ZVRleHRQYWludFN0eWxlKG1fZmxvdy5mcmFtZSgpLCBzdHlsZSwgcGFpbnRJbmZvKSk7Cisg
ICAgICAgIHRleHRQYWludGVyLnNldFN0eWxlKGNvbXB1dGVUZXh0UGFpbnRTdHlsZShmbG93KCku
ZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOwogICAgICAgICBpZiAoYXV0byogZGVidWdTaGFk
b3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKICAgICAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRv
dyhkZWJ1Z1NoYWRvdyk7CiAKQEAgLTQ1OCw3ICs0NTksNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiAKICAgICAgICAgaWYgKCFzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjb3JyZWN0IFJlbmRlclRleHQuCi0gICAg
ICAgICAgICBpZiAoYXV0byogdGV4dFJlbmRlcmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4
dD4obV9mbG93KS5maXJzdCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogdGV4dFJlbmRlcmVy
ID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4oZmxvdygpKS5maXJzdCgpKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byBwYWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVyIHsgcGFpbnRJbmZv
LmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5kZXJl
ciwgZmFsc2UsIHN0eWxlLmZvbnRDYXNjYWRlKCkgfTsKICAgICAgICAgICAgICAgICBwYWludGVy
LnNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgcGFpbnRlci5wYWludFRl
eHREZWNvcmF0aW9uKHRleHRSdW4sIHRleHRPcmlnaW4sIHJlY3QubG9jYXRpb24oKSArIHBhaW50
T2Zmc2V0KTsKQEAgLTQ4OSw3ICs0OTAsNyBAQCBib29sIExpbmVMYXlvdXQ6OmhpdFRlc3QoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYwogICAg
ICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgc3R5
bGUucG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVudHM6Ok5vbmUpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBhdXRvJiByZW5kZXJlciA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2Jq
ZWN0Jj4oKm1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCkpKTsK
KyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3go
cnVuLmxheW91dEJveCgpKTsKIAogICAgICAgICByZW5kZXJlci51cGRhdGVIaXRUZXN0UmVzdWx0
KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3Vt
dWxhdGVkT2Zmc2V0KSk7CiAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVz
dFJlc3VsdChyZW5kZXJlci5ub2RlRm9ySGl0VGVzdCgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29u
dGFpbmVyLCBydW5SZWN0KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCkBAIC01MDEsNyArNTAy
LDcgQEAgYm9vbCBMaW5lTGF5b3V0OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGMKIAogU2hhZG93RGF0YSogTGluZUxheW91dDo6
ZGVidWdUZXh0U2hhZG93KCkKIHsKLSAgICBpZiAoIW1fZmxvdy5zZXR0aW5ncygpLnNpbXBsZUxp
bmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpCisgICAgaWYgKCFmbG93KCkuc2V0dGluZ3Mo
KS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1Rl
eHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1
ZSwgU1JHQkE8dWludDhfdD4geyAwLCAwLCAxNTAsIDE1MCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuaAppbmRleCA0NWY4YTcwYTM2NmMuLjc4OTJhNTk4Zjc5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBIaXRUZXN0UmVxdWVz
dDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CiBjbGFzcyBS
ZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIHN0cnVjdCBQYWludEluZm87
CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CkBAIC01MSwxNSArNTIsMTggQEAgc3Ry
dWN0IElubGluZUNvbnRlbnQ7CiBjbGFzcyBMaW5lTGF5b3V0IDogcHVibGljIENhbk1ha2VXZWFr
UHRyPExpbmVMYXlvdXQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOworICAgIExpbmVMYXlvdXQo
UmVuZGVyQmxvY2tGbG93Jik7CiAgICAgfkxpbmVMYXlvdXQoKTsKIAorICAgIHN0YXRpYyBMaW5l
TGF5b3V0KiBjb250YWluaW5nKFJlbmRlck9iamVjdCYpOworICAgIHN0YXRpYyBjb25zdCBMaW5l
TGF5b3V0KiBjb250YWluaW5nKGNvbnN0IFJlbmRlck9iamVjdCYpOworCiAgICAgc3RhdGljIGJv
b2wgaXNFbmFibGVkKCk7CiAgICAgc3RhdGljIGJvb2wgY2FuVXNlRm9yKGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYpOwogICAgIHN0YXRpYyBib29sIGNhblVzZUZvckFmdGVyU3R5bGVDaGFuZ2UoY29u
c3QgUmVuZGVyQmxvY2tGbG93JiwgU3R5bGVEaWZmZXJlbmNlKTsKIAogICAgIHZvaWQgdXBkYXRl
UmVwbGFjZWREaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYpOwotICAgIHZvaWQgdXBkYXRlU3R5
bGUoKTsKKyAgICB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Jik7
CiAgICAgdm9pZCBsYXlvdXQoKTsKIAogICAgIExheW91dFVuaXQgY29udGVudExvZ2ljYWxIZWln
aHQoKSBjb25zdDsKQEAgLTY4LDggKzcyLDggQEAgcHVibGljOgogICAgIExheW91dFVuaXQgZmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGxhc3RMaW5lQmFzZWxpbmUo
KSBjb25zdDsKIAotICAgIHZvaWQgYWRqdXN0Rm9yUGFnaW5hdGlvbihSZW5kZXJCbG9ja0Zsb3cm
KTsKLSAgICB2b2lkIGNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmKTsKKyAgICB2b2lk
IGFkanVzdEZvclBhZ2luYXRpb24oKTsKKyAgICB2b2lkIGNvbGxlY3RPdmVyZmxvdygpOwogCiAg
ICAgY29uc3QgSW5saW5lQ29udGVudCogaW5saW5lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5saW5lQ29udGVudC5nZXQoKTsgfQogICAgIGJvb2wgaXNQYWdpbmF0ZWQoKSBjb25zdCB7IHJl
dHVybiAhIW1fcGFnaW5hdGVkSGVpZ2h0OyB9CkBAIC04MCw3ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICBUZXh0UnVuSXRlcmF0b3IgdGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYpIGNvbnN0Owog
ICAgIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAKLSAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6
Qm94JikgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxheW91dEJv
eChjb25zdCBMYXlvdXQ6OkJveCYpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUNh
Y2hlcyhSZW5kZXJWaWV3Jik7CiAKQEAgLTkwLDEyICs5NCwxNCBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29uc3RydWN0Q29udGVudCgpOwogICAgIElubGluZUNvbnRlbnQmIGVuc3VyZUlubGluZUNv
bnRlbnQoKTsKIAorICAgIFJlbmRlckJsb2NrRmxvdyYgZmxvdygpIHsgcmV0dXJuIG1fYm94VHJl
ZS5mbG93KCk7IH0KKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3coKSBjb25zdCB7IHJl
dHVybiBtX2JveFRyZWUuZmxvdygpOyB9CisKICAgICBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJv
eCYgcm9vdExheW91dEJveCgpIGNvbnN0OwogICAgIExheW91dDo6Q29udGFpbmVyQm94JiByb290
TGF5b3V0Qm94KCk7CiAgICAgU2hhZG93RGF0YSogZGVidWdUZXh0U2hhZG93KCk7CiAgICAgdm9p
ZCByZWxlYXNlSW5saW5lSXRlbUNhY2hlKCk7CiAKLSAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IG1fZmxvdzsKICAgICBCb3hUcmVlIG1fYm94VHJlZTsKICAgICBMYXlvdXQ6OkxheW91dFN0YXRl
IG1fbGF5b3V0U3RhdGU7CiAgICAgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1faW5s
aW5lRm9ybWF0dGluZ1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ck1vZGVyblBhdGguaAppbmRleCBhY2MzODgwODQyMGMuLjY0OGViNjJhZjk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTExNyw3ICsx
MTcsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxh
eW91dEJveChydW4oKS5sYXlvdXRCb3goKSk7CisgICAgICAgIHJldHVybiBtX2lubGluZUNvbnRl
bnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1bigpLmxheW91dEJveCgpKTsKICAgICB9CiAKICAg
ICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA4Mzc1NDg1ZWJhMGMuLmRjMDY4ZjM0ZWUwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIxMDMs
MTUgKzIxMDMsMTUgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2wKICAgICAgICAgfTsKICAgICAg
ICAgaWYgKHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aCgpKQogICAgICAgICAgICAgaW52
YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCk7CisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKyAgICAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBsYXlvdXRGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQoKSkKKyAgICAgICAgICAgIGxpbmVMYXlvdXQtPnVwZGF0ZVN0eWxl
KCp0aGlzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmIChtdWx0aUNvbHVtbkZsb3coKSkKICAg
ICAgICAgdXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4oKTsKLQotI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQotICAgIGlmIChsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExp
bmVMYXlvdXQoKSkKLSAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0KCkt
PnVwZGF0ZVN0eWxlKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0
ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKCkKQEAgLTI5ODgsNyArMjk4OCw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2tGbG93OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpCiB7CiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKGxheW91dEZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dCgpKSB7Ci0gICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGlu
ZUxheW91dCgpLT5jb2xsZWN0T3ZlcmZsb3coKnRoaXMpOworICAgICAgICBsYXlvdXRGb3JtYXR0
aW5nQ29udGV4dExpbmVMYXlvdXQoKS0+Y29sbGVjdE92ZXJmbG93KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKQEAgLTM2NzYsNyArMzY3Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjpsYXlvdXRMRkNMaW5lcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJl
cGFpbnRMCiAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmxheW91dCgpOwog
CiAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUo
KS0+aXNQYWdpbmF0ZWQoKSkKLSAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5
b3V0LmFkanVzdEZvclBhZ2luYXRpb24oKnRoaXMpOworICAgICAgICBsYXlvdXRGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuYWRqdXN0Rm9yUGFnaW5hdGlvbigpOwogCiAgICAgYXV0byBjb250
ZW50SGVpZ2h0ID0gbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgYXV0byBjb250ZW50Qm94VG9wID0gYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBjZTBmMzgx
NmZhNDUuLmQxZjBhNDdlNWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIK
KyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94RnJhZ21lbnRJ
bmZvLmgiCkBAIC00MDcsNiArNDA4LDExIEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAgICAg
Ly8gYW55IG92ZXJyaWRlIGNvbnRlbnQgc2l6ZSBzZXQgYnkgb3VyIGNvbnRhaW5lciwgYmVjYXVz
ZSBpdCB3b3VsZCBsaWtlbHkgYmUgaW5jb3JyZWN0IGFmdGVyIHRoZSBzdHlsZSBjaGFuZ2UuCiAg
ICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5z
dHlsZSgpLmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KCkpCiAgICAgICAgIGNsZWFyT3ZlcnJp
ZGVDb250ZW50U2l6ZSgpOworCisgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlOjpMYXlv
dXQpIHsKKyAgICAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUxheW91dDo6Y29udGFpbmluZygqdGhpcykpCisgICAgICAgICAgICBsaW5lTGF5b3V0LT51
cGRhdGVTdHlsZSgqdGhpcyk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckJveDo6dXBkYXRlR3Jp
ZFBvc2l0aW9uQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkK
</data>
<flag name="commit-queue"
          id="428358"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412013</attachid>
            <date>2020-10-21 12:01:29 -0700</date>
            <delta_ts>2020-10-21 12:34:10 -0700</delta_ts>
            <desc>followup</desc>
            <filename>replica-crash.patch</filename>
            <type>text/plain</type>
            <size>1469</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTRjMDJmMzE2MDIuLjRjMGQ2MmU5ODE5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTEwLTIxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXBkYXRlIHN0eWxlIG9mIGNvbnRhaW5l
ZCBsYXlvdXQgYm94ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODAxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA1MzE5Mzg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIEZvbGxvd3VwIGZpeC4KKwor
ICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmNv
bnRhaW5pbmcpOgorCiAyMDIwLTEwLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBzdXJlIFdlYkF1ZGlvIEFQSSB0aHJvd3MgZXhjZXB0aW9ucyB3aXRo
IHVzZWZ1bCBlcnJvciBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApp
bmRleCAyNWE1OGY0MjBkYmYuLmYwYjE2MTkwMmI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAKQEAgLTY3LDYgKzY3LDkgQEAgTGluZUxheW91dDo6fkxpbmVMYXlvdXQoKSA9
IGRlZmF1bHQ7CiAKIExpbmVMYXlvdXQqIExpbmVMYXlvdXQ6OmNvbnRhaW5pbmcoUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlcikKIHsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSAmJiAh
aXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikgJiYgIWlzPFJlbmRlckltYWdlPihyZW5kZXJl
cikpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAogICAgIGlmIChhdXRvKiBwYXJlbnQg
PSByZW5kZXJlci5wYXJlbnQoKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93Pigq
cGFyZW50KSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpw
YXJlbnQpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>