<?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>87212</bug_id>
          
          <creation_ts>2012-05-22 22:10:51 -0700</creation_ts>
          <short_desc>Cache absolute clip rects on RenderLayer for compositing overlap testing</short_desc>
          <delta_ts>2012-11-14 17:01:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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>
          
          <blocked>84410</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>631210</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-22 22:10:51 -0700</bug_when>
    <thetext>Split out of bug 84410: 
http://trac.webkit.org/changeset/91114 added  call to backgroundClipRect() relative to the root layer. This is very expensive to compute on every layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631213</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-22 22:12:16 -0700</bug_when>
    <thetext>I have a hacky patch working, but the call to layer-&gt;updateLayerPosition() in RenderLayerCompositor::computeCompositingRequirements() is clearing cached clip rects. That call should not be necessary (it&apos;s been there from the first version of that file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631231</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-22 22:40:46 -0700</bug_when>
    <thetext>Fixing this gets CPU usage on a reduction of http://alliances.commandandconquer.com/en/ down from 100% to 30%, even before the patch on 84410.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632397</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-23 21:21:07 -0700</bug_when>
    <thetext>Random statistic of the day: in general browsing of top news sites, about 30-40% of RenderLayers had clipRects associated with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632440</commentid>
    <comment_count>4</comment_count>
      <attachid>143739</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-23 23:02:47 -0700</bug_when>
    <thetext>Created attachment 143739
Patch (not ready for review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632442</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 23:05:14 -0700</bug_when>
    <thetext>Attachment 143739 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634260</commentid>
    <comment_count>6</comment_count>
      <attachid>144142</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-25 13:50:42 -0700</bug_when>
    <thetext>Created attachment 144142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634262</commentid>
    <comment_count>7</comment_count>
      <attachid>144142</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-05-25 13:53:57 -0700</bug_when>
    <thetext>Comment on attachment 144142
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634283</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-25 14:17:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/118562</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767484</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-11-14 17:01:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/12705253&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143739</attachid>
            <date>2012-05-23 23:02:47 -0700</date>
            <delta_ts>2012-05-25 13:50:38 -0700</delta_ts>
            <desc>Patch (not ready for review)</desc>
            <filename>bug-87212-20120523230245.patch</filename>
            <type>text/plain</type>
            <size>28463</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUzYjVjNTJlNzMwNTdk
NjI3YWMyYWQ3ZTQyMmVjOWJkNzM3MDY1ZC4uM2RjMjBiMjE4NDEyYTkzMjBjZjE0YTY1YjQyZWEw
N2M2OTc3ZTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA1LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlIGFic29s
dXRlIGNsaXAgcmVjdHMgb24gUmVuZGVyTGF5ZXIgZm9yIGNvbXBvc2l0aW5nIG92ZXJsYXAgdGVz
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcy
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6Y2xpcHBpbmdSb290Rm9yUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0
VGVzdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiYWNrZ3JvdW5kQ2xpcFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjaGlsZHJlbkNsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZWxmQ2xpcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omxv
Y2FsQ2xpcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJl
Y3RzSW5jbHVkaW5nRGVzY2VuZGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmNsZWFyQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBSZWN0c0NhY2hlOjpDbGlwUmVjdHNDYWNoZSk6CisgICAgICAg
IChDbGlwUmVjdHNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUmVjdHNDYWNoZTo6fkNs
aXBSZWN0c0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBSZWN0c0NhY2hlOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjbGlwUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVDb21wb3NpdGVkQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6c2V0UmVxdWlyZXNPd25CYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgor
ICAgICAgICAoUmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6YWRkVG9PdmVybGFwTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xpcHBlZEJ5QW5jZXN0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRl
TGF5ZXJzKToKKwogMjAxMi0wNS0yMiAgSmFzb24gTGl1ICA8amFzb24ubGl1QHRvcmNobW9iaWxl
LmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUG9zc2libGUgdG8gY2xvYmJlciBodHRw
b25seSBjb29raWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCBhODJkOTM2OWQ2MzVlYjYxMDMwZWRhZDQxNTc2ZDVkMTQ0ZDYzZjliLi5iMmZlODEzNjJkYmUw
M2E2YjdlZDhkN2RhNjk5YjVmMTVjMmI3NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTE4MCwxMCArMTgwLDYgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxh
eWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1fcG9zWk9yZGVyTGlz
dCgwKQogICAgICwgbV9uZWdaT3JkZXJMaXN0KDApCiAgICAgLCBtX25vcm1hbEZsb3dMaXN0KDAp
Ci0gICAgLCBtX2NsaXBSZWN0cygwKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1fY2xpcFJlY3Rz
Um9vdCgwKQotI2VuZGlmCiAgICAgLCBtX21hcnF1ZWUoMCkKICAgICAsIG1fc3RhdGljSW5saW5l
UG9zaXRpb24oMCkKICAgICAsIG1fc3RhdGljQmxvY2tQb3NpdGlvbigwKQpAQCAtMjUzLDcgKzI0
OSw3IEBAIFJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIoKQogI2VuZGlmCiAgICAgCiAgICAgLy8g
TWFrZSBzdXJlIHdlIGhhdmUgbm8gbGluZ2VyaW5nIGNsaXAgcmVjdHMuCi0gICAgQVNTRVJUKCFt
X2NsaXBSZWN0cyk7CisgICAgQVNTRVJUKCFtX2NsaXBSZWN0c0NhY2hlKTsKICAgICAKICAgICBp
ZiAobV9zY3JvbGxDb3JuZXIpCiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5kZXN0cm95KCk7CkBA
IC0xMDcwLDcgKzEwNjYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVl
ZHNSZXBhaW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QsCiB9CiAjZW5kaWYKICAg
ICAKLVJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6Y2xpcHBpbmdSb290KCkgY29uc3QKK1JlbmRl
ckxheWVyKiBSZW5kZXJMYXllcjo6Y2xpcHBpbmdSb290Rm9yUGFpbnRpbmcoKSBjb25zdAogewog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoaXNDb21wb3NpdGVkKCkp
CkBAIC0yOTM2LDcgKzI5MzIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSBwYXJlbnQncyBjbGlwIHJlY3RzIGhhdmUgYmVlbiBjYWxjdWxhdGVkLgog
ICAgICAgICBDbGlwUmVjdCBjbGlwUmVjdCA9IHBhaW50RGlydHlSZWN0OwogICAgICAgICBpZiAo
cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGNsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KHJv
b3RMYXllciwgcmVnaW9uLCBwYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0
cyk7CisgICAgICAgICAgICBjbGlwUmVjdCA9IGJhY2tncm91bmRDbGlwUmVjdChyb290TGF5ZXIs
IHJlZ2lvbiwgKHBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRl
bXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzKTsKICAgICAgICAgICAgIGNsaXBS
ZWN0LmludGVyc2VjdChwYWludERpcnR5UmVjdCk7CiAgICAgICAgIAogICAgICAgICAgICAgLy8g
UHVzaCB0aGUgcGFyZW50IGNvb3JkaW5hdGUgc3BhY2UncyBjbGlwLgpAQCAtMzA0NSw3ICszMDQx
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICNlbmRpZgogICAgIAogICAgIGlmIChzaG91
bGRQYWludENvbnRlbnQgfHwgc2hvdWxkUGFpbnRPdXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5
U2Nyb2xsYmFycykgewotICAgICAgICBjYWxjdWxhdGVSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwg
cGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHks
IG91dGxpbmVSZWN0LCBsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJl
Y3RzKTsKKyAgICAgICAgY2FsY3VsYXRlUmVjdHMocm9vdExheWVyLCByZWdpb24sIChsb2NhbFBh
aW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBS
ZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRh
bWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3QpOwogICAgICAgICBwYWludE9m
ZnNldCA9IHRvUG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9u
KCkpOwogICAgIH0KIApAQCAtMzQ1MywxMSArMzQ0OSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJM
YXllcjo6aGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBj
b250CiB7CiAgICAgLy8gVGhlIG5hdHVyYWwgdGhpbmcgd291bGQgYmUgdG8ga2VlcCBIaXRUZXN0
aW5nVHJhbnNmb3JtU3RhdGUgb24gdGhlIHN0YWNrLCBidXQgaXQncyBiaWcsIHNvIHdlIGhlYXAt
YWxsb2NhdGUuCiAKLSAgICBib29sIHVzZVRlbXBvcmFyeUNsaXBSZWN0cyA9IGZhbHNlOwotI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB1c2VUZW1wb3JhcnlDbGlwUmVjdHMg
PSBjb21wb3NpdG9yKCktPmluQ29tcG9zaXRpbmdNb2RlKCk7Ci0jZW5kaWYKLSAgICB1c2VUZW1w
b3JhcnlDbGlwUmVjdHMgfD0gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29udGFp
bnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycygpOworICAgIGJvb2wgdXNlVGVt
cG9yYXJ5Q2xpcFJlY3RzID0gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+Y29udGFp
bnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycygpOwogCiAgICAgTGF5b3V0UmVj
dCBoaXRUZXN0QXJlYSA9IHJlc3VsdC5yZWN0Rm9yUG9pbnQoaGl0VGVzdFBvaW50KTsKIApAQCAt
MzQ2NSw3ICszNDU3LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIo
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICBpZiAodHJhbnNm
b3JtKCkgJiYgIWFwcGxpZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBw
YXJlbnQncyBjbGlwIHJlY3RzIGhhdmUgYmVlbiBjYWxjdWxhdGVkLgogICAgICAgICBpZiAocGFy
ZW50KCkpIHsKLSAgICAgICAgICAgIENsaXBSZWN0IGNsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBS
ZWN0KHJvb3RMYXllciwgcmVzdWx0LnJlZ2lvbigpLCB1c2VUZW1wb3JhcnlDbGlwUmVjdHMsIElu
Y2x1ZGVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CisgICAgICAgICAgICBDbGlwUmVjdCBjbGlwUmVj
dCA9IGJhY2tncm91bmRDbGlwUmVjdChyb290TGF5ZXIsIHJlc3VsdC5yZWdpb24oKSwgdXNlVGVt
cG9yYXJ5Q2xpcFJlY3RzID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUm9vdFJlbGF0aXZlQ2xpcFJl
Y3RzLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOwogICAgICAgICAgICAgLy8gR28gYWhl
YWQgYW5kIHRlc3QgdGhlIGVuY2xvc2luZyBjbGlwIG5vdy4KICAgICAgICAgICAgIGlmICghY2xp
cFJlY3QuaW50ZXJzZWN0cyhoaXRUZXN0QXJlYSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CkBAIC0zNTI2LDcgKzM1MTgsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RM
YXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAgIENsaXBS
ZWN0IGJnUmVjdDsKICAgICBDbGlwUmVjdCBmZ1JlY3Q7CiAgICAgQ2xpcFJlY3Qgb3V0bGluZVJl
Y3Q7Ci0gICAgY2FsY3VsYXRlUmVjdHMocm9vdExheWVyLCByZXN1bHQucmVnaW9uKCksIGhpdFRl
c3RSZWN0LCBsYXllckJvdW5kcywgYmdSZWN0LCBmZ1JlY3QsIG91dGxpbmVSZWN0LCB1c2VUZW1w
b3JhcnlDbGlwUmVjdHMsIEluY2x1ZGVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CisgICAgY2FsY3Vs
YXRlUmVjdHMocm9vdExheWVyLCByZXN1bHQucmVnaW9uKCksIHVzZVRlbXBvcmFyeUNsaXBSZWN0
cyA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFJvb3RSZWxhdGl2ZUNsaXBSZWN0cywgaGl0VGVzdFJl
Y3QsIGxheWVyQm91bmRzLCBiZ1JlY3QsIGZnUmVjdCwgb3V0bGluZVJlY3QsIEluY2x1ZGVPdmVy
bGF5U2Nyb2xsYmFyU2l6ZSk7CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgdXNlZCBm
b3Iga2VlcGluZyB0cmFjayBvZiB0aGUgei1kZXB0aCBvZiB0aGUgaGl0IHBvaW50IG9mIDNkLXRy
YW5zZm9ybWVkCiAgICAgLy8gZGVzY2VuZGFudHMuCkBAIC0zNzk3LDEwICszNzg5LDEwIEBAIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdENoaWxkTGF5ZXJDb2x1bW5zKFJlbmRlckxh
eWVyKiBjaGlsZExheWVyLCBSZW5kCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KQor
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290
TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0c1R5cGUs
IE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkKIHsKLSAgICBpZiAobV9j
bGlwUmVjdHMpIHsKLSAgICAgICAgQVNTRVJUKHJvb3RMYXllciA9PSBtX2NsaXBSZWN0c1Jvb3Qp
OworICAgIGlmIChtX2NsaXBSZWN0c0NhY2hlICYmIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJl
Y3RzW2NsaXBSZWN0c1R5cGVdKSB7CisgICAgICAgIEFTU0VSVChyb290TGF5ZXIgPT0gbV9jbGlw
UmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNSb290W2NsaXBSZWN0c1R5cGVdKTsKICAgICAgICAgcmV0
dXJuOyAvLyBXZSBoYXZlIHRoZSBjb3JyZWN0IGNhY2hlZCB2YWx1ZS4KICAgICB9CiAgICAgCkBA
IC0zODA4LDI5ICszODAwLDM0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhj
b25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qIHJlCiAgICAgLy8gZXhh
bWluZSB0aGUgcGFyZW50LiAgV2Ugd2FudCB0byBjYWNoZSBjbGlwIHJlY3RzIHdpdGggdXMgYXMg
dGhlIHJvb3QuCiAgICAgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyID0gcm9vdExheWVyICE9IHRo
aXMgPyBwYXJlbnQoKSA6IDA7CiAgICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBwYXJlbnRM
YXllci0+dXBkYXRlQ2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCByZWxldmFuY3kpOworICAg
ICAgICBwYXJlbnRMYXllci0+dXBkYXRlQ2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBjbGlw
UmVjdHNUeXBlLCByZWxldmFuY3kpOwogCiAgICAgQ2xpcFJlY3RzIGNsaXBSZWN0czsKLSAgICBj
YWxjdWxhdGVDbGlwUmVjdHMocm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0cywgdHJ1ZSwgcmVs
ZXZhbmN5KTsKKyAgICBjYWxjdWxhdGVDbGlwUmVjdHMocm9vdExheWVyLCByZWdpb24sIGNsaXBS
ZWN0c1R5cGUsIGNsaXBSZWN0cywgcmVsZXZhbmN5KTsKKworICAgIGlmICghbV9jbGlwUmVjdHND
YWNoZSkKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IGFkb3B0UHRyKG5ldyBDbGlwUmVjdHND
YWNoZSk7CiAKLSAgICBpZiAocGFyZW50TGF5ZXIgJiYgcGFyZW50TGF5ZXItPmNsaXBSZWN0cygp
ICYmIGNsaXBSZWN0cyA9PSAqcGFyZW50TGF5ZXItPmNsaXBSZWN0cygpKQotICAgICAgICBtX2Ns
aXBSZWN0cyA9IHBhcmVudExheWVyLT5jbGlwUmVjdHMoKTsKKyAgICBpZiAocGFyZW50TGF5ZXIg
JiYgcGFyZW50TGF5ZXItPmNsaXBSZWN0cyhjbGlwUmVjdHNUeXBlKSAmJiBjbGlwUmVjdHMgPT0g
KnBhcmVudExheWVyLT5jbGlwUmVjdHMoY2xpcFJlY3RzVHlwZSkpCisgICAgICAgIG1fY2xpcFJl
Y3RzQ2FjaGUtPm1fY2xpcFJlY3RzW2NsaXBSZWN0c1R5cGVdID0gcGFyZW50TGF5ZXItPmNsaXBS
ZWN0cyhjbGlwUmVjdHNUeXBlKTsKICAgICBlbHNlCi0gICAgICAgIG1fY2xpcFJlY3RzID0gbmV3
IChyZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpKSBDbGlwUmVjdHMoY2xpcFJlY3RzKTsKLSAgICBt
X2NsaXBSZWN0cy0+cmVmKCk7CisgICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3Rz
W2NsaXBSZWN0c1R5cGVdID0gbmV3IChyZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpKSBDbGlwUmVj
dHMoY2xpcFJlY3RzKTsKKworICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzW2NsaXBS
ZWN0c1R5cGVdLT5yZWYoKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9jbGlwUmVjdHNSb290ID0g
cm9vdExheWVyOworICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVj
dHNUeXBlXSA9IHJvb3RMYXllcjsKICNlbmRpZgogfQogCi12b2lkIFJlbmRlckxheWVyOjpjYWxj
dWxhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9u
KiByZWdpb24sIENsaXBSZWN0cyYgY2xpcFJlY3RzLAotICAgIGJvb2wgdXNlQ2FjaGVkLCBPdmVy
bGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNvbnN0Cit2b2lkIFJlbmRlckxh
eWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVu
ZGVyUmVnaW9uKiByZWdpb24sIENsaXBSZWN0c1R5cGUgY2xpcFJlY3RzVHlwZSwgQ2xpcFJlY3Rz
JiBjbGlwUmVjdHMsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgY29u
c3QKIHsKICAgICBpZiAoIXBhcmVudCgpKSB7CiAgICAgICAgIC8vIFRoZSByb290IGxheWVyJ3Mg
Y2xpcCByZWN0IGlzIGFsd2F5cyBpbmZpbml0ZS4KICAgICAgICAgY2xpcFJlY3RzLnJlc2V0KFBh
aW50SW5mbzo6aW5maW5pdGVSZWN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAor
ICAgIGJvb2wgdXNlQ2FjaGVkID0gY2xpcFJlY3RzVHlwZSAhPSBUZW1wb3JhcnlDbGlwUmVjdHM7
CiAKICAgICAvLyBGb3IgdHJhbnNmb3JtZWQgbGF5ZXJzLCB0aGUgcm9vdCBsYXllciB3YXMgc2hp
ZnRlZCB0byBiZSB1cywgc28gdGhlcmUgaXMgbm8gbmVlZCB0bwogICAgIC8vIGV4YW1pbmUgdGhl
IHBhcmVudC4gIFdlIHdhbnQgdG8gY2FjaGUgY2xpcCByZWN0cyB3aXRoIHVzIGFzIHRoZSByb290
LgpAQCAtMzgzOCwxMCArMzgzNSwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlw
UmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKgogICAgIAog
ICAgIC8vIEVuc3VyZSB0aGF0IG91ciBwYXJlbnQncyBjbGlwIGhhcyBiZWVuIGNhbGN1bGF0ZWQg
c28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGUgdmFsdWVzLgogICAgIGlmIChwYXJlbnRMYXllcikg
ewotICAgICAgICBpZiAodXNlQ2FjaGVkICYmIHBhcmVudExheWVyLT5jbGlwUmVjdHMoKSkKLSAg
ICAgICAgICAgIGNsaXBSZWN0cyA9ICpwYXJlbnRMYXllci0+Y2xpcFJlY3RzKCk7CisgICAgICAg
IGlmICh1c2VDYWNoZWQgJiYgcGFyZW50TGF5ZXItPmNsaXBSZWN0cyhjbGlwUmVjdHNUeXBlKSkK
KyAgICAgICAgICAgIGNsaXBSZWN0cyA9ICpwYXJlbnRMYXllci0+Y2xpcFJlY3RzKGNsaXBSZWN0
c1R5cGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXJlbnRMYXllci0+Y2FsY3VsYXRl
Q2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHMpOworICAgICAgICAgICAgcGFy
ZW50TGF5ZXItPmNhbGN1bGF0ZUNsaXBSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwgY2xpcFJlY3Rz
VHlwZSwgY2xpcFJlY3RzKTsKICAgICB9IGVsc2UKICAgICAgICAgY2xpcFJlY3RzLnJlc2V0KFBh
aW50SW5mbzo6aW5maW5pdGVSZWN0KCkpOwogCkBAIC0zODg5LDE2ICszODg2LDE2IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyLCBSZW5kZXJSZWdpb24qCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYXJlbnRD
bGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiByZWdp
b24sIENsaXBSZWN0cyYgY2xpcFJlY3RzLCBib29sIHRlbXBvcmFyeUNsaXBSZWN0cywgT3Zlcmxh
eVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBjb25zdAordm9pZCBSZW5kZXJMYXll
cjo6cGFyZW50Q2xpcFJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0c1R5cGUsIENsaXBSZWN0cyYgY2xp
cFJlY3RzLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKHBhcmVudCgpKTsKLSAgICBpZiAodGVtcG9yYXJ5Q2xpcFJlY3RzKSB7Ci0g
ICAgICAgIHBhcmVudCgpLT5jYWxjdWxhdGVDbGlwUmVjdHMocm9vdExheWVyLCByZWdpb24sIGNs
aXBSZWN0cywgZmFsc2UsIHJlbGV2YW5jeSk7CisgICAgaWYgKGNsaXBSZWN0c1R5cGUgPT0gVGVt
cG9yYXJ5Q2xpcFJlY3RzKSB7CisgICAgICAgIHBhcmVudCgpLT5jYWxjdWxhdGVDbGlwUmVjdHMo
cm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGNsaXBSZWN0cywgcmVsZXZhbmN5KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBhcmVudCgpLT51cGRhdGVDbGlwUmVjdHMo
cm9vdExheWVyLCByZWdpb24sIHJlbGV2YW5jeSk7Ci0gICAgY2xpcFJlY3RzID0gKnBhcmVudCgp
LT5jbGlwUmVjdHMoKTsKKyAgICBwYXJlbnQoKS0+dXBkYXRlQ2xpcFJlY3RzKHJvb3RMYXllciwg
cmVnaW9uLCBjbGlwUmVjdHNUeXBlLCByZWxldmFuY3kpOworICAgIGNsaXBSZWN0cyA9ICpwYXJl
bnQoKS0+Y2xpcFJlY3RzKGNsaXBSZWN0c1R5cGUpOwogfQogCiBzdGF0aWMgaW5saW5lIENsaXBS
ZWN0IGJhY2tncm91bmRDbGlwUmVjdEZvclBvc2l0aW9uKGNvbnN0IENsaXBSZWN0cyYgcGFyZW50
UmVjdHMsIEVQb3NpdGlvbiBwb3NpdGlvbikKQEAgLTM5MTIsMTEgKzM5MDksMTEgQEAgc3RhdGlj
IGlubGluZSBDbGlwUmVjdCBiYWNrZ3JvdW5kQ2xpcFJlY3RGb3JQb3NpdGlvbihjb25zdCBDbGlw
UmVjdHMmIHBhcmVudFJlY3QKICAgICByZXR1cm4gcGFyZW50UmVjdHMub3ZlcmZsb3dDbGlwUmVj
dCgpOwogfQogCi1DbGlwUmVjdCBSZW5kZXJMYXllcjo6YmFja2dyb3VuZENsaXBSZWN0KGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBib29sIHRlbXBv
cmFyeUNsaXBSZWN0cywgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBj
b25zdAorQ2xpcFJlY3QgUmVuZGVyTGF5ZXI6OmJhY2tncm91bmRDbGlwUmVjdChjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgQ2xpcFJlY3RzVHlwZSBj
bGlwUmVjdHNUeXBlLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKHBhcmVudCgpKTsKICAgICBDbGlwUmVjdHMgcGFyZW50UmVjdHM7
Ci0gICAgcGFyZW50Q2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBwYXJlbnRSZWN0cywgdGVt
cG9yYXJ5Q2xpcFJlY3RzLCByZWxldmFuY3kpOworICAgIHBhcmVudENsaXBSZWN0cyhyb290TGF5
ZXIsIHJlZ2lvbiwgY2xpcFJlY3RzVHlwZSwgcGFyZW50UmVjdHMsIHJlbGV2YW5jeSk7CiAgICAg
Q2xpcFJlY3QgYmFja2dyb3VuZENsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0Rm9yUG9zaXRp
b24ocGFyZW50UmVjdHMsIHJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkpOwogICAgIFJl
bmRlclZpZXcqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7CiAgICAgQVNTRVJUKHZpZXcpOwpA
QCAtMzkyOCwxMiArMzkyNSwxMSBAQCBDbGlwUmVjdCBSZW5kZXJMYXllcjo6YmFja2dyb3VuZENs
aXBSZWN0KGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZwogICAgIHJldHVy
biBiYWNrZ3JvdW5kQ2xpcFJlY3Q7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJl
Y3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBj
b25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwUmVjdCYgYmFja2dyb3VuZFJl
Y3QsIENsaXBSZWN0JiBmb3JlZ3JvdW5kUmVjdCwgQ2xpcFJlY3QmIG91dGxpbmVSZWN0LCBib29s
IHRlbXBvcmFyeUNsaXBSZWN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92
ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgY29uc3QKK3ZvaWQgUmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRl
clJlZ2lvbiogcmVnaW9uLCBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0c1R5cGUsIGNvbnN0IExheW91
dFJlY3QmIHBhaW50RGlydHlSZWN0LCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBSZWN0JiBiYWNrZ3JvdW5kUmVjdCwgQ2xpcFJl
Y3QmIGZvcmVncm91bmRSZWN0LCBDbGlwUmVjdCYgb3V0bGluZVJlY3QsIE92ZXJsYXlTY3JvbGxi
YXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgY29uc3QKIHsKICAgICBpZiAocm9vdExheWVyICE9
IHRoaXMgJiYgcGFyZW50KCkpIHsKLSAgICAgICAgYmFja2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5k
Q2xpcFJlY3Qocm9vdExheWVyLCByZWdpb24sIHRlbXBvcmFyeUNsaXBSZWN0cywgcmVsZXZhbmN5
KTsKKyAgICAgICAgYmFja2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kQ2xpcFJlY3Qocm9vdExheWVy
LCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIHJlbGV2YW5jeSk7CiAgICAgICAgIGJhY2tncm91bmRS
ZWN0LmludGVyc2VjdChwYWludERpcnR5UmVjdCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhY2tn
cm91bmRSZWN0ID0gcGFpbnREaXJ0eVJlY3Q7CkBAIC0zOTg2LDEwICszOTgyLDEwIEBAIExheW91
dFJlY3QgUmVuZGVyTGF5ZXI6OmNoaWxkcmVuQ2xpcFJlY3QoKSBjb25zdAogICAgIC8vIEZJWE1F
OiBib3JkZXItcmFkaXVzIG5vdCBhY2NvdW50ZWQgZm9yLgogICAgIC8vIEZJWE1FOiBSZWdpb25z
IG5vdCBhY2NvdW50ZWQgZm9yLgogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSByZW5kZXJl
cigpLT52aWV3KCk7Ci0gICAgUmVuZGVyTGF5ZXIqIGNsaXBwaW5nUm9vdExheWVyID0gY2xpcHBp
bmdSb290KCk7CisgICAgUmVuZGVyTGF5ZXIqIGNsaXBwaW5nUm9vdExheWVyID0gY2xpcHBpbmdS
b290Rm9yUGFpbnRpbmcoKTsKICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzOwogICAgIENsaXBS
ZWN0IGJhY2tncm91bmRSZWN0LCBmb3JlZ3JvdW5kUmVjdCwgb3V0bGluZVJlY3Q7Ci0gICAgY2Fs
Y3VsYXRlUmVjdHMoY2xpcHBpbmdSb290TGF5ZXIsIDAsIHJlbmRlclZpZXctPnVuc2NhbGVkRG9j
dW1lbnRSZWN0KCksIGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJlY3Qs
IG91dGxpbmVSZWN0KTsKKyAgICBjYWxjdWxhdGVSZWN0cyhjbGlwcGluZ1Jvb3RMYXllciwgMCwg
UGFpbnRpbmdDbGlwUmVjdHMsIHJlbmRlclZpZXctPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCksIGxh
eWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJlY3QsIG91dGxpbmVSZWN0KTsK
ICAgICByZXR1cm4gY2xpcHBpbmdSb290TGF5ZXItPnJlbmRlcmVyKCktPmxvY2FsVG9BYnNvbHV0
ZVF1YWQoRmxvYXRRdWFkKGZvcmVncm91bmRSZWN0LnJlY3QoKSkpLmVuY2xvc2luZ0JvdW5kaW5n
Qm94KCk7CiB9CiAKQEAgLTM5OTgsMTAgKzM5OTQsMTAgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXll
cjo6c2VsZkNsaXBSZWN0KCkgY29uc3QKICAgICAvLyBGSVhNRTogYm9yZGVyLXJhZGl1cyBub3Qg
YWNjb3VudGVkIGZvci4KICAgICAvLyBGSVhNRTogUmVnaW9ucyBub3QgYWNjb3VudGVkIGZvci4K
ICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gcmVuZGVyZXIoKS0+dmlldygpOwotICAgIFJl
bmRlckxheWVyKiBjbGlwcGluZ1Jvb3RMYXllciA9IGNsaXBwaW5nUm9vdCgpOworICAgIFJlbmRl
ckxheWVyKiBjbGlwcGluZ1Jvb3RMYXllciA9IGNsaXBwaW5nUm9vdEZvclBhaW50aW5nKCk7CiAg
ICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kUmVjdCwg
Zm9yZWdyb3VuZFJlY3QsIG91dGxpbmVSZWN0OwotICAgIGNhbGN1bGF0ZVJlY3RzKGNsaXBwaW5n
Um9vdExheWVyLCAwLCByZW5kZXJWaWV3LT5kb2N1bWVudFJlY3QoKSwgbGF5ZXJCb3VuZHMsIGJh
Y2tncm91bmRSZWN0LCBmb3JlZ3JvdW5kUmVjdCwgb3V0bGluZVJlY3QpOworICAgIGNhbGN1bGF0
ZVJlY3RzKGNsaXBwaW5nUm9vdExheWVyLCAwLCBQYWludGluZ0NsaXBSZWN0cywgcmVuZGVyVmll
dy0+ZG9jdW1lbnRSZWN0KCksIGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3Vu
ZFJlY3QsIG91dGxpbmVSZWN0KTsKICAgICByZXR1cm4gY2xpcHBpbmdSb290TGF5ZXItPnJlbmRl
cmVyKCktPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKGJhY2tncm91bmRSZWN0LnJlY3Qo
KSkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKQEAgLTQwMDksMTAgKzQwMDUsMTAgQEAg
TGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6bG9jYWxDbGlwUmVjdCgpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUU6IGJvcmRlci1yYWRpdXMgbm90IGFjY291bnRlZCBmb3IuCiAgICAgLy8gRklYTUU6IFJl
Z2lvbnMgbm90IGFjY291bnRlZCBmb3IuCi0gICAgUmVuZGVyTGF5ZXIqIGNsaXBwaW5nUm9vdExh
eWVyID0gY2xpcHBpbmdSb290KCk7CisgICAgUmVuZGVyTGF5ZXIqIGNsaXBwaW5nUm9vdExheWVy
ID0gY2xpcHBpbmdSb290Rm9yUGFpbnRpbmcoKTsKICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRz
OwogICAgIENsaXBSZWN0IGJhY2tncm91bmRSZWN0LCBmb3JlZ3JvdW5kUmVjdCwgb3V0bGluZVJl
Y3Q7Ci0gICAgY2FsY3VsYXRlUmVjdHMoY2xpcHBpbmdSb290TGF5ZXIsIDAsIFBhaW50SW5mbzo6
aW5maW5pdGVSZWN0KCksIGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJl
Y3QsIG91dGxpbmVSZWN0KTsKKyAgICBjYWxjdWxhdGVSZWN0cyhjbGlwcGluZ1Jvb3RMYXllciwg
MCwgUGFpbnRpbmdDbGlwUmVjdHMsIFBhaW50SW5mbzo6aW5maW5pdGVSZWN0KCksIGxheWVyQm91
bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJlY3QsIG91dGxpbmVSZWN0KTsKIAogICAg
IExheW91dFJlY3QgY2xpcFJlY3QgPSBiYWNrZ3JvdW5kUmVjdC5yZWN0KCk7CiAgICAgaWYgKGNs
aXBSZWN0ID09IFBhaW50SW5mbzo6aW5maW5pdGVSZWN0KCkpCkBAIC00MjYyLDcgKzQyNTgsOCBA
QCBJbnRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJM
YXllciogbGF5ZXIsIGNvbnN0IFJlbmRlcgogCiB2b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBS
ZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCkKIHsKLSAgICBpZiAoIW1fY2xpcFJlY3RzKQorICAg
IC8vIEZJWE1FOiBpdCdzIG5vdCBjbGVhciBob3cgdGhpcyBsYXllciBub3QgaGF2aW5nIGNsaXAg
cmVjdHMgZ3VhcmFudGVlcyB0aGF0IG5vIGRlc2NlbmRhbnRzIGhhdmUgYW55LgorICAgIGlmICgh
bV9jbGlwUmVjdHNDYWNoZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXJDbGlwUmVjdHMo
KTsKQEAgLTQyNzMsMTMgKzQyNzAsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBSZWN0
c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCkKIAogdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVj
dHMoKQogewotICAgIGlmIChtX2NsaXBSZWN0cykgewotICAgICAgICBtX2NsaXBSZWN0cy0+ZGVy
ZWYocmVuZGVyZXIoKS0+cmVuZGVyQXJlbmEoKSk7Ci0gICAgICAgIG1fY2xpcFJlY3RzID0gMDsK
LSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fY2xpcFJlY3RzUm9vdCA9IDA7Ci0jZW5kaWYgICAg
Ci0gICAgfQorICAgIGlmIChtX2NsaXBSZWN0c0NhY2hlKQorICAgICAgICBtX2NsaXBSZWN0c0Nh
Y2hlLT5jbGVhcihyZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpKTsKKyAgICBtX2NsaXBSZWN0c0Nh
Y2hlID0gbnVsbHB0cjsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggODYwYTM3MjkwYWFkZDYxNzlj
MWQwMTc5YjIxYTAwZDk2ODRmOGQwZS4uN2JiNWQzMWNlMDkwNTc2N2MxMTVlMzg5ZWM5MjM3OWMz
NDBlN2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTIxMyw2
ICsyMTMsNDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZml4ZWQgOiAxOwogfTsKIAorZW51bSBD
bGlwUmVjdHNUeXBlIHsKKyAgICBQYWludGluZ0NsaXBSZWN0cywgLy8gUmVsYXRpdmUgdG8gcGFp
bnRpbmcgYW5jZXN0b3IuIFVzZWQgZm9yIHBhaW50aW5nLgorICAgIFJvb3RSZWxhdGl2ZUNsaXBS
ZWN0cywgLy8gUmVsYXRpdmUgdG8gdGhlIGFuY2VzdG9yIHRyZWF0ZWQgYXMgdGhlIHJvb3QgKGUu
Zy4gdHJhbnNmb3JtZWQgbGF5ZXIpLiBVc2VkIGZvciBoaXQgdGVzdGluZy4KKyAgICBBYnNvbHV0
ZUNsaXBSZWN0cywgLy8gUmVsYXRpdmUgdG8gdGhlIFJlbmRlclZpZXcncyBsYXllci4gVXNlZCBm
b3IgY29tcG9zaXRpbmcgb3ZlcmxhcCB0ZXN0aW5nLgorICAgIE51bUNhY2hlZENsaXBSZWN0c1R5
cGVzLAorICAgIFRlbXBvcmFyeUNsaXBSZWN0cworfTsKKworc3RydWN0IENsaXBSZWN0c0NhY2hl
IHsKKyAgICBDbGlwUmVjdHNDYWNoZSgpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IE51bUNhY2hlZENsaXBSZWN0c1R5cGVzOyArK2kpIHsKKyAgICAgICAgICAgIG1fY2xpcFJl
Y3RzW2ldID0gMDsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICBtX2NsaXBSZWN0c1Jvb3Rb
aV0gPSAwOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKKyAgICB+Q2xpcFJlY3RzQ2FjaGUo
KQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVt
Q2FjaGVkQ2xpcFJlY3RzVHlwZXM7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVCghbV9jbGlwUmVj
dHNbaV0pOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoUmVuZGVyQXJlbmEq
IGFyZW5hKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1DYWNoZWRDbGlw
UmVjdHNUeXBlczsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9jbGlwUmVjdHNbaV0pIHsKKyAg
ICAgICAgICAgICAgICBtX2NsaXBSZWN0c1tpXS0+ZGVyZWYoYXJlbmEpOworICAgICAgICAgICAg
ICAgIG1fY2xpcFJlY3RzW2ldID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBDbGlwUmVjdHMqIG1fY2xpcFJlY3RzW051bUNhY2hlZENsaXBSZWN0c1R5cGVz
XTsgLy8gQ2FjaGVkIGNsaXAgcmVjdHMgdXNlZCB3aGVuIHBhaW50aW5nCisjaWZuZGVmIE5ERUJV
RworICAgIGNvbnN0IFJlbmRlckxheWVyKiBtX2NsaXBSZWN0c1Jvb3RbTnVtQ2FjaGVkQ2xpcFJl
Y3RzVHlwZXNdOyAvLyBSb290IGxheWVyIHVzZWQgdG8gY29tcHV0ZSBwYWludGluZyAgY2xpcCBy
ZWN0cy4KKyNlbmRpZgorfTsKKwogY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJs
ZUFyZWEgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwpAQCAtNDIz
LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nU2Nyb2xsYWJs
ZUxheWVyKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbGF5ZXIgcmVsYXRpdmUgdG8gd2hpY2ggY2xp
cHBpbmcgcmVjdHMgZm9yIHRoaXMgbGF5ZXIgYXJlIGNvbXB1dGVkLgotICAgIFJlbmRlckxheWVy
KiBjbGlwcGluZ1Jvb3QoKSBjb25zdDsKKyAgICBSZW5kZXJMYXllciogY2xpcHBpbmdSb290Rm9y
UGFpbnRpbmcoKSBjb25zdDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICAvLyBFbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXI7IGlmIGluY2x1ZGVTZWxmIGlzIHRydWUs
IG1heSByZXR1cm4gdGhpcy4KQEAgLTQ3MiwxNiArNTE1LDE3IEBAIHB1YmxpYzoKICAgICAvLyBU
aGlzIG1ldGhvZCBmaWd1cmVzIG91dCBvdXIgbGF5ZXJCb3VuZHMgaW4gY29vcmRpbmF0ZXMgcmVs
YXRpdmUgdG8KICAgICAvLyB8cm9vdExheWVyfS4gIEl0IGFsc28gY29tcHV0ZXMgb3VyIGJhY2tn
cm91bmQgYW5kIGZvcmVncm91bmQgY2xpcCByZWN0cwogICAgIC8vIGZvciBwYWludGluZy9ldmVu
dCBoYW5kbGluZy4KLSAgICB2b2lkIGNhbGN1bGF0ZVJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0
LCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywKKyAgICB2b2lkIGNhbGN1bGF0ZVJlY3RzKGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0c1R5cGUsIGNv
bnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywK
ICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBSZWN0JiBiYWNrZ3JvdW5kUmVjdCwgQ2xpcFJl
Y3QmIGZvcmVncm91bmRSZWN0LCBDbGlwUmVjdCYgb3V0bGluZVJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHRlbXBvcmFyeUNsaXBSZWN0cyA9IGZhbHNlLCBPdmVybGF5U2Nyb2xs
YmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplKSBjb25zdDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdu
b3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwogCiAgICAgLy8gQ29tcHV0ZSBhbmQgY2Fj
aGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSBnaXZlbiBsYXllciBhcyB0aGUgcm9vdAot
ICAgIHZvaWQgdXBkYXRlQ2xpcFJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJl
bmRlclJlZ2lvbiosIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3Zlcmxh
eVNjcm9sbGJhclNpemUpOworICAgIHZvaWQgdXBkYXRlQ2xpcFJlY3RzKGNvbnN0IFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0c1R5cGUsIE92ZXJsYXlTY3Jv
bGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpOwogICAgIC8v
IENvbXB1dGUgYW5kIHJldHVybiB0aGUgY2xpcCByZWN0cy4gSWYgdXNlQ2FjaGVkIGlzIHRydWUs
IHdpbGwgdXNlZCBwcmV2aW91c2x5IGNvbXB1dGVkIGNsaXAgcmVjdHMgb24gYW5jZXN0b3JzCiAg
ICAgLy8gKHJhdGhlciB0aGFuIGNvbXB1dGluZyB0aGVtIGFsbCBmcm9tIHNjcmF0Y2ggdXAgdGhl
IHBhcmVudCBjaGFpbikuCi0gICAgdm9pZCBjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzJiwgYm9vbCB1c2VDYWNo
ZWQgPSBmYWxzZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5
U2Nyb2xsYmFyU2l6ZSkgY29uc3Q7Ci0gICAgQ2xpcFJlY3RzKiBjbGlwUmVjdHMoKSBjb25zdCB7
IHJldHVybiBtX2NsaXBSZWN0czsgfQorICAgIHZvaWQgY2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0c1R5cGUsIENs
aXBSZWN0cyYsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNj
cm9sbGJhclNpemUpIGNvbnN0OworCisgICAgQ2xpcFJlY3RzKiBjbGlwUmVjdHMoQ2xpcFJlY3Rz
VHlwZSB0eXBlKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0c0NhY2hlID8gbV9jbGlwUmVjdHND
YWNoZS0+bV9jbGlwUmVjdHNbdHlwZV0gOiAwOyB9CiAKICAgICBMYXlvdXRSZWN0IGNoaWxkcmVu
Q2xpcFJlY3QoKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgZm9yZWdyb3VuZCBjbGlwIHJlY3Qgb2Yg
dGhlIGxheWVyIGluIHRoZSBkb2N1bWVudCdzIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgTGF5b3V0
UmVjdCBzZWxmQ2xpcFJlY3QoKSBjb25zdDsgLy8gUmV0dXJucyB0aGUgYmFja2dyb3VuZCBjbGlw
IHJlY3Qgb2YgdGhlIGxheWVyIGluIHRoZSBkb2N1bWVudCdzIGNvb3JkaW5hdGUgc3BhY2UuCkBA
IC03NjcsOCArODExLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZU9yUmVtb3ZlRmlsdGVy
RWZmZWN0KCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcGFyZW50Q2xpcFJlY3RzKGNvbnN0IFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0cyYsIGJvb2wgdGVtcG9y
YXJ5Q2xpcFJlY3RzID0gZmFsc2UsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdu
b3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwotICAgIENsaXBSZWN0IGJhY2tncm91bmRD
bGlwUmVjdChjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qLCBib29s
IHRlbXBvcmFyeUNsaXBSZWN0cywgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25v
cmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSkgY29uc3Q7CisgICAgdm9pZCBwYXJlbnRDbGlwUmVjdHMo
Y29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzVHlw
ZSwgQ2xpcFJlY3RzJiwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVy
bGF5U2Nyb2xsYmFyU2l6ZSkgY29uc3Q7CisgICAgQ2xpcFJlY3QgYmFja2dyb3VuZENsaXBSZWN0
KGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0c1R5
cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJh
clNpemUpIGNvbnN0OwogICAgIExheW91dFJlY3QgcGFpbnRpbmdFeHRlbnQoY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50
QmVoYXZpb3IpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0
b3IoKSBjb25zdDsKQEAgLTkwNSwxMSArOTQ5LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIG92ZXJm
bG93IGxheWVycywgYnV0IHRoYXQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgogICAgIFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBtX25vcm1hbEZsb3dMaXN0OwogCi0gICAgQ2xpcFJlY3RzKiBtX2Ns
aXBSZWN0czsgICAgICAvLyBDYWNoZWQgY2xpcCByZWN0cyB1c2VkIHdoZW4gcGFpbnRpbmcgYW5k
IGhpdCB0ZXN0aW5nLgotI2lmbmRlZiBOREVCVUcKLSAgICBjb25zdCBSZW5kZXJMYXllciogbV9j
bGlwUmVjdHNSb290OyAgIC8vIFJvb3QgbGF5ZXIgdXNlZCB0byBjb21wdXRlIGNsaXAgcmVjdHMu
Ci0jZW5kaWYKLQorICAgIE93blB0cjxDbGlwUmVjdHNDYWNoZT4gbV9jbGlwUmVjdHNDYWNoZTsK
KyAgICAKICAgICBJbnRQb2ludCBtX2NhY2hlZE92ZXJsYXlTY3JvbGxiYXJPZmZzZXQ7CiAKICAg
ICBSZW5kZXJNYXJxdWVlKiBtX21hcnF1ZWU7IC8vIFVzZWQgYnkgbGF5ZXJzIHdpdGggb3ZlcmZs
b3c6bWFycXVlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBlZTM5OTEyYTkyOTJhZDE0N2NkMTlhY2I5YWMyMTY5YzRkYmYyNzEzLi43
NTM4NmQ5MmUyNDliMTU5NTJjNWQxZThiMjdlZTkwNjhkNDA0M2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKCkKICAg
ICAgICAgTGF5b3V0UmVjdCBjbGlwcGluZ0JvdW5kcyA9IHZpZXctPnVuc2NhbGVkRG9jdW1lbnRS
ZWN0KCk7CiAKICAgICAgICAgaWYgKG1fb3duaW5nTGF5ZXIgIT0gcm9vdExheWVyKQotICAgICAg
ICAgICAgY2xpcHBpbmdCb3VuZHMuaW50ZXJzZWN0KG1fb3duaW5nTGF5ZXItPmJhY2tncm91bmRD
bGlwUmVjdChyb290TGF5ZXIsIDAsIHRydWUpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3Qg
Zm9yIENTUyByZWdpb25zLgorICAgICAgICAgICAgY2xpcHBpbmdCb3VuZHMuaW50ZXJzZWN0KG1f
b3duaW5nTGF5ZXItPmJhY2tncm91bmRDbGlwUmVjdChyb290TGF5ZXIsIDAsIEFic29sdXRlQ2xp
cFJlY3RzKS5yZWN0KCkpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KIAog
ICAgICAgICBMYXlvdXRQb2ludCBkZWx0YTsKICAgICAgICAgbV9vd25pbmdMYXllci0+Y29udmVy
dFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBkZWx0YSk7CkBAIC00NjUsNyArNDY1LDcgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAg
ICAgIC8vIENhbGwgY2FsY3VsYXRlUmVjdHMgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kUmVjdCB3aGlj
aCBpcyB3aGF0IGlzIHVzZWQgdG8gY2xpcCB0aGUgY29udGVudHMgb2YgdGhpcwogICAgICAgICAv
LyBsYXllci4gTm90ZSB0aGF0IHdlIGNhbGwgaXQgd2l0aCB0ZW1wb3JhcnlDbGlwUmVjdHMgPSB0
cnVlIGJlY2F1c2Ugbm9ybWFsbHkgd2hlbiBjb21wdXRpbmcgY2xpcCByZWN0cwogICAgICAgICAv
LyBmb3IgYSBjb21wb3NpdGluZyBsYXllciwgcm9vdExheWVyIGlzIHRoZSBsYXllciBpdHNlbGYu
Ci0gICAgICAgIEludFJlY3QgcGFyZW50Q2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1f
b3duaW5nTGF5ZXItPmJhY2tncm91bmRDbGlwUmVjdChjb21wQW5jZXN0b3IsIDAsIHRydWUpLnJl
Y3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgorICAgICAgICBJbnRS
ZWN0IHBhcmVudENsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLT5i
YWNrZ3JvdW5kQ2xpcFJlY3QoY29tcEFuY2VzdG9yLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMpLnJl
Y3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgogICAgICAgICBBU1NF
UlQocGFyZW50Q2xpcFJlY3QgIT0gUGFpbnRJbmZvOjppbmZpbml0ZVJlY3QoKSk7CiAgICAgICAg
IG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkgKyAocGFy
ZW50Q2xpcFJlY3QubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbikpOwog
ICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0U2l6ZShwYXJlbnRDbGlwUmVjdC5z
aXplKCkpOwpAQCAtMTExMiw2ICsxMTEyLDE3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpw
YWludHNJbnRvV2luZG93KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzZXRSZXF1aXJlc093bkJhY2tpbmdTdG9yZShib29sIGZsYWcpCit7
CisgICAgaWYgKGZsYWcgPT0gbV9yZXF1aXJlc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIC8vIFRoaXMgYWZmZWN0cyB0aGUgYW5zd2VyIHRvIHBhaW50c0ludG9D
b21wb3NpdGVkQW5jZXN0b3IoKSwgd2hpY2ggaW4gdHVybiBhZmZlY3RzCisgICAgLy8gY2FjaGVk
IGNsaXAgcmVjdHMsIHNvIHdoZW4gaXQgY2hhbmdlcyB3ZSBoYXZlIHRvIGNsZWFyIGNsaXAgcmVj
dHMgb24gZGVzY2VuZGFudHMuCisgICAgbV9vd25pbmdMYXllci0+Y2xlYXJDbGlwUmVjdHNJbmNs
dWRpbmdEZXNjZW5kYW50cygpOyAvLyBGSVhNRTogcmVhbGx5IG9ubHkgdGhlIHBhaW50aW5nIG9u
ZXMuCisgICAgbV9yZXF1aXJlc093bkJhY2tpbmdTdG9yZSA9IGZsYWc7Cit9CisKIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KCkKIHsKICAgICBBU1NFUlQo
IXBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggYTZhMDNhYzc3ZDU0NTZiZWNkOWRjNTky
YzI3ODQ2MWI4NTFhOTA2ZC4uZDg3MTg4NThlYWY2YmNlNDE5MDA0YjYxOTQ5ZjJmZTE5MGIwZDM4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAvLyBwYWludHMgaW50byBzb21lIGFuY2Vz
dG9yIGxheWVyLgogICAgIGJvb2wgcGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpIGNvbnN0
IHsgcmV0dXJuICFtX3JlcXVpcmVzT3duQmFja2luZ1N0b3JlOyB9CiAKLSAgICB2b2lkIHNldFJl
cXVpcmVzT3duQmFja2luZ1N0b3JlKGJvb2wgZmxhZykgeyBtX3JlcXVpcmVzT3duQmFja2luZ1N0
b3JlID0gZmxhZzsgfQorICAgIHZvaWQgc2V0UmVxdWlyZXNPd25CYWNraW5nU3RvcmUoYm9vbCk7
CiAKICAgICB2b2lkIHNldENvbnRlbnRzTmVlZERpc3BsYXkoKTsKICAgICAvLyByIGlzIGluIHRo
ZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBvYmplY3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXgg
YzQwMmI1OTNkMGRmMDMxZWFmZWI1ZTZiNTg0NmE1NTg1MTQ1YTFhNi4uNzkxOGY5NzgxYmUyNDQ2
ZGM5OTA4ZGM1N2Y5MDRmOTVkZmNmMGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFwKE92ZXJsYXBNYXAmIG92ZXJs
YXBNYXAsIFJlbmRlckxheWVyKgogICAgICAgICBib3VuZHNDb21wdXRlZCA9IHRydWU7CiAgICAg
fQogCi0gICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobGF5ZXItPmJh
Y2tncm91bmRDbGlwUmVjdChyb290UmVuZGVyTGF5ZXIoKSwgMCwgdHJ1ZSkucmVjdCgpKTsgLy8g
RklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCisgICAgSW50UmVjdCBjbGlwUmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QobGF5ZXItPmJhY2tncm91bmRDbGlwUmVjdChyb290UmVuZGVy
TGF5ZXIoKSwgMCwgQWJzb2x1dGVDbGlwUmVjdHMpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJl
Y3QgZm9yIENTUyByZWdpb25zLgogICAgIGNsaXBSZWN0LnNjYWxlKHBhZ2VTY2FsZUZhY3Rvcigp
KTsKICAgICBjbGlwUmVjdC5pbnRlcnNlY3QobGF5ZXJCb3VuZHMpOwogICAgIG92ZXJsYXBNYXAu
YWRkKGxheWVyLCBjbGlwUmVjdCk7CkBAIC02OTYsNyArNjk2LDcgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShPdmVybGFwTWFwJiBvdmVybGFw
TWFwLCBSZW4KIC8vCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0
aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBsYXllciwgT3ZlcmxhcE1hcCogb3ZlcmxhcE1h
cCwgQ29tcG9zaXRpbmdTdGF0ZSYgY29tcG9zaXRpbmdTdGF0ZSwgYm9vbCYgbGF5ZXJzQ2hhbmdl
ZCkKIHsKLSAgICBsYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbigpOworLy8gICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUG9zaXRpb24oKTsKICAgICBsYXllci0+dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVk
KCk7CiAKICAgICAvLyBDbGVhciB0aGUgZmxhZwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsaXBwZWRCeUFuY2VzdG9yKFJlbmRlckxheWVyKiBsYXll
cikgY29uc3QKICAgICBpZiAoIWNvbXB1dGVDbGlwUm9vdCB8fCBjb21wdXRlQ2xpcFJvb3QgPT0g
bGF5ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBsYXllci0+YmFja2dy
b3VuZENsaXBSZWN0KGNvbXB1dGVDbGlwUm9vdCwgMCwgdHJ1ZSkucmVjdCgpICE9IFBhaW50SW5m
bzo6aW5maW5pdGVSZWN0KCk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgor
ICAgIHJldHVybiBsYXllci0+YmFja2dyb3VuZENsaXBSZWN0KGNvbXB1dGVDbGlwUm9vdCwgMCwg
VGVtcG9yYXJ5Q2xpcFJlY3RzKS5yZWN0KCkgIT0gUGFpbnRJbmZvOjppbmZpbml0ZVJlY3QoKTsg
Ly8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiB9CiAKIC8vIFJldHVybiB0cnVl
IGlmIHRoZSBnaXZlbiBsYXllciBpcyBhIHN0YWNraW5nIGNvbnRleHQgYW5kIGhhcyBjb21wb3Np
dGluZyBjaGlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCmluZGV4IDUxZmM0MTc0NTM5MTkxZTQyMTkyOWNkYTE3YjA2ZDBiMmI5OTFjMmYuLjM5MzE5
Y2ExZjQyY2Y0Yzc1N2I5ZWViMDgyMTliZjk4ODRhNGE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTcxOCw3ICs3MTgsNyBAQCBzdGF0
aWMgdm9pZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwgUmVuZGVyTGF5ZQogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBz
aG91bGQgdXNlLgogICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHM7CiAgICAgQ2xpcFJlY3QgZGFt
YWdlUmVjdCwgY2xpcFJlY3RUb0FwcGx5LCBvdXRsaW5lUmVjdDsKLSAgICBsLT5jYWxjdWxhdGVS
ZWN0cyhyb290TGF5ZXIsIDAsIHBhaW50RGlydHlSZWN0LCBsYXllckJvdW5kcywgZGFtYWdlUmVj
dCwgY2xpcFJlY3RUb0FwcGx5LCBvdXRsaW5lUmVjdCwgdHJ1ZSk7CisgICAgbC0+Y2FsY3VsYXRl
UmVjdHMocm9vdExheWVyLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMsIHBhaW50RGlydHlSZWN0LCBs
YXllckJvdW5kcywgZGFtYWdlUmVjdCwgY2xpcFJlY3RUb0FwcGx5LCBvdXRsaW5lUmVjdCk7CiAK
ICAgICAvLyBFbnN1cmUgb3VyIGxpc3RzIGFyZSB1cC10by1kYXRlLgogICAgIGwtPnVwZGF0ZUxh
eWVyTGlzdHNJZk5lZWRlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144142</attachid>
            <date>2012-05-25 13:50:42 -0700</date>
            <delta_ts>2012-05-25 13:53:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87212-20120525135041.patch</filename>
            <type>text/plain</type>
            <size>35535</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBkMzQ5NjRlMDdiOWRi
ZjQ3YTU0ODM0YWY4N2RmMGRkNGZhNWFmMy4uMWNhNWY5MzM1NDc4MzMwMDliNDg4ZDhiZjk5NDM0
ZjYyNWM0ZjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA1LTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlIGFic29s
dXRlIGNsaXAgcmVjdHMgb24gUmVuZGVyTGF5ZXIgZm9yIGNvbXBvc2l0aW5nIG92ZXJsYXAgdGVz
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcy
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEVuaGFuY2UgdGhlIGNhY2hlIG9mIENsaXBSZWN0cyBvbiBSZW5kZXJMYXllcnMgdG8gc3Rv
cmUgdGhyZWUKKyAgICAgICAgZGlmZmVyZW50IHR5cGVzIG9mIENsaXBSZWN0cywgcmF0aGVyIHRo
YW4ganVzdCBvbmUuCisgICAgICAgIAorICAgICAgICBXZSBuZWVkIHRvIGNvbXB1dGUgY2xpcCBy
ZWN0cyByZWxhdGl2ZSB0byBkaWZmZXJlbnQgbGF5ZXJzCisgICAgICAgIGZvciBkaWZmZXJlbnQg
cHVycG9zZXMuIEZvciBwYWludGluZywgd2UgY29tcHV0ZSByZWxhdGl2ZSB0bworICAgICAgICB0
aGUgY29tcG9zaXRpbmcgbGF5ZXIgd2hpY2ggaXMgYWN0aW5nIGFzIGEgcGFpbnRpbmcgcm9vdC4K
KyAgICAgICAgRm9yIGhpdCB0ZXN0aW5nLCB3ZSBjb21wdXRlIHJlbGF0aXZlIHRvIHRoZSByb290
LCBleGNlcHQKKyAgICAgICAgZm9yIHRyYW5zZm9ybWVkIGxheWVycy4gRm9yIGNvbXBvc3Rpbmcg
b3ZlcmxhcCB0ZXN0aW5nLCB3ZQorICAgICAgICBjb21wdXRlIHJlbGF0aXZlIHRvIHRoZSByb290
ICgiYWJzb2x1dGUiKS4gQXQgb3RoZXIgdGltZXMsIHdlIGRvIG9uZS1vZmYKKyAgICAgICAgY29t
cHV0YXRpb24gd2hpY2ggd2UgbmV2ZXIgd2FudCB0byBjYWNoZSAoInRlbXBvcmFyeSBjbGlwIHJl
Y3RzIikuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBhbGxvd3MgdXMgdG8gY2FjaGUg
cmVjdHMgZm9yIGhpdCB0ZXN0aW5nLCBhbmQgZm9yCisgICAgICAgIGNvbXBvc2l0aW5nIG92ZXJs
YXAgdGVzdGluZy4gVGhpcyBoYXMgaHVnZSBwZXJmb3JtYW5jZSBiZW5lZml0cworICAgICAgICBv
biBzb21lIHBhZ2VzIChidWcgODQ0MTApLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YWxzbyBtYWtlcyBDbGlwUmVjdHMgbm90IGFyZW5hLWFsbG9jYXRlZCwgc28gd2UKKyAgICAgICAg
Y2FuIHVzZSBSZWZQdHI8Q2xpcFJlY3Q+LgorCisgICAgICAgIE5vIHRlc3RhYmxlIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6d2lsbEJlRGVzdHJveWVk
KTogTm8gbmVlZCBmb3IgdGhlCisgICAgICAgIGV4cGxpY2l0IGNsaXBSZWN0cyB0ZWFyZG93biwg
c2luY2UgY2xpcFJlY3RzIGRvbid0IG5lZWQgYSBsaXZlCisgICAgICAgIFJlbmRlck9iamVjdCBm
b3IgYXJlbmEtYmFzZWQgZGVzdHJ1Y3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOiBSZW1vdmUgYXJlbmEtcmVsYXRlZCBuZXcgYW5kIGRlbGV0ZS4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXllcik6IE5vIG5lZWQgdG8gZXhwbGljaXRs
eSBpbml0aWFsaXplIG1fY2xpcFJlY3RzLAorICAgICAgICBzaW5jZSBpdCdzIGFuIE93blB0ciBu
b3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKTogTm8gZXhw
bGljaXQgY2xpcFJlY3QgdGVhcmRvd24gcmVxdWlyZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2xpcHBpbmdSb290Rm9yUGFpbnRpbmcpOiBSZW5hbWVkIHRvIG1ha2UgaXRzIHB1
cnBvc2UKKyAgICAgICAgbW9yZSBvYnZpb3VzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXIpOiBVc2UgdGhlIFRlbXBvcmFyeUNsaXBSZWN0cyB0eXBlIHdoZW4gbmVj
ZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKTog
Tm8gbG9uZ2VyIG5lZWQgdG8gdXNlIHRlbXBvcmFyeSBjbGlwUmVjdHMgd2hlbgorICAgICAgICBo
aXQgdGVzdGluZyBzaW5jZSB3ZSBjYWNoZSBjbGlwIHJlY3RzIGZvciBoaXQgdGVzdGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMpOiBUYWtlIGEgQ2xp
cFJlY3RzVHlwZSBhbmQgcGFzcyBpdCB0aHJvdWdoLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpiYWNrZ3JvdW5kQ2xpcFJlY3QpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKTogVGFrZSBDbGlwUmVjdHNUeXBlLCB3aGljaCBvYnZp
YXRlcyB0ZW1wb3JhcnlDbGlwUmVjdHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y2hpbGRyZW5DbGlwUmVjdCk6IFVzZSBjbGlwcGluZ1Jvb3RGb3JQYWludGluZygpLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNlbGZDbGlwUmVjdCk6IERpdHRvCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6bG9jYWxDbGlwUmVjdCk6IERpdHRvCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cyk6IFRh
a2UgYSB0eXBlIG9mIGNsaXAgcmVjdCB0byBjbGVhcgorICAgICAgICAoaW5jbHVkZSBhbGwpLiBB
bGxvd3MgdXMgdG8ganVzdCBjbGVhciBwYWludGluZyBjbGlwIHJlY3RzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKToKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcFJlY3RzOjpjcmVhdGUpOiBX
ZSBkb24ndCB1c2UgUmVmQ291bnRlZDw+IGluIG9yZGVyIHRvIHVzZSBhIGJpdCBpbgorICAgICAg
ICB0aGUgcmVmQ291bnQgZm9yIGEgZmxhZy4gQWRkIGNyZWF0ZSgpIG1ldGhvZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBSZWN0czo6ZGVyZWYpOiBObyBsb25nZXIgYXJlbmEtYWxsb2NhdGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcFJlY3RzQ2FjaGU6OkNsaXBSZWN0c0NhY2hlKTogU3RydWN0
IHRoYXQgaG9sZHMgYSBzbWFsbAorICAgICAgICBhcnJheSBvZiB0aGUgMyB0eXBlcyBvZiBjbGlw
UmVjdHMgKGFuZCwgaW4gZGVidWcsIHRoZSBsYXllciByZWxhdGl2ZQorICAgICAgICB0byB3aGlj
aCB0aGV5IHdlcmUgY29tcHV0ZWQpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNs
aXBSZWN0cyk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29tcG9zaXRlZEJv
dW5kcyk6IFVzZSBBYnNvbHV0ZUNsaXBSZWN0czsgcm9vdExheWVyCisgICAgICAgIGlzIGFsd2F5
cyB0aGUgUmVuZGVyVmlldydzIGxheWVyIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSk6IFVzZSBUZW1wb3JhcnlD
bGlwUmVjdHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldFJlcXVp
cmVzT3duQmFja2luZ1N0b3JlKTogV2hlbiB0aGlzIHZhcmlhYmxlIGNoYW5nZXMsCisgICAgICAg
IHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBwYWludGluZyBjbGlwUmVjdHMsIHNpbmNlIGl0IGFmZmVj
dHMgdGhlIGFuY2VzdG9yIHJlbGF0aXZlIHRvIHdoaWNoCisgICAgICAgIHRob3NlIHJlY3RzIGFy
ZSBjb21wdXRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyk6IFdoZW4gdGhl
IGNvbXBvc2l0ZWQgc3RhdGUKKyAgICAgICAgb2YgYSBsYXllciBjaGFuZ2VzLCB3ZSBoYXZlIHRv
IGNsZWFyIGFsbCBkZXNjZW5kYW50IGNsaXAgcmVjdHMsIHNpbmNlIHRoaXMKKyAgICAgICAgY2Fu
IGFmZmVjdCB0aGUgbGF5ZXJzIHJlbGF0aXZlIHRvIHdoaWNoIGNsaXAgcmVjdHMgYXJlIGNvbXB1
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJs
YXBNYXApOiBVc2UgQWJzb2x1dGVDbGlwUmVjdHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6IE5vIG5lZWQK
KyAgICAgICAgdG8gY2FsbCB1cGRhdGVMYXllclBvc2l0aW9uKCksIHNpbmNlIHRoYXQgc2hvdWxk
IGhhdmUgYWx3YXlzIGhhcHBlbmVkIGFmdGVyCisgICAgICAgIGxheW91dC4gVGhhdCBjYWxsIGNs
ZWFyZWQgY2xpcCByZWN0cywgc28gcmVtb3ZpbmcgaXQgaXMgdmVyeSBiZW5lZmljaWFsLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwcGVkQnlBbmNlc3Rvcik6
IFVzZSBUZW1wb3JhcnlDbGlwUmVjdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUxheWVycyk6IFVzZSBUZW1wb3Jh
cnlDbGlwUmVjdHMuCisKIDIwMTItMDUtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIHRoZSBzYW1lIGFuaW1hdGlvbiBiZWdpbiB0aW1lIHdo
aWxlIHVwZGF0aW5nIGNvbXBvc2l0aW5nIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZjViNjUwMGU1ZWIxYzA2NWMw
OTQ3YzM3MzgxZWIzNTNhMzlmMjdlYi4uMmRmMWU3NzMzYWY4NDkxY2E5OTg0NDFhMjA1NmUyNzBj
OTY1YmExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCkBAIC0zNDUsMTAgKzM0NSw2IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmRlc3Ryb3lMYXllcigpCiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURl
c3Ryb3llZCgpCiB7Ci0gICAgLy8gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHdlIGRlc3Ryb3kg
dGhlIFJlbmRlck9iamVjdC4KLSAgICBpZiAobV9sYXllcikKLSAgICAgICAgbV9sYXllci0+Y2xl
YXJDbGlwUmVjdHMoKTsKLQogICAgIC8vIEEgY29udGludWF0aW9uIG9mIHRoaXMgUmVuZGVyT2Jq
ZWN0IHNob3VsZCBiZSBkZXN0cm95ZWQgYXQgc3ViY2xhc3Nlcy4KICAgICBBU1NFUlQoIWNvbnRp
bnVhdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggYTgyZDkzNjlkNjM1ZWI2MTAzMGVkYWQ0MTU3NmQ1ZDE0NGQ2M2Y5Yi4uMjk1NmNhMGVkOWZh
N2ZjYjI1YzRhYjRkOWZkYmIyNjU0Y2ZjNWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC0xMjUsMjUgKzEyNSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBjb25zdCBpbnQgTWluaW11bVdpZHRoV2hpbGVSZXNpemluZyA9IDEwMDsKIGNvbnN0
IGludCBNaW5pbXVtSGVpZ2h0V2hpbGVSZXNpemluZyA9IDQwOwogCi12b2lkKiBDbGlwUmVjdHM6
Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRlckFyZW5hKiByZW5kZXJBcmVuYSkKLXsKLSAg
ICByZXR1cm4gcmVuZGVyQXJlbmEtPmFsbG9jYXRlKHN6KTsKLX0KLQotdm9pZCBDbGlwUmVjdHM6
Om9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwdHIsIHNpemVfdCBzeikKLXsKLSAgICAvLyBTdGFzaCBz
aXplIHdoZXJlIGRlc3Ryb3kgY2FuIGZpbmQgaXQuCi0gICAgKihzaXplX3QgKilwdHIgPSBzejsK
LX0KLQotdm9pZCBDbGlwUmVjdHM6OmRlc3Ryb3koUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQot
ewotICAgIGRlbGV0ZSB0aGlzOwotICAgIAotICAgIC8vIFJlY292ZXIgdGhlIHNpemUgbGVmdCB0
aGVyZSBmb3IgdXMgYnkgb3BlcmF0b3IgZGVsZXRlIGFuZCBmcmVlIHRoZSBtZW1vcnkuCi0gICAg
cmVuZGVyQXJlbmEtPmZyZWUoKihzaXplX3QgKil0aGlzLCB0aGlzKTsKLX0KLQogUmVuZGVyTGF5
ZXI6OlJlbmRlckxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICA6IG1f
aW5SZXNpemVNb2RlKGZhbHNlKQogICAgICwgbV9zY3JvbGxEaW1lbnNpb25zRGlydHkodHJ1ZSkK
QEAgLTE4MCwxMCArMTYxLDYgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1fcG9zWk9yZGVyTGlzdCgwKQogICAgICwgbV9u
ZWdaT3JkZXJMaXN0KDApCiAgICAgLCBtX25vcm1hbEZsb3dMaXN0KDApCi0gICAgLCBtX2NsaXBS
ZWN0cygwKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1fY2xpcFJlY3RzUm9vdCgwKQotI2VuZGlm
CiAgICAgLCBtX21hcnF1ZWUoMCkKICAgICAsIG1fc3RhdGljSW5saW5lUG9zaXRpb24oMCkKICAg
ICAsIG1fc3RhdGljQmxvY2tQb3NpdGlvbigwKQpAQCAtMjUyLDkgKzIyOSw2IEBAIFJlbmRlckxh
eWVyOjp+UmVuZGVyTGF5ZXIoKQogICAgIGNsZWFyQmFja2luZyh0cnVlKTsKICNlbmRpZgogICAg
IAotICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIG5vIGxpbmdlcmluZyBjbGlwIHJlY3RzLgotICAg
IEFTU0VSVCghbV9jbGlwUmVjdHMpOwotICAgIAogICAgIGlmIChtX3Njcm9sbENvcm5lcikKICAg
ICAgICAgbV9zY3JvbGxDb3JuZXItPmRlc3Ryb3koKTsKICAgICBpZiAobV9yZXNpemVyKQpAQCAt
MTA3MCw3ICsxMDQ0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0RmlsdGVyQmFja2VuZE5lZWRz
UmVwYWludGluZ0luUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogfQogI2VuZGlmCiAgICAg
Ci1SZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmNsaXBwaW5nUm9vdCgpIGNvbnN0CitSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmNsaXBwaW5nUm9vdEZvclBhaW50aW5nKCkgY29uc3QKIHsKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKQpA
QCAtMjkzNiw3ICsyOTEwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgcGFyZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAg
ICAgICAgQ2xpcFJlY3QgY2xpcFJlY3QgPSBwYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHBh
cmVudCgpKSB7Ci0gICAgICAgICAgICBjbGlwUmVjdCA9IGJhY2tncm91bmRDbGlwUmVjdChyb290
TGF5ZXIsIHJlZ2lvbiwgcGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMp
OworICAgICAgICAgICAgY2xpcFJlY3QgPSBiYWNrZ3JvdW5kQ2xpcFJlY3Qocm9vdExheWVyLCBy
ZWdpb24sIChwYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1w
b3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cyk7CiAgICAgICAgICAgICBjbGlwUmVj
dC5pbnRlcnNlY3QocGFpbnREaXJ0eVJlY3QpOwogICAgICAgICAKICAgICAgICAgICAgIC8vIFB1
c2ggdGhlIHBhcmVudCBjb29yZGluYXRlIHNwYWNlJ3MgY2xpcC4KQEAgLTMwNDUsNyArMzAxOSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9v
dExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAjZW5kaWYKICAgICAKICAgICBpZiAoc2hvdWxk
UGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMpIHsKLSAgICAgICAgY2FsY3VsYXRlUmVjdHMocm9vdExheWVyLCByZWdpb24sIHBh
aW50RGlydHlSZWN0LCBsYXllckJvdW5kcywgZGFtYWdlUmVjdCwgY2xpcFJlY3RUb0FwcGx5LCBv
dXRsaW5lUmVjdCwgbG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0
cyk7CisgICAgICAgIGNhbGN1bGF0ZVJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCAobG9jYWxQYWlu
dEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVj
dHMgOiBQYWludGluZ0NsaXBSZWN0cywgcGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1h
Z2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0KTsKICAgICAgICAgcGFpbnRPZmZz
ZXQgPSB0b1BvaW50KGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigp
KTsKICAgICB9CiAKQEAgLTM0NTMsMTEgKzM0MjcsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5
ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29u
dAogewogICAgIC8vIFRoZSBuYXR1cmFsIHRoaW5nIHdvdWxkIGJlIHRvIGtlZXAgSGl0VGVzdGlu
Z1RyYW5zZm9ybVN0YXRlIG9uIHRoZSBzdGFjaywgYnV0IGl0J3MgYmlnLCBzbyB3ZSBoZWFwLWFs
bG9jYXRlLgogCi0gICAgYm9vbCB1c2VUZW1wb3JhcnlDbGlwUmVjdHMgPSBmYWxzZTsKLSNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdXNlVGVtcG9yYXJ5Q2xpcFJlY3RzID0g
Y29tcG9zaXRvcigpLT5pbkNvbXBvc2l0aW5nTW9kZSgpOwotI2VuZGlmCi0gICAgdXNlVGVtcG9y
YXJ5Q2xpcFJlY3RzIHw9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRhaW5z
U2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBib29sIHVzZVRlbXBv
cmFyeUNsaXBSZWN0cyA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRhaW5z
U2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoKTsKIAogICAgIExheW91dFJlY3Qg
aGl0VGVzdEFyZWEgPSByZXN1bHQucmVjdEZvclBvaW50KGhpdFRlc3RQb2ludCk7CiAKQEAgLTM0
NjUsNyArMzQzNSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFJl
bmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAgICAgaWYgKHRyYW5zZm9y
bSgpICYmICFhcHBsaWVkVHJhbnNmb3JtKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFy
ZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAgICAgICAgaWYgKHBhcmVu
dCgpKSB7Ci0gICAgICAgICAgICBDbGlwUmVjdCBjbGlwUmVjdCA9IGJhY2tncm91bmRDbGlwUmVj
dChyb290TGF5ZXIsIHJlc3VsdC5yZWdpb24oKSwgdXNlVGVtcG9yYXJ5Q2xpcFJlY3RzLCBJbmNs
dWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOworICAgICAgICAgICAgQ2xpcFJlY3QgY2xpcFJlY3Qg
PSBiYWNrZ3JvdW5kQ2xpcFJlY3Qocm9vdExheWVyLCByZXN1bHQucmVnaW9uKCksIHVzZVRlbXBv
cmFyeUNsaXBSZWN0cyA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFJvb3RSZWxhdGl2ZUNsaXBSZWN0
cywgSW5jbHVkZU92ZXJsYXlTY3JvbGxiYXJTaXplKTsKICAgICAgICAgICAgIC8vIEdvIGFoZWFk
IGFuZCB0ZXN0IHRoZSBlbmNsb3NpbmcgY2xpcCBub3cuCiAgICAgICAgICAgICBpZiAoIWNsaXBS
ZWN0LmludGVyc2VjdHMoaGl0VGVzdEFyZWEpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpA
QCAtMzUyNiw3ICszNDk2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5
ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICBDbGlwUmVj
dCBiZ1JlY3Q7CiAgICAgQ2xpcFJlY3QgZmdSZWN0OwogICAgIENsaXBSZWN0IG91dGxpbmVSZWN0
OwotICAgIGNhbGN1bGF0ZVJlY3RzKHJvb3RMYXllciwgcmVzdWx0LnJlZ2lvbigpLCBoaXRUZXN0
UmVjdCwgbGF5ZXJCb3VuZHMsIGJnUmVjdCwgZmdSZWN0LCBvdXRsaW5lUmVjdCwgdXNlVGVtcG9y
YXJ5Q2xpcFJlY3RzLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOworICAgIGNhbGN1bGF0
ZVJlY3RzKHJvb3RMYXllciwgcmVzdWx0LnJlZ2lvbigpLCB1c2VUZW1wb3JhcnlDbGlwUmVjdHMg
PyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBSb290UmVsYXRpdmVDbGlwUmVjdHMsIGhpdFRlc3RSZWN0
LCBsYXllckJvdW5kcywgYmdSZWN0LCBmZ1JlY3QsIG91dGxpbmVSZWN0LCBJbmNsdWRlT3Zlcmxh
eVNjcm9sbGJhclNpemUpOwogICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgZm9y
IGtlZXBpbmcgdHJhY2sgb2YgdGhlIHotZGVwdGggb2YgdGhlIGhpdCBwb2ludCBvZiAzZC10cmFu
c2Zvcm1lZAogICAgIC8vIGRlc2NlbmRhbnRzLgpAQCAtMzc5NywxMCArMzc2NywxMSBAQCBSZW5k
ZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExheWVyQ29sdW1ucyhSZW5kZXJMYXll
ciogY2hpbGRMYXllciwgUmVuZAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVn
aW9uKiByZWdpb24sIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkKK3Zv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgQ2xpcFJlY3RzVHlwZSBjbGlwUmVjdHNUeXBlLCBP
dmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpCiB7Ci0gICAgaWYgKG1fY2xp
cFJlY3RzKSB7Ci0gICAgICAgIEFTU0VSVChyb290TGF5ZXIgPT0gbV9jbGlwUmVjdHNSb290KTsK
KyAgICBBU1NFUlQoY2xpcFJlY3RzVHlwZSA8IE51bUNhY2hlZENsaXBSZWN0c1R5cGVzKTsKKyAg
ICBpZiAobV9jbGlwUmVjdHNDYWNoZSAmJiBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1tj
bGlwUmVjdHNUeXBlXSkgeworICAgICAgICBBU1NFUlQocm9vdExheWVyID09IG1fY2xpcFJlY3Rz
Q2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSk7CiAgICAgICAgIHJldHVybjsg
Ly8gV2UgaGF2ZSB0aGUgY29ycmVjdCBjYWNoZWQgdmFsdWUuCiAgICAgfQogICAgIApAQCAtMzgw
OCwyOSArMzc3OSwzNCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3Qg
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiByZQogICAgIC8vIGV4YW1pbmUg
dGhlIHBhcmVudC4gIFdlIHdhbnQgdG8gY2FjaGUgY2xpcCByZWN0cyB3aXRoIHVzIGFzIHRoZSBy
b290LgogICAgIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciA9IHJvb3RMYXllciAhPSB0aGlzID8g
cGFyZW50KCkgOiAwOwogICAgIGlmIChwYXJlbnRMYXllcikKLSAgICAgICAgcGFyZW50TGF5ZXIt
PnVwZGF0ZUNsaXBSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwgcmVsZXZhbmN5KTsKKyAgICAgICAg
cGFyZW50TGF5ZXItPnVwZGF0ZUNsaXBSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwgY2xpcFJlY3Rz
VHlwZSwgcmVsZXZhbmN5KTsKIAogICAgIENsaXBSZWN0cyBjbGlwUmVjdHM7Ci0gICAgY2FsY3Vs
YXRlQ2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHMsIHRydWUsIHJlbGV2YW5j
eSk7CisgICAgY2FsY3VsYXRlQ2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHNU
eXBlLCBjbGlwUmVjdHMsIHJlbGV2YW5jeSk7CiAKLSAgICBpZiAocGFyZW50TGF5ZXIgJiYgcGFy
ZW50TGF5ZXItPmNsaXBSZWN0cygpICYmIGNsaXBSZWN0cyA9PSAqcGFyZW50TGF5ZXItPmNsaXBS
ZWN0cygpKQotICAgICAgICBtX2NsaXBSZWN0cyA9IHBhcmVudExheWVyLT5jbGlwUmVjdHMoKTsK
KyAgICBpZiAoIW1fY2xpcFJlY3RzQ2FjaGUpCisgICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBh
ZG9wdFB0cihuZXcgQ2xpcFJlY3RzQ2FjaGUpOworCisgICAgaWYgKHBhcmVudExheWVyICYmIHBh
cmVudExheWVyLT5jbGlwUmVjdHMoY2xpcFJlY3RzVHlwZSkgJiYgY2xpcFJlY3RzID09ICpwYXJl
bnRMYXllci0+Y2xpcFJlY3RzKGNsaXBSZWN0c1R5cGUpKQorICAgICAgICBtX2NsaXBSZWN0c0Nh
Y2hlLT5tX2NsaXBSZWN0c1tjbGlwUmVjdHNUeXBlXSA9IHBhcmVudExheWVyLT5jbGlwUmVjdHMo
Y2xpcFJlY3RzVHlwZSk7CiAgICAgZWxzZQotICAgICAgICBtX2NsaXBSZWN0cyA9IG5ldyAocmVu
ZGVyZXIoKS0+cmVuZGVyQXJlbmEoKSkgQ2xpcFJlY3RzKGNsaXBSZWN0cyk7Ci0gICAgbV9jbGlw
UmVjdHMtPnJlZigpOworICAgICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1tjbGlw
UmVjdHNUeXBlXSA9IENsaXBSZWN0czo6Y3JlYXRlKGNsaXBSZWN0cyk7CisKKyAgICBtX2NsaXBS
ZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1tjbGlwUmVjdHNUeXBlXS0+cmVmKCk7CiAjaWZuZGVmIE5E
RUJVRwotICAgIG1fY2xpcFJlY3RzUm9vdCA9IHJvb3RMYXllcjsKKyAgICBtX2NsaXBSZWN0c0Nh
Y2hlLT5tX2NsaXBSZWN0c1Jvb3RbY2xpcFJlY3RzVHlwZV0gPSByb290TGF5ZXI7CiAjZW5kaWYK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0IFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBDbGlwUmVjdHMmIGNsaXBSZWN0
cywKLSAgICBib29sIHVzZUNhY2hlZCwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVs
ZXZhbmN5KSBjb25zdAordm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBDbGlwUmVjdHNU
eXBlIGNsaXBSZWN0c1R5cGUsIENsaXBSZWN0cyYgY2xpcFJlY3RzLCBPdmVybGF5U2Nyb2xsYmFy
U2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkgewog
ICAgICAgICAvLyBUaGUgcm9vdCBsYXllcidzIGNsaXAgcmVjdCBpcyBhbHdheXMgaW5maW5pdGUu
CiAgICAgICAgIGNsaXBSZWN0cy5yZXNldChQYWludEluZm86OmluZmluaXRlUmVjdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBib29sIHVzZUNhY2hlZCA9IGNsaXBSZWN0
c1R5cGUgIT0gVGVtcG9yYXJ5Q2xpcFJlY3RzOwogCiAgICAgLy8gRm9yIHRyYW5zZm9ybWVkIGxh
eWVycywgdGhlIHJvb3QgbGF5ZXIgd2FzIHNoaWZ0ZWQgdG8gYmUgdXMsIHNvIHRoZXJlIGlzIG5v
IG5lZWQgdG8KICAgICAvLyBleGFtaW5lIHRoZSBwYXJlbnQuICBXZSB3YW50IHRvIGNhY2hlIGNs
aXAgcmVjdHMgd2l0aCB1cyBhcyB0aGUgcm9vdC4KQEAgLTM4MzgsMTAgKzM4MTQsMTAgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290
TGF5ZXIsIFJlbmRlclJlZ2lvbioKICAgICAKICAgICAvLyBFbnN1cmUgdGhhdCBvdXIgcGFyZW50
J3MgY2xpcCBoYXMgYmVlbiBjYWxjdWxhdGVkIHNvIHRoYXQgd2UgY2FuIGV4YW1pbmUgdGhlIHZh
bHVlcy4KICAgICBpZiAocGFyZW50TGF5ZXIpIHsKLSAgICAgICAgaWYgKHVzZUNhY2hlZCAmJiBw
YXJlbnRMYXllci0+Y2xpcFJlY3RzKCkpCi0gICAgICAgICAgICBjbGlwUmVjdHMgPSAqcGFyZW50
TGF5ZXItPmNsaXBSZWN0cygpOworICAgICAgICBpZiAodXNlQ2FjaGVkICYmIHBhcmVudExheWVy
LT5jbGlwUmVjdHMoY2xpcFJlY3RzVHlwZSkpCisgICAgICAgICAgICBjbGlwUmVjdHMgPSAqcGFy
ZW50TGF5ZXItPmNsaXBSZWN0cyhjbGlwUmVjdHNUeXBlKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcGFyZW50TGF5ZXItPmNhbGN1bGF0ZUNsaXBSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwg
Y2xpcFJlY3RzKTsKKyAgICAgICAgICAgIHBhcmVudExheWVyLT5jYWxjdWxhdGVDbGlwUmVjdHMo
cm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIGNsaXBSZWN0cyk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGNsaXBSZWN0cy5yZXNldChQYWludEluZm86OmluZmluaXRlUmVjdCgpKTsKIApA
QCAtMzg4OSwxNiArMzg2NSwxNiBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVj
dHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKgogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBDbGlwUmVjdHMmIGNsaXBSZWN0cywgYm9v
bCB0ZW1wb3JhcnlDbGlwUmVjdHMsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2
YW5jeSkgY29uc3QKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhcmVudENsaXBSZWN0cyhjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgQ2xpcFJlY3RzVHlwZSBj
bGlwUmVjdHNUeXBlLCBDbGlwUmVjdHMmIGNsaXBSZWN0cywgT3ZlcmxheVNjcm9sbGJhclNpemVS
ZWxldmFuY3kgcmVsZXZhbmN5KSBjb25zdAogewogICAgIEFTU0VSVChwYXJlbnQoKSk7Ci0gICAg
aWYgKHRlbXBvcmFyeUNsaXBSZWN0cykgewotICAgICAgICBwYXJlbnQoKS0+Y2FsY3VsYXRlQ2xp
cFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHMsIGZhbHNlLCByZWxldmFuY3kpOwor
ICAgIGlmIChjbGlwUmVjdHNUeXBlID09IFRlbXBvcmFyeUNsaXBSZWN0cykgeworICAgICAgICBw
YXJlbnQoKS0+Y2FsY3VsYXRlQ2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHNU
eXBlLCBjbGlwUmVjdHMsIHJlbGV2YW5jeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBwYXJlbnQoKS0+dXBkYXRlQ2xpcFJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCByZWxldmFuY3kp
OwotICAgIGNsaXBSZWN0cyA9ICpwYXJlbnQoKS0+Y2xpcFJlY3RzKCk7CisgICAgcGFyZW50KCkt
PnVwZGF0ZUNsaXBSZWN0cyhyb290TGF5ZXIsIHJlZ2lvbiwgY2xpcFJlY3RzVHlwZSwgcmVsZXZh
bmN5KTsKKyAgICBjbGlwUmVjdHMgPSAqcGFyZW50KCktPmNsaXBSZWN0cyhjbGlwUmVjdHNUeXBl
KTsKIH0KIAogc3RhdGljIGlubGluZSBDbGlwUmVjdCBiYWNrZ3JvdW5kQ2xpcFJlY3RGb3JQb3Np
dGlvbihjb25zdCBDbGlwUmVjdHMmIHBhcmVudFJlY3RzLCBFUG9zaXRpb24gcG9zaXRpb24pCkBA
IC0zOTEyLDExICszODg4LDExIEBAIHN0YXRpYyBpbmxpbmUgQ2xpcFJlY3QgYmFja2dyb3VuZENs
aXBSZWN0Rm9yUG9zaXRpb24oY29uc3QgQ2xpcFJlY3RzJiBwYXJlbnRSZWN0CiAgICAgcmV0dXJu
IHBhcmVudFJlY3RzLm92ZXJmbG93Q2xpcFJlY3QoKTsKIH0KIAotQ2xpcFJlY3QgUmVuZGVyTGF5
ZXI6OmJhY2tncm91bmRDbGlwUmVjdChjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiwgYm9vbCB0ZW1wb3JhcnlDbGlwUmVjdHMsIE92ZXJsYXlTY3JvbGxi
YXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgY29uc3QKK0NsaXBSZWN0IFJlbmRlckxheWVyOjpi
YWNrZ3JvdW5kQ2xpcFJlY3QoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVn
aW9uKiByZWdpb24sIENsaXBSZWN0c1R5cGUgY2xpcFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJh
clNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBjb25zdAogewogICAgIEFTU0VSVChwYXJlbnQoKSk7
CiAgICAgQ2xpcFJlY3RzIHBhcmVudFJlY3RzOwotICAgIHBhcmVudENsaXBSZWN0cyhyb290TGF5
ZXIsIHJlZ2lvbiwgcGFyZW50UmVjdHMsIHRlbXBvcmFyeUNsaXBSZWN0cywgcmVsZXZhbmN5KTsK
KyAgICBwYXJlbnRDbGlwUmVjdHMocm9vdExheWVyLCByZWdpb24sIGNsaXBSZWN0c1R5cGUsIHBh
cmVudFJlY3RzLCByZWxldmFuY3kpOwogICAgIENsaXBSZWN0IGJhY2tncm91bmRDbGlwUmVjdCA9
IGJhY2tncm91bmRDbGlwUmVjdEZvclBvc2l0aW9uKHBhcmVudFJlY3RzLCByZW5kZXJlcigpLT5z
dHlsZSgpLT5wb3NpdGlvbigpKTsKICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gcmVuZGVyZXIoKS0+
dmlldygpOwogICAgIEFTU0VSVCh2aWV3KTsKQEAgLTM5MjgsMTIgKzM5MDQsMTEgQEAgQ2xpcFJl
Y3QgUmVuZGVyTGF5ZXI6OmJhY2tncm91bmRDbGlwUmVjdChjb25zdCBSZW5kZXJMYXllciogcm9v
dExheWVyLCBSZW5kZXJSZWcKICAgICByZXR1cm4gYmFja2dyb3VuZENsaXBSZWN0OwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJl
Y3QsIExheW91dFJlY3QmIGxheWVyQm91bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ2xpcFJlY3QmIGJhY2tncm91bmRSZWN0LCBDbGlwUmVjdCYgZm9yZWdyb3VuZFJlY3Qs
IENsaXBSZWN0JiBvdXRsaW5lUmVjdCwgYm9vbCB0ZW1wb3JhcnlDbGlwUmVjdHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBy
ZWxldmFuY3kpIGNvbnN0Cit2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBS
ZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgQ2xpcFJlY3RzVHlw
ZSBjbGlwUmVjdHNUeXBlLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgTGF5b3V0
UmVjdCYgbGF5ZXJCb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlw
UmVjdCYgYmFja2dyb3VuZFJlY3QsIENsaXBSZWN0JiBmb3JlZ3JvdW5kUmVjdCwgQ2xpcFJlY3Qm
IG91dGxpbmVSZWN0LCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNv
bnN0CiB7CiAgICAgaWYgKHJvb3RMYXllciAhPSB0aGlzICYmIHBhcmVudCgpKSB7Ci0gICAgICAg
IGJhY2tncm91bmRSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KHJvb3RMYXllciwgcmVnaW9uLCB0
ZW1wb3JhcnlDbGlwUmVjdHMsIHJlbGV2YW5jeSk7CisgICAgICAgIGJhY2tncm91bmRSZWN0ID0g
YmFja2dyb3VuZENsaXBSZWN0KHJvb3RMYXllciwgcmVnaW9uLCBjbGlwUmVjdHNUeXBlLCByZWxl
dmFuY3kpOwogICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRlcnNlY3QocGFpbnREaXJ0eVJlY3Qp
OwogICAgIH0gZWxzZQogICAgICAgICBiYWNrZ3JvdW5kUmVjdCA9IHBhaW50RGlydHlSZWN0OwpA
QCAtMzk4NiwxMCArMzk2MSwxMCBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjaGlsZHJlbkNs
aXBSZWN0KCkgY29uc3QKICAgICAvLyBGSVhNRTogYm9yZGVyLXJhZGl1cyBub3QgYWNjb3VudGVk
IGZvci4KICAgICAvLyBGSVhNRTogUmVnaW9ucyBub3QgYWNjb3VudGVkIGZvci4KICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gcmVuZGVyZXIoKS0+dmlldygpOwotICAgIFJlbmRlckxheWVy
KiBjbGlwcGluZ1Jvb3RMYXllciA9IGNsaXBwaW5nUm9vdCgpOworICAgIFJlbmRlckxheWVyKiBj
bGlwcGluZ1Jvb3RMYXllciA9IGNsaXBwaW5nUm9vdEZvclBhaW50aW5nKCk7CiAgICAgTGF5b3V0
UmVjdCBsYXllckJvdW5kczsKICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3Vu
ZFJlY3QsIG91dGxpbmVSZWN0OwotICAgIGNhbGN1bGF0ZVJlY3RzKGNsaXBwaW5nUm9vdExheWVy
LCAwLCByZW5kZXJWaWV3LT51bnNjYWxlZERvY3VtZW50UmVjdCgpLCBsYXllckJvdW5kcywgYmFj
a2dyb3VuZFJlY3QsIGZvcmVncm91bmRSZWN0LCBvdXRsaW5lUmVjdCk7CisgICAgY2FsY3VsYXRl
UmVjdHMoY2xpcHBpbmdSb290TGF5ZXIsIDAsIFBhaW50aW5nQ2xpcFJlY3RzLCByZW5kZXJWaWV3
LT51bnNjYWxlZERvY3VtZW50UmVjdCgpLCBsYXllckJvdW5kcywgYmFja2dyb3VuZFJlY3QsIGZv
cmVncm91bmRSZWN0LCBvdXRsaW5lUmVjdCk7CiAgICAgcmV0dXJuIGNsaXBwaW5nUm9vdExheWVy
LT5yZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChmb3JlZ3JvdW5kUmVj
dC5yZWN0KCkpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCkBAIC0zOTk4LDEwICszOTcz
LDEwIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OnNlbGZDbGlwUmVjdCgpIGNvbnN0CiAgICAg
Ly8gRklYTUU6IGJvcmRlci1yYWRpdXMgbm90IGFjY291bnRlZCBmb3IuCiAgICAgLy8gRklYTUU6
IFJlZ2lvbnMgbm90IGFjY291bnRlZCBmb3IuCiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHJlbmRlcmVyKCktPnZpZXcoKTsKLSAgICBSZW5kZXJMYXllciogY2xpcHBpbmdSb290TGF5ZXIg
PSBjbGlwcGluZ1Jvb3QoKTsKKyAgICBSZW5kZXJMYXllciogY2xpcHBpbmdSb290TGF5ZXIgPSBj
bGlwcGluZ1Jvb3RGb3JQYWludGluZygpOwogICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHM7CiAg
ICAgQ2xpcFJlY3QgYmFja2dyb3VuZFJlY3QsIGZvcmVncm91bmRSZWN0LCBvdXRsaW5lUmVjdDsK
LSAgICBjYWxjdWxhdGVSZWN0cyhjbGlwcGluZ1Jvb3RMYXllciwgMCwgcmVuZGVyVmlldy0+ZG9j
dW1lbnRSZWN0KCksIGxheWVyQm91bmRzLCBiYWNrZ3JvdW5kUmVjdCwgZm9yZWdyb3VuZFJlY3Qs
IG91dGxpbmVSZWN0KTsKKyAgICBjYWxjdWxhdGVSZWN0cyhjbGlwcGluZ1Jvb3RMYXllciwgMCwg
UGFpbnRpbmdDbGlwUmVjdHMsIHJlbmRlclZpZXctPmRvY3VtZW50UmVjdCgpLCBsYXllckJvdW5k
cywgYmFja2dyb3VuZFJlY3QsIGZvcmVncm91bmRSZWN0LCBvdXRsaW5lUmVjdCk7CiAgICAgcmV0
dXJuIGNsaXBwaW5nUm9vdExheWVyLT5yZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZs
b2F0UXVhZChiYWNrZ3JvdW5kUmVjdC5yZWN0KCkpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwog
fQogCkBAIC00MDA5LDEwICszOTg0LDEwIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmxvY2Fs
Q2xpcFJlY3QoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBib3JkZXItcmFkaXVzIG5vdCBhY2Nv
dW50ZWQgZm9yLgogICAgIC8vIEZJWE1FOiBSZWdpb25zIG5vdCBhY2NvdW50ZWQgZm9yLgotICAg
IFJlbmRlckxheWVyKiBjbGlwcGluZ1Jvb3RMYXllciA9IGNsaXBwaW5nUm9vdCgpOworICAgIFJl
bmRlckxheWVyKiBjbGlwcGluZ1Jvb3RMYXllciA9IGNsaXBwaW5nUm9vdEZvclBhaW50aW5nKCk7
CiAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAgICBDbGlwUmVjdCBiYWNrZ3JvdW5kUmVj
dCwgZm9yZWdyb3VuZFJlY3QsIG91dGxpbmVSZWN0OwotICAgIGNhbGN1bGF0ZVJlY3RzKGNsaXBw
aW5nUm9vdExheWVyLCAwLCBQYWludEluZm86OmluZmluaXRlUmVjdCgpLCBsYXllckJvdW5kcywg
YmFja2dyb3VuZFJlY3QsIGZvcmVncm91bmRSZWN0LCBvdXRsaW5lUmVjdCk7CisgICAgY2FsY3Vs
YXRlUmVjdHMoY2xpcHBpbmdSb290TGF5ZXIsIDAsIFBhaW50aW5nQ2xpcFJlY3RzLCBQYWludElu
Zm86OmluZmluaXRlUmVjdCgpLCBsYXllckJvdW5kcywgYmFja2dyb3VuZFJlY3QsIGZvcmVncm91
bmRSZWN0LCBvdXRsaW5lUmVjdCk7CiAKICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0ID0gYmFja2dy
b3VuZFJlY3QucmVjdCgpOwogICAgIGlmIChjbGlwUmVjdCA9PSBQYWludEluZm86OmluZmluaXRl
UmVjdCgpKQpAQCAtNDI2MCwyNSArNDIzNSwyNSBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpjYWxj
dWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IFJlbmRlcgog
ICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KHVuaW9uQm91bmRzKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygpCit2b2lkIFJl
bmRlckxheWVyOjpjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKENsaXBSZWN0c1R5
cGUgdHlwZVRvQ2xlYXIpCiB7Ci0gICAgaWYgKCFtX2NsaXBSZWN0cykKKyAgICAvLyBGSVhNRTog
aXQncyBub3QgY2xlYXIgaG93IHRoaXMgbGF5ZXIgbm90IGhhdmluZyBjbGlwIHJlY3RzIGd1YXJh
bnRlZXMgdGhhdCBubyBkZXNjZW5kYW50cyBoYXZlIGFueS4KKyAgICBpZiAoIW1fY2xpcFJlY3Rz
Q2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNsZWFyQ2xpcFJlY3RzKCk7CisgICAgY2xl
YXJDbGlwUmVjdHModHlwZVRvQ2xlYXIpOwogICAgIAogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGwg
PSBmaXJzdENoaWxkKCk7IGw7IGwgPSBsLT5uZXh0U2libGluZygpKQotICAgICAgICBsLT5jbGVh
ckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7CisgICAgICAgIGwtPmNsZWFyQ2xpcFJl
Y3RzSW5jbHVkaW5nRGVzY2VuZGFudHModHlwZVRvQ2xlYXIpOwogfQogCi12b2lkIFJlbmRlckxh
eWVyOjpjbGVhckNsaXBSZWN0cygpCit2b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBSZWN0cyhD
bGlwUmVjdHNUeXBlIHR5cGVUb0NsZWFyKQogewotICAgIGlmIChtX2NsaXBSZWN0cykgewotICAg
ICAgICBtX2NsaXBSZWN0cy0+ZGVyZWYocmVuZGVyZXIoKS0+cmVuZGVyQXJlbmEoKSk7Ci0gICAg
ICAgIG1fY2xpcFJlY3RzID0gMDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fY2xpcFJlY3Rz
Um9vdCA9IDA7Ci0jZW5kaWYgICAgCisgICAgaWYgKHR5cGVUb0NsZWFyID09IEFsbENsaXBSZWN0
VHlwZXMpCisgICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBudWxscHRyOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQodHlwZVRvQ2xlYXIgPCBOdW1DYWNoZWRDbGlwUmVjdHNUeXBlcyk7Cisg
ICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzW3R5cGVUb0NsZWFyXSA9IG51bGxw
dHI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4
IDg2MGEzNzI5MGFhZGQ2MTc5YzFkMDE3OWIyMWEwMGQ5Njg0ZjhkMGUuLmFkMjNhZjcwODhjMmE4
ZTdlMGMxN2Y4NzU1MTNiNGI0NjFlYTk1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCkBAIC0xMjksMjcgKzEyOSwxOSBAQCBpbmxpbmUgQ2xpcFJlY3QgaW50ZXJzZWN0
aW9uKGNvbnN0IENsaXBSZWN0JiBhLCBjb25zdCBDbGlwUmVjdCYgYikKIAogY2xhc3MgQ2xpcFJl
Y3RzIHsKIHB1YmxpYzoKLSAgICBDbGlwUmVjdHMoKQotICAgICAgICA6IG1fcmVmQ250KDApCi0g
ICAgICAgICwgbV9maXhlZChmYWxzZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwUmVjdHM+
IGNyZWF0ZSgpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBSZWN0cyk7
CiAgICAgfQogCi0gICAgQ2xpcFJlY3RzKGNvbnN0IExheW91dFJlY3QmIHIpCi0gICAgICAgIDog
bV9vdmVyZmxvd0NsaXBSZWN0KHIpCi0gICAgICAgICwgbV9maXhlZENsaXBSZWN0KHIpCi0gICAg
ICAgICwgbV9wb3NDbGlwUmVjdChyKQotICAgICAgICAsIG1fcmVmQ250KDApCi0gICAgICAgICwg
bV9maXhlZChmYWxzZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwUmVjdHM+IGNyZWF0ZShj
b25zdCBDbGlwUmVjdHMmIG90aGVyKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGlwUmVjdHMob3RoZXIpKTsKICAgICB9CiAKLSAgICBDbGlwUmVjdHMoY29uc3QgQ2xpcFJl
Y3RzJiBvdGhlcikKLSAgICAgICAgOiBtX292ZXJmbG93Q2xpcFJlY3Qob3RoZXIub3ZlcmZsb3dD
bGlwUmVjdCgpKQotICAgICAgICAsIG1fZml4ZWRDbGlwUmVjdChvdGhlci5maXhlZENsaXBSZWN0
KCkpCi0gICAgICAgICwgbV9wb3NDbGlwUmVjdChvdGhlci5wb3NDbGlwUmVjdCgpKQotICAgICAg
ICAsIG1fcmVmQ250KDApCi0gICAgICAgICwgbV9maXhlZChvdGhlci5maXhlZCgpKQorICAgIENs
aXBSZWN0cygpCisgICAgICAgIDogbV9yZWZDbnQoMCkKKyAgICAgICAgLCBtX2ZpeGVkKGZhbHNl
KQogICAgIHsKICAgICB9CiAKQEAgLTE3NCwxNSArMTY2LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEZpeGVkKGJvb2wgZml4ZWQpIHsgbV9maXhlZCA9IGZpeGVkOyB9CiAKICAgICB2b2lkIHJl
ZigpIHsgbV9yZWZDbnQrKzsgfQotICAgIHZvaWQgZGVyZWYoUmVuZGVyQXJlbmEqIHJlbmRlckFy
ZW5hKSB7IGlmICgtLW1fcmVmQ250ID09IDApIGRlc3Ryb3kocmVuZGVyQXJlbmEpOyB9Ci0KLSAg
ICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKLQotICAgIC8vIE92ZXJsb2FkZWQgbmV3IG9w
ZXJhdG9yLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIFJlbmRlckFyZW5hKik7Ci0K
LSAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1hbCBkZWxldGUgZnJvbSBiZWlu
ZyBjYWxsZWQuCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVfdCk7CisgICAg
dm9pZCBkZXJlZigpCisgICAgeworICAgICAgICBpZiAoIS0tbV9yZWZDbnQpCisgICAgICAgICAg
ICBkZWxldGUgdGhpczsKKyAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFJl
Y3RzJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0yMDIsMTAgKzE5MCwyNCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIC8vIFRoZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2Fs
bG93ZWQgb24gYWxsIHJlbmRlciBvYmplY3RzLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QpIHRocm93KCk7CisgICAgQ2xpcFJlY3RzKGNvbnN0IExheW91dFJlY3QmIHIpCisgICAgICAg
IDogbV9vdmVyZmxvd0NsaXBSZWN0KHIpCisgICAgICAgICwgbV9maXhlZENsaXBSZWN0KHIpCisg
ICAgICAgICwgbV9wb3NDbGlwUmVjdChyKQorICAgICAgICAsIG1fcmVmQ250KDApCisgICAgICAg
ICwgbV9maXhlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgQ2xpcFJlY3RzKGNvbnN0IENs
aXBSZWN0cyYgb3RoZXIpCisgICAgICAgIDogbV9vdmVyZmxvd0NsaXBSZWN0KG90aGVyLm92ZXJm
bG93Q2xpcFJlY3QoKSkKKyAgICAgICAgLCBtX2ZpeGVkQ2xpcFJlY3Qob3RoZXIuZml4ZWRDbGlw
UmVjdCgpKQorICAgICAgICAsIG1fcG9zQ2xpcFJlY3Qob3RoZXIucG9zQ2xpcFJlY3QoKSkKKyAg
ICAgICAgLCBtX3JlZkNudCgwKQorICAgICAgICAsIG1fZml4ZWQob3RoZXIuZml4ZWQoKSkKKyAg
ICB7CisgICAgfQogCi1wcml2YXRlOgogICAgIENsaXBSZWN0IG1fb3ZlcmZsb3dDbGlwUmVjdDsK
ICAgICBDbGlwUmVjdCBtX2ZpeGVkQ2xpcFJlY3Q7CiAgICAgQ2xpcFJlY3QgbV9wb3NDbGlwUmVj
dDsKQEAgLTIxMyw2ICsyMTUsMzAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZml4ZWQgOiAxOwog
fTsKIAorZW51bSBDbGlwUmVjdHNUeXBlIHsKKyAgICBQYWludGluZ0NsaXBSZWN0cywgLy8gUmVs
YXRpdmUgdG8gcGFpbnRpbmcgYW5jZXN0b3IuIFVzZWQgZm9yIHBhaW50aW5nLgorICAgIFJvb3RS
ZWxhdGl2ZUNsaXBSZWN0cywgLy8gUmVsYXRpdmUgdG8gdGhlIGFuY2VzdG9yIHRyZWF0ZWQgYXMg
dGhlIHJvb3QgKGUuZy4gdHJhbnNmb3JtZWQgbGF5ZXIpLiBVc2VkIGZvciBoaXQgdGVzdGluZy4K
KyAgICBBYnNvbHV0ZUNsaXBSZWN0cywgLy8gUmVsYXRpdmUgdG8gdGhlIFJlbmRlclZpZXcncyBs
YXllci4gVXNlZCBmb3IgY29tcG9zaXRpbmcgb3ZlcmxhcCB0ZXN0aW5nLgorICAgIE51bUNhY2hl
ZENsaXBSZWN0c1R5cGVzLAorICAgIEFsbENsaXBSZWN0VHlwZXMsCisgICAgVGVtcG9yYXJ5Q2xp
cFJlY3RzCit9OworCitzdHJ1Y3QgQ2xpcFJlY3RzQ2FjaGUgeworICAgIENsaXBSZWN0c0NhY2hl
KCkKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE51
bUNhY2hlZENsaXBSZWN0c1R5cGVzOyArK2kpCisgICAgICAgICAgICBtX2NsaXBSZWN0c1Jvb3Rb
aV0gPSAwOworI2VuZGlmCisgICAgfQorCisgICAgUmVmUHRyPENsaXBSZWN0cz4gbV9jbGlwUmVj
dHNbTnVtQ2FjaGVkQ2xpcFJlY3RzVHlwZXNdOworI2lmbmRlZiBOREVCVUcKKyAgICBjb25zdCBS
ZW5kZXJMYXllciogbV9jbGlwUmVjdHNSb290W051bUNhY2hlZENsaXBSZWN0c1R5cGVzXTsKKyNl
bmRpZgorfTsKKwogY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewog
cHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwpAQCAtMzcxLDggKzM5Nyw4
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExheW91dFNpemUmIHJlbGF0aXZlUG9zaXRpb25PZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0aXZlT2Zmc2V0OyB9CiAKLSAgICB2b2lkIGNsZWFy
Q2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKLSAgICB2b2lkIGNsZWFyQ2xpcFJlY3Rz
KCk7CisgICAgdm9pZCBjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKENsaXBSZWN0
c1R5cGUgdHlwZVRvQ2xlYXIgPSBBbGxDbGlwUmVjdFR5cGVzKTsKKyAgICB2b2lkIGNsZWFyQ2xp
cFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIgPSBBbGxDbGlwUmVjdFR5cGVzKTsKIAog
ICAgIHZvaWQgYWRkQmxvY2tTZWxlY3Rpb25HYXBzQm91bmRzKGNvbnN0IExheW91dFJlY3QmKTsK
ICAgICB2b2lkIGNsZWFyQmxvY2tTZWxlY3Rpb25HYXBzQm91bmRzKCk7CkBAIC00MjMsNyArNDQ5
LDcgQEAgcHVibGljOgogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIo
KSBjb25zdDsKIAogICAgIC8vIFRoZSBsYXllciByZWxhdGl2ZSB0byB3aGljaCBjbGlwcGluZyBy
ZWN0cyBmb3IgdGhpcyBsYXllciBhcmUgY29tcHV0ZWQuCi0gICAgUmVuZGVyTGF5ZXIqIGNsaXBw
aW5nUm9vdCgpIGNvbnN0OworICAgIFJlbmRlckxheWVyKiBjbGlwcGluZ1Jvb3RGb3JQYWludGlu
ZygpIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIEVu
Y2xvc2luZyBjb21wb3NpdGluZyBsYXllcjsgaWYgaW5jbHVkZVNlbGYgaXMgdHJ1ZSwgbWF5IHJl
dHVybiB0aGlzLgpAQCAtNDcyLDE2ICs0OTgsMTcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgbWV0
aG9kIGZpZ3VyZXMgb3V0IG91ciBsYXllckJvdW5kcyBpbiBjb29yZGluYXRlcyByZWxhdGl2ZSB0
bwogICAgIC8vIHxyb290TGF5ZXJ9LiAgSXQgYWxzbyBjb21wdXRlcyBvdXIgYmFja2dyb3VuZCBh
bmQgZm9yZWdyb3VuZCBjbGlwIHJlY3RzCiAgICAgLy8gZm9yIHBhaW50aW5nL2V2ZW50IGhhbmRs
aW5nLgotICAgIHZvaWQgY2FsY3VsYXRlUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXll
ciwgUmVuZGVyUmVnaW9uKiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIExheW91
dFJlY3QmIGxheWVyQm91bmRzLAorICAgIHZvaWQgY2FsY3VsYXRlUmVjdHMoY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzVHlwZSwgY29uc3QgTGF5
b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIExheW91dFJlY3QmIGxheWVyQm91bmRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgQ2xpcFJlY3QmIGJhY2tncm91bmRSZWN0LCBDbGlwUmVjdCYgZm9y
ZWdyb3VuZFJlY3QsIENsaXBSZWN0JiBvdXRsaW5lUmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdGVtcG9yYXJ5Q2xpcFJlY3RzID0gZmFsc2UsIE92ZXJsYXlTY3JvbGxiYXJTaXpl
UmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OworICAgICAgICAg
ICAgICAgICAgICAgICAgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVy
bGF5U2Nyb2xsYmFyU2l6ZSkgY29uc3Q7CiAKICAgICAvLyBDb21wdXRlIGFuZCBjYWNoZSBjbGlw
IHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIGdpdmVuIGxheWVyIGFzIHRoZSByb290Ci0gICAgdm9p
ZCB1cGRhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVn
aW9uKiwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xs
YmFyU2l6ZSk7CisgICAgdm9pZCB1cGRhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwgUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJhclNp
emVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CiAgICAgLy8gQ29tcHV0
ZSBhbmQgcmV0dXJuIHRoZSBjbGlwIHJlY3RzLiBJZiB1c2VDYWNoZWQgaXMgdHJ1ZSwgd2lsbCB1
c2VkIHByZXZpb3VzbHkgY29tcHV0ZWQgY2xpcCByZWN0cyBvbiBhbmNlc3RvcnMKICAgICAvLyAo
cmF0aGVyIHRoYW4gY29tcHV0aW5nIHRoZW0gYWxsIGZyb20gc2NyYXRjaCB1cCB0aGUgcGFyZW50
IGNoYWluKS4KLSAgICB2b2lkIGNhbGN1bGF0ZUNsaXBSZWN0cyhjb25zdCBSZW5kZXJMYXllciog
cm9vdExheWVyLCBSZW5kZXJSZWdpb24qLCBDbGlwUmVjdHMmLCBib29sIHVzZUNhY2hlZCA9IGZh
bHNlLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxi
YXJTaXplKSBjb25zdDsKLSAgICBDbGlwUmVjdHMqIGNsaXBSZWN0cygpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpcFJlY3RzOyB9CisgICAgdm9pZCBjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzVHlwZSwgQ2xpcFJlY3Rz
JiwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFy
U2l6ZSkgY29uc3Q7CisKKyAgICBDbGlwUmVjdHMqIGNsaXBSZWN0cyhDbGlwUmVjdHNUeXBlIHR5
cGUpIGNvbnN0IHsgQVNTRVJUKHR5cGUgPCBOdW1DYWNoZWRDbGlwUmVjdHNUeXBlcyk7IHJldHVy
biBtX2NsaXBSZWN0c0NhY2hlID8gbV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNbdHlwZV0u
Z2V0KCkgOiAwOyB9CiAKICAgICBMYXlvdXRSZWN0IGNoaWxkcmVuQ2xpcFJlY3QoKSBjb25zdDsg
Ly8gUmV0dXJucyB0aGUgZm9yZWdyb3VuZCBjbGlwIHJlY3Qgb2YgdGhlIGxheWVyIGluIHRoZSBk
b2N1bWVudCdzIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgTGF5b3V0UmVjdCBzZWxmQ2xpcFJlY3Qo
KSBjb25zdDsgLy8gUmV0dXJucyB0aGUgYmFja2dyb3VuZCBjbGlwIHJlY3Qgb2YgdGhlIGxheWVy
IGluIHRoZSBkb2N1bWVudCdzIGNvb3JkaW5hdGUgc3BhY2UuCkBAIC03NjcsOCArNzk0LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCk7CiAjZW5kaWYK
IAotICAgIHZvaWQgcGFyZW50Q2xpcFJlY3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIs
IFJlbmRlclJlZ2lvbiosIENsaXBSZWN0cyYsIGJvb2wgdGVtcG9yYXJ5Q2xpcFJlY3RzID0gZmFs
c2UsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJh
clNpemUpIGNvbnN0OwotICAgIENsaXBSZWN0IGJhY2tncm91bmRDbGlwUmVjdChjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWdpb24qLCBib29sIHRlbXBvcmFyeUNsaXBSZWN0
cywgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFy
U2l6ZSkgY29uc3Q7CisgICAgdm9pZCBwYXJlbnRDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzVHlwZSwgQ2xpcFJlY3RzJiwgT3Zl
cmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSkg
Y29uc3Q7CisgICAgQ2xpcFJlY3QgYmFja2dyb3VuZENsaXBSZWN0KGNvbnN0IFJlbmRlckxheWVy
KiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0c1R5cGUsIE92ZXJsYXlTY3JvbGxi
YXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwogICAg
IExheW91dFJlY3QgcGFpbnRpbmdFeHRlbnQoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3IpOwogCiAgICAg
UmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKSBjb25zdDsKQEAgLTkw
NSwxMSArOTMyLDggQEAgcHJvdGVjdGVkOgogICAgIC8vIG92ZXJmbG93IGxheWVycywgYnV0IHRo
YXQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgogICAgIFZlY3RvcjxSZW5kZXJMYXllcio+KiBt
X25vcm1hbEZsb3dMaXN0OwogCi0gICAgQ2xpcFJlY3RzKiBtX2NsaXBSZWN0czsgICAgICAvLyBD
YWNoZWQgY2xpcCByZWN0cyB1c2VkIHdoZW4gcGFpbnRpbmcgYW5kIGhpdCB0ZXN0aW5nLgotI2lm
bmRlZiBOREVCVUcKLSAgICBjb25zdCBSZW5kZXJMYXllciogbV9jbGlwUmVjdHNSb290OyAgIC8v
IFJvb3QgbGF5ZXIgdXNlZCB0byBjb21wdXRlIGNsaXAgcmVjdHMuCi0jZW5kaWYKLQorICAgIE93
blB0cjxDbGlwUmVjdHNDYWNoZT4gbV9jbGlwUmVjdHNDYWNoZTsKKyAgICAKICAgICBJbnRQb2lu
dCBtX2NhY2hlZE92ZXJsYXlTY3JvbGxiYXJPZmZzZXQ7CiAKICAgICBSZW5kZXJNYXJxdWVlKiBt
X21hcnF1ZWU7IC8vIFVzZWQgYnkgbGF5ZXJzIHdpdGggb3ZlcmZsb3c6bWFycXVlZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBlZTM5
OTEyYTkyOTJhZDE0N2NkMTlhY2I5YWMyMTY5YzRkYmYyNzEzLi4xMDg1ZWFiYzAwNTM1MjNjNzgx
YWQ5N2VlNjQzNGNlY2ZhOTA5NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKCkKICAgICAgICAgTGF5b3V0UmVjdCBj
bGlwcGluZ0JvdW5kcyA9IHZpZXctPnVuc2NhbGVkRG9jdW1lbnRSZWN0KCk7CiAKICAgICAgICAg
aWYgKG1fb3duaW5nTGF5ZXIgIT0gcm9vdExheWVyKQotICAgICAgICAgICAgY2xpcHBpbmdCb3Vu
ZHMuaW50ZXJzZWN0KG1fb3duaW5nTGF5ZXItPmJhY2tncm91bmRDbGlwUmVjdChyb290TGF5ZXIs
IDAsIHRydWUpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgor
ICAgICAgICAgICAgY2xpcHBpbmdCb3VuZHMuaW50ZXJzZWN0KG1fb3duaW5nTGF5ZXItPmJhY2tn
cm91bmRDbGlwUmVjdChyb290TGF5ZXIsIDAsIEFic29sdXRlQ2xpcFJlY3RzKS5yZWN0KCkpOyAv
LyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KIAogICAgICAgICBMYXlvdXRQb2lu
dCBkZWx0YTsKICAgICAgICAgbV9vd25pbmdMYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9v
dExheWVyLCBkZWx0YSk7CkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIC8vIENhbGwgY2FsY3Vs
YXRlUmVjdHMgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kUmVjdCB3aGljaCBpcyB3aGF0IGlzIHVzZWQg
dG8gY2xpcCB0aGUgY29udGVudHMgb2YgdGhpcwogICAgICAgICAvLyBsYXllci4gTm90ZSB0aGF0
IHdlIGNhbGwgaXQgd2l0aCB0ZW1wb3JhcnlDbGlwUmVjdHMgPSB0cnVlIGJlY2F1c2Ugbm9ybWFs
bHkgd2hlbiBjb21wdXRpbmcgY2xpcCByZWN0cwogICAgICAgICAvLyBmb3IgYSBjb21wb3NpdGlu
ZyBsYXllciwgcm9vdExheWVyIGlzIHRoZSBsYXllciBpdHNlbGYuCi0gICAgICAgIEludFJlY3Qg
cGFyZW50Q2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXItPmJhY2tn
cm91bmRDbGlwUmVjdChjb21wQW5jZXN0b3IsIDAsIHRydWUpLnJlY3QoKSk7IC8vIEZJWE1FOiBJ
bmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgorICAgICAgICBJbnRSZWN0IHBhcmVudENsaXBSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kQ2xpcFJlY3Qo
Y29tcEFuY2VzdG9yLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMpLnJlY3QoKSk7IC8vIEZJWE1FOiBJ
bmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgogICAgICAgICBBU1NFUlQocGFyZW50Q2xpcFJlY3Qg
IT0gUGFpbnRJbmZvOjppbmZpbml0ZVJlY3QoKSk7CiAgICAgICAgIG1fYW5jZXN0b3JDbGlwcGlu
Z0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkgKyAocGFyZW50Q2xpcFJlY3QubG9jYXRp
b24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbikpOwogICAgICAgICBtX2FuY2VzdG9y
Q2xpcHBpbmdMYXllci0+c2V0U2l6ZShwYXJlbnRDbGlwUmVjdC5zaXplKCkpOwpAQCAtMTExMiw2
ICsxMTEyLDE3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludHNJbnRvV2luZG93KCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpz
ZXRSZXF1aXJlc093bkJhY2tpbmdTdG9yZShib29sIGZsYWcpCit7CisgICAgaWYgKGZsYWcgPT0g
bV9yZXF1aXJlc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8v
IFRoaXMgYWZmZWN0cyB0aGUgYW5zd2VyIHRvIHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3Io
KSwgd2hpY2ggaW4gdHVybiBhZmZlY3RzCisgICAgLy8gY2FjaGVkIGNsaXAgcmVjdHMsIHNvIHdo
ZW4gaXQgY2hhbmdlcyB3ZSBoYXZlIHRvIGNsZWFyIGNsaXAgcmVjdHMgb24gZGVzY2VuZGFudHMu
CisgICAgbV9vd25pbmdMYXllci0+Y2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cyhQ
YWludGluZ0NsaXBSZWN0cyk7CisgICAgbV9yZXF1aXJlc093bkJhY2tpbmdTdG9yZSA9IGZsYWc7
Cit9CisKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KCkK
IHsKICAgICBBU1NFUlQoIXBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggYTZhMDNhYzc3
ZDU0NTZiZWNkOWRjNTkyYzI3ODQ2MWI4NTFhOTA2ZC4uZDg3MTg4NThlYWY2YmNlNDE5MDA0YjYx
OTQ5ZjJmZTE5MGIwZDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAvLyBwYWludHMg
aW50byBzb21lIGFuY2VzdG9yIGxheWVyLgogICAgIGJvb2wgcGFpbnRzSW50b0NvbXBvc2l0ZWRB
bmNlc3RvcigpIGNvbnN0IHsgcmV0dXJuICFtX3JlcXVpcmVzT3duQmFja2luZ1N0b3JlOyB9CiAK
LSAgICB2b2lkIHNldFJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGJvb2wgZmxhZykgeyBtX3JlcXVp
cmVzT3duQmFja2luZ1N0b3JlID0gZmxhZzsgfQorICAgIHZvaWQgc2V0UmVxdWlyZXNPd25CYWNr
aW5nU3RvcmUoYm9vbCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzTmVlZERpc3BsYXkoKTsKICAg
ICAvLyByIGlzIGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBsYXllcidzIHJlbmRlciBv
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggYzQwMmI1OTNkMGRmMDMxZWFmZWI1ZTZiNTg0NmE1NTg1MTQ1YTFhNi4u
MzcwOTIzMmZhNzhmYjRjN2UxNDZjYmQxNjY0YjM0YjNmMmRkM2YwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTUzNyw2
ICs1MzcsOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5k
ZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICBpZiAoaW5uZXJDb21w
b3NpdG9yICYmIGlubmVyQ29tcG9zaXRvci0+aW5Db21wb3NpdGluZ01vZGUoKSkKICAgICAgICAg
ICAgIGlubmVyQ29tcG9zaXRvci0+dXBkYXRlUm9vdExheWVyQXR0YWNobWVudCgpOwogICAgIH0K
KyAgICAKKyAgICBpZiAobGF5ZXJDaGFuZ2VkKQorICAgICAgICBsYXllci0+Y2xlYXJDbGlwUmVj
dHNJbmNsdWRpbmdEZXNjZW5kYW50cyhQYWludGluZ0NsaXBSZWN0cyk7CiAKICAgICByZXR1cm4g
bGF5ZXJDaGFuZ2VkOwogfQpAQCAtNjM3LDcgKzY0MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjphZGRUb092ZXJsYXBNYXAoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuZGVyTGF5
ZXIqCiAgICAgICAgIGJvdW5kc0NvbXB1dGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBJbnRSZWN0
IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChsYXllci0+YmFja2dyb3VuZENsaXBSZWN0
KHJvb3RSZW5kZXJMYXllcigpLCAwLCB0cnVlKS5yZWN0KCkpOyAvLyBGSVhNRTogSW5jb3JyZWN0
IGZvciBDU1MgcmVnaW9ucy4KKyAgICBJbnRSZWN0IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChsYXllci0+YmFja2dyb3VuZENsaXBSZWN0KHJvb3RSZW5kZXJMYXllcigpLCAwLCBBYnNv
bHV0ZUNsaXBSZWN0cykucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lv
bnMuCiAgICAgY2xpcFJlY3Quc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkpOwogICAgIGNsaXBSZWN0
LmludGVyc2VjdChsYXllckJvdW5kcyk7CiAgICAgb3ZlcmxhcE1hcC5hZGQobGF5ZXIsIGNsaXBS
ZWN0KTsKQEAgLTY5Niw3ICs2OTksNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRk
VG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbgogLy8KIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMo
UmVuZGVyTGF5ZXIqIGxheWVyLCBPdmVybGFwTWFwKiBvdmVybGFwTWFwLCBDb21wb3NpdGluZ1N0
YXRlJiBjb21wb3NpdGluZ1N0YXRlLCBib29sJiBsYXllcnNDaGFuZ2VkKQogewotICAgIGxheWVy
LT51cGRhdGVMYXllclBvc2l0aW9uKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5l
ZWRlZCgpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGZsYWcKQEAgLTE1MzYsNyArMTUzOCw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwcGVkQnlBbmNlc3RvcihSZW5kZXJMYXllciog
bGF5ZXIpIGNvbnN0CiAgICAgaWYgKCFjb21wdXRlQ2xpcFJvb3QgfHwgY29tcHV0ZUNsaXBSb290
ID09IGxheWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbGF5ZXItPmJh
Y2tncm91bmRDbGlwUmVjdChjb21wdXRlQ2xpcFJvb3QsIDAsIHRydWUpLnJlY3QoKSAhPSBQYWlu
dEluZm86OmluZmluaXRlUmVjdCgpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9u
cy4KKyAgICByZXR1cm4gbGF5ZXItPmJhY2tncm91bmRDbGlwUmVjdChjb21wdXRlQ2xpcFJvb3Qs
IDAsIFRlbXBvcmFyeUNsaXBSZWN0cykucmVjdCgpICE9IFBhaW50SW5mbzo6aW5maW5pdGVSZWN0
KCk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgogfQogCiAvLyBSZXR1cm4g
dHJ1ZSBpZiB0aGUgZ2l2ZW4gbGF5ZXIgaXMgYSBzdGFja2luZyBjb250ZXh0IGFuZCBoYXMgY29t
cG9zaXRpbmcgY2hpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAppbmRleCA1MWZjNDE3NDUzOTE5MWU0MjE5MjljZGExN2IwNmQwYjJiOTkxYzJmLi4z
OTMxOWNhMWY0MmNmNGM3NTdiOWVlYjA4MjE5YmY5ODg0YTRhNzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC03MTgsNyArNzE4LDcgQEAg
c3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxheWVy
KiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAvLyBDYWxjdWxhdGUgdGhlIGNsaXAgcmVjdHMg
d2Ugc2hvdWxkIHVzZS4KICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzOwogICAgIENsaXBSZWN0
IGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3Q7Ci0gICAgbC0+Y2FsY3Vs
YXRlUmVjdHMocm9vdExheWVyLCAwLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRhbWFn
ZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3QsIHRydWUpOworICAgIGwtPmNhbGN1
bGF0ZVJlY3RzKHJvb3RMYXllciwgMCwgVGVtcG9yYXJ5Q2xpcFJlY3RzLCBwYWludERpcnR5UmVj
dCwgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3Qp
OwogCiAgICAgLy8gRW5zdXJlIG91ciBsaXN0cyBhcmUgdXAtdG8tZGF0ZS4KICAgICBsLT51cGRh
dGVMYXllckxpc3RzSWZOZWVkZWQoKTsK
</data>
<flag name="review"
          id="150883"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>